Pull to refresh

Библия проектирования. Часть вторая. Костыли, изгнание из рая, Каин, Авель, и снова с чистого листа

Designing and refactoring
image

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

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



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


Любая команда программистов рано или поздно начнет отклоняться от спецификации. И чем избыточней по отношению к сегодняшним потребностям спецификация, тем раньше этот процесс начнется. Подумаешь, не определил класс исключения, выкинул безымянное, лень было лезть в документацию по ORM, и сложный запрос был записан plain текстом, а вместо false вернул null — ветвление то отработает. Кажется, что в этом нет ничего страшного, зря архитектор так драматизировал.

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

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

Поэтому. С сегодняшнего дня вы изгоняетесь из рая.

И этим устанавливаю
Программистам в муках обеспечивать 100% покрытие кода юнит тестами,
А тимлидам, не жалея времени и сил, проводить ревью каждого коммита.

Был Авель, он писал модели, а Каин проектировал интерфейсы… Восстал Каин на Авеля… Дедлайн сорвали оба.


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

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

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

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

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


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

Поэтому. Сегодня мы стартуем с чистого листа. Добро пожаловать на борт ковчега.




P.S.: Я был удивлен, как благосклонно хабрахабр принял первую часть. Это вдохновило меня достать старый ноутбук и найти там еще несколько старых эссе. В том числе и черновой набросок выступления, который и стал основой этой статьи. Если не возражаете, мы немного отступим от хронологии, и третья часть будет про Вавилон. Там как раз про вторую версию системы — нам удалось продать лицензию одной немецкой компании, и еще она же проинвестировала в нас огромную сумму. Но мы все равно умудрились сфейлить :)
Tags:речьпрограммистышоковая терапия
Hubs: Designing and refactoring
Total votes 121: ↑101 and ↓20 +81
Views2.2K

Comments 18

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now

JD Edwards E1 Consultant (Sales and Distribution)
from 200,000 ₽Kertios ConsultingМоскваRemote job
Frontend Software Development Engineer
from 3,000 to 5,000 $EnnablRemote job
Software Development engineer
from 4,000 to 5,000 $DataDirect Networks Inc. (DDN)Remote job
Data Science Cloud Administrator (remote)
from 200,000 to 300,000 ₽Bergmann InfotechRemote job
QA Engineer
from 1,200 to 2,000 $CrassulaRemote job