Website development
Programming
Perfect code
7 March 2013

Стартап-ловушка

Original author: Robert Martin
Translation
  • Вы присоединились к новому стартапу.
  • Вы мегаталантливое создание.
  • Вы можете работать 60, 70, 80 часов в неделю для достижения результата.
  • Вы офигенный разработчик и дизайнер.
  • Вы не попадетесь в ловушки, в которые попадались другие.
  • Вы убедитесь, что в этот раз все будет по-другому.
  • Вы настолько хороши, что правила вам ни к чему.
  • Вы в жопе.


Стартап-ловушка.

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

Стартап-ловушка — это мысль о том, что стартап-фаза отличается; и что в этой фазе успех зависит не от соблюдения правил, а от их нарушения. Это глупо. Стартап-фаза ничем не отличается. Это всего лишь первая из нескольких фаз, и она задает тон всем остальным фазам. Посмотрите на такую компанию пять лет спустя (если она вообще будет существовать), и вы увидите, что в ней относятся к правилам так же, как и во время стартап-фазы. Возможно, за исключением переработок. (хи-хи).

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

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

Задайте себе вопрос: как действует бухгалтер в стартапе? Этот человек отвечает за деньги инвесторов. Как вы думаете, у него есть дедлайны? Находится ли он под давлением, когда составляет прогнозы, делает отчеты о движении денежных средств и тому подобное? Думаете его боссы терпят срыв сроков? Так вот я вам скажу: чувак, который управляет деньгами инвесторов, испытывает куда больше давления нежели любой разработчик софта.

Так как же бухгалтер себя ведет? Проверяет ли он все суммы дважды? Использует ли он двойную запись? Следует ли он всем правилам и практикам? И отличаются ли эти правила только потому, что сейчас стартап-фаза?

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

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

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

Если вы забьете на TDD, поможет ли это двигаться быстро? Процитирую ответ капитана Сулу молодому Лейтенанту, спросившему, нужно ли уведомить флот, когда взорвалась клингонская луна Праксис: «Вы шутите?» ВЫ ШУТИТЕ?

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

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

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

Со временем ваши оценки будут расти. Станет все тяжелее и тяжелее добавлять новые функции. Станет накапливаться все больше и больше ошибок. Вы начнете делить их на критичные и приемлемые (как будто существуют приемлемые ошибки!). Вы будете создавать настолько хрупкие модули, что не доверите изменения в них ни себе, ни другим. Так вы начнете писать «костыли». Вы построите гниющую кучу кода, который будет требовать все больше и больше усилий только для того, чтобы продолжать работать. Ваше движение замедлится. А может даже пойдет в обратном направлении, потому что каждая новая версия будет содержать все больше и больше ошибок, и будет все менее и менее стабильной. Катастрофы станут обыденным делом, как и ошибки, которые никогда не должны были произойти. А устранение последствий будет занимать огромное количество времени.

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

Если вы хотите двигаться быстро. Если вы хотите справиться со всеми дедлайнами. Если вам нужен самый большой шанс на успех. Тогда я не могу вам дать лучше совета, чем этот: Следуйте дисциплинам! Пишите тесты. Проводите рефакторинг. Сохраняйте код простым и чистым. Не спешите! В ваших руках самая суть стартапа. Не будьте беспечны!

Запомните: Единственный способ двигаться быстро — это двигаться правильно.

От переводчика: дядя Боб уже довольно давно призывает разработчиков к профессиональному поведению, а индустрию в целом — к взрослению. На эту тему он пишет книги, например «Принципы, паттерны и методики гибкой разработки на языке C#» и «Идеальный программист»; выступает с докладами, например, The Reasonable Expectations of Your CTO и Demanding Professionalism (минуты с 20-ой); пишет статьи, как например эта. Категорически рекомендую ознакомиться с его мыслями поподробнее.

+66
76.4k 293
Comments 114
Top of the day