- Выделяться навыками программирования
- Быть наставником для других программистов
- Избегать проблем в отношениях с коллегами и руководством внутри организации
- Подбирать технические решения для потребностей компании
Больше, чем просто знания
Программирование — высокотехнологичная сфера, поэтому старший разработчик, естественно, не может не разбираться в том, как всё работает. Но любой разработчик высокого уровня должен быть, как я говорю, “специализированным универсалом”. Он уже должен иметь достаточно большой опыт в разработке и решении различных технических задач. Также, вероятно, он имеет более глубокие познания в какой-то определенной сфере, что очень важно, так как понимание деталей в разных сферах может помочь разработчику при переходе в другую область деятельности.Чтобы по-настоящему считаться опытным, вы должны принимать трудные решения, и принимать их правильно.Эти глубокие знания также позволяют вам стать достаточно мудрым, чтобы увидеть, чем обернулись для вас решения, принятые в прошлом. Старший разработчик должен знать, где собака зарыта. Время потраченное на то, чтобы полностью разобраться в теме, окупится позже, когда вы уже интуитивно будете понимать, где может вылезти ошибка через 10 строчек кода. И эту мудрость можно перенести и на другие ситуации. Опытные разработчики, как минимум, понимают, когда им нужно действовать осторожнее, потому что они не могут увидеть все потенциальные угрозы. Эта интуиция помогает компании гораздо больше, чем просто умение быстро писать код. Грамотные решения по-настоящему опытного разработчика просто не приводят к появлению проблем.
Принимать сложные решения и жить с этим
Вот вам настоящий секрет: не существует волшебного решения всех проблем программистов. Практически никогда не бывает так, что команда принимает решение, все собирают вещи, идут домой и больше никогда к этой проблеме не возвращаются. Каждая структура, каждый выбор и каждая возможность имеет возможные недостатки, особенно если продукт растет и развивается. Если сегодня вы решите быстрее выпустить продукт на рынок, чтобы опередить конкурентов, то, возможно, крупный рефакторинг кода понадобится вам уже через 6 месяцев, а не через 6 лет. Но если при этом вы улучшите свои позиции на рынке и получите прибыль — это стоит того. Чтобы по-настоящему считаться опытным, вы должны принимать трудные решения, и принимать их правильно. Когда вы выбираете решение, вы также выбираете проблемы и задачи, с которыми команда столкнется в будущем. Старший разработчик будет иметь опыт работы во многих парадигмах проектирования, многих языках и многих командах. И хотя практически невозможно полностью знать все возможные шаблоны дизайна и архитектуры, особенно потому, что они продолжают развиваться, зато возможно иметь о них представление и понимать достоинства и превосходства тех или иных подходов.Умение слушать других и выбирать лучшие идеи
Некоторые могут думать, что принятие решений означает, что у вас должно быть сильное, непререкаемое мнение. Но я считаю, что очень плохо, если старший разработчик уважает только своё мнение о технологиях, например, если он считает популярные языки программирования “чушью” или слишком заводится по подобному поводу. Команде могут поставить задачу поработать с крупным продуктом, написанном на языке, который не нравится старшему разработчику, но, возможно, в этом языке есть прекрасные библиотеки великолепная поддержка, которые помогут идеально решить задачу.Чем больше человек открыт новым знаниям и мнениям своих коллег, тем быстрее он станет “старшим” во всех смыслах.Хороший старший разработчик не обязан любить все языки и среды разработки. Лучше всего даже быть, в какой-то степени, равнодушным к ним. Всё это инструменты, и опытный разработчик знает, что всегда есть причина решать задачу определённым способом. Вместо того, чтобы думать о том, какой инструмент лучше или хуже, настоящий старший разработчик выберет наиболее подходящий именно под эту задачу. Прекрасный пример — PHP. Многие разработчики хейтят PHP, но многие его недостатки и позволили ему покорить Интернет. Не нужно смеяться; нужно понять, как извлечь из PHP всё хорошее и не дать развиться плохому.
Качества “старшего” проявятся
Учитывая описанные выше аспекты и факторы, молодых, средних и старших разработчиков можно определить примерно вот так:- Junior разработчики знают только один способ решения задачи, обычно взятый из руководства или изученный в школе. Почти наверняка они используют один из модных фреймворков.
- Mid-level разработчики понимают, что каждая проблема является частью большей системы, и задумываются о лёгкости сопровождения, качестве кода и прочем, но всё ещё не понимают полную картину. Обычно больше внимания они уделяют процессу разработки.
- Senior разработчики понимают, что не существует решений без возможных недостатков и рисков. Они обычно выбирают не то, что круто или “правильно” согласно какой-то книге, а то, что, в целом, будет менее рискованно для команды. Они предпочитают то, что будет легко сопровождать и исправлять, и то, чему можно легко научить.
Мы в Telegram — подписывайтесь





