Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Путь от новичка до профессионала

Путь от новичка до профессионала

Олег Чуркин (Rambler&Co) @ Python Junior Meetup № 2

"Рассказ о том, как разработчику спланировать свой профессиональный рост: как развиваться технически и личностно, как правильно принимать важные карьерные решения и какие качества и умения сейчас ждут работодатели от действительно классных специалистов.".

Moscow Python Meetup
PRO

April 13, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Education

Transcript

  1. Путь от новичка до
    профессионала
    Или атлас советов по профессиональному и
    личностному росту для разработчиков любого
    уровня.
    Чуркин Олег @ Rambler&Co

    View Slide

  2. Профессионализм?
    Компетентность + ответственность.
    Профессиональный рост происходит
    инкрементально по мере получения опыта и
    применения новых практик.

    View Slide

  3. Ключевые навыки
    профессионального разработчика
    ● Высокие технические знания
    ● Высокая культура разработки
    ● Достойные личностные качества
    ● Английский (как минимум технический)
    ● Желание непрерывно развиваться и
    развивать своих коллег

    View Slide

  4. Высокие технические знания (навыки)
    ● Изучаем фундаментальные вещи из
    computer science (алгоритмы, структуры
    данных, архитектура компьютера и т.д.)
    ● Язык(и) программирования – на отлично.
    ● Инструменты, с которыми работаем
    каждый день: фреймворки, базы данных,
    IDE, отладчики и т.д.

    View Slide

  5. Высокие технические знания (навыки)
    ● Следим за трендами в предметной
    области: новые фреймворки (библиотеки),
    сервисы и подходы к разработке.
    ● Разбираемся с другими ЯП и изучаем
    основные паттерны проектирования.
    ● Важна эрудиция в смежных темах: devops,
    фронтенд, сеть, машинное обучение

    View Slide

  6. Матрица компетентности программиста
    Заслуживающая внимания попытка
    категоризировать знания программистов:
    Часть 1: http://bit.ly/dev-matrix-1
    Часть 2: http://bit.ly/dev-matrix-2 (список книг)

    View Slide

  7. Как получать технические знания?
    ● Найти хорошего ментора, code review
    ● Интегрироваться в сообщество
    ● Читать книги, смотреть видео и слушать
    подкасты
    ● Читать профильные статьи и блоги
    ● Постоянно практиковаться (работа, pet
    projects, open source contribution)
    ● Конференции и митапы. В том числе в
    качестве докладчика.

    View Slide

  8. Сообщество питонистов
    Дружелюбное, отзывчивое, многочисленное.
    ● Slack (> 1000) https://python.stamplayapp.com/
    ● Facebook (> 2500):
    https://www.facebook.com/groups/MoscowDjango/
    ● Reddit ( > 100k): https://www.reddit.com/r/Python/
    ● Хабр: https://habrahabr.ru/hub/python/
    ● Полуживые http://python.ru/, http://python.su/forum/
    ● Многочисленные каналы в telegram (лучше не стоит)

    View Slide

  9. Tips and tricks
    ● Слушать подкасты по пути на работу (DevZen,
    Podcast.__init__("Python"), Разбор полетов, Радио-Т, )
    ● Дайджесты, например: https://pythondigest.ru/, Python
    Weekly, Postgres Weekly, Web Operations Weekly,
    Weekly.
    ● Для тренировки: читайте код известных библиотек и
    фреймворков
    ● Для тренировки: выберите проблему, которую давно
    хотели автоматизировать и решите её с помощью какого-
    нибудь нового для вас языка программирования.

    View Slide

  10. Высокая культура разработки
    ● Стиль кодирования
    ● Документация
    ● Анализ требований к задаче
    ● Анализ решения и выбор оптимального
    алгоритма
    ● Обязательное (unit-)тестирование
    ● Метрики кода (цикломатическая
    сложность, индекс поддерживаемости)

    View Slide

  11. Высокая культура разработки
    ● Сбор статистики и метрик
    ● Обязательное логгирование
    ● Настройка CI/CD (непрерывная
    интеграция, непрерывная доставка кода)
    ● Автоматизация рутинных задач
    ● Нагрузочное и тестирование безопасности
    ● Поддержка и обслуживание кода во время
    и после релиза

    View Slide

  12. Высокая культура разработки
    ● Code review
    ● Работа с командой и в команде
    ● Отсутствие "Культа карго"
    ● Встречи и обсуждения четкие и по делу
    ● Обучение и менторство
    ● Взаимодействие с другими отделами
    ● Понимание интересов бизнеса и
    заказчика

    View Slide

  13. Личностные качества

    View Slide

  14. Высокий эмоциональный интеллект
    Способность человека распознавать эмоции,
    понимать намерения, мотивацию и желания
    других людей и свои собственные, а также
    способность управлять своими эмоциями и
    эмоциями других людей в целях решения
    практических задач.

    View Slide

  15. Высокий эмоциональный интеллект
    ● Коммуникабельность это важно
    ● Не повышать голос и не срываться
    ● Адекватно воспринимать критику своей
    работы и обратную связь
    ● Разрешать конфликты
    ● Брать на себя ответственность

    View Slide

  16. ● Когда вы шутите в компании – люди как-то криво улыбаются.
    ● Вы думаете, что абсолютно не важно что о вас подумают другие
    и делаете то, что сами считаете нужным.
    ● Вы предъявляете к другим такие же высокие требования как и
    к себе – раз вы можете, значит и все другие смогут также.
    ● Есть только ваше мнение и оно абсолютно верное, его
    обязательно нужно донести до окружающих. Если вы видите,
    что ваше мнение оказалось не таким уже верным – делаете все
    возможное чтобы это в итоге не вскрылось.
    ● В большинстве проблем вашей команды виноваты другие
    команды, отделы, люди.
    Доктор, со мной что-то не так?

    View Slide

  17. ● Книга: Эмоциональный интеллект. Почему он
    может значить больше, чем IQ, Дэниел Гоулман.
    ● Смотреть на эмоции людей, после того как вы
    им что-то скажете – если эмоция негативная,
    думать над тем почему так произошло.
    ● Слушайте, как и что говорят ваши руководители
    или другие люди опытнее вас.
    ● Будьте открыты и дружелюбны
    Как развивать?

    View Slide

  18. Высокие «problem solving skills»
    ● Анализ ситуации.
    ● Декомпозиция на более простые задачи.
    ● Что я могу сделать сам? Какая помощь мне
    понадобиться?
    ● Есть ли у меня все ресурсы для решения
    поставленной задачи?
    ● Фокус на решении, а не на проблеме
    ● Эскалация если необходимо

    View Slide

  19. Взгляд со стороны работодателя (бизнеса)
    на разработку
    ● Бизнесу нужен не код, а работающий продукт,
    продукт несет business value.
    ● Программирование это не свободное
    художество, а четкий процесс создания
    конкурентоспособного программного продукта в
    ограниченные сроки.
    ● Одна из важнейших характеристик для
    разработки это time-to-market.

    View Slide

  20. Tips and tricks
    ● Уметь говорить «нет» и не брать на себя
    больше работы, чем сможете выполнить
    ● Думать о том, как реализованной фичей
    будут пользоваться
    ● Вести заметки и записывать куда-нибудь
    важные задачи
    ● Pomodoro (метод помидора)

    View Slide

  21. Классические проблемы разработчиков
    Культ карго, граничащий с фашизмом:
    ● Мы не будем релизить код без 100% покрытия
    тестами
    ● Мы не будем релизить код, который не все
    проревьювили
    ● Мы не будет релизить код без прохождения style-
    чекерами
    ● Мы не будем ...

    View Slide

  22. Классические проблемы разработчиков
    Something driven development:
    ● Stack overflow driven-development
    ● Resume driven development
    ● Hype driven development
    ● Conference driven development и т.д.

    View Slide

  23. Resume driven development
    ● Внедрить в проект много новых "модных"
    технологий, без явной продуктовой
    необходимости
    ● Получить опыт, набить шишек, провалить сроки
    ● Перейти в другую компанию на более высокую
    должность\деньги
    ● ...
    ● PROFIT!

    View Slide

  24. Стоп фразы
    ● "Это невозможно"
    ● "Я не знаю"
    ● "Мой код решает поставленную задачу,
    поэтому все ок"
    ● "Если код не переписывается то он мертв"
    ● "Нам необходим рефакторинг на две
    недели"

    View Slide

  25. Стоп фразы
    ● "Если не нравится – сделай сам"
    ● "У меня все работает!"
    ● "Это не моя обязанность" (не моя зона
    ответственности)

    View Slide

  26. Вы стали лучше!
    Спасибо!
    Вопросы?

    View Slide