Как стать успешным разработчиком

Автор раздела: Ivan Zakrevsky

"My career mission is to help geeks feel safe in the world."

—Kent Beck, description of his Linkedin profile

По поводу "Эффекта Самозванца" (ощущение того, что человек не заслуживает профессиональной позиции, полагая, что окружающие ошибочно думают иначе). Видно, что эта тема многих беспокоит. Мне даже известны люди, которые не выдержали напряжения и бросили разработку.

Хотя этот термин здесь не совсем корректно употреблен, и означает он немного другую проблему, но в индустрии этот термин хорошо закрепился и многим понятен.

Наверное, каждого разработчика волнует вопрос его эффективности. Чаще всего собственная недооценка провоцируется хронической неуспеваемостью, о чем и пойдет речь далее.

Нужно учитывать, что через "Долину Отчаяния" на графике Даннинга-Крюгера проходят все. Если вы относите причины неуспеваемости на свой счет, то, вероятно, в вашей компании что-то не так с процессами, которые искажают это восприятие. Впрочем, подобный уровень организации процессов является, скорее, правилом на рынке труда, чем исключением.

Несколько исторических примеров

Фрагмент биографии легендарного летчика-аса Ивана Кожедуба:

📝 "В начале военной карьеры Ивана Никитовича преследовали неудачи, его даже чуть было не перевели на пост оповещения. Только заступничество командира полка майора И. Солдатенко помогло ему остаться в полку. Свою первую победу летчик одержал в ходе 40-го боевого вылета, сбив немецкий пикировщик."

—"Кожедуб Иван Никитович" / Киселев О. Н.

Каждая ошибка - это ориентир на пути к успеху. Неважно, сколько ошибок было сделано, важно сколько выводов из них было вынесено. Правильные решения возникают из опыта. Опыт возникает из неправильных решений.

Еще один назидательный пример - Кубинец Лопес стал первым в истории четырехкратным олимпийским чемпионом в греко-римской борьбе, превзойдя достижение Александра Карелина.

📝 В 13 лет его карьера могла завершиться досрочно — он получил страшный двойной перелом ноги...

Лопес уже в 17 лет попал в сборную Кубы, но не все шло гладко. На своем первом крупном соревновании — чемпионате мира 2002 года — молодой Лопес с треском провалился. Он финишировал 13-м в весовой категории до 120 кг. А на следующий год выступил и того хуже — занял 16-е место.

Не заладилось и на Олимпиаде в Афинах — в четвертьфинале кубинца остановил россиянин Хасан Бароев, ставший впоследствии Олимпийским чемпионом и лишенный медали.

"Не понимаю, что я тогда делал не так. Я был готов, был заряжен. Но медали не шли ко мне", — вспоминал об этом впоследствии Лопес.

Но начиная с 2005 года результаты упорного и упрямого кубинца пошли вверх. Он стал чемпионом мира в 2005, 2007, 2009 и 2010 годах.

—"Скромный кубинский гигант. Кто побил рекорд Карелина в борьбе?" / Лазорин Игорь, ТАСС

Кстати, сам Александр Карелин говорил:

💬 "В успехе только 5% таланта, а остальное - это пот и трудолюбие. Поэтому нужно захотеть стать чемпионом и не бояться преодолевать трудности. Самое главное - сделать первый шаг, не бояться наступать на леность, трусость и самовосприятие. Нужно встать с дивана, поднять сначала свою "тушу", а потом тело соперника на ковре..."

—Александр Карелин

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

Юрий Никулин не был принят во ВГИК, т.к. в нем не обнаружили актерских способностей. Примерно по этой же причине он не поступил в ГИТИС. Приняли его лишь в школу-студию разговорных жанров при Московском цирке на Цветном бульваре. Вот такие дела с талантами бывают у людей, оказавшимися позже наиболее талантливыми.

Sylvester Stallone в свое время пришлось даже написать собственный сценарий, чтоб получить роль.

Дорожная карта

1. Учимся писать экономически эффективный код

Первым важным навыком на пути к обретению успеваемости является умение писать экономически эффективный код с пологим характером роста стоимости его изменения. На эту тему было написано немало книг. Не понимая истинных причин снижения velocity, человек склонен относить это на свой счет, что препятствует их обнаружению и устранению.

2. Обучаем команду

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

