Создание нового приложения - это увлекательно и страшно. Но это также сложно

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

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

Но не стоит. Надеюсь, после прочтения этой статьи вы этого не сделаете.

Последний ответственный момент

Ключевым словом в последнем ответственном моменте является слово ответственным. Не читайте фразу и не думайте: Отложите все до конца!

Это не значит.

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

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

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

Возьмем пример.

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

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

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

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

Сначала решите бизнес-проблему

Расставьте приоритеты в решении бизнес-задачи. Для Holey Ship мы должны добавить пользователей и разрешить им публиковать сообщения.

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

Хотя блокировка пользователей, безусловно, является функцией, которая может вам понадобиться в какой-то момент, есть много других вещей, которые необходимо сделать заранее:

  • Добавление нового пользователя в систему.
  • Разрешить пользователям публиковать новые темы.
  • Разрешить пользователям комментировать темы.
  • Настройка модераторов.
  • Разделение тем на метагруппы.
  • Рейтинг популярных тем для наглядности.

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

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

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

Просто запрограммируйте это

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

Я придерживаюсь этой мантры. И это хорошо сочетается со всем, что касается последнего ответственного момента.

Что, если бы все на нашем форуме отлично ладили с Holey Ship? Никто не кричал. Это было просто сообщество по-настоящему хороших и трудолюбивых людей.

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

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

В поисках последнего ответственного момента

Итак, как долго вы можете откладывать сложность, не проявляя безответственности?

В следующий раз, когда вы решите, когда создавать новую функцию, задайте себе следующие вопросы:

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

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

Если у вас есть четкие и уверенные ответы, возможно, пора нажать на курок и начать строительство.

Помните, чем дольше вы откладываете (ответственно), тем больше вы узнаете и тем надежнее будет ваше решение.

Заключение

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

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

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

Боритесь с горячим желанием иметь полностью разработанное приложение с первого дня. Так не построят - гарантированно.

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