Developer Tales or everything about everything

28Дек/150

Роль senior-разработчика

Gesch‰ftsmann mit Visitenkarte

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

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

Реальность, в которой мы живем допускает, что Senior Developer - это специалист, который имеет опыт разработки более 3-х лет. Таких людей ставят на позиции тим-лидов, и часто все идет не так, как ожидалось - достаточно плохо.

Это мой взгляд на понятия, которые мы используем в IT-индустрии. Действительно, оценка людей по трем критериям - это непозволительное упрощение всех нюансов, знаний и опыта, который необходим в данной сфере. Но как есть, так есть. Если мы будет классифицировать людей подобным образом, тогда из индустрии необходимо убрать время как параметр. Специалист с десятилетним опытом и человек, получивший опыт десяток раз за год - совершенно разные люди.

Этапы роста разработчика ПО

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

Таковой является жизнь Junior-разработчика. Свежий ум, которому кажется, что он знает все. К сожалению, вскоре выяснится, что все знания, полученные в учебных заведениях - лишь слабая подготовка к суровой реальности. Реальность более беспорядочна, чем ожидается. Менее теоретически точна. Приходится существовать в мире компромиссов, где любые предположения могут быть заведомо ложными.

Работа с такими особенностями - это действительно то, на чем следует сосредоточиться, и что стоит хорошо изучить. Junior-разработчики требуют много внимания, присмотра и обучения из-за такой не стандартной среды работы, иначе они не будут двигаться вперед очень долгое время (я недавно встретил парня, который занимается разработкой одно или два десятилетия, но по-прежнему является Junior-ом). Можно назвать этот период наработкой ежедневных тактических техник.

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

Хорошему Junior-разработчику можно поручить задачу, ожидая, что он выполнит его быстро и хорошо

Intermediate-разработчики - это те, кто начинают мыслить шаблонами неудач (обычно своих собственных), и понимают, что необходимо проделать гораздо большую работу, нежели просто реализацию поставленной задачи, для того, чтобы результат был действительно рабочим и мог быть доработан без риска нарушить работу всей системы. Также, Intermediate-разработчики получают уникальный опыт, встречая свой собственный код, написанный год назад, которым они тогда гордились, и который теперь в их глазах является абсолютным хламом. Middle-разработчики ищут пути реализации задач правильным путем, и находят их путем экспериментов, чтения литературы и обсуждений с другими программистами. Этот этап является периодом изучения теории проектирования программного обеспечения, а не проектирования программного кода (чему учили в учебных заведениях).

Системы, разработанные Middle-разработчиками будут "падать" по причинам совершенно отличным от тех, которые свойственны ошибкам в ПО, разработанного Junior-ами. Junior напишет целую кучу разнообразных алгоритмов. Хороший Intermediate не будет делать основной акцент на паттерны проектирования и проблемно-ориентированное программирование. С одной стороны - эти техники и посвященные им книги великолепны для изучения методик разработки крупных объектно-ориентированных систем, однако приложение разработанное со строгим соблюдением всех правил той или иной технологии приводит к тому, что системы становятся гибкими там, где это не нужно, и "несгибаемыми" там, где это необходимо.

Можно быть уверенным, что Middle разработает систему, которая прослужит гораздо дольше системы, разработанной Junior-ом, однако, все равно, в ней будут сокрыты некоторые "болезни", с которыми придется бороться в будущем. Печальный факт в том, что не только большинство Senior-разработчиков, но и некоторые Team Lead-ы, по сути, являются Middle-разработчиками. Большинство этого просто не осознает, одновременно преследуя самые лучшие намерения, не встретив в процессе своей работы тех, кто находится на более высоком уровне.

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

Хороший Intermediate-разработчик требует меньше внимания. Им можно доверить поиск проблем в архитектуре приложения, с ними можно обсудить дизайн кода. Они также являются "рабочими лошадками" команды разработки. Однако, за ними все еще необходимо следить и быть для них наставником

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

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

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

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

SD думают не только о себе. Для них важно то, как работает их организация и клиенты, какова их значимость, и что важно, а что - нет, для достижения успеха. Когда мяч падает на пол, Senior сделает все от него зависящее, чтобы поднять его. Фраза: "Это не моя работа", - никогда не прозвучит в подобных ситуациях.

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

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

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

Senior понимает, что лидерство заключается не в проявлении силы, а в наделении силой. Суть не в управлении, а в направлении.

Если в команде нет ни однго Senior Developer-а, то проект обречен на провал. Команда Intermediate Developer-ов продвинется очень далеко, однако, дни ПО, разработанного такой командой, сочтены, и конечный результат - это закрытие магазина, либо рискованные и дорогостоящие переработки. SD - единственный, кто может выбирать технологию и платформы так, что все будет гладко

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

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

Источник: http://mattbriggs.net/blog/2015/06/01/the-role-of-a-senior-developer/

Просмотров: 676
Связано с категорией: Development Оставить комментарий
Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment


− три = 4

http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_good.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif 
http://microfork.com/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif 
 

Trackbacks are disabled.