Здесь есть несколько вариантов:

  1. Попасть в струю коллектива, которая работает с качественным кодом. Для этого нужно уметь их собой заинтересовать, поэтому см. п.1.

  2. Изолироваться от командного legacy и начать формировать новую кодовую базу под себя (вариант кажется фантастическим, но, тем не менее, вполне реальнен).

  3. Влиять на коллектив, и вместе с коллективом изменять код. Этот вариант тоже возможен, но требует обладания совокупностью качеств. Больше всего мне в этом вопросе помогла книга "Extreme Programming Explained" 1st edition by Kent Beck.

Полученные знания нужно умело применять. Здесь важно понять, с какой стороны начать. Этот вопрос хорошо освещает статья "Системное мышление by Craig Larman.

3. Организовываем процессы

Итак. Теперь вы можете писать высокоэффективный код вместе с командой. Но это еще не победа. Успешность во многом зависит от качества организации процессов. Одно неверное управленческое решение, и команда демотивирована, уходят ключевые специалисты, возникают разногласия и конфликты.

Попасть работать к хорошему менедженту хотя и возможно, но это сложнее, чем попасть работать в хорошую команду. А это значит, что вы можете рассчитывать только на себя.

Наиболее частые проблемы исходят из-за неверного распределения обязанностей, например, когда продакт занимается не требованиями, а реализацией. Или методика оценивания задач не соответствует уровню культуры коллектива - индивидуальная оценка задачи может повысить точность планирования в зрелом коллективе, а может напрочь убить взаимопомощь и распространение знаний в развивающемся коллективе, и разогнать комплекс неполноценности до уровня психологического предела (см. "Agile Estimating and Planning" by Mike Cohn), особенно, если при этом еще и путают оценку с обязательством. Непонимание того, чем является макет UX/UI дизайна (problem vs. solution space) приводит конфликту между продактом и командой. Неудачная топология заблокирует автономность команд, и команды будут бОльшую часть времени потопать в дискуссиях. Список можно продолжать. Вообще, по моим наблюдением, качество организации процессов является основной причиной увольнения значимых специалистов.

Собственно, даже Steve McConnell советовал в некоторых случаях "голосовать ногами". Вот только вероятность того, что на новом месте менеджмент будет поставлен получше, не сильно высокая.

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

4. Изменяем коллектив

И, наконец, мы подходим к самой сложной карьерной проблеме - это осуществление изменений в коллективе с точки зрения коммуникативной, социальной и управленческой психологии. Мало знать, что нужно изменить, нужно еще иметь понимание как это осуществить.

Если хочется все бросить...

📝 "Чтобы жить честно, надо рваться, путаться, ошибаться, начинать и бросать... и вечно бороться и лишаться. А спокойствие — душевная подлость".

—Лев Николаевич Толстой

📝 "Никогда не ошибается тот, кто ничего не делает."

📝 "Лучше осмеливаться на могучие дела, добиваться славных триумфов, пусть и перемежающихся с неудачами, чем стоять в одном ряду со слабыми духом, которые не могут ни наслаждаться от души, ни сильно страдать, потому что живут в серых сумерках, где нет ни побед, ни поражений.

📝 "Мужество, это когда продолжаешь, хотя сил уже нет.

📝 "Не критик имеет значение, не человек, указывающий, где сильный споткнулся, или где тот, кто делает дело, мог бы справиться с ним лучше. Уважения достоин тот, кто сам стоит на арене, у кого лицо покрыто потом, кровью и грязью; кто отважно борется; кто совершает промахи и ошибки, потому что никакой труд не обходится без них; кто познал великий энтузиазм и великую преданность, кто посвящает себя достойной цели; кто, при лучшем исходе, достигает высочайшего триумфа, а при худшем, если его постигает неудача, это по крайней мере неудача в великом дерзновении; и потому никогда он не будет среди тех холодных и робких душ, которым не знакомы ни победа, ни поражение." (Париж, Сорбонна, 1910)

Теодор Рузвельт

📝 "Лучше иногда падать, чем никогда не летать."

📝 "Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник."

📝 "Конь о четырех ногах и то спотыкается."

—Народная мудрость (автор неизвестен)

📝 "Лучше зажечь одну свечу, чем проклинать темноту."

—Махатма Ганди

📝 "Солнцу безразлично, почитает его светлячок или нет."

📝 "Избегайте тех, кто старается подорвать вашу веру в себя. Великий человек, наоборот, внушает чувство, что вы можете стать великим."

📝 "Смелость — это сопротивление страху и господство над страхом, а не отсутствие страха."

📝 "Главное — верить. Если веришь, то всё обязательно будет хорошо — даже лучше, чем ты сам можешь устроить."

—Марк Твен

📝 "Если ты не научишься управлять собой, тобой будут управлять другие."

—Хасай Алиев