Маркетолог спрашивает программиста: в чём сложность поддержки большого проекта?
Программист: ну представь, что ты писатель и поддерживаешь проект “Война и мир”. У тебя ТЗ — написать главу как Наташа Ростова гуляла под дождём по парку. Ты пишешь “шёл дождь”, сохраняешь, вылетает сообщение об ошибке “Наташа Ростова умерла, продолжение невозможно”. Почему умерла? Начинаешь разбираться. Выясняется, что у Пьера Безухова скользкие туфли, он упал, его пистолет ударился о землю и выстрелил в столб, а пуля от столба срикошетила в Наташу. Что делать? Зарядить пистолет холостыми? Поменять туфли? Решили убрать столб. Получаем сообщение “Поручик Ржевский умер.” Выясняется, что он в следующей главе облокачивается о столб, которого уже нет...
Судя по тому, что Поручик Ржевский умер (скорее всего разбился о землю), не найдя точки опоры чтобы облокотиться, то с настройками гравитации там не всё в порядке. Деревянный столб мог не выдержать таких чудовищных нагрузок.
> > Большой проект мало того, что огромный и не влезает в одну голову как ты там схемы не рисуй, так еще и пишется разными людьми. > > Интересно, а как самолет делают сотни разных смежников?
> Большой проект мало того, что огромный и не влезает в одну голову как ты там схемы не рисуй, так еще и пишется разными людьми.
Тоесть проект работает так, как ему захочется? Говорю, как надо мне, а мне говорят, что так нельзя, мол в системе логика другая. Спрашиваю какая именно, ничего внятного пояснить не могут.
Мне это знакомо ещё с тех времён, когда я впервые влез в ламповый телек с отвёрткой. Что к чему и зачем ничего не ясно, но наобум повтыкать до зуда необходимо.
Шарлатаны с умным видом!
> Ты не программист, да?
> Большой проект мало того, что огромный и не влезает в одну голову как ты там схемы не рисуй, так еще и пишется разными людьми.
Самая прелесть, когда проект древний, как говно мамонта, состоит из кучи взаимозависимых модулей, писавшихся в разное время, разными людьми, на разных языках, без документации и с минимумом комментариев, постоянно дорабатываемых/перекраиваемых. И вот стоит эта куча подпорок на подпорках, подпираемая подпорками, шатается, осыпается, а у пользователей возникают ценные идеи, как им повысить производительность, эффективность и всё такое прочее, прикрутив ещё всяких полезностей.
> Интересно, а как самолет делают сотни разных смежников?
Сколько нужно времени, сил и людей, чтобы запустить производство самолета? С таким количеством людей и денег большой программный проект будет работать почти как самолет. Проблема программ в том, что за их поломку не лишают лицензии и не выгоняют с рынка, поэтому можно пренебречь многократно продублированными мерами безопасности и сертификатами, а также то, что пишут все это дело за максимально короткие сроки. Если тратить на программу мало времени и денег, то будет минное поле, да. А если тратить столько же, как при производстве самолета, то все норм. Будет отличная программа, которая работает как часы.
Вот вы тут смеётесь, а в реальности и не такое бывает!
[censored]
Ну, сделали и мы в Блицкриге эту самую ракету. Как и немцы, сделали ее уже ближе к концу проекта и соорудили на базе объекта "самолет". Но программисты несколько схалтурили и не пооткручивали у бывшего самолета подозрительную для баллистической ракеты функциональность. Оказалость, что если во время полета к цели начинал идти дождь или снег, то во-первых ракета говорила человеческим голосом "Fliege zuruck"(нем. лечу назад), а во-вторых разворачивалась и летела обратно на базу. Фигли там, погода то нелетная.
Со свиньями был связан, кстати, еще один баг, из-за которого игра падала. В какой-то момент программисты что-то такое там подкрутили и свиньи перестали быть нейтральными, а обрели возможность принадлежать какому-то игроку. Управлять ими было нельзя, но формально они могли быть "наши" или "ненаши". Так вот свиньи роняли игру. Потому что видя неприятеля, патриотичная хавронья хотела дать врагу отпор и лезла за оружием, которого у нее естественно не было. Если мне не изменяет память, программисты исправили баг, просто выдав свинье пистолет Люгер без патронов. Визуально это никак не видно, но формально, теперь, видя врага, она лезет за оружием, видит что патронов нет и на этом успокаивается.
Вопрос стоимости - ключевой. Чтобы было не по принципу "хуяк-хуяк-в продакшен", надо потратить серьёзные деньги на предпроектное обследование, подготовку проектной документации, обеспечение грамотного сопровождения, с ведением документации (с тем же учётом взаимозависимостей модулей), внедрение и выполнение процедур разноуровневого тестирования перед запуском в продакшен и т.д. и т.п.
Потребители конечного продукта о стоимости сопровождения думают в конечную очередь, в первую очередь их внимание приковывают две вещи: стоимость и срок внедрения. Вот тут разработчики, предлагающие продукт по схеме хуяк-хуяк - вне конкуренции: в кратчайшие сроки и с небольшими затратами сговнякают что-то более-менее работающее. Как это потом поддерживать - вопрос другой, разработчики или исчезнут в туманной дали, или будут доить заказчика по дурному ценнику за поддержку (но никогда его наперёд не называя).
А в заглавном посте, видимо, разговор представителей нормальных разработчиков, маркетологам которой дана задача продвигать качественный продукт, с заранее утверждёнными ценами на поддержку, которые как-то надо обосновывать перед покупателями. Хотя х.з., может это хуяк-хуяки дурной ценник обосновывают, всё может быть.
Как тут сказали коллеги, вместо программиста можно любой отдел подставить.
Главное тут – не в этом, а в маркетологе, который ничего не понимает, не видит проблем других служб.
> Проблема программ в том, что за их поломку не лишают лицензии и не выгоняют с рынка
Самолетостроителей тоже :)
> а также то, что пишут все это дело за максимально короткие сроки
Не поверишь, но самолеты проектируют и строят в максимально короткие сроки.
> А если тратить столько же, как при производстве самолета
А зачем вам столько же денег? Программистам нужны тонны дюраля, титана, стали и резины? Вы оплачиваете электричество на работу станков и расходники, постройку испытательных стендов, транспортные расходы и пр.?
> надо потратить серьёзные деньги на предпроектное обследование, подготовку проектной документации, обеспечение грамотного сопровождения, с ведением документации (с тем же учётом взаимозависимостей модулей), внедрение и выполнение процедур разноуровневого тестирования перед запуском в продакшен и т.д. и т.п.
Эти деньги идут на что-то еще, кроме зарплаты тем. кто все перечисленное должен сделать?
> А зачем вам столько же денег? Программистам нужны тонны дюраля, титана, стали и резины? Вы оплачиваете электричество на работу станков и расходники, постройку испытательных стендов, транспортные расходы и пр.?
Нет, конечно. Сидим, ничего не делаем, давим кнопки да на котиков в интернетах втыкаем!!! На вотте ещё каменты строчим, как оголтелые!!! :-)
В машиностроении давно уже есть такие прекрасные вещи, как тимцентр, позволяющие обходиться без тонн документации.
Работу надо правильно организовывать.
Ты попробуй в самолете нарушить нормы безопасности, я посмотрю как этот самолет не выгонят с рынка попросту не выдав сертификат летной годности.
Самолеты проектируют в максимально короткие сроки, которые оглядывается на множество норм и правил в отрасли, программные проекты вообще ни на что не оглядывается. Захочет главный заказчик за три дня, будет за три дня, хоть и полностью через жопу.
При производстве программ не нужны сталь. Но нужны люди, много людей, много оборудования, много других программ попроще. Если это пишет один человек, так как может выдать заказанный продукт, хоть и с костылями и сэкономить деньги заказчика, то что вы от него хотите и зачем требуете безотказности самолета? Хотите, чтобы были составлены схемы и документации на 4000 страниц? Платите. Много платите.
Ситуация с программами сложна еще и тем, что постоянно меняются условия. Легко самолетостроителям, титан как был титаном, так и остался, а в программах такого постоянства нет. Меняются люди, языки, заказчики, операционные системы, железо, задачи.
П.С. Пример программирования в самолетостроении - F-35.
Речь не про то, что не делаем.
Чем работа программиста по накладным расходам настолько серьезно превосходит работу конструктора-машиностроителя, что вам нужны такие чудовищные деньги, без которых вы свой труд и координацию между собой организовать не можете?
> Проблема программ в том, что за их поломку не лишают лицензии и не выгоняют с рынка, поэтому можно пренебречь многократно продублированными мерами безопасности и сертификатами, а также то, что пишут все это дело за максимально короткие сроки.
Проблема ПО бывает ещё в том, что требования могут меняться после исполнения, а то и в процессе. Пусть даже не в рамках ТЗ, а по отдельному договору. В серьёзных случаях надо по-хорошему менять архитектуру, но куда проще сделать костыли.
Это как если бы после постройки дома попросили сделать его в два раза шире или надстроить ещё десяток этажей.
> Чем работа программиста по накладным расходам настолько серьезно превосходит работу конструктора-машиностроителя, что вам нужны такие чудовищные деньги, без которых вы свой труд и координацию между собой организовать не можете?
Координация нужна не между собой, а между сотнями тысяч "поручиков и столбов". Проект с продуманной архитектурой — это нормальный самолёт, без архитектуры — тоже самолёт, но построенный без конструкторов и чертежей.
> Ты попробуй в самолете нарушить нормы безопасности, я посмотрю как этот самолет не выгонят с рынка попросту не выдав сертификат летной годности.
Чета боинг не выгнали за трещины в крыльях :)
> программные проекты вообще ни на что не оглядывается.
Ну так сделайте правила, один раз, в рамках конторы. И оглядывайтесь на них.
> Хотите, чтобы были составлены схемы и документации на 4000 страниц?
> Платите. Много платите.
Странно, а конструкторам-машиностроителям за это много не платят. Обычную зарплату платят.
> П.С. Пример программирования в самолетостроении - F-35.
> Координация нужна не между собой, а между сотнями тысяч "поручиков и столбов".
Тут выше жаловались, что "Большой проект мало того, что огромный и не влезает в одну голову как ты там схемы не рисуй, так еще и пишется разными людьми."
Вы уж определитесь, что вам мешает - несогласованность в одной голове или в разных :)
> Эти деньги идут на что-то еще, кроме зарплаты тем. кто все перечисленное должен сделать?
Ну это ж стандартное капиталистическое предприятие. Естественно, кроме зарплаты работникам, есть ещё разные текущие расходы и изымаемая собственником прибыль. Обычно стоимость рассчитывается в неких усреднённых нормочасах стоимостью, например, 1000 р. за час, из которых программисту перепадает 20-30% (расценки челябинские и сильно устаревшие, сколько сейчас - не в курсе).
> Ну так сделайте правила, один раз, в рамках конторы. И оглядывайтесь на них.
Угу, а новые языки, фреймворки и операционки — от лукавого, да? :-)
Даже в бухгалтерском деле всё меняется несколько раз в год, а у нас меняться может несколько раз в день.
> > Координация нужна не между собой, а между сотнями тысяч "поручиков и столбов". > > Тут выше жаловались, что "Большой проект мало того, что огромный и не влезает в одну голову как ты там схемы не рисуй, так еще и пишется разными людьми." > > Вы уж определитесь, что вам мешает - несогласованность в одной голове или в разных :)
> И никого не смутило, что поручик Ржевский не может умереть в проекте "Война и мир", поскольку его там нет. > А так-то да, гуманитарии тупые!!!
Это у тебя в старом проекте нет. А заказчик хочет "Войну и мир" с поручиком, причём обязательно восьмой версии, а то у заказчика только восьмые поручики есть и его не волнует, что эти поручики не совместимы с двадцать первым веком. "Сделайте поручика хипстером с вейпером, за что мы вам деньги платим?!? Там работы на полчаса: родить поручика и нарядить его в форму. Кстати, пуговички на форме должны быть. Эскизы пришлю послезавтра, а продукт показывать будем сегодня, я уже договорился. Что значит "нет в ТЗ"? Я думал, что вы так и будете делать армию поручиков!"
> Ну так сделайте правила, один раз, в рамках конторы. И оглядывайтесь на них.
А заказчик уйдет в контору, которая делает ту же самую программу за более короткий срок и дешевле. Любые правила, которые исключают минные поля - стоят денег и времени.
кстати, самолетостроение от багов тоже не застраховано. может там ошибки реже вылезают, но и цена таких ошибок выше.
когда останавливаются все двигатели - это сильно огорчительней синего экрана.
из отчета по расследованию крушения Boeing-777 в Хитроу:
"Расследование определило, что потеря тяги обоих двигателей явилась результатом ограничения подачи топлива.
Расследование определило следующие возможные причины, приведшие к ограничению подачи топлива:
Перемещение скопившегося льда внутри топливной системы, вызвавшее ограничение подачи топлива в обоих двигателях в результате скопления льда на поверхности топливно-масляного теплообменника.
Лёд образовался в топливной системе в результате замерзания воды, присутствующей в топливе в естественных условиях, в ходе полёта самолёта с низким расходом топлива в течение длительного периода времени при температурах, способствующих образованию "липкого льда".
Топливно-масляный теплообменник, отвечая применимым на тот момент сертификационным требованиям, показал склонность к засорению при наличии мягкого льда в больших концентрациях при температуре топлива ниже −10 °C и подаче топлива выше полётного малого газа. Сертификационные требования, которым соответствовала топливная система воздушного судна, не принимала во внимание это явление, поскольку такой риск не был известен на тот момент."
> А заказчик уйдет в контору, которая делает ту же самую программу за более короткий срок и дешевле. Любые правила, которые исключают минные поля - стоят денег и времени.
Программист: ну представь, что ты писатель и поддерживаешь проект “Война и мир”. У тебя ТЗ — написать главу как Наташа Ростова гуляла под дождём по парку. Ты пишешь “шёл дождь”, сохраняешь, вылетает сообщение об ошибке “Наташа Ростова умерла, продолжение невозможно”. Почему умерла? Начинаешь разбираться. Выясняется, что у Пьера Безухова скользкие туфли, он упал, его пистолет ударился о землю и выстрелил в столб, а пуля от столба срикошетила в Наташу. Что делать? Зарядить пистолет холостыми? Поменять туфли? Решили убрать столб. Получаем сообщение “Поручик Ржевский умер.” Выясняется, что он в следующей главе облокачивается о столб, которого уже нет...