вторник, 29 октября 2013 г.

Кто такой старший разработчик?

Что подразумевает позиция "старший разработчик"? Сегодня все кому не лень называют себя старшими разработчиками -- от вчерашних выпускников до главных технических директоров. Но что же все-таки значит это словосочетание?

Технические специалисты

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

Они -- просто находка для команды, поскольку постоянно будут засыпать вас самыми невероятными и грандиозными новинками. Если вам когда-нибудь станет интересно, существует ли готовое решение для вашей проблемы, спросите их -- два из них они испробовали сами и в данное время используют измененную версию третьего на своем Raspberry Pi.

Их проблема в том, что ответом на все вопросы они считают технологию. Зачем нужен обработчик HTTP, когда есть полнофункциональный сервер приложений? Зачем использовать добрый старый TCP, если можно внедрить асинхронные коммуникации? Для чего пытаться дорабатывать ПО, если вокруг столько всяких инструментов и интересных технологий, с которыми так приятно разбираться?

Инструментальщики

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

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

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

Серверные мастера

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

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

GTD (Getting Things Done -- "доведение дел до завершения")

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

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

Разработчики пользовательских интерфейсов

Почему-то разработчики пользовательских интерфейсов никогда не считаются самыми старшими. Как будто мастерское владение WPF или HTML/CSS менее ценно.

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

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

Руководитель команды

Ваш руководитель команды, вероятно, не является старшим разработчиком. Извините, если вы не кодируете, вы не разработчик.

Только полегче со своим руководителем команды: бедолага, может быть, однажды писал код. Может, ему даже понравилось. Затем он решил, что хорошо справляется с этой работой, поэтому лучше посвятить свою жизнь совещаниям и объяснению своим коллегам, почему продукт, к которому он не пишет код, отстает от сроков.

Архитектор

Наверняка, ваш архитектор также не является старшим разработчиком. Разве что он на самом деле пишет код. В таком случае, почему его зовут архитектором?

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

Однако, это не значит, что его решениям нужно следовать беспрекословно. Если вместо того, чтобы писать код, вы в очередной раз рисуете красивые картинки вашего масштабируемого промежуточного ПО для обмена сообщениями -- пускай ваша корпоративная сервисная шина катиться ко всем чертям.

Вывод

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

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

Старший разработчик: в конце концов, это всего лишь название должности.

Комментариев нет:

Отправить комментарий