Менеджер проекта нанимает трех лесорубов, чтобы они расчистили лес. Лесорубы приезжают рано утром в понедельник, и менеджер говорит: «Мне нужно как можно скорее вырубить этот лес. Делайте то, что считаете лучшим ».

Первый лесоруб говорит: «Ну, я знаю, что если я ударил топором по дереву, дерево упадет, так что я начну».

Второй дровосек говорит: «Хм, этот лес выглядит довольно большим. У меня в магазине сломанная бензопила. Я пойду починю и вернусь через неделю.

Третий лесоруб говорит: «Бензопила, а? Если бы у нас был миллион бензопил, мы бы вырубили весь лес за час. Я начну проектировать завод по производству бензопил ».

Менеджер возвращается через неделю. Кто срубил больше всего деревьев?

Менеджер возвращается через месяц. Кто срубил больше всего деревьев?

Менеджер возвращается через год. Кто срубил больше всего деревьев?

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

Второй дровосек отремонтировал свою бензопилу и срубил несколько маленьких деревьев и одно большое.

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

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

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

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

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

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

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

Какому дровосеку вам следует подражать?

Ну, это зависит как от вашего уровня опыта, так и от размера проблемы.

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

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

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

Разница между программистом «1x» и программистом «10x» не обязательно в том, что последний пишет лучший код, а в том, что последний гораздо больше ориентирован на выполнение минимального объема работы, необходимой для выполнения работы как можно быстрее. .

Когда вы задаетесь вопросом, правильно ли вы подходите к проблеме, остановитесь и задайте себе несколько вопросов.

  • Вы знаете, что такое дерево и как его можно срубить?
  • Вы знаете, сколько деревьев нужно срубить?
  • Ты топором размахиваешь?
  • Вы ремонтируете бензопилу?
  • Вы проектируете завод по производству бензопил?

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

«Бензопилы неэлегантны. Я предпочитаю использовать топоры, которые воплощают теорему Джо Аксегая о «максимальной нестабильности», и только топоры с идеально цилиндрическими рукоятками ».

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

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

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

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

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

«Если бы у нас был миллион заводов по производству бензопил, мы могли бы построить миллион заводов по производству бензопил за час. Я начну проектировать завод по производству бензопил ».

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

«Мы не сможем начать рубку деревьев, пока не убедимся, что бензопилы действительно являются одним из инструментов, а все инструменты - типами машин. Я назначу встречу со всеми разработчиками машин, чтобы мы могли прийти к консенсусу ».

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