Переусложненный гамбургер (но, наверное, вкусный)

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

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

Линус Торвальдс

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

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

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

Помните первый iPhone? Там не было даже копирования и вставки текста! Не знаю, были ли у Apple какие-то задумки о том, как реализовать копирование, но факт в том, что отсутствие этой фичи не отложило и не отменило проект.

Не зря стартаперы говорят про MVP, minimum viable product: просто если не сделать минимально пригодный продукт, можно вообще никакого не сделать. Это же относится и к проектированию, не только к непосредственно исполнению: не усложняйте задачу, придумывая препятствия, которых пока нет, и которых может и не будет никогда.