{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

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

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

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

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

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

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

Я сразу сказал прямо — это не код, это дырявый пакет с мусором, мы всё здесь к чертям перепишем.

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

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

Как у любого стартапа, у этого был ограниченный бюджет. И я убедил всех, что его надо тратить на правильный код, продуманную архитектуру и глубокое тестирование. «Это самая правильная инвестиция, — настаивал я. — Знаете, почему 90% стартапов схлопываются? Потому что у них все начинает валиться из-за ранних ошибок, и весь бюджет уходит на латание дыр в прототипе, из которого они решили растить продукт, не переписывая. А могли бы разрабатывать новые фичи».

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

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

«Эй, вы меня наняли, чтобы повысить качество разработки — мы его повышаем». Но это моя логика. Кроме логики есть ещё эмоции, и я начал сопереживать. На самом деле я понимал, что им не нужно качество. Если вы любите работать на результат — попробуйте меня понять. Представьте, что вы попали в компанию вечного процесса, где релиз вечно откладывается все дальше и дальше, и вы начинаете понимать, что никто к нему особо и не стремится. Как быстро вы сбежите?

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

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

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

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

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

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

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

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

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

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

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

0
397 комментариев
Написать комментарий...
Сергей Ленский

Вот у нас в компании за 5 лет сменилось 4 программиста. И каждый вновь приходящий говорил, что "этим кодом можно выжигать глаза". Вот как так? Это мы постепенно увеличиваем скиллы программистов? Или же это традиция - прийти и повалять код предшественника? Почему-то второе видится логичней.

Ответить
Развернуть ветку
Nikita Malyshev

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

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

Плюс, разработчики часто ложат болт на документацию своего кода и проекта. Даже тут уже мысля пролетала, что на доку потратится куча времени. А без доки, через год, даже автор кода не поймёт что и зачем написано, но когда писалось - было очевидно. В итоге сэкономили 10 минут на старте, потеряли часы через год. Такое, как правило, опять же, возникает за неимением стандартов или их игнорирования. А на стандарты можно натравить линтеры и видеть что разраб их игнорирует.

Ответить
Развернуть ветку
Anton Z.

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

Ответить
Развернуть ветку
Nikita Malyshev

Есть общепринятые. Поэтому не нужно выдумывать свои. В том же мире PHP, есть PSR стандарты — https://www.php-fig.org/. Нужно просто утвердить подходящий вариант на уровне компании, если не утверждено на уровне фреймворка \ CMS и требовать их соблюдения.

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

Ответить
Развернуть ветку
yesYouStp

есть уже стандарты MVC в любом учебнике, на крайняк функциональное программирование (в учебнике react'а), что ты там за стандарты еще тащишь? код стайл?
Вы реально там в программирование из дворников пришли, что вам код-стайл предыдущего разраба мешает код понять и поэтому нужна новая абстракция над языком? Про тебя и вас как раз такая статья. "Стандарт на уровне CMS" - просто лол.

Ответить
Развернуть ветку
Nikita Malyshev
есть уже стандарты MVC в любом учебнике

MVC - не стандарт. Это паттерн.

на крайняк функциональное программирование (в учебнике react'а)

Не совсем ясно как это в противовес MVC поставляется. Паттерн и парадигма программирования вообще разные вещи.

что вам код-стайл предыдущего разраба мешает код понять

Его запутанность и отсебятина. То что со стандартами, условно, можно понять за минут 30, написанное черт пойми как, и по какой логике за 3 часа. Эта разница отразится в итоговом бюджете. И чем больше кодовая база, тем больше будет переплаты за разгребания говнокода. Понять никто не мешает, но сопоставляя время на "понимание" говнокода и потом копание в нем, зачастую больше, чем просто сделать с нуля.

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

"Стандарт на уровне CMS" - просто лол.

И что смешного? Если вы такого не встречали, не значит, что таких не существует. Например Drupal, имеет свои стандарты на всё и бест практисы. Вы ни строчки кода не сможете законтрибутить, пока они не будут по всем требованиям. Вы даже полноценный модуль не сможете опубликовать, пока он не будет давать зеленый свет по всем стандартам, как минимум.

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

Ответить
Развернуть ветку
yesYouStp

стандарт и паттерн, вау стандарт и шаблон, идем дальше Шаблон это - "Образец, по к-рому изготовляются какие-н. одинаковые изделия." То есть стандарт по факту. Масло маслянное, ребят, с логикой у вас проблемы и в этом вся ваша проблема.

Ответить
Развернуть ветку
Виктор Степаньков

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

Был разраб один, хвалился, что у него свой код-стайл.
На выходе давал код, который в обфускации не нуждается.

У здорового человека, переменная называется quantity или qte.
У него - qua, он тупо именовал переменные по первым буквам слова и гордился этим.

Ответить
Развернуть ветку
yesYouStp

А если не если? Всё, развалилась логика Вити.

Ответить
Развернуть ветку
Виктор Степаньков

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

Ответить
Развернуть ветку
394 комментария
Раскрывать всегда