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

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

270270

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

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

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

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

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

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

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

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

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

364

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

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

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

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

Классная архитектура, это как в книжке той же "Банды Четырех", каждый из которых писал приложения, размеры и важность которых недостижимы ни для тебя ни для меня.

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

Качественно писать код - это качественно писать код. А городить костыли ради экономии бюджета - это качественно вести бизнес.

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

35

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

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

13

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

14

... Когда коммент лучше статьи

12

Не надо путать опытных программистов и крутых программистов. Это совершенно разные люди.

4

Комментарий недоступен

1

Полностью поддерживаю! Автору рано ещё называть себя крутым разработчиком. Без обид.

2

"Крутая архитектура это не когда как в книжках, от профессоров, которые ничего кроме текста лаб не писали. " wtf am I reading.

1

Добрый день.

Прочитал массивный кусок этого треда и ваших комментариев в частности.

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

Каким образом вы видите развитие навыков проектирования у бывших студентов, которые становятся программистами (и нужно ли им это вообще)? Ну и как собственно развивать эти навыки у себя?  Существует ли какой-то системный подход для этого?

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

Хотел написать похожий комментарий, но даже добавить нечего. Архитектурные астронавты такие астронавты... https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you/

шакал заткнись

Комментарий недоступен

Вот тебя я бы нанял.

Просто там нужен хороший CTO или ТимЛид, который понимал, что реально нужно бизнесу и пинал программиста в нужном направлении. 
А если такого программиста пустить именно на роль того, кто рулит проектом - этот проект или не будет выпущен никогда или к моменту выпуска будет неактуален)

Тот самый случай, когда комментарий - лучше самой статьи.

очень хороший ответ на статью

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