{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0
397 комментариев
Написать комментарий...
Илитный Иксперт
Не нанимайте крутых программистов

Начнем с того, что Фил не имеет отношения к крутым программистам. Ну может он конечно общался с ними, жал им руки. Но сам - нет.

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

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

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

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

Хорошие тесты - это не 100% покрытие, а тесты в местах где ошибки реально критичны, и где ошибок и времени на их фикс больше чем на написание тестов. И уж тем более ни тогда, когда код или архитектура проекта специально приспосабливается под тесты - это конечная остановочка.

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

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

А вообще начинать технический стартап не имея скилла в этой области или доверенного человека с такими скиллами - это лотерея.

Ответить
Развернуть ветку
Павел Костюнин

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

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

Ответить
Развернуть ветку
new_comment
 По теме поста: соглашусь, что качество кода уходит на второй план у стартапов, в угоду бизнес задачам.

Работаю в большой компании. Там этот принцип реализован даже в большей степени, чем  маленьких. Возможно, многие проекты начинались крутыми программистами и были тщательно продуманы, но те крутые программисты давно ушли или получили повышение. Код дорабатывали многие программисты, которые не знакомы ни с основателями проекта, ни друг с другом. Естественно, ни времени, ни желания разбираться в том, какие идеи были заложены в коде, ни у кого не было. В результате проект состоит из бессвязного говнокода. Никакого тебе рефакторинга. Времени и ресурсов на него нет. Бизнес давит сроками. Нужно всё сделать через неделю, а в идеале сегодня. Притом, что аналитика будет утверждена ещё через месяц. Ибо надо получить 100500 согласований. И скорее всего, техзадание несколько раз поменяется в процессе. И возможно, задача будет отменена. В результате, качество кода - это последнее, что кого-то интересует. В большой компании основной показатель - закрыть задачу в срок.

Ответить
Развернуть ветку
Александр Прилипко

Если стартовали нормальные программисты это здание простоит и с вашей мансардой

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

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

Ответить
Развернуть ветку
Александр Прилипко

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

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

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

Ответить
Развернуть ветку
Александр Прилипко

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

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

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

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

Ответить
Развернуть ветку
Александр Прилипко

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

С этим всегда проблема. по крайней мере сейчас.

 Быстрых лидов я могу набрать по 12рублей за клик. Но от них одни проблемы они хотят за пол копейки миллион. И когда ты им говоришь, что из этого куска шерсти сделаешь 7 шапок, но они будут не по их размеру им пофиг. Поэтому работая с таким бизнесом будет fail = fail.

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

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

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

Ответить
Развернуть ветку
Александр Прилипко

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

Ответить
Развернуть ветку
Чайка О.

"В большой компании основной показатель - закрыть задачу в срок." 
В маленькой это главный показатель + чтобы включалось/было похоже на правду

Ответить
Развернуть ветку
Александр Прилипко

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

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

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