Адский проект: эффективные менеджеры не справились с задачей за 12 лет

Аватар пользователя tsar

Статья была опубликована 24 июня 2008 года, но несмотря на свою древность она очень показательна. В ней есть госзаказ, попил средств, бюрократия и эффективный менеджмент во всей красе. А написана она не про Россию, а про Францию.

***

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

 

Масштаб.

- разработка программного обеспечения для государственного агентства.

- сложность низкая, с несколькими вывертами.

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

7 лет спустя проект ещё не оформился. Набегают штрафы по несколько тысяч евро в сутки. Руководство решает сократить расходы и производит увольнения опытных сотрудников, нанимая людей с небольшим или нулевым опытом работы.

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

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

Цифры.

 
  • 6 миллионов строк кода
  • На основе C++
  • Более 50 000+ классов
  • Конкретная версия C++ устарела, но привязана к компилятору, который распространяется только с одной (не поддерживаемой) операционной системой
  • На основе CORBA
  • СУБД от компании-банкрота
  • Несколько слоёв поверх друг друга для обработки GUI, ни один из которых фактически не поддерживается авторами
  • Сборка занимает 48 часов на 32 параллельных машинах
  • От 40 до 50 одновременных процессов для запуска только пользовательского интерфейса
  • Отсутствие динамического связывания библиотек: размеры исполняемых файлов начинаются с нескольких сотен мегабайт
  • Время запуска программы: около 15 минут
  • Среднее время между сбоями: от 30 секунд до 30 минут

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

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

Поддерживать крупный проект сложно независимо от языка. Только представьте, что сотрудникам нужно поддерживать 6 МИЛЛИОНОВ СТРОК кода - и вы получите представление о том, как далеко может зайти безумная разработка. Шесть миллионов - большое число. Если читать по одной строке в секунду, то вы просидите перед экраном семьдесят дней без перерыва.

 

Для понимания масштаба расскажу два случая.

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

В какой-то момент пользователи сообщают, что вообще не работает опция "Загрузить данные с CD-ROM". Потребовалось несколько недель, чтобы разобраться. Но в итоге баг-репорт пометили как "Решён ранее", потому что данные загружались корректно. Разве что загрузка 700 МБ занимала семь суток. Но терпение - это добродетель.

 

Управление версиями пошло вразнос.

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

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

- Для первого извлечения кода (checkout) следовало назначить встречу с командой контроля версий. Встречу обычно назначали через неделю.

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

- Каждая модификация кода запускает ветвление. Это значит, что потом нужно объединить все полученные модификации. С таким количеством файлов в хранилище вы можете подумать, что редко встретятся два человека, работающие над одним и тем же файлом. Но оказалось, что большая часть работы идёт над теми же 100 файлами или около того.

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

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

(От себя добавлю, что описаный выше процесс, это просто ужас. Системы управления версиями для того и нужны, чтобы разработчики в любой момент могли редактировать нужный код. Если изменение кода требует написание предварительного запроса за 1 неделю, то работа не сдвинется с места. И если проект занимает 6 млн. строк кода, а основная работа ведется в 100 файлах, то никакая система управления версиями не поможет)

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

 

Кадры.

С таким большим количеством народу вообще без опыта разработки ПО разве удивительно, что ошибки плодились в огромном количестве? Какой-то особо одарённый менеджер выяснил, что затраты на персонал - главные затраты в проекте чистой разработки ПО. Совсем не испуганный этим необычайным открытием, он решил уволить всех людей хоть с каким-то опытом, но сохранить всех менеджеров. Было не редкостью видеть книжки "C++ для чайников" на столах многих сотрудников.

Познакомьтесь с командой - 20 разработчиков, 35 менеджеров. Вы не ошиблись: менеджеров больше, чем реальных разработчиков.

Менеджеры продолжают организовывать встречи, где они снова и снова показывают одну и ту же презентацию PowerPoint AD до отвращения, в то время как разработчики убивают время, болтая в огромном офисе открытого типа.

Немногие менеджеры имеют опыт работы в индустрии ПО. В то время как раз SCO судилась с IBM по поводу Linux. Даже если всё было блефом, но реально действовало на всех этих людей, которые понимали, что скоро придётся платить за свободные программы. Никто из них никогда не упоминает "Software Libre", но все они знают о "Software Gratuit". Излишне говорить, что проект напичкан библиотеками GNU, а эти ребята понятия не имеют, что так проект становится совместимым с GNU. Хотя ладно, учитывая ужасное качество этого кода, никто никогда не будет настаивать, чтобы они открыли исходники.

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

 

Добро пожаловать в ад.

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

- Запрещено приходить на работу после 9 утра. Однажды старший менеджер стоял перед главными воротами и тут же увольнял всех, кто пришел после 9:01. Под раздачу попали в том числе ряд менеджеров и продажников.

- Курильщики берут больше перерывов, поэтому меньше работают. Руководство попыталось заставить всех бросить курить по приказу. Не получилось.

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

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

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

 

Наверное, вы задаётесь вопросом, зачем же люди продолжали приходить на работу в такое место. Первой и главной причиной стал глубокий экономический кризис, который переживала Франция в то время (и до сих пор, в определённой степени, переживает). Наличие работы и заработной платы считается привилегией, независимо от условий.

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

Что касается того, как правительство позволяет подобное: мы все знаем, как это работает. Ребята, отвечающие за бюджет в министерстве, дружат с топ-менеджерами в ряде компаний. В такой стране, как Франция, коррупция не редкость на этом уровне, она в основном не раскрывается и редко преследуется по закону. Видимо, это относится не только к Франции. Я слышал такие же истории из других мест Европы и из США.

В следующий раз при мысли, что твоя работа отстой - подумай еще раз.

Авторство: 
Копия чужих материалов
Комментарий автора: 

Что касается того, как правительство позволяет подобное: мы все знаем, как это работает. Ребята, отвечающие за бюджет в министерстве, дружат с топ-менеджерами в ряде компаний. В такой стране, как Франция, коррупция не редкость на этом уровне, она в основном не раскрывается и редко преследуется по закону. Видимо, это относится не только к Франции. Я слышал такие же истории из других мест Европы и из США.

Комментарии

Аватар пользователя IvanTamerlan
IvanTamerlan(7 лет 11 месяцев)

Это сам питон! На нем и под Windows можно, но отдельные програмки (в Linux вместо bash). А вот Django c WSGI уже на Windows может не зайти (искал - не нашел), но тут все равно продакшн-сервера будут Linux, т.к. Windows - жрет больше ресурсов и еще требует денег за это без каких-то особых преимуществ для питона. Для .NET технологий win-серверу сложно найти альтернативу (я слышал про mono и аналоги) или сугубо виндовых штук, но не для чисто кроссплатформенных штук, где на рынке правят Linux и вообще пользуются большой популярностью из-за нетребовательности к ресурсам. Даже старые машинки оживают, куда Windows просто не влезет.

Аватар пользователя monk
monk(12 лет 2 месяца)

В середине конце 90-х кроме С++ ничего и не было для крупных проектов.

Ada, Common Lisp, Java (c 1996). Они все для крупных проектов подходят лучше, чем C++.

Аватар пользователя Simurg
Simurg(7 лет 2 месяца)

Ада? Вы её в глаза видели? Это язык Ада, причём рукотворного.

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

Комментарий администрации:  
*** Уличен в клевете и ложном цитировании, отказ принести извинения - https://aftershock.news/?q=comment/11527284#comment-11527284 ***
Аватар пользователя monk
monk(12 лет 2 месяца)

Ада? Вы её в глаза видели? Это язык Ада, причём рукотворного.

Видел. Писать на ней говнокод гораздо сложнее. Правда не говнокод тоже сложнее писать, но не так сильно.

Просто С++ очень мало людей умеют правильно готовить.

Именно. 

Аватар пользователя __Alex_loki_
__Alex_loki_(12 лет 3 месяца)

забавно . у меня 700 метров файла ОБРАБАТЫВАЛИСЬ три минуты и я считал , что это очень долго . :)

а оно вона как в цивилизованном мире живут... :)

Аватар пользователя Simurg
Simurg(7 лет 2 месяца)

? Время обработки без знания области ни о чём вообще не говорит. У меня мегабайтная (на диске) нейросетка сутками обсчитывается. 

Комментарий администрации:  
*** Уличен в клевете и ложном цитировании, отказ принести извинения - https://aftershock.news/?q=comment/11527284#comment-11527284 ***
Аватар пользователя ДК
ДК(11 лет 6 месяцев)

так везде. у нас 4000 файлов а в tfs гоняются туда сюда только 25-30.

Аватар пользователя Starcon
Starcon(6 лет 3 недели)

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

Аватар пользователя 123456
123456(10 лет 3 месяца)

буквально года три назад москва прислала новейший софт, запиленый за какието нереальные деньги, не буду вдаваться в подробности, ежедневная процедура работы софта заключалась в некой обработке данных при этом софтина создавала 30-100 тысяч временных файлов суммарным объемом не более 100 мегабайт, потом пречитывала как-то их и удаляла, короче на нормальной машине это занимало полчаса времени сотрудника. пришлось брать SSD из за такой кривизны. 5-7 минут в итоге получилось.

Аватар пользователя Tinkle Bell
Tinkle Bell(7 лет 3 месяца)

Добавлю свои впечатления.

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

 

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

 

На работу все приходили не вовремя. Официально разрешалось опаздывать на полчаса, потому что бесполезно. В пятницу после обеда всех сдувало.

Аватар пользователя Barmalley
Barmalley(12 лет 2 месяца)

У нас проще, свободный график. Правда тут, в России, но на сколько я знаю в западных филиалах тоже.

Скрытый комментарий Повелитель Ботов (без обсуждения)
Аватар пользователя Повелитель Ботов

Запись, растолкав других достойных претендентов, ворвалась в лидеры по читаемости. Сим повелеваю - внести запись в реестр самых читаемых за неделю.

Комментарий администрации:  
*** Это легальный, годный бот ***
Аватар пользователя Добродей
Добродей(11 лет 5 месяцев)

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

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

Комментарий администрации:  
*** Отключен (лидер бан-рейтинга, русофоб, унылое борцевание на грани спама) ***
Аватар пользователя nictrace
nictrace(12 лет 2 месяца)

много видел проектов, но такого даже близко не было...)

Страницы