Найти в Дзене
EnMørk

Кошмарный сон заказа в ИТ. "А давайте всё заново переделаем..."

Самая частая фраза, которую слышишь от вновь пришедших ведущих программистов - "А давайте всё переделаем и с нуля напишем". Фраза, убивающая любое желание вести бизнес-ориентированную разработку. Фраза, которая ломает любую веру в российскую разработку и готовая превратить эту деятельность в фарс. Однако, есть действительно ситуации, когда без глубокой переработки в проекте делать нечего. Компания писала свой Middleware - промежуточную софтовую среду, с уровнем абстракции железа и API (программный интерфейс взаимодействия) до верхнеуровневых приложений - пара миллионов строчек кода на языке C (и даже не C++), портирование под специфическую OS21, даже близко не похожую на Linux, нацеленную на экономию памяти, которой тогда сильно в устройствах не хватало. В разработке проекта за десяток лет поучаствовало более полусотни программистов, а в живых (в смысле - работающих в компании) остались единицы. Узнать, кроме как из записей, кто что и как сделал - не представлялось возможным. Но мир уж

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

Однако, есть действительно ситуации, когда без глубокой переработки в проекте делать нечего.

Компания писала свой Middleware - промежуточную софтовую среду, с уровнем абстракции железа и API (программный интерфейс взаимодействия) до верхнеуровневых приложений - пара миллионов строчек кода на языке C (и даже не C++), портирование под специфическую OS21, даже близко не похожую на Linux, нацеленную на экономию памяти, которой тогда сильно в устройствах не хватало.

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

Но мир уже убежал вперёд и для поддержания скорости доработок (не говоря уже про бег вперёд к светлому будущему в погоне за лучшими этого рынка) требовался Linux, требовались новые функции, которые старыми, "дедовскими" методами писать было очень уж сложно, да и памяти добавить нынче уже не такая большая проблема. Так что выбор написания системы заново был очевиден.

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

Про кроссплатформенность никто и не слышал - хотя ещё лет 10 назад, помню, была конференция Яндекс, на которой показали кусочек кода и спросили - Нравится? Хороший код?

И весь зал хором - Дааааааа!!!

- А если на ARM архитектуре его запустить? - продолжил спикер от Яндекса.

Зал заметно приуныл, но все уверенно сказали вслух - Работать не будет (((

- Вывод? - сказал "яндексоид" - пишите код кроссплатформенно, дабы потом не приходилось всё переписывать!

Вот и в этом проекте все связки были сделаны так, что запустить на чём-то, отличным от Intel/AMD не представлялось возможным. А полное отсутствие команды разработки, уволившейся заранее, поднимало вопрос - а как это поддерживать? Как разбираться в документации? Что с этим вообще делать?

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

А вот в том проекте, о котором я писал пару зарисовок о менеджменте - про смену руководства при запуске и про низкий уровень развития проект-менеджмента в "Одной из ведущих компаний по заказной разработке ПО" - писала одна и та же компания, и даже разработчики в большинстве своём остались, только вот через год после старта все столкнулась со сложностями применения ИИ (искусственного интеллекта) вне ЦОДа - в устройстве.

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

- А давайте я всё перепишу - устало предложил ведущий разработчик ИИ-модели - Может быть тогда всё будет получше.

- Может?

- Может...

- А может и не получится?

- Может...

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

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

Через ещё полгода компания-разработчик, столкнувшись со следующей проблемой в работе ИИ с данными с полей, решила усилить свою команду новым игроком. Этот прекрасный молодой человек, ведущий программист, рьяно взялся за дело. Тут починим, там улучшим, тут почистим. О, модель ИИ не выполняет полностью свои функции - не проблема, сейчас мы с джуном возьмём и быстренько всё заново перепишем... Вы только подождите немного (годик, два - сколько там обычно берут?).

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

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

============

Подписывайтесь на канал - зарисовки выходят каждый день.

Ставьте лайк, если понравилось.