Добавить в корзинуПозвонить
Найти в Дзене
PHP Боярин

...но есть один нюанс!

Большая беда программистов заключается в том, что уже после года активной разработки человек знает много красивых слов. Натурально, многие еще не понимают, как в базу данных попадают записи (и какие могут быть проблемы), но уже способны навесить лапши на уши кадровичке. Потому что женщины любят ушами, а он, подлец, так красиво рассказывал про принцип подстановки Барбары Лисков, что она сама не поняла, как он проник на предприятие. Поэтому, вне практической стороны вопроса, очень сложно отличить хорошего разработчика от того парня, который называет себя senior developer. Часто можно даже ошибиться, если первый просто делает свою работу, а второй активно мелет языком. К счастью, есть довольно простой способ грубо прикинуть, “кто есть ху”. Дело в том, что программисты проходят свое обучение и обретают опыт иным образом, нежели профессионалы строительства, выпечки или деревообработки. В профессиях, связанных с ручным трудом, задачу приходится решать от начала до конца. Обучаясь делу плотни

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

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

К счастью, есть довольно простой способ грубо прикинуть, “кто есть ху”.

Дело в том, что программисты проходят свое обучение и обретают опыт иным образом, нежели профессионалы строительства, выпечки или деревообработки. В профессиях, связанных с ручным трудом, задачу приходится решать от начала до конца. Обучаясь делу плотника, подмастерье сначала обучается переносить доски, затем пилить, строгать, сверлить. После чего осваивает соединения: сначала внахлест, потом “вполдерева”, “шип-паз”, “ласточкин хвост”...

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

Как же начинает свое обучение программист? Ему сразу дается операционная система, интерпретатор/компилятор языка, на котором он ведет разработку. Также, разумеется, у него в руках какое-нибудь толковое средство разработки, вроде моего любимого PhpStorm, которое заботливо подсказывает ему, если что-то сделано не так.

После этого ему говорят что-то вроде того: скачай-ка, мил человек, с гитхаба вот этот город. Он уже работает, только надо прописать названия некоторых улиц (вот тут возьми). А вот тут находится модуль “качели”, ты пропиши правильно размеры, как заказчик хочет. Не обращай внимания, что машины ездят, это нас пока не интересует. Ну вот, качели готовы, город замажь и отдавай заказчику.

Если пример кажется слегка гиперболизированным, очень зря: именно так работает создание сайта-визитки на популярном фреймворке, типа Laravel/Symfony или, прости господи, Yii. Кстати, тут сразу три города, потому что html-верстка тянет за собой css-фреймворк, ну и без javascript-фреймворка тоже никуда.

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

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

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

Программисты любят хорошо пошутить
Программисты любят хорошо пошутить

И вот здесь начинаются нюансы.

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

У меня есть пример из жизни. Несколько лет назад я видел один проект, который разрабатывался силами прекрасной команды, общей численностью около 10 человек. Среди них были DevOps (админы), разработчики, тестировщики, целый тимлид. Не считая, разумеется, управляющих действом “менеджеров проекта”.

Разумеется, проект управлялся по системе Scrum, ежедневно проходили митапы, процесс разработки делился на “спринты” по две недели. В общем, все прелести хипстерской разработки.

И была в проекте застарелая проблема: в определенных обстоятельствах, вместо красивых адресов (вида ‘https://example.com/list/40/’) в адресную строчку вылезал один из параметров (получалось что-то вроде ‘https://example.com/list/40/?my_ugly_parameter_dev=4’). Тикет кочевал из спринта в спринт в течение полугода, потому что пипл хавает, старшим вникать некогда, младшие в принципе не знают, с чего начать, а модные бородатые девопсы не понимают, что вообще не так.

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

Оказалось, сейчас все так модно: облака, девопсы, serverless-приложения, GRASP, SOLID, Илон Маск - что обычный разработчик утратил навыки самостоятельной настройки серверной части PHP. Многим кажется, что сферический код выполняется в вакууме, и вникать в нюансы нет нужды.

И вот этот уровень, в свою очередь, отличает разработчика middle-класса от senior-разработчика. Чем больше нюансов, тем более senior. Тем больше денег.

Повторим нашу классификацию:

  • Джун - программы иногда работают
  • Миддл - программы всегда работают *)
  • *) - если не случился нюанс, и тут поможет только Синьор за мешок денег
  • И все они говорят непонятными словами и кажутся ужасно умными

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

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