Недавно наткнулся на заметку о ключевых качествах senior разработчиков, которая мне очень понравилась. Публикую тут свой вольный перевод. 👨💻
––––
Есть шутка, которая мне нравится:
В теории нет разницы между теорией и практикой, но на практике она есть.
Senior разработчика отличает следующее качество: он сделал больше ошибок, смог вынести что-то из этого опыта и сможет избежать часть этих ошибок в будущем. Но необходимо именно научиться. Сами цифры опыта не делают хорошего разработчика, но большинство либо бросает работу и сферу, либо в конце концов научится.
Если вы senior developer, то я как менеджер ожидаю, что вы будете предсказывать риски и принимать хорошие технические решения в условиях неопределенности. Если вы можете принимать хорошие не технические решения в условиях неопределенности, то вы скорее всего lead / architect / principal (ведущий разработчик, разные компании называют должность по-разному). Другими словами, если вы работаете над проектом, я буду уверен, что все сложится.
Скилы, которые отличают старшего разработчика являются частью хорошего предсказания рисков.
Наибольший риск – это, зачастую, люди. Либо это коллеги, которые не могут найти баг или отвлекаются на нерелевантные задачи, или клиенты (в продуктовых компаниях они иногда называются "внутренним заказчиком"), которые не знают, что хотят или не понимают техническую сторону вопроса. Старший разработчик должен уметь работать с проблемами такого рода.
Другой аспект риска – это вы сами. Нужно реалистично относиться к себе и знать, что вы сможете сделать, а что нет, не обманываться, что сможете решить задачу, которую никогда не решали, идеально и с первого раза. Надежда – это не стратегия. С другой стороны, senior инженеры имеют более развитые hard скилы, что действительно позволяет им решать проблемы, которые другие решить не могут. Что опять же снижает риски.
Развивая эту тему, у junior разработчиков часто есть желание использовать самую новую/модную технологию: найти репо на github с одним студентом-мейнтейнером, которая делает то, что вам нужно, да еще и используя нестандартные функции языка. Вы скорее всего об этом пожалеете.
Следующий риск – процессуальный. Если вы делаете что-то, что может не сработать, у вас должен быть план Б. Плюс, нужно двигаться небольшими итерациями. Ошибка, которую допускают джуны – работа над огромной задачей, которая потребует месяцы в режиме "все или ничего". Иногда нужно и так, но это крайне рискованно.
Быть старшим разработчиком – значит быть чуть лучше во всех этих аспектах. Как менеджер, я в основном хочу делегировать вам проект и не разбираться в специфике проблем, с которыми вам приходится сталкиваться. Альтернативная ситуация означает, что мне придется вмешаться и сделать что-то самостоятельно, что всегда происходит в какой-то степени, но чем вы более "senior", тем меньше мне придется вам помогать.