Программисты съели мой мозг.

Вспомнились несколько разных случаев.

— Как-то объяснял двум Senior Software Developer’ам, которые проработали в компаниях разрабатывающих security по крайней мере по нескольку лет, что такое битовые операции.

— Один из разработчиков написал неочевидный кусок кода (использующих плохо документированные особенности системы) и его спросили откуда он взял информацию о них. Сначала он ответил, что ему помог написать это друг. Где-то через неделю он заявил, что друга никакого нету и он написал сам.

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

— Помогал другому senior software developer’у пофиксить баг — поставить в нужном месте скобку. Причем, компилятор указывал, где должна быть вставлена скобка и что ее там не хватает.

— Хоть не о разработчиках, но тоже хорошо. Работал с заказчиком (который технарь и достаточно долго ведет IT бизнес), который считал, что в проекте можно исправить ВСЕ ошибки.

— И тоже не о программистах. На конференции видел sales, который на Palm не знал как перейти в Launcher (аналог Program Files для Windows). При этом он продавал сложную систему (включая Palm клиента) и должен был отвечать на вопросы.

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

44 комментария to “Программисты съели мой мозг.”

  1. Аноним:

    Не кушайте моск другим и вам его, может быть, оставят.

  2. Каждый имеет право немного потупить. Чем выше экспертиза, тем более заметны становятся тупняки 🙂

    Согласен, это шедевр: «Хоть не о разработчиках, но тоже хорошо. Работал с заказчиком (который технарь и достаточно долго ведет IT бизнес), который считал, что в проекте можно исправить ВСЕ ошибки.»

    • Victor Ronin:

      Ну под тупление попадает заказчик (из описанных)

      Честно говоря остальные случае, скорее клинические.

  3. VladimirZ:

    “Хоть не о разработчиках, но тоже хорошо. Работал с заказчиком (который технарь и достаточно долго ведет IT бизнес), который считал, что в проекте можно исправить ВСЕ ошибки.”

    Однозначно можно за бесконечный ресурс 🙂

    • И за бесконечное количество времени. Хотя обычно стоит вопрос: исправить ВСЕ ошибки к определенному времени 🙂

    • Victor Ronin:

      Безусловно, за бесконечное время с бесконечным количеством бесконечно умных разработчиков, я смогу написать бесконечно качественную и сложную программу 🙂

  4. Похоже, мантра «починить ВСЕ баги» очень распространена 🙂
    Главное не допустить, чтобы это стало поводом невыплаты за уже проделанную работу. Именно так получилось у меня.

    Кстати, не могли бы вы подробно описать как строите взаимоотношения с заказчиками/подрядчиками ? Т.е. устные договоренности, бумажные договора, риски, действия при срабатывании рисков и т.д. Думаю, будет интересно многим.

  5. rssh:

    А у меня чуть ли не каждый новый контрагент смотря на сроки — говорит: «О, они либеральные: сделаем быстрее». А потом эти либеральные сроки срывает.

    • Victor Ronin:

      Таких надо убивать пока они маленькие.
      Собирайте статистику, показывайте ее им после каждой фразы про либеральность.

      Кстати, agile вам поможет.

      • rssh:

        ну где-то так и происходит 😉 [тем более первый проект с кем-то новым это как правило небольшой pilot]. Но тот факт что если люди раньше с нами не работали, то скорее всего они срывают сроки — пугает 🙂 [непонятно — а как же все остальные]

        • Victor Ronin:

          Вообще IT в этом смысле странная отрасль. Думаю не так много других областей где-то 70-80% проектов выбиваются из сроков и стоимости и поэтому все это считают фактически нормой.

          • Потому что IT — это в основном custom-решенеия. Зачастую уникальные для своей предметной области.

            При серийном производстве, например автомобилей, достаточно легко рассчитать стоимость производства, сроки, качество и т.д. Т.к. тех процесс меняется достаточно медленно, и наработки по ведению бизнеса в этой сфере накапливались десятилетиями.

            Еще один нюанс: получаемый IT продукт очень мягкий и податливый. Вставить очередную фичу обычно не составляет огромного труда. Если продолжать аналогию с автомобилестроением, поставить еше 2 колеса машине вряд ли получится.
            Отсюда желания улучшить, «углУбить», расширить (зачастую во вред) приносят отставания от графиков, выход за пределы бюджета…

            • Victor Ronin:

              Само-собой.

              Но, все же IT не единственная такая область
              а) Custom
              б) Податливая

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

              Кстати, еще одна важная особенность, которая играет тут роль — достаточно высокие ожидания к качеству продукта.

  6. Мне нравится, когда заказчик настолько расфокусирован на проекте, что иногда спрашивает в духе:
    — «Так на чем мы остановились?», в то время работа идет над проблемой, которую он лоббировал (доказывал необходимость) 2 недели
    — «… . Ой забыл, как же он называется», интересно, когда забывают, как называется сам проект.

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

    • Victor Ronin:

      Ну, тут я не согласен.

      Заказчик таки может быть расфокусирован. У него проектов может быть много и проект может быть абсолютно неприоритетный. Если он платит деньги и признает, что простои и т.п. возникает по его вине — то, вполне нормальная ситуация.

  7. как хорошо, господа, что погоны Senior Developer’a раздают всем, кому ни попадя — эти люди делают наши услуги очень дорогими, работу с нами — подарком, а завания… да кому интересны звания? хоть горшком назовите, вопрос только в обязанностях, отвественности и компенсации

    • meowth:

      Плюсую 🙂

      Особенно радуют послужные списки в виде:
      — Junior — 6 месяцев
      — Senior — 2 года
      Меньше 4к$ на руки компенсации не хотят (Россия, default city). Естественно, бонусы типа кормежки, отпуска, проездов и т.п. обязаны присутствовать отдельно от суммы.

      Но при этом просишь сделать бранч в сорс-контроллере — «я не умею» )

      • Victor Ronin:

        Кстати, постепенно это ситуация измениться. Когда рынок насыщается (перенасыщается), то все становится на свои места.

        • meowth:

          Хорошо бы.
          Однако пока что я вижу, что рынок борется с перенасыщением так: разработку просто переносят в Украину и Белоруссию — объективно там девелоперы не такие охреневшие по части запросов, и соотношение «польза/(понты*компенсация)» выше

          • Victor Ronin:

            Даже это должно слегка помочь.

            В конце концов любая индустрия устаканивается.

    • Victor Ronin:

      Плюсую тоже что раздают всем. Минусую по тому поводу, что их наличие так уж хорошо.

      Есть два минуса
      а) В толпе липовых Senior Developer’ов очень тяжело выделиться в момент когда работа еще не начала. Так, что вместо нас хороших, могут выбрать их тупых.
      б) Товарищи с липовыми погонами прививают заказчикам и менеджерам плохие привычки.

  8. Pavel:

    А вот из моей практики:

    Заказчик пожаловался на сбой в работе софта, но отказался описывать что произошло т.к. «процесс который мы запускали — intellectual property, и по сему разглашению не подлежит». И естественно никаких логов не предоставил.

  9. Pavel:

    Может немного не в тему, но мозг был съеден качественно и без остатка.

    Заказчик жалуется на низкую производительность приложения, привлекает своих сисадминов которые быстро находят корень зла: «В Task Manager обнаружен System Idle Process который использует 99% ресурсов CPU»

  10. Аноним:

    «в проекте можно исправить ВСЕ ошибки» — это реально возможно, но стоит бешеных денег и многих лет. Можно доказать, что в проекте нет ошибок. Есть пример — но единственный 🙂

  11. Mark:

    Один мой знакомый как-то выкинул то, что писалось другим программистом в течении полугода и за полдня заменил это известной библиотекой. При этом пропали все (ну может не все, но много) глюки, а скорость работы возросла в разы… Однако человек regexp-ы изобрести пытался.

    • Victor Ronin:

      О да ;)) Regexp’ы с нуля написать — это некисло.

      Кстати, в одном из проектов обнаружил 4 самописанных метода логирования (написанные разными людьми). Каждому в лом было видно разбираться в глюках чужого.

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

  12. Pavel:

    Взяли мы как-то на работу тестировщика для автоматизации тестирования. Не студент, 2 года опыт работы программистом.

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

    т.е. если все условия выполняются то перейти в другое состояние.

    Скрипты надо было перевести на Python.

    Новый специалист с энтузиазмом взялся за работу, трудился не покладая рук и обещая «завтра» показать кое-что работающее. Ни с кем не консультировался, от помощи отказывался. Через две недели начальство начало нервничать из-за отсутствия результатов и потребовало отчет о проделанной работе.

    Оказалось что товарисч взял старые скрипты и ПОПЫТАЛСЯ ЗАПУСТИТЬ ИХ В PYTHON. 2 недели было потрачено на эксперименты типа «а что будет если в конце каждой строки поставить точку с запятой».

    На вопрос «как ты дошел до такой жизни» было отвечено что кто-то на офисе обмолвился что задача простая и старый язык похож на Python.

    Самое смешное что человек прошел испытательный срок и продолжил радовать нас новыми свежими идеями.

  13. Pavel:

    Инженер-оптик получил задание:

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

  14. Митька:

    Идиотов везде хватает, не только в земле русской. Буквально вчера смотрел Топ Гир года эдак 2005-06. Кларксон гонял на обновленном (тогда в 2006) Doge Viper. Для тех кто в танке — вайпер двухместный. Так вот, и в инструкции, и в предупреждающих наклейках на козырьках, и на наклейках в дверных проемах было написано «Дети будут в большей безопасности если посадить их на заднее сиденье». Кларксон завис на пару секунд, я даже подумал, что он выдаст классическое Задорновское «ну тупые!», но кларксон политкорректно скривил рожу, и задал риторический вопрос «Интересно, а где они найдут заднее сиденье в двухместной машине?» Конечно, можно оправдать это тем, что наклейки на весь модельный ряд лепятся одинаковые, и инструкции тоже однотипные. Но весь дебилизм ситуации в том, что вайпер — машина совсем недешевая и очень сильно отличается от остального модельного ряда Dodge. Так что дизайнерам и проектировщикам можно было бы позаботиться о соответствии инструкций и наклеек реальному автомобилю.
    А вообще среди развитых стран, по степени концентрации дебилов США занимает ведущее место. А вообще, почитайте блоги русских эмигрантов в США. Разрыв мозга гарантирован!

    • Victor Ronin:

      Да я и есть русский эммигрант в США, так что далеко ходить не надо, чтобы читать их блоги.

      С тем, что концентрация дебилов в США больше — готов спорить.

      Да, забавно что наклейка одна на все машины. Но врядли это кто-то делает специально. Так, что типичный недосмотр, а не дебилизм.

      Да и вообще, дебилизмом выглядят те вещи, которые мы плохо понимает. Условно говоря, когда в США на консерве пишут с одной стороны — открывать тут, а с другой стороны — открывать другую сторону. Звучит как дебилизм — и так догадаться можно. Но опять же, эту фразу не просто так выдумали.
      Какой-нибудь чудак открыл не с той стороны и открывая порезал себе … ну скажем палец. А потом судил компанию, о том, что она блин не предупреждает о том с какой стороны надо открывать. Компания даже суд выиграла, но почесала голову и решила, что им проще добавить еще одну надпись, чем судиться.

      • Митька:

        Насчет концентрации не буду спорить, вам с места событий виднее 🙂 Свое мнение я высказал исходя из тех же эмигрантских блогов. Может я не то читал? Но штатовскую народную забаву судиться со всеми подряд считаю натуральным дебилизмом.
        А вот универсальные наклейки на додж зря прилепили. Я подам на них в суд, потому что я хотел обезопасить своих детей, искал там задние сиденья пол дня, опоздал на работу и получил убытки! 😀

        • Victor Ronin:

          На самом деле возможность судиться — это очень даже хорошо. Условно говоря, купил кто-то ну скажем стиралку, подключил ее к электричеству, а она сгорела.
          Оказывается, что она должна подключаться не к сети 120В, а не 220В, а в документации это не написано.

          И скажем гарантия не покрывает включение в сеть с повышенным напряжение. В странах где судиться сложно — останется только горевать или идти бить морду продовцам (которые тоже особо не виноваты).

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

          Компенсации за опоздание на работу и моральныц ущерб, насколько я знаю сложнее получить.

          Да и в целом судятся не все со всеми, а скажем 1% населения. Этого достаточно, чтобы фирмы думали о потенциальных последствия.

          • Митька:

            Согласен. Если имеет место откровенное кидалово — только суд! Ну или комитет по защите прав потребителей (не знаю, есть в штатах подобная организация?).
            Но вспоминается один из классических образчиков маразма — надпись на макдональдсовских стаканах для кофе «Осторожно! Горячее!» А все из за одной тетки, которая якобы не знала, что кофе горячий. У этой тетки с головой все в порядке?

            • Victor Ronin:

              Естественно перегибы всегда есть. Это обратная сторона медали. Но суммарно, как по мне, эффект положительный.

  15. Митька:

    А вот из области 1С и другой околонаучной фантастики. Есть в России одна контора, называется Рарус. Заниматься поддержкой их конфигураций — одно удовольствие! (здесь должен быть бьющийся головой об стену смайлик)(а здесь блюющий смайлик) Перед открытием конфигуратора стоит хряпнуть стакан водяры, чтоб не так страшно было. О том, что этот код — сплошные макароны я промолчу. Создается впечатление, что код писали слепоглухонемые индусы. 1сники знают, что у всех объектов и форм есть стандартные обработчики типа ПриОткрыти, ПередЗаписью и т.д. В рарусе это интерпретировали по своему, и теперь не зависимо от того используется обработчик или нет, в КАЖДОМ вставлена заглушка:

    Процедура ПриОткрытии()
    // Зарезервировано
    КонецПроцедуры