Стоит ли увольнять разраба за большую и дорогую ошибку? Думаю, нет, но менеджмент хотел крови



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

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

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

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

    Программа делает не что ты хочешь, а то, что написано


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

    Поиск подработки завел меня в интересный проект: разработка движка распознавания речи на плюсах. Вместе с командой мы боролись за процент распознавания: я реально надеялся прокачать машину до 100% результата!

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

    Ничего так и не вышло. Только через пару лет я узнал, что это было недостижимо. Мне попалась новость о том, что нейронная сеть фейсбука распознает лица с вероятностью не более 95%. Я посочувствовал фейсбуку: даже такой крупной компании не удалось достичь сотни. А еще в статье была отличная приписка о том, что человек распознает лица с вероятностью 93%. Серьезно?

    Так я впервые немного разочаровался в разработке


    Попробовал фронтенд, но все, что тогда о них знал, лежало в области стереотипа «они делают сайты». Уже тогда это звучало скучно. Хотелось чего-то по-интереснее. Чтобы найти новую область, я двинул в Сколково.

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

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

    До этой компании я работал только в небольших командах. В кейсе с распознаванием речи мы трудились впятером, здесь же яблоку негде было упасть от разработчиков. И все они знали больше меня. Я сыпал вопросами, и кайфовал, когда моя работа получала фидбэк. Первые три недели я осваивал ремесло. Каждое код-ревью заканчивалось ответом “плохо”. Я всё переделывал, но лучше не становилось. Мой код должны были заапрувить как минимум 4 человека. Бывало, трое говорили “норм”, а четвертый все равно находил, к чему придраться.

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

    Но даже такой строгий контроль за качеством не спас от беды.

    Работа была связана с базами данных. На серверах компании хранились тонны финансовой информации клиентов (банковские карточки, истории операций). Раз в 5 дней выпадала ночь, которую я должен был провести на работе. Я следил, чтобы все работало, отвечал на почту и звонки. Мне нравились ночные дежурства. За выход платили даже не двойную, а тройную ставку. Просидел вахту с девяти вечера до шести утра — получил оплату как за 3 дня. А что еще нужно студенту?

    Кроме денег студенту нужно высыпаться


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

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

    Но в 4 утра меня разбудил человек, который отвечал в компании за весь бэк — он позвонил мне впервые за все время.

    — Ты что-нибудь делал вчера с базой?
    — Нет, ничего особенного.
    — Вставай и срочно к компу.

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

    Конечно, первая мысль — я все нахрен сломал


    Оказалось, целую группу пользователей просто выпилили. Ее не было в продбазе. Но она существовала здесь всегда, куда она провалилась? Начал искать. Посмотрел по логам, что запускалось. Начал курить эти логи (первые полчаса ушли на то, чтобы проснуться, еще полчаса — разогреть логи и понять, какие скрипты запускались). Выкачал себе скрипты, посмотрел, что они делали, нарыл, какие из них лезли именно в это место. И нашел ошибку.

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

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

    Так мы за ночь грохнули около миллиона пользователей


    Мы восстановили базу, сделали бэкап. Пока мы не знали о проблеме, пользователи вводили новые и новые данные, в течение всей ночи. Мы написали всем о технической неполадке, закрыли вход, чтобы не было потока новой информации. Предстояло мёржить базу за 7 часов, накатывать на ту, что в ноль, возвращать всех пользователей. Тем, кто пытался зайти, но не смог, компания отписала отдельные извинения, задарила бонусы.

    К 7 утра мы все починили. В 8 часов компания уволила человека, который все это заварил.

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

    Стал бы я увольнять человека за ошибку? “Программа делает то, что ты ей написал”. Но мы же разрабы, мы постоянно ошибаемся. Представьте, как этому парню было плохо тем утром. Да и зачем выставлять человека, который теперь будет выверять в своем коде каждый символ? Но менеджмент хотел крови, и в следующие пару недель вылетели еще несколько причастных к этому случаю.

    Я поработал там еще пару недель, но уже понимал, что хочу уйти из бекенда.

    В Сколково обратил внимание, как мне интересен проект с андроид разработкой. Мы разрабатывали приложение и связывали его с ардуино. Задача была довольно простая: надо было подключиться к ардуино по bluetooth или wifi с телефона и передать команду. В приложении была пара экранов с кнопками. По задумке ардуино была связана с макетом умного дома и эти кнопки должны были открывать и закрывать окна.

    Причин влюбиться в андроид с первого взгляда было хоть отбавляй


    Мне очень понравилось, что есть UI. Понравилась возможность делать анимации (сейчас в андроид разработке я люблю это больше всего). Документации от Google была гораздо лучше той, что мне до этого довелось видеть. Java зашел больше питона и C++. Пока проходил курсы по андроиду на курсере, понял одну вещь:

    мне важно сразу видеть результат.

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

    Тот кейс с футболом — Мне дали написанный индусами проект. Честно говоря, справились они не очень. Вместо того, чтобы выделять в функцию код они копировали 700 строк снова. Рефакторинг занял две недели.

    И все равно я закончил его и просто дико кайфанул. Я понял, что хочу этим заниматься и дальше, принялся искать уже компанию для работы. Прошел андроид школу e-legion, сделал тестовое, устроился — а теперь возглавляю здесь Android разработку.

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

    Комментарии 155

      +23
      Наслаждайтесь временем, в котором значение «хотел крови» и «расстрельные списки» не совпадает с прочтением.
        0
        Да уж, вчера на Ленте — запомнилось — «в сентябре 1937-го пилотировавший его испытатель танков Виктор Кульчицкий смог выжать на Житомирском шоссе в Киеве «лишь» 131,1 км/ч. Ехать быстрее не позволили технические проблемы, исправить который Цыпулин не смог. Его арестовали.»
          0
          Подозреваю, что перед этим на т. Ципулина телегу накатали конкуренты. Вот органы и приняли меры.
        0
        А какая была статья увольнения интересно или все это не в РФ происходило?
          +20
          Обычно в таких случаях увольняют по собственному желанию.
            +2
            Сейчас стараются «по соглашению сторон», потому что «по собственному» на раз откатывается обратно работником.
              0
              «По соглашению сторон» используют в двух случаях:
              а) «по собственному» предполагает увольнение через две недели после написания заявления, а «по собственному» — в любое время.
              б) и если расстаются с работником по-хорошему, то «по соглашению сторон» предполагает больше социальных льгот.
              Насчёт «откатываться обратно работником», никакой разницы нет, судебный спор в обоих случаях одинаковый будет. Ну и опять же таки, крайне мало кто захочет возвращаться в компанию, в которой напрочь разругался с руководством. Это только от безысходности, когда денег нет, новой работы тоже на горизонте нет, и надо хоть чуть чуть протянуть, даже если там будут каждый день нервы выносить, либо получить более устойчивую позицию в споре «я и сам уйду, но давайте мне компенсацию».
                +1
                В случае «по соглашению сторон» никакого суда по ТК быть не может, вот в чём вся соль.
                  +1

                  Может, прежде всего если оспаривать формулировку "по соглашению сторон" и требовать изменить её на "сокращение штата", например.

                    +1
                    Соглашение оно на то и соглашение, что вы добровольно согласились. Ни один суд не будет подобным заниматься.
                    Или примеры из судебной практики в студию.
                      +1

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

                        0
                        Тогда сразу заявления в полицию, что вам угрожали.
                          0

                          А по "не знал про свои права"?

                          +1
                          В случае «по соглашению сторон» никакого суда по ТК быть не может, вот в чём вся соль.

                          То, о чём вы говорите, выходит за пределы ТК.
                          +1
                          А по собственному желанию на то и по собственному, что вы добровольно уволились (но это не точно).
                          Хотя перед этим вам угрожали охрана избиением, эйчар внесением в черные списки, а инфбезопасность уголовным делом(шутка. а может нет?) за отосланный емейл.
                          Так что я и здесь не вижу, почему вдруг суд должен вступаться за сотрудника, который вспомнил, что это было не совсем его собственное желание.
                          Или что соглашение было достигнуто без учета мнения второй стороны.
                          В обоих случаях это привязано к расторжению трудового договора
                        +1
                        В случае «по соглашению сторон» никакого суда по ТК быть не может, вот в чём вся соль.

                        Мы же говорим не про отзыв заявления об увольнении, а про «вынужденное увольнение под давлением работодателя». В таком случае суд может быть независимо от формулировки.
                          0
                          И это будет вне трудовых отношений, о чём я и говорю.
                        0
                        По собсвенному могут уволить в день подачи заявления, есть работодатель согласен.
                          +1

                          Поправка: если обе стороны согласны. если я написал сегодня "прошу уволить по собственному желанию с now() + 14 days", то сегодня уволить меня не могут, даже выплатив зп за эти 14 дней.

                        0
                        Типа написал, подождал 13 дней и забираешь заявление? А в чём профит?
                          +2
                          Зарплата за этот срок и за тот, который накапает в последующих разборках. Наиболее прошаренные выжидают месяц и идут в суд, если работодатель не подготовился к такому варианту, то с очень большой долей вероятности суд встанет на сторону работника, а это восстановление в должности и зарплата за период «простоя».
                          Вернее немного не так. На 13ый день с почтой отправляется письмо об отзыве заявления, происходит расчёт, а через несколько дней работодатель узнаёт, что этот человек у них по-прежнему работает.
                    +10

                    Суровые нравы програмистов.
                    Когда я был совсем начинающим электриком, я протирал пыль и отключил электроснабжение половины огромного нефтехимического комбината. Это стоило мне 600 рублей премии в ценах 2004 года.

                      +15
                      Да от компании зависит. Я могу «гордиться» в какой-то мере, самая дорогая ошибка в моей жизни, которую совершили мы с коллегами, стоила восьмизначную цифру. В долларах США. Да, мы остались без премий и месяц исправляли последствия. Но нас не уволили, хотя пожурили убедительно :)
                      Когда я работал в другой компании, уже начальником, один из моих хлопцев тоже сделал дорогой факап, хотя и несравнимый (за сумму предыдущего можно было несколько таких компаний целиком купить). Руководство хотело крови и увольнения, но в итоге даже премию не тронули, я просто донёс до них мысль, что причина ошибки — не халатность, а банальное стечение обстоятельств, которые живой человек не в состоянии на 100% предугадать. И увольнять профессионального ответственного сотрудника, который один раз ошибся, это глупо.
                        +5
                        Зато есть и другие крайности. Я был свидетелем когда уволили классного программиста (стаж примерно 20 лет в компании), которого посадили на самый сложный и древний участок кода. И почти сразу уволили когда там обнаружили ошибку, которую сделал тот программист в силу сложности.
                        И это ведь была куча глаз, которые сделали review и пропустили. Потом был QA, который тоже пропустил. Потом был pre-prod, который тоже пропустил. Но нужна была «кровь» на отчёте начальства.
                          +3

                          Я подозреваю, что просто его хотели «уйти» и нашли причину.

                            +3
                            Нет, точно не это. Там была чисто политика и начальство должно отчитаться о том, что меры были приняты. Слишком уж публичным был результат косяка, даже в новостях писали об этой проблеме.
                              +4

                              A почему тогда не QA, ведь они, в таком случае, подписались тоже? Снаружи разницы никакой, особенно для новостей.
                              Ребята оказались банально «ценнее», чем «классный» программист.

                                +1
                                В этом вся и фишка. «QA» это не конкретный человек, там сложнее найти виноватого. А тут вроде как очевидный и конкретный человек.

                                На вопрос «кто сделал баг?» ответ очевиден даже домохозяйке. А вот вопрос «почему баг не заметили?» задаёт уже человек, который разбирается в процессе.
                                  0

                                  Определенная комбинация данных / конкретные условия и т.д. Проверить все и на 100% невозможно. Это аксиома.

                          +8
                          Найти электрика сложнее чем программиста, так что ничего удивительного.
                            +4
                            Программисты реже умирают из-за своих ошибок.
                            0
                            Суровые нравы програмистов.
                            Когда я был совсем начинающим электриком, я протирал пыль и отключил электроснабжение половины огромного нефтехимического комбината. Это стоило мне 600 рублей премии в ценах 2004 года.

                            Я вам больше скажу:

                            В пору моего джунства, переходящего в мид — я раззорил под ноль целую фирму.
                            Не такой командой, правда, как «DELETE from users;» но все так же — манипуляциями с данными повредил и основную БД и бэкап.
                            И всё — фирма в десятки раз сдулась в оборотах, считай умерла, ибо без учета жить не смогла.

                              +2
                              повредить бэкапы — это диверсия какая-то :)
                            +15

                            Любые действия без выяснения причин — признак дурости.
                            И увольнение выглядит как очень эмоциональный поступок.

                              +11

                              Просто за счёт этого кто-то из управленцев уровнем повыше сохранил свое место и бонусы.

                                +21
                                100%. Я сейчас наблюдаю подобное на бывшем месте работы. Человек с очень ограниченными техническими и лидерскими способностями, в силу чистой случайности назначенный менеджером — вместо налаживания работы просто увольнял инженеров одного за другим. К его вящему удивлению, в полу-миллионном городе все IT-шники так или иначе друг друга знают — и желающие на замену иссякли очень быстро. Но наш герой «решил» проблему, уволив HR-ку.
                                0
                                Ну вот к сожалению для нашего менеджмента характерно волевое решение вопросов.
                                +13
                                Единичные крупные ошибки не всегда показательны.
                                Периодически повторяющиеся «средние» косяки должны заставить задуматься и о разрабе, и о процессе.
                                  +3

                                  Я не понял, это очередная реклама курсов что ли?

                                    +22
                                    А говоришь не понял)
                                      0

                                      Ну надо отметить, что неплохая реклама.

                                        +2
                                        Все утро потратил на поиски рекламы в статье. Пришлось обратиться за помощью. Бывший коллега (Макс, спасибо) указал на «рекламу» андроид школы. Поясню немного про нее. Так как не раскрыл в статье.

                                        Тут имеется ввиду андроид школа, которая проводилась компанией в 2015 году совместно с Google. Проводилась она один единственный раз. На тот момент я искал работу андроид разработчиком и знакомый с универа сказал обратить внимание на эту компанию. Посмотрев на рейтинги и узнав, что офис находится в 30 минутах пешком от дома я решил попробовать туда устроиться.

                                        На сайте компании увидел новость про андроид школу. Не помню сколько она длилась месяц или два, но факт в том, что оставалась неделя до ее конца. И мне пришлось за пару дней посмотреть все видео, пройти все тесты и сдать финальный тест, чтобы получить сертификат.

                                        Зачем проходил школу? Хотел бумажку. Прям вот хотел. И не исключал возможные плюсы при устройстве на работу. «Я прошел вашу школу, берите меня».
                                        В статье также упоминаются курсы. Это бесплатные курсы по андроид разработке на курсере из 5 частей. До сих пор храню с них все материалы. Хотя за 5 лет никогда ими не пользовался. Но пару раз проекты оттуда открывал за первые пол года работы.

                                        Сертификат с курсеры за курсы я не получил, так как он выдавался за деньги. Но бесплатный сертификат с андроид школы меня сманил. Поэтому решил ее пройти.
                                        Более того недавно заходил на курсеру и там даже записей нет в моем аккаунте о прохождении этих курсов. Хотя там все на максимум было сдано. Очень обидно. Курсера — не молодцы в этом плане. Может и у них кто базу грохнул.
                                      +1

                                      Читать и в конце увидеть рекламу, весь текст только ради одной строчки рекламы, разочарование(

                                        +1

                                        Там была реклама? У меня уже видимо мозг натренирован, что пропускает её и даже не запоминает.

                                          0
                                          Ага, к сожалению, но это так prnt.sc/v3ek7f и после этой откровенной правды сразу становится не ясно на сколько материал истинен :(
                                        0

                                        Чем больше сила — тем больше ответственность!

                                          +27
                                          Студент-программист, мнящий себя мега-бекендером с распознаванием речи на плюсах вдруг осознал, что ему просто нравится делать анимации на простых аппах для андроида. Ну, что тут скажешь.
                                            –1
                                            +1
                                              0
                                              Куда уж мне до звания мега-бекендера в тот момент. Зеленый студент, не больше.
                                              До этого момента я устал от бекенда и по этой причине пошел снова в универ для поиска другой области. Там и нашел андроид с его анимациями.
                                                0

                                                "Что дэлать, Что дэлать. Завыдоват будэм"
                                                Человек нашёл себе себя. Надолго ли — время покажет, всё равно хорошо.

                                                +8
                                                Оказалось, целую группу пользователей просто выпилили. Ее не было в продбазе

                                                За харддел нужно крышкой пианино по пальцам, а за отсутсвие контроля целостности — самим пианино.

                                                В 8 часов компания уволила человека, который все это заварил.

                                                Копания буквально только что вложила огромные деньги в обучение человека а затем его уволила? браво

                                                Только через пару лет я узнал, что это было недостижимо

                                                Изучать матчасть после и случайно… сильно.

                                                Вы уж простите: не зашло, тут КПДВ с известными бурундуками нужно как минимум.
                                                  +2
                                                  Харддел все еще применяется много где. Базовый принцип: если у вас дефрагментация стоит дороже, чем хранение — храним. Иначе — выпиливаем.
                                                  Контроль целостности вполне мог быть. В таком случае выпиливаются не только пользователи, но и все принадлежащие им объекты. CASCADE DELETE и никаких вопросов к товарищу, что проектировал эту БД.
                                                    0

                                                    Вот потому-то и не стоит использовать CASCADE DELETE по любому поводу...

                                                      0
                                                      Харддел все еще применяется много где. Базовый принцип: если у вас дефрагментация стоит дороже, чем хранение — храним. Иначе — выпиливаем.

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

                                                      А каскадное удаление это уже не роялем… это каточком надо. Да к тому же _пользователей_? Сущность которая обычно слинкована вообще со всей базой? Хм, никаких вопросов говорите…
                                                      Нюню:
                                                      Предстояло мёржить базу за 7 часов, накатывать на ту, что в ноль, возвращать всех пользователей


                                                      PS. Но с другой стороны, чем больше людей делают такие глупости, тем выгодней смотрюсь я, когда это все исправляю. Так что в общем и целом — я не против)
                                                        0
                                                        Что такое харддел? Вручную набранный sql-запрос на удаление?
                                                          0
                                                          Просто удаление.
                                                            +3

                                                            Оператор DELETE.
                                                            Противоположность "софтделу", который суть оператор UPDATE ... SET IsDeleted = 1

                                                        +6

                                                        Soft delete не нравится вским GDPR и ФЗ

                                                          +2
                                                          Именно. Со всякими комплаенсами вообще все сложно. Ты сделал hard delete, но есть еще бэкапы, которые хранятся N недель
                                                            +1
                                                            Ну так по этим кейсам не нужно массовое удаление. Там или при самоудалении человека, или вообще через техподдержку.
                                                              0

                                                              Речь же о коде, вроде как. Прописал WHERE неправильно и вот массовое вместо планируемого единичного.

                                                                0
                                                                Отнюдь. У человека может быть настроено хранить его данные например 3 месяца. Все, что старше трех месяцев нужно постоянно стирать.
                                                                +1
                                                                Любую крупную систему, особенно финансовую разорвет в клочья если у нее постоянно удалять пользователей. Может обезличивать лучше? В любом случае решение нужно искать не в удалении. Примером собственно ютуб, например, может служить: заходишь в плейлист а там удаленные ролики сверху донизу, раздражает до одури, а это всего лишь развлекательный контент.

                                                                Кстати я бы еще понял если бы удалили записи помеченные на удаление не менее суток назад, с натяжкой, скрипя зубами, но ладно, но удаление каскадом сходу… ну такое.
                                                              +3
                                                              Мой код должны были заапрувить как минимум 4 человека.

                                                              Забавно, конечно, когда при таком суровом подходе к апруву в прод пролетает скрипт, который просто дропает часть данных. Я бы выгнал тимлида(или кто там рулит) за профнепригодность. Умные люди данные даже не дропают, а помечают, как неактивные, чтобы если что-то пошло не так, то восстановить можно за 5 минут. А дропаются уже сильно позже, если данные мешают.
                                                                +3
                                                                Как по мне, тут недостаточно данных, чтобы судить, кто там дятел. Вполне вероятно, что скрипт, который дропает часть данных, как раз и являлся скриптом-сборщиком мусора, который должен был подчищать неактивные записи после некоторого периода времени… но что-то пошло не так в условии WHERE. Ну а почему проглядели аппруверы, тоже обычная ситуация. Когда через тебя проходит куча чужого кода, ты только на первых порах после повышения там всё внимательно выверяешь. Через какое-то время просто бегло просматриваешь, и на этом всё. Особенно если код от опытного программиста.
                                                                  0
                                                                  Любой код, что дропает данные, неважно в базе, в файловой системе или где-то удаленно, должен отсматриваться крайне внимательно именно, чтобы избежать невозвратных потерь данных и простоя системы. Если выстроенные процессы прохождения кода в прод такое все же пропускают, то они выстроены неверно и виноват тут тот, кто их внедрял и отвечает за них.

                                                                  Через какое-то время просто бегло просматриваешь, и на этом всё

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

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

                                                                      0
                                                                      Я своим подчиненным часто говорю: «Ну не могу же я сделать виноватым сам себя, поэтому виноват будет один из вас». К сожалению, в окружающей действительности это часто практикуется и в цепочке виновных отыгрались на том кто ниже по иерархии.
                                                                    +2
                                                                    Да потому что апрув от 4 человек — это тупо формальность, которая чаще всего никакого практического смысла не имеет. Ну, может быть чешет ЧСВ тимлида, который думает как круто он построил процессы и какой у него крутой отдел разработки.
                                                                    Это из серии, когда на собесе тебя два часа гоняют по алгоритмам, тонкостям языка и прочим хардкорам, а потом в работе сажают писать круды и лепить формочки. Тимлид просто заигрался в крутую айти-компанию, карго-культ, в общем.
                                                                      0

                                                                      Если у каждого из четырёх 20% вероятности заметить имеющийся в коде косяк, то общая вероятность его перехватить около 60%.

                                                                        +2
                                                                        А если бы ревьюер был один, и знал бы про это, то нашёл бы косяк с вероятностью 85%
                                                                          0

                                                                          Вероятность всегда 1/2.
                                                                          Или заметят или нет.

                                                                            +3
                                                                            Если у каждого из четырёх 20% вероятности заметить имеющийся в коде косяк, то общая вероятность его перехватить около 60%.

                                                                            Наоборот. Стремится к нулю. Психология — а чего смотреть, если до меня уже крутой смотрел, но в «пол глаза» гляну для очистки совести, следующий — «А до меня уже два крутих смотрело, чего я там найду»…
                                                                            4 человека апрувить? Это же как надо ваять решение и его дизайн?
                                                                            Это же безумноно дорого и по «цене» будет сопоставимо сделать автотесты с «cases & QA...»
                                                                            0
                                                                            А как бы вы сделали, будь вы ответственны за разработку продукта, через который крутятся миллиарды долларов например?
                                                                              –1
                                                                              1) Нанимал бы хороших дорогих спецов на потенциально опасные участки разработки
                                                                              2) Не давал бы джунам (особенно джунам с самомнением) работать на хоть сколько-то чувствительных участках
                                                                              3) Не отвлекал бы хороших дорогих спецов на чужие код-ревью. Код ревьюит непосредственный руководитель того, чей код. Он может быть из этих дорогих спецов, но это лично его зона ответственности.
                                                                                –1
                                                                                Ах, эти минусы без пояснения! Описанный мною алгоритм действий уже показал себя в моем отделе с хорошей стороны, в отличие от.
                                                                                  +4
                                                                                  Да у нас тут в интернетах каждый имеет свой отдел, а каждый второй руководит управлением. Правда, потом начинаешь разбирать детали, вроде «как можно набрать хороших дорогих спецов на потенциально опасные участки разработки», если в общем случае отдел разработки — это не коробочка с людьми «взял, положил, взял, выкинул», у него есть штатное расписание, бюджеты, и возможность взять и нанять с улицы просто так под «появился потенциально опасный участок», во-первых, обычно отсутствует, во-вторых будет воспринята в штыки своими сотрудниками, которые там уже работают, в-третьих совершенно экономически неоправданна, в-четвёртых, совершенно не гарантирует качества и надёжности. И оказывается, что начальником отдела очередной эксперт стал пять минут назад, в момент написания комментария.
                                                                                    –2
                                                                                    Да у нас тут каждый в комментариях мнит себя экспертом по вопросам, в которых не разбирается, приводя в пример какие-то абстрактные компании.
                                                                                    и возможность взять и нанять с улицы просто так под «появился потенциально опасный участок», во-первых, обычно отсутствует

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

                                                                                    А вы точно хоть день руководителем работали?
                                                                                    в-третьих совершенно экономически неоправданна

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

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

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

                                                                                      Речь не про «дешевле», а про то, что собственные разработчики, имеющие опыт работы с вашей системой и достаточно времени на эту работу, будут эффективнее нового разраба «с улицы». И людей в команду берут тогда, когда собственных ресурсов не хватает, а не когда «у нас появился ответственный участок, не доверяю я своим разработчикам, давайте искать нового».
                                                                                        0
                                                                                        Вы снова о чем-то своем. Какие программисты с улицы? Если я вписываюсь в разработку потенциально дорогого проекта — я изначально наберу на него сильных и дорогих разрабов. Или вы хотите сказать, что средненький проект вдруг в какой-то день превращается в проект на миллиард? Я такого еще ни разу не встречал, я думаю вы тоже.

                                                                                        Но я не зря там написал про бюджеты, штатное расписание. Кто в курсе, тот поймёт.

                                                                                        Я в курсе. И я так же прекрасно в курсе, что если проект важный и в нем крутятся большие деньги — в него тоже вкладывают большие деньги.
                                                                                          +2
                                                                                          Вы снова о чем-то своем. Какие программисты с улицы? Если я вписываюсь в разработку потенциально дорогого проекта — я изначально наберу на него сильных и дорогих разрабов

                                                                                          У вас мухи с котлетами перемешаны. Мы разве только про дорогие стартапы говорим? Бизнес, который с самого начала создавался как бизнес на миллиард — это редчайшее исключение, про которое в газетах пишут. Все крупные компании начинали маленькими, у которых обороты были в десятки и сотни тысяч, а не миллиарды. И даже стартапы-единороги становятся такими не в одночасье (а выживают, несмотря на доступность дорогих кадров, не очень часто).
                                                                                          Да, если вам дали гору денег и проект, и сказали: «Делай», то вы там можете кого угодно нанимать на пустую стройплощадку, естественно. И то, минуточку, десять дорогих разрабов — это миллион долларов в год. Притом, что кому-то из них надо будет модели данных делать, кому-то стили CSS рисовать. Надо ли вам десять дорогих, половина из которых будет ныть, что они делают не интересную и не соответствующую их квалификации, работу?
                                                                                          А если мы говорим об обычной растущей компании, у которой появляются новые онлайновые сервисы, растёт клиентская база и т.д., то там уже всегда есть своя команда, и у неё есть свои интересы, свой опыт и так далее. И перечёркивать это — плохая идея.
                                                                                          Я в курсе. И я так же прекрасно в курсе, что если проект важный и в нем крутятся большие деньги — в него тоже вкладывают большие деньги

                                                                                          Ну тогда вы должны быть ещё и в курсе, что большие деньги никак не гарантируют качество, даже если вы их платите дорогому программисту.
                                                                                            +2
                                                                                            Если я вписываюсь в разработку потенциально дорогого проекта — я изначально наберу на него сильных и дорогих разрабов. Или вы хотите сказать, что средненький проект вдруг в какой-то день превращается в проект на миллиард? Я такого еще ни разу не встречал, я думаю вы тоже.


                                                                                            Встречали. Только в другой интерпретации.
                                                                                            Типичная ситуация выглядит так: никто заранее не знает — а взлетит ли проект.

                                                                                            И потому брать сразу на него супер-перцев и давать этим супер-перцам кучу времени на разработку — верный способ разориться.

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

                                                                                            Как это бывает в реальности расскажу:

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

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

                                                                                            Ага, конечно…

                                                                                            Там есть подзадача — электронная подпись транзакции. Она выглядит как «взять исходный запрос и сформировать подпись: хешировать содержмое запроса методом SHA1, результат хеширования зашифровать RSA».

                                                                                            Думаете у него какая то нетривиальная проблема с ключами или т.п.?
                                                                                            Нет.
                                                                                            Результат хэширования SHA1 — это бинарные данные.
                                                                                            То есть шифрованию RSA подвергаются уже бинарные данные.

                                                                                            И вот про эти бинарные данные мы это с ним 2 недели жуём. Я всё ему уже удаленно отладил. Нашел конкретное проблемное место в его коде:
                                                                                            он просто упорно результат хэширования из бинарного вида то в строку переводит, то вообще сериализирует внутренние объекты своего языка программирования — и в таком виде пытается применить RSA над результатом хэширования.

                                                                                            К слову, эта пара SHA1+RSA во многих программных библиотеках вообще одной функцией реализована, настолько это частая операция. Нужно только в библиотеку правильные параметры передать…

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

                                                                                            Но для того человека «тип данных» — пустое слово. Ну не понимает он чем бинарные данные отличаются от текстовых или от внутреннего объектного представления.

                                                                                            Судя по этому факту и по прежним факапам их платежной системы — чел явно студент или джун. Но платежная система у них уже несколько месяцев как в проде. И через неё реальные миллионы ходят. И да — это ему разработку той платежной системы и поручили.

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

                                                                                            Хочется надеяться, что хотя бы ПО для самолётов,…, а-а-а-а, нет, уже была статья на Хабре кто в конечном итоге разрабатывал некоторые части ПО для самолётов…

                                                                                            P.S.:
                                                                                            Пусть вас не смущают старые способы хэширования/шифрования SHA1/RSA — сам протокол обмена данными разработан уже очень давно совсем другими разработчиками, чье ПО несколько лет назад доминировало на рынке. Доминация того ПО канула в прошлое, но их протокол и до сих пор является одним из нескольких стандартов обмена платежными данными де-факто. Его используют, наверное, сотни платежных систем, просто так этот протокол не поменять.

                                                                                    0
                                                                                    А чем это отличается от того, что было в той компании? Кроме того, что 1 ревью вместо 4? Как это повышает качество кода?
                                                                                      0
                                                                                      Если коротко — сильно повышает. Потому что спецы, вместо того, чтобы ковыряться в чужом джуновском коде в поисках ошибок и теша свое ЧСВ таким образом, пишут свой код и закрывают свои задачи, не отрываясь. Поверьте, это СИЛЬНО влияет на качество кода.
                                                                                        0
                                                                                        Откуда вы взяли про джунов?
                                                                                +1
                                                                                Забавно, конечно, когда при таком суровом подходе к апруву в прод пролетает скрипт, который просто дропает часть данных.


                                                                                Дык, у 7 нянек дитя без глазу, впервой что ли такое наблюдать… А про умных людей и soft delete всякие GDPR с Вами сильно не согласны
                                                                                +5
                                                                                «И несказанно рад, что в четыре утра меня не поднимут спасать горящие базы, и не заставят потом составлять расстрельные списки.» — Я бы не зарекался, бизнес он и в Африке бизнес, поплывет формочка в UI, которая ключевая в приложении и приехали…
                                                                                  +1

                                                                                  Ну в каком нибудь футбольном менеджере это может быть не так критично и в принципе откат может быть проще… Это не процессинг на прошлую версию :)

                                                                                    0
                                                                                    Это зависит от денег, которое приложение приносит, вот будет футбольный менеджер приносить большие суммы, начнется ответственность
                                                                                  +3
                                                                                  Запустил на тестовом окружении — тестовые пользователи выпилились. Хм, посмотрел, как эта штука проверялась. Почему-то на этот раз, пусть у нас и три девстенда, первый и второй пропустили, а третий даже не свалился. Тест на это никто не писал (поставил себе галочку написать, чтобы больше такого не происходило).

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


                                                                                  Самое главное "Тест на это никто не писал ". Это ошибка проектирования процессов разработки и тестирования. Какие претензии к разработчику? Это отвественость ПМ — его и «расстрелять».
                                                                                    0
                                                                                    Работал я как-то сисадмином в аспирантское время… Забэкапил я данные по инструкции (буховская БД), снес старую базу, поставил новую версию бухпрограммы, восстанавливаю бэкап… а он не восстанавливается, и мало того — при попытке восстановления отправляет комп в BSD! Две недели вся бухгалтерия восстанавливала базу за три месяца.
                                                                                      +2
                                                                                      Если ты сделал бекап но не проверил восстанавливается ли он — считай что ты не сделал бекап.
                                                                                        0
                                                                                        Это, как и с самими бекапами, познаётся только после первого факапа.
                                                                                          0
                                                                                          Надо высечь в камне. Типа правила ТБ для сисадминов.
                                                                                            0
                                                                                            Не восстанавливается вообще и не восстанавливается на новой версии — 2 большие разницы. Тут дословно написано про второе.
                                                                                              0

                                                                                              В таких ситуациях надо:
                                                                                              а) проверить восстановление бэкапа на старой версии софта
                                                                                              б) проверить восстановление бэкапа на новой версии софта
                                                                                              в) быть готовым откатить новую версию софта

                                                                                          +2
                                                                                          > в следующие пару недель вылетели еще несколько причастных к этому случаю

                                                                                          Любопытно было бы вкратце узнать, как эти несколько были причастны к этому случаю (должности/роли)?

                                                                                          Потому что без этого рассказ звучит как то, что руководство среднего звена поняло, что ему несдобровать и решило по быстрому, воспользовавшись эмоциями непосредственно вовлеченных людей, избавиться от этих непосредственных свидетелей некомпетентности или халатности оного начальства.
                                                                                            +1
                                                                                            В такой ситуации увольнять нужно не программиста, а начальника, который не выстроил процессы/систему таким образом, чтобы подобное не могло произойти (а реально, никого не нужно увольнять, а сделать выводы и работать дальше). Из того, что лично накосячил — еще будучи студентом тестил какой-то кусок интерфейса и не посмотрел, с каким он знаком платежи проводит. Короче, при зачислении со счета клиента списывали бабло. Несколько десятков проводок откатили, дали мне по шапке.
                                                                                              +3
                                                                                              А не подскажете, как должны быть выстроены процессы, чтобы «подобное не могло произойти»?
                                                                                              ИМХО, вы ничем не отличаетесь от этих начальников, «есть косяк — должна пролиться кровь», вся разница только в том, чья.
                                                                                                0
                                                                                                В такой ситуации увольнять нужно не программиста, а начальника, который не выстроил процессы/систему таким образом, чтобы подобное не могло произойти

                                                                                                Есть подозрение, что реальность могла бы быть сложнее. Например, чувак накосячил, но это была не разовая акция, а планомерное длительное раздолбайство, которое вскрылось благодаря эпичному фейлу.
                                                                                                +21
                                                                                                — Ты знаешь, что твоя ошибка стоила мне миллион?
                                                                                                — Да. Полагаю я уволен?
                                                                                                — Ты идиот? Зачем мне уволнять человека, на обучение которого я только что потратил миллион?
                                                                                                (с)
                                                                                                  +2

                                                                                                  Вот интересно, как народ ведется на рекламу…
                                                                                                  Чего то еще обсуждают (100% выдуманную историю).


                                                                                                  Ну наглая рекламная статья якобы от имени "физического человека".

                                                                                                    0
                                                                                                    маркетологи совершенствуются)
                                                                                                    –7
                                                                                                    Мы назвыаем себя инженерами, но почему-то считаем, что можно уронить прод и не быть за это уволенным. Нельзя.
                                                                                                      +5
                                                                                                      Есть странные люди, называющие себя врачами, но почему-то считают, что можно потерять пациента, и не быть за это посаженным. Внезапно, можно.
                                                                                                        +1
                                                                                                        Вообще, врачи могут нести в т.ч. и уголовную ответственность за смерть пациента.
                                                                                                          +1
                                                                                                          Только если докажут, что он что-то сделал либо вопреки требованиям, либо не сделал то, что 100% требуется в данном случае.
                                                                                                          Профессия врача намного более формализована, чем программиста.
                                                                                                          Требований, что ты должен прописать в WHERE, а чего не можешь — не существует, как на уровне «министерства ИТ-технологий», так и в должностной инструкции.
                                                                                                          Хотя если в должностной инструкции прописано, что любое изменение должно успешно пройти через 3 уровня/стенда тестирования, а чел прошёл только 2 — то вполне себе достаточная причина для увольнения. Уголовку, по идее, тоже можно привесить, если доказать большую сумму ущерба и явный умысел (халатности будет недостаточно, скорее всего, ибо не МОЛ).
                                                                                                        0
                                                                                                        За врачебные ошибки очень даже увольняют, а за халатность можно даже сеть.
                                                                                                      +1
                                                                                                      Защита от такого(Oops queries) должна быть в стандартном плане Disaster recovery. Если такого не было(или декларировалось что у нас все есть, а по факту ничего не было), то пожалуй да, увольнение это правильное решение. Но увольнять надо того кто за это отвечал, разработчик то не причем.
                                                                                                      www.brentozar.com/archive/2016/07/updated-high-availability-disaster-recovery-planning-worksheet
                                                                                                        0
                                                                                                        Простите, а как этот скрипт в прод улетел, если вы же сами говорите, что минимум четыре человека ревью делают?
                                                                                                        Или это таки рекламный пост, содержание которого выдумано чуть более, чем полностью?
                                                                                                          0
                                                                                                          Говорили, что человек пошел не по процессу. Четыре ревью проведено не было и один стенд с тестами был пропущен. Увы, на тот момент такое было возможно.
                                                                                                            0
                                                                                                            Вполне возможно, что каждый из этих четырёх человек понадеялся на остальных трёх в цепочке, и в итоге никто подробно код так и не посмотрел. Сам такое видел. Это как в анекдоте про евреев и котёл с водкой)
                                                                                                              +1
                                                                                                              Так это как раз говорит о том, что виноват не конкретный уволенный человек (хотя он конечно виноват), а те, кто организовал подобную архитектуру, где программист может любую ерунду отправить в продакшен.
                                                                                                                0
                                                                                                                Так это как раз говорит о том, что виноват не конкретный уволенный человек (хотя он конечно виноват), а те, кто организовал подобную архитектуру, где программист может любую ерунду отправить в продакшен.


                                                                                                                Всеохватывающая система на 100% гарантирующая от факапов — лишена смысла по чисто экономическим причинам. Проверки и перепроверки, перепроверки проверок — а кому работать-то?

                                                                                                                На практике — если у вас есть такое желание и злой умысел, то с большой вероятностью вы всё равно сможете хакнуть систему «проверок и перепроверок».

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

                                                                                                                И если исполнители допускают косяки — доля вины в факапе есть и у организатора процесса и у конечных исполнителей. Накажут ли их — это другой вопрос.
                                                                                                                  –1
                                                                                                                  Так всё гораздо проще — программисты вообще! не имеют доступа к продакшену, всеми изменениями в прод заведует специально обученный человек.
                                                                                                                  И всё, подобная ситуация просто в принципе исключена.
                                                                                                                  Да, конечно он в свою очередь может накосячить, но это уже как бы другой вопрос.
                                                                                                                    +1
                                                                                                                    Так всё гораздо проще — программисты вообще! не имеют доступа к продакшену, всеми изменениями в прод заведует специально обученный человек.
                                                                                                                    И всё, подобная ситуация просто в принципе исключена.


                                                                                                                    Да ладно.
                                                                                                                    Даже не имея доступа к системе я вполне могу написать в недрах своего кода «DELETE FROM users;» и когда мой код выполнится в проде (а когда нибудь он выполнится, ибо цель написания кода — чтобы он когда-нибудь выполнился в проде) наступит жопа.

                                                                                                                      –1
                                                                                                                      Если один программист имеет возможность завалить прод — то значит в организации процесса что-то совсем не так. О чём я и говорю.
                                                                                                                      Коммит>тесты и тестовое окружение>релиз/билд менеджер>прод.
                                                                                                                      Причём после коммита программист уже доступа непосредственно к закомиченному коду не имеет.
                                                                                                                      Странно, что на хабре подобные вещи приходится объяснять.
                                                                                                                        +3
                                                                                                                        Если один программист имеет возможность завалить прод — то значит в организации процесса что-то совсем не так.

                                                                                                                        Есть только одна возможность не дать программисту завалить прод: вообще не публиковать на проде его код, ни прямо, ни через код-ревью, не через деплой-менеджера, ни через деплой-менеджера после трёх код-ревью. Потому что чем сложнее система, тем больше есть способов протащить баг или злонамеренный код на прод при любой организации работ.
                                                                                                                        Система, на которой вы гоняете тесты, пусть незначительно, но всегда будет отличаться от прода — по URL'ам, по строкам подключений, по правам пользователей и т.д. Значит, уже есть возможность написать код, нормально работающий на тесте, и ненормально на проде.
                                                                                                                        Увидеть что-то кривое/плохое на код-ревью, это тоже рулетка, как повезёт. Могут увидеть, а могут и нет, особенно в свете того, что у ревьювера своей работы обычно хватает, и тщательно разбирать весь прилетевший от вас ворох изменений он тоже не рвётся, так, просто посмотрит на очевидные косяки. А деплой-менеджер… деплой-менеджер вообще не в курсе, что у вас там написано, его дело отдеплоить по инструкции, а не анализировать код на предмет багов.
                                                                                                                          0
                                                                                                                          Вы сначала говорите про банальный delete from users, который на тесте вылезет моментально, а потом про вырожденные ситуации с протаскиванием в прод хитрого злонамеренного кода. Ошибка и злой умысел как бы две совсем разных вещи. Это как админ, случайно положивший боевой сервер и админ, умышленно запустивший на него зловред.
                                                                                                                          Вон ниже хорошо написано, есть «ошибка, халатность и тупость» — вот как раз от них правильная архитектура и должна защищать в первую очередь.
                                                                                                                            0
                                                                                                                            Вы сначала говорите про банальный delete from users, который на тесте вылезет моментально


                                                                                                                            Ну так это же не одна строка… Реальное ПО намного неоднозначнее.
                                                                                                                            В реальности эффект «delete from users;» дает какое-то косвенное изменение кода.

                                                                                                                            Вон ниже хорошо написано, есть «ошибка, халатность и тупость» — вот как раз от них правильная архитектура и должна защищать в первую очередь.


                                                                                                                            Это невозможно на 100%.
                                                                                                                            Но это «невозможно» не значит, что не нужно стараться сделать систему лучше.

                                                                                                                              0
                                                                                                                              Вы сначала говорите про банальный delete from users,

                                                                                                                              Банальный delete from users — это вырожденный пример, очевидно же, что в реальной жизни должно быть что-то более сложное.
                                                                                                                              Ошибка и злой умысел как бы две совсем разных вещи.

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

                                                                                                                              Правильная архитектура, это примерно как маска от коронавируса. Снизить вероятность может, защитить — нет.
                                                                                                                                0
                                                                                                                                хитрого злонамеренного кода

                                                                                                                                if (mt_rand(0, 100000) == 0) {
                                                                                                                                    // DROP TABLE `users`;
                                                                                                                                }
                                                                                                                                
                                                                                                                                  0
                                                                                                                                  Вы сначала говорите про банальный delete from users, который на тесте вылезет моментально

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

                                                                                                                                +1
                                                                                                                                Коммит>тесты и тестовое окружение>релиз/билд менеджер>прод.
                                                                                                                                Причём после коммита программист уже доступа непосредственно к закомиченному коду не имеет.
                                                                                                                                Странно, что на хабре подобные вещи приходится объяснять.


                                                                                                                                Странно, что на Хабре приходится объяснять — это не работает на 100%.
                                                                                                                                То о чем вы пишете — идеальный, но не реальный мир.

                                                                                                                                На 100% тесты не проверяют всех ситуаций полностью.

                                                                                                                                Иначе бы ПО давным-давно было бы идеально отлажено и багов не было бы вообще нигде. Уж такие фирмы как MS или Гугль могут себе позволить проводить полный цикл проверок, как бы.
                                                                                                                                Но баги есть и у них.
                                                                                                                                  0
                                                                                                                                  Отсутствие доступа к продакшену еще ничего не гарантирует.
                                                                                                                                  Любой программист на проекте сможет в одну-две функции узнать тип стенда (дев-тест-НТ-прод) и далее вызвать какой-нибудь код, когда тип стенда будет равен проду.
                                                                                                                                  Легко проскочит все стенды, единственный момент — могут увидеть на код-ревью.
                                                                                                                                  И да, такой код я лично видел своими глазами, и даже не раз.
                                                                                                                                  И нет, это не было диверсией (хотя один раз были спецэффекты).
                                                                                                                                    +1
                                                                                                                                    Любой программист на проекте сможет в одну-две функции узнать тип стенда (дев-тест-НТ-прод) и далее вызвать какой-нибудь код, когда тип стенда будет равен проду.
                                                                                                                                    Легко проскочит все стенды, единственный момент — могут увидеть на код-ревью.
                                                                                                                                    И да, такой код я лично видел своими глазами, и даже не раз.
                                                                                                                                    И нет, это не было диверсией (хотя один раз были спецэффекты).


                                                                                                                                    Пример, когда не по злому умыслу:

                                                                                                                                    Например, сталкивался, с тем, что тестовый стенд имел не полную БД (а полная БД это сотни гигабайтов, никто на тестовом полную копию продовой БД не держал), поэтому в коде приходилось специально реализовывать обходной манёвр. И однажды этот обходной манёвр забыли убрать…
                                                                                                                          0
                                                                                                                          уж очень хочется услышать этот анекдот
                                                                                                                            +1
                                                                                                                            Первый результат в duckduckgo.
                                                                                                                        –3
                                                                                                                        Автор лучший! Очень стимулирующая история, связанная не только с видом деятельности, но и общим стремлением к самореализации! Как же я Вам парни завидую (белой) завистью, что вы имеете такой навык, как создавать! (программировать). Очень жаль что родители в своё время не поспособствовали, а будучи уже личностью социальные и личные нужды не оставили мне шанса познать этот безгранный мир. Уважение Автору и тем кто вкладывает тетанические усилия в образование, которое обеспечит вас шансом стать частью и создателем этого мира (программирования). Цените сотрудников, уважайте руководство:) Не забывайте руководители, что были в рядах сотрудников. А сотрудники, уважайте руководителей (Даже через зубы!), так как хотели бы получить это взамен, при удачно сложившихся для Вас обстоятельств возложивших на Вас груз ответственности руководства. Забрел сюда случайно, уверен без багажа от сюда не уйду. Если что извиняюсь заранее. Всем добра и терпения!!!
                                                                                                                          0
                                                                                                                          В нашей компании все рабочие процессы были выстроены безупречно. Проверки, тесты, ревью. Снова проверки, тесты и ревью. Но даже такая система может дать сбой, и ты должен быть готов, что тебя словно солдата-срочника, поднимут утром по тревоге.


                                                                                                                          В компании практически полностью отсутствовали процессы обеспечения качества.
                                                                                                                          Понятное дело, что qa специалиста в компании не было. Но говорить о том, что если есть код ревью! То процесс выстроен безупречно! Смешно!

                                                                                                                          К 7 утра мы все починили. В 8 часов компания уволила человека, который все это заварил.


                                                                                                                          Вот это просто насмешило. А этот человек то тут при чем. Если архитектор так криво базу спроектировли.

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

                                                                                                                            0
                                                                                                                            Спасибо за комментарий.

                                                                                                                            qa специалисты на тот момент в компании были.

                                                                                                                            Человека уволили за то, что он пошел не по процессу, а не за то, что натворил с базой. Мне это тогда так объяснили. На ошибках надо учиться. Лучше на чужих.

                                                                                                                            Лично я за такое увольнять не стану. Но на тот момент автор (я) был зеленым студентом, который стремился стать разработчиком. К менеджменту меня тогда и не думали подпускать.
                                                                                                                              0
                                                                                                                              qa специалисты на тот момент в компании были.

                                                                                                                              Сомневаюсь, я не тестировщиков имел ввиду.

                                                                                                                              Человека уволили за то, что он пошел не по процессу, а не за то, что натворил с базой. Мне это тогда так объяснили. На ошибках надо учиться. Лучше на чужих.

                                                                                                                              Вот этого в статье нет совсем, где он пошел про процессу, почему он это сделал, кто ему приказал. Это основные вопросы. Акценты расставлены совершенно не там.
                                                                                                                            +1

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

                                                                                                                              0
                                                                                                                              imho увольнять в этой ситуации человека это всё равно что случайно схватившись рукой за раскалённый паяльник, потом отхлестать эту руку за то что доставила боль. работал человек, долго, устраивал, судя по сроку работы — сверхлояльный… единичный фейл, пусть даже большой — уволили, получили дыру в штатном расписании, мороку с поиском ему замены, слили на этот процесс его трёх-четырёхмесячную зарплату… не факт что нашли на те же деньги что платили прежнему… не исключено что уволенный работник пару дней поснимав стресс и подепрессовав воспринял эту ситуацию как долгожданный пинок сменить работу и расти… может так, что парень ещё и в выигрыше в перспективе… хз. как-то истерично и неправильно всё это.
                                                                                                                                –5
                                                                                                                                Я сильно извиняюсь. Мой комментарий не совсем относится к посту. Своё чрезвычайно положительное впечатление, к нему я выразил в прошлом сообщении. Но осмелюсь постыдиться и попросить помощи, в поиске правильного направления в обучающей информации любого рода, (статьи, вебинары, видео, теории, пошаговые инструкции и тд.) Которые реально смогут мне помочь в поверхностном представлении (интернет маркетинга, аналитика, создание простейших приложений на android, может кто имеет этот пыльный архив полезного софта и мануалов, первой ступени. Увы уверен, что даже начальный уровень познания о кодинге и программировании без визуальных конструкторов создаст дикий ддос в моей голове. Считаю глупым, сейчас тратить деньги на вебинары и т.п. Потому что по моему мнению, навыки такого рода это как фигурное катание или хоккей. Я свой шанс в понимании о том что тут публикуют, променял в 2000г. на старкрафт и сигареты в подъезде) После 2000г еще 20 лет наблюдал на всё то чем вы занимаетесь как на звёзды, с открытым ртом и восхищением но увы на расстоянии того же удаления. Короче предисловие к тому бреду ранее, еще чуток. Я продажник в строительной сфере. Сейчас в профессиональном кризисе, отсутствия ремиссий на разнообразие. Проработал кучу лет тут, Имею наработанную лично и всеми сотрудниками не малую базу ЦА, выше среднего класса. С стопроцентной платежеспособностью, все относятся к очень обширному для размаха в реализации товаров а тем более услуг. Есть пара тщательно отфильтрованных замыслов к начинанию с большим шансом успеха. Но хотел бы для начала получить хотя бы базовое понимание того с чем придется связаться самому а тем более оставлять без контроля на кого то. Подобных ошибок видел не мало и все они были прискорбно окончены. В ходе детальной трепанации, личностей клиентов, в процессе заключения бумажки. Детально разбирал на винтики каждого. В среднем на каждого уходило пару часов еще и в загородной обстановке. Я веду к тому, что личностное общение не даёт уже не чего. Хотел бы получить более глубокое понимание маркетинга и аналитики. детально, пошагово, принцип интернет аналитики. Может у кого то появится желание, поделиться чем то полезным Что сразу не выдаст яндекс топ. Аналитика — с тем же корнем. Очень бы помогло в структурировании потенциальной задумке. Понимаю, вероятность чтения этого бреда, ровна шансам реализации мною задуманного. Но не теряю надежды на существование альтруистов по отношению к каменоголовым.
                                                                                                                                Кто еще не понял, мой уровень развития как минимум в контенте этого прекрасного проекта — Питекантроп. Рад что оказался вокруг умных людей, первое впечатление об увиденном схоже с погружением в прорубь. Отрезвляет к собственному самолюбию и не много огорчает, задумываясь… в какую жопу и когда я засунул свою голову и решил что мне больше учиться не надо. Я так расписываю всю глупость, в надежде понимания моего положения и буду благодарен любому полезному отклику а больше отрицательной критики)) Она мне охвата даст побольше)
                                                                                                                                  +2
                                                                                                                                  Высушите ваш комментарий от воды. В таком виде дальше 2 строчки вряд ли кто прочтет.
                                                                                                                                    0
                                                                                                                                    Без основной мысли начал, так и на протяжении всего комментария не смог толком её сформулировать, и тем более донести её в читабельном виде) Извиняюсь за буквенный понос. Спасибо за ответ)
                                                                                                                                    +1

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

                                                                                                                                      0
                                                                                                                                      придумайте простую задачу — типа приложения калькулятора или списка покупок или дневника, выберите язык( например python, но в целом язык не важен) и сделайте. Прочитайте бесплатный курс по языку в интернете, напишите hello world, разберите примеры. Очень советую для начала освоить или вспомнить школьную программу по информатике хотя бы без программирования, она много вещей разъяснит. В целом learning by doing для начала весьма неплохой путь. Потом все сами поймете)
                                                                                                                                        +1

                                                                                                                                        Бросай — не твое

                                                                                                                                        0
                                                                                                                                        правильно ли я понял что его уволили не за ошибку, а за пренебрежение принятым порядком тестирования?
                                                                                                                                        и если нет, то если бы Вы были руководителем и должны разработать мероприятия по недопущению аналогичных ситуаций, чтобы вы предложили для снижения человеческого фактора?
                                                                                                                                          +2

                                                                                                                                          ИМХО, есть очень важный момент: люди часто путают три фундаментально отличающиеся вещи (прошу прощения, но мои мой словарный запас не позволил подобрать более удачные понятия, поэтому назову их так): ошибку, халатность и тупость.


                                                                                                                                          Ошибка — это проблема, которую разумными способами предотвратить было невероятно тяжело. Компанию взломали с использованием специально написанного для неё вируса с использованием новейшей уязвимости в операционной системе? Это плохо, но это именно ошибка безопасников и архитекторов. Вы — первая в мире компания, которая использовала эту базу для хранения 100 ТБ данных, а она сломалась именно в проде, хотя ее тестировали на тестовом сервере много раз, но маленькая незаметная строчка все испортила? Да, это ошибка.


                                                                                                                                          Халатность — это осознанное нарушение сотрудником правил, которое привело к проблеме. Сисадмин что-то раскатал без бекапа, так как его лень делать? Это она. Джуниор залил код в репозиторий, а потом сам раскатил его на 150 миллионов пользователей, и система упала? Это именно халатность.


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


                                                                                                                                          И ключевой момент в том, что на ошибки, халатность и тупость имеет смысл реагировать разными способами:


                                                                                                                                          • За ошибку действительно почти нет смысла карать, только пытался извлечь из неё как можно больше знаний о том, что можно улучшить.
                                                                                                                                          • За халатность можно и даже нужно карать, так как это осознанное действие сотрудника.
                                                                                                                                          • Тупость — это повод задуматься о том, подходит ли этот сотрудник для этой должности. Нужен ли тупой программист или архитектор? Возможно, что да, но обычно — нет.

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

                                                                                                                                            0

                                                                                                                                            В статье, кажется, описана ошибка в коде плюс халатность, приведшая к попаданию этого кода на продакшене без должного тестирования.

                                                                                                                                            0
                                                                                                                                            Тут вопрос в другом. Как такой код ушел в продакшн? Ниче не тестировалось? Где QA? Где автотесты какие-нибудь?
                                                                                                                                            Ну в общем как построили работу, так и вышло.
                                                                                                                                              0
                                                                                                                                              Где-то читал историю про подобный факап. Виновник пришёл с заявлением «по собственному», на что руководитель ему отказал со словами «твоё обучение обошлось слишком дорого для компании». Но бывают и просто менеджеры.
                                                                                                                                                –1
                                                                                                                                                Эта история лишний раз подтверждает что в айти-индустрии самое худшее звено это ни какие-нибудь тестеры или джуны-разработчики, а менеджмент, менеджмент любого уровня, звевна.
                                                                                                                                                  0
                                                                                                                                                  Боюсь что никакой ИТ специфики тут нет — достаточно телевизор посмотреть или вспомнить про птичек image
                                                                                                                                                  –2
                                                                                                                                                  Когда я был совсем начинающим электриком, я протирал пыль и отключил электроснабжение половины огромного нефтехимического комбината. Это стоило мне 600 рублей премии в ценах 2004 года.

                                                                                                                                                  0
                                                                                                                                                  Стал бы я увольнять человека за ошибку? “Программа делает то, что ты ей написал”. Но мы же разрабы, мы постоянно ошибаемся.


                                                                                                                                                  Проблемой является как выявить первопричину:

                                                                                                                                                  Случайность
                                                                                                                                                  Злоумышлено
                                                                                                                                                  Недоквалификация

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

                                                                                                                                                    –2
                                                                                                                                                    Ой братан да меня с е-легиона за гораздо меньшее уволили, так что ты там эта, не загадывай)
                                                                                                                                                      –1
                                                                                                                                                      Эта история лишний раз подтверждает что в айти-индустрии самое худшее звено это ни какие-нибудь тестеры или джуны-разработчики, а менеджмент, менеджмент любого уровня, звевна.
                                                                                                                                                        +2
                                                                                                                                                        Эта история лишний раз подтверждает что в айти-индустрии самое худшее звено это ни какие-нибудь тестеры или джуны-разработчики, а менеджмент, менеджмент любого уровня, звевна.


                                                                                                                                                        Никаких самых худших звёнен никак нельзя определить, не вникая в суть конкретной ситуации.

                                                                                                                                                        Вы слишком грандиозные выводы делаете из одного факта. Разработчики тоже не святые.

                                                                                                                                                        В данном конкретном случае? Возможно, да, так как вы и написали.

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

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

                                                                                                                                                        Есть конечно клинические случаи, например, когда сисадмин полгода заваливает руководство заявками на запасные диски, а потом случается выход RAID массива из строя. Да, тут очевидно, руководство не вняло советам спеца, а спец выполнил свою профессиональные обязанности.

                                                                                                                                                        Но если в тех же условиях сисадмин ровно сидел на жопе полгода пока RAID ему мигал красной лампочкой, то виноват уже именно сисадмин, а не руководство, которое и слова такого не знает «RAID».

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

                                                                                                                                                      Самое читаемое