
Хорошая организация имеет решающее значение для успеха проекта. В командах разработчиков возникает несколько профилей, каждый из которых отражает разные уровни знаний и навыков. Если за некоторыми из них следуют прилагательные, за которыми может стоять многолетний опыт (например, в обработке кода), всегда ли это лучший фактор для установления иерархии, чтобы получить максимальную отдачу от команды?
Термин старший разработчик не должен использоваться ограничивается «годами опыта». Я предлагаю контекстуализировать уровни опыта, предоставляемого разработчикам, с собственной точки зрения.
младший разработчик, только что окончивший школу, думает, что знает все. Внезапно наступает реальность: он понимает, что то, чему он научился в школе, было лишь (плохой) подготовкой к тем проблемам, с которыми он столкнется. Мало-помалу чистая теория рассеивается, постепенно уступая место компромиссу, оставляя мало места для догадок. Это изменение контекста должно стать источником обучения для младших разработчиков, которым затем необходимо обучать, контролировать и просвещать людей, которые были там или рискуют остаться в затруднительном положении в течение длительного времени. «Поэтому можно сказать, что этот период предназначен для приобретения тактики, повседневных приемов». Я вижу младших разработчиков как людей, которые сосредоточены на коде, а не на разработке, и которые часто не видят разницы.
Со временем младший становится средним уровнем. В этот момент он начинает замечать закономерности неудач (часто из собственного опыта) и понимает, что для того, чтобы придумать что-то, что работает, нужно больше, чем просто сосредоточиться на конкретных задачах. Он достиг такого уровня, когда может взглянуть на кусок кода, которым раньше гордился, и понять, что в нем нет ничего особенного. Разработчик среднего уровня — это тот, кто пытается понять, КАК проектировать вещи ЛУЧШИМ СПОСОБОМ. Для этого он опирается на свой опыт, сам документирует, обсуждает с другими разработчиками. Этот шаг посвящен изучению теории проектирования программного обеспечения вместо изучения теории проектирования кода (которую изучают в школе). Младший разработчик предоставит вам набор алгоритмов, которые более или менее работают, а разработчик среднего уровня предоставит вам шаблоны проектирования и проектирование, ориентированное на предметную область. Кроме того, хотя в целом разработчики среднего уровня более опытны в проектировании систем, которые работают дольше, чем разработчики младшего уровня, вы все равно должны быть готовы к негативным последствиям. «Печальная реальность такова, что подавляющее большинство старших разработчиков и руководителей групп на самом деле являются мидл-разработчиками. Большинство из них не осознают этого, и хотя у них самые лучшие намерения, они просто никогда не работали с кем-то, кто находится на более высоком уровне». На мой взгляд, разработчики среднего звена вполне осознают свою роль в компании и ценность, которую они приносят. Хороший разработчик среднего уровня понимает, что использование кода для решения проблемы — это средство для достижения цели, а не сама цель. Тем не менее, они по-прежнему привязаны к своей идее поиска ЛУЧШЕГО СПОСОБА разработки программного обеспечения.
Затем идет старший разработчик, разработчик, который знает о своих ошибках. Он оценивает вероятность успеха и неудачи при столкновении с проблемой с интеллектуальной честностью. Он уходит от сложности, которую предпочитает разработчик среднего уровня, в поисках простоты. Он перестает классифицировать разработчиков на основе их уровня знаний, но вместо этого понимает, что существует целый спектр сильных и слабых сторон. На самом деле, он больше, чем кто-либо другой, осознает свои сильные стороны и ограничения. Старший разработчик мыслит в терминах «контекста», применяя теорию. Он понимает, что не существует ОДНОГО ЛУЧШЕГО СПОСОБА для разработки программного обеспечения, но единственный способ сделать хорошее программное обеспечение — это адаптировать теорию к потребностям клиента, команды, бизнеса.
Старший разработчик поймет, что его работа — предлагать решения проблем, а не писать код. Из-за этого старший разработчик всегда будет думать о том, что он делает, с точки зрения ценности для бизнеса и клиента, а не с точки зрения затраченных усилий.
Старший разработчик поймет, что вы не можете сделать все самостоятельно, и что их основная роль — помочь команде стать лучше так же, как каждый член команды стремится стать лучше.
Тем не менее, свежие выпускники являются таким же активом для компании, как и те, у кого 15–20-летний опыт работы на местах. Нам нужно перестать нанимать сотрудников на основе стереотипов.
Хотите узнать, какие языки будут самыми популярными в следующем году? Посмотрите другой мой пост: https://pac-pac.medium.com/top-programming-languages-you-should -учиться-2022-4b035ed49a57