Как ускорить разработку?!

Допустим, вы — владелец небольшого бизнеса. Неайтишного. И у вас есть “маленькая, но своя” команда разработки, которая делает что-то вроде бы полезное. Но так меееедлееенно, что хочется им в башке отверткой что-нибудь подкрутить, чтобы работали лучше. С чего начать? В какую сторону крутить? И поможет ли?

Бизнес ускоряет разработку
Бизнес ускоряет разработку

Меня зовут Владимир Завертайлов, я основатель SingularityApp, и уже более 20 лет в заказной разработке в Сибириксе.

На днях сразу двое моих хороших знакомых комерсов пришли с вопросом “Как нам ускорить разработку”. У них небольшие и успешные оффлайн-бизнесы. А ай-ти — что-то вроде второстепенной черной магии. Которая стоит дорого. Работает медленно. И бесконечно бесит.

Чего они уже только не пробовали!

  • Добавляли на проект второго программиста. Третьего и четвертого. Не сработало. Кто знает закон Брукса — поймёт почему.
  • Пробовали нанимать программистов подороже / подешевле / джунов после колледжа (вообще не сработало).
  • Внедряли что-то типа скрама (у нас скрам… но).
  • Назначали тимлидом Единственного и Незаменимого разработчика, который понимает, как все устроено (можно было назвать его Богом, эффект был бы тот же).
  • Разделяли бэкэнд и фронтэнд в разные руки (стало только хуже).

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

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

Все очень медленно? Плохие новости!

Четыре инженера садятся в машину, она не заводится.

Инженер-механик: Наверное, сломался стартер.

Инженер-электрик: Может, сдох аккумулятор?

Инженер-химик: Да это плохой бензин.

IТ-инженер: Эй, ребята, у меня есть идея! Как насчет того, чтобы повысить мне ЗП до 900к?
анектод

Несмотря на мой немаленький опыт, я сам вляпывался в подобные ситуации. Но я то вырулил.

Давайте исходить из того, что у вас Хорошие, Адекватные, Мотивированные специалисты. Потому что если у вас плохие, неадекватные и демотивированные специалисты — вы попали по полной. Долбоящеры все портят. Хоть иди-сдавайся на мясокомбинат.

Просто этим Хорошим, Адекватным и Мотивированным специалистам что-то мешает. Чаще всего — вы сами.

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

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

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

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

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

Экспресс-ревизия

Разработка программного обеспечения — это такая штука, которая стоит дорого. И будет стоить только дороже, увы. Мы уже давно не в песочнице. Системы становятся слишком сложными. А сука-энтропия беспощадно делает свое дело, портя со временем то, что казалось-бы сделано хорошо.

Картина мира digital-проекта
Картина мира digital-проекта

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

Шаг 1. Оно вам надо?

Я бы вообще начал с вопроса “А оправдана ли своя команда”.

  • В маленьких командах сложно вырастить хорошие компетенции. Программистам интересно заниматься крутыми задачами, а у вас, у бизнеса — их обычно очень мало. Чаще всего у вас мелкие, противные, но очень срочные задачи, которые вы до конца не можете по-нормальному сформулировать (не барское дело).
  • Программисты любят, когда рядом есть еще более крутые программисты. Ну вот нужен кто-то, кто заценит, насколько он крут. Или даст по рукам. Или научит как правильно. В маленькой неайтишной компании такое реализовать сложно. Да, есть исключения (кому-то нравится сидеть тихонечко, пилить тикеты или быть незаменимым). Или вопрос можно залить деньгами. Но это всё такое…
  • Прикиньте по схеме ниже — оправдано ли для вас иметь свою команду. Это эвристика. Но она получена не на ровном месте.
Какую команду выбрать?
Какую команду выбрать?

Шаг 2. Что у нас за вайб? Digital Boolshit Bingo

Вот простой способ собрать общий вайб в вашей команде. Сыграем в Digital Boolshit Bingo.

Как ускорить разработку?!

Рисуем на доске колонки “Люди в команде”, “Люди вне команды”, “Процессы”, “Технологии”. И строчки с тремя смайликами. Веселый, нейтральный, грусный. Пусть каждый из вашей команды нарисует палочки в каждой из колонок. Как он это чувствует. Затем вы — нарисуете свои.

Надеюсь, у вас не Единственный и Незаменимый программист, потому что в этом случае становится бздляво. См. Шаг 1.

Далее, что болит — то и решаем. Выясняем детали, устраняем препятствия. Процедуру проводим регулярно.

Шаг 3. Сколько вы задолжали?

Постоянные изменения в коде, срочные задачи, костыли — неизбежные спутники современной разработки. Энтропия, которая не щадит ничего.

К сожалению, бизнес не понимает и не может оценить, насколько всё плохо и запущено может быть в коде проекта. И что, зачастую, получившийся “шедевр” — это не только дело рук криворуких программистов. А совместный их с вами творческий акт.

Вам, рано или поздно придётся провести анализ технического долга. Желательно до того, как наступит технический дефолт.

Опять же, нужен кто-то, кто скрупулезно во всём разберется. Проведет code review. Выстроит приоритеты рефакторинга (это когда мы просто причесываем код и делаем его понятным для людей, а не только для машин). Озаботится документацией. Кто-то, кому вы сможете доверять. Где взять — не знаю. Редкость. И на всё это придется выделять время и ресурсы. Чертовски дорогая затея.

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

В проектах, которые развиваются годами, мы в Сибирикс тратим не менее 20% времени на регулярный рефакторинг. Иногда — до 50%, особенно если есть задача высокого покрытия кода автотестами. Зато там почти всё по-полочкам.

Да, какое-то время можно прожить и без хороших привычек. Это как карма. Накопил — получай.

Шаг 4. Скорректируйте ваши планы и амбиции

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

Мы все галююцинируем по поводу того, какие штуки нужны и важны в проекте. Попробуйте использовать ICE/RICE или другие техники.

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

Шаг 5. Так может ну его?

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

Если же нет, и ваш KPI никак не завязан на качестве системы (а завязан, например на продажи) — вы либо будете пинать дохлую лошадь разработки до тех пор, пока будет что пинать. Либо, если в компании есть бюджеты, попробуете совершить революцию и переделать всё с нуля. К сожалению, если ничего не поменять в самом подходе, новая система будет делаться долго, работать плохо и вскоре все проблемы вернутся. Тут главное — вовремя уйти на повышение (назовем это так). Оба паттерна не сулят бизнесу ничего хорошего в долгосрочной перспективе.

Итого:

  • Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше. Закон Брукса. Неотвратим и работает.
  • Как бы оно не хотелось, но в небольших неайтишных компаниях своя разработка далеко не всегда оправдана. Желание сэкономить или все делать своими силами может дорого аукнуться в долгосрочной перспективе.
  • Начните с анализа. Процессов, технологий и отношений. Digital Boolshit Bingo — в помощь.
  • Нужен кто-то умный. Кто во всём разберется. Проведёт ревью. И кому вы сможете доверять.

Хорошие книжки и статьи

Если остались вопросы — пишите в комментарии. Или добавляйтесь в Telegram.

11
11 комментариев

Нака вот:

2
Ответить

Оуренсорс сильно разбаловал людей)

Ответить

небольшие и успешные оффлайн-бизнесы. А ай-ти — что-то вроде второстепенной черной магии

А небольшие это какие? По моей практике не-ИТ компании оборотом до ярда крайне редко себе могут позволить in-house разработчиков

1
Ответить

По моему — тоже. Но если очень хочется, то можно и... Вляпаться)

1
Ответить