«Чтобы Это Развивать, Нужна Степень Доктора Философии»

Сидя в офисе и перебирая бумаги десять лет, вы не станете мастером программирования.

Только написание программ может это сделать.

В свете последних событий, касающихся производительности терминалов Windows [см.

https://github.com/microsoft/terminal/issues/10362 ], я подумал, что стоит немного порассуждать на эту тему, поскольку она раскрывает некоторые проблемы, с которыми сталкивается индустрия разработки программного обеспечения.

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

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

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

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

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

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

Но кто будет выполнять всю эту работу?

Жизненный цикл программиста

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

Мне кажется, что программистов можно условно разделить на три категории:

«Чтобы это развивать, нужна степень доктора философии»

  • Молодые-зеленые: те, кто только начал работать профессиональными программистами; они требуют строгого надзора.

  • Тех, кто примерно понимает, что делает: профессиональных программистов, которые вроде бы понимают, что делают, и чаще всего умеют выполнять свои задачи.

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

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

    Некоторые программисты никогда не достигнут этого уровня, несмотря на свою официальную должность (подробнее об этом ниже).

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

Я специально решил не включать опыт работы в эти категории, поскольку считаю, что интерес и любопытство важнее, чем годы, потраченные на написание геттеров и сеттеров в соответствии с каким-то руководством по корпоративному стилю.

Когда вы войдете в мир работы в качестве профессионального программиста, вы, скорее всего, окажетесь в самом низком ранге - так называемой категории «молодых-зеленых».

Скорее всего, вам будет назначен наставник, который будет контролировать вашу работу и следить за тем, чтобы она соответствовала стандартам и правилам компании.

У вас не будет большого выбора в том, что вы будете делать, и вам придется выполнять самые разные задачи; одновременно интересно и довольно скучно, к чему никто не хочет прикасаться.

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

Вы получаете почетное звание «знает, что делает».

С большой зарплатой приходит и большая ответственность.

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

Вам могут доверить разработку небольшой части проекта.

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

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

Возможно, вы пообщаетесь с заказчиком, чтобы решить его проблемы.

«Эта категория очень широка, так кто знаетЭ» Кроме того, категория «примерно понимает, что делает» — это еще и этап отделения зёрен от плевел.

Боссы всегда ищут кого-то, кто сможет взять на себя их обязанности.

Теперь, когда вы неоднократно доказали свои навыки, им пора задуматься о будущем и «дорасти» до более ответственной должности.

Как вы относитесь к управлению немного более крупной функцией, имея под своим руководством всех этих «молодых и зеленых» программистов? В конце концов, это довольно очевидный шаг для вас.

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

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

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

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

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

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

Сидя в офисе и перебирая бумаги десять лет, вы не станете мастером программирования.

Только написание программ может это сделать.

Обречен ли я навсегда остаться на уровне «он знает, что делает», если выберу путь лидера? Нет, некоторые люди достаточно настойчивы, чтобы дойти до категории «опытных» программистов, но очень немногие готовы прикладывать такие усилия помимо своей координационной работы.

Как показано на графике выше, чем выше вы поднимаетесь, тем сильнее становится одиночество.

На самом деле никто не знает, как выглядит истинное соотношение категорий, но вы можете оценить его, наблюдая за окружающими.

Особенно хорошо осведомлены о ситуации на рынке те, кто проводит собеседования (хотя это также зависит от «гламурности» вашей компании.

Известные компании привлекают лучших специалистов).

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

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

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

В конце концов, один человек, каким бы великим он ни был, не способен на все.



Так кто же тогда разрабатывает все функции?

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

Вот почему подавляющее большинство программного обеспечения написано людьми, которые все еще учатся этому ремеслу.

Много ли на самом деле знают молодые зеленые программисты? Не очень сильно, и это влияет на качество программ.

Да, опытные программисты берутся за проектирование, но это вас не спасет, если реализация отличной архитектуры окажется ужасной.

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

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

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

Теги: #Карьера в IT-индустрии #программирование #карьера #развитие #Образовательный процесс в IT #работа #работа в ней #профессиональное развитие #программист
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.