Тред: разработчики вспоминают нелепые ошибки в своей работе

Из-за сооснователя Instagram Кевина Систрома сайт соцсети не работал в день запуска час, а эксперт в области безопасности Алекс Стэймос устроил расследование секретной службы в крупном американском банке, переводя отрицательные суммы денег.

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

This is your unscheduled reminder that telling early-in-career engineers stories of times you messed something up real bad is a good way to help them combat their own impostor syndrome.
«Это незапланированное напоминание для вас рассказать начинающим разработчикам истории из своей практики, когда вы что-то напутали и всё испортили. Это хорошая возможность помочь новичкам справиться с синдромом самозванца»

Вот что из этого вышло.

@ElleArmageddon Day of instagram launch brought the site down for an hour because we forgot a favicon - system tried to send us an email for every 404 😬
«В день запуска Instagram сайт упал на час, потому что мы забыли добавить favicon — система пыталась прислать нам электронное письмо за каждую ошибку 404»
«Сказал "мы»". Должен был сказать "я"»
Ответ на публикацию @ElleArmageddon
Mistakenly exposed the beta settings of the @nytimes app to all users so everyone who found it could turn off ads and unlock the paywall. 😳 https://twitter.com/ellearmageddon/status/1255870742727585792
«По ошибке открыл бета-настройки приложения The New York Times всем пользователям. Все, кто находил их, могли отключить рекламу и разблокировать платный доступ»
Ответ на публикацию @ElleArmageddon
I added code to an app to expire a beta build after 90 days. I never took it out. Three months and one day later, after shipping a production build, I woke up to 1,000+ emails in my Inbox.

(Oh, and because the build expired, customers couldn't auto-update to the fixed version.) https://twitter.com/ElleArmageddon/status/1255870742727585792
«Добавил в приложение код, чтобы срок действия бета-сборки истёк через 90 дней. Я никогда не убирал его. Спустя три месяца и один день, после запуска продакшн-версии, я проснулся и увидел больше тысячи писем. (О, и так как срок действия сборки вышел, клиенты не могли автоматически обновить её до исправленной версии)»
Ответ на публикацию @ElleArmageddon
In my first few weeks working at Facebook, if someone moved to a new city they appeared to immediately become friends with everyone in that new city. My bad! https://twitter.com/ElleArmageddon/status/1255870742727585792
«Шли первые недели моей работы в Facebook. Если кто-то из пользователей переезжал в новый город, то тут же становился другом всем в этом городе. Моя вина!»
@iam_rahool I can't remember, but I do remember that it was a display bug of some kind. If you clicked on profiles of people you appeared to be friends with but weren't it would show you weren't friends and not break any privacy.
«Это была какая-то ошибка отображения, уже не помню точно. Если вы откроете профили людей, с которыми якобы дружите, но на самом деле нет, то увидите, что вы не друзья. Нарушения конфиденциальности не было»
Ответ на публикацию @ElleArmageddon
I was running network backups for the Itanium development team at HP. They needed a quick restore. I deleted today's files before restoring yesterday's backups. The backup tape failed. My deletion probably cost several million dollars. https://twitter.com/ElleArmageddon/status/1255870742727585792
«Я работал над резервным копированием данных для команды разработчиков микропроцессора Itanium в HP. Им нужно было быстрое восстановление. Я удалил свежие файлы перед восстановлением вчерашних резервных копий. Попытка восстановить их провалилась. Вероятно, моё удаление стоило нескольких миллионов долларов»
Ответ на публикацию @ElleArmageddon
My startup @SpeakerText launched in 2010 during #TechcrunchDisrupt with @TechCrunch as our first customer

Our totally untested software crashed http://TechCrunch.com for ~1 hour while @arrington was on stage talking, so he never found out 😅

cc @jonorlin https://twitter.com/ellearmageddon/status/1255870742727585792
«Мой стартап SpeakerText был запущен в 2010 году во время TechCrunch Disrupt, а TechCrunch стал нашим первым клиентом. Наша абсолютно не проверенная программа сломала сайт TechCrunch.com примерно на час. Основатель TechCrunch Майкл Аррингтон был на сцене, поэтому он так и не узнал об этом»
«Спасибо, что сказал мне об этом сейчас?»
Ответ на публикацию @ElleArmageddon
Ok this dates me horribly buuuut....

I FedExed a floppy disk(!) to a very angry customer with the fix for a very silly bug I had written.

Unbeknownst to me the disk had a virus on it. They thought I did it on purpose. https://twitter.com/ElleArmageddon/status/1255870742727585792
«Это представит меня в ужасном свете, но...Я отправил дискету очень сердитому клиенту с исправлением очень глупой ошибки, которую я написал. Незаметно для меня на диск попал вирус. Они подумали, что я сделал это нарочно»
Ответ на публикацию @ElleArmageddon
i once took down our mailing server by sending 50K emails (each!) to every product manager at my company. i also once queued up the wrong version of around 6K press release kits during a rebranding and had to figure out how to fix it at the champagne-laden launch countdown. https://twitter.com/ellearmageddon/status/1255870742727585792
«Однажды я отрубил наш почтовый сервер, отправив 50 тысяч электронных писем каждому менеджеру по продукту в компании. А ещё я как-то раз во время ребрендинга поставил в очередь неверную версию около шести тысяч пресс-релизов и должен был выяснить, как это исправить до обратного отсчёта запуска с шампанским»
Ответ на публикацию @ElleArmageddon
My favorite: once took down every slot machine and gaming table in a casino, at lunchtime, on a Friday. No idea how many millions were lost. https://twitter.com/ElleArmageddon/status/1255870742727585792
«Моё любимое: однажды я вырубил все игровые автоматы и столы в казино во время обеденного перерыва в пятницу. Понятия не имею, сколько миллионов было потеряно»
Ответ на публикацию @ElleArmageddon
I was applying a patch package to an AS/400. It has a setting for when to apply it, as it shuts down the box when it runs, I typo'ed the setting causing it to run immediately versus when it was supposed to be scheduled. There was no "are you sure" so it immediately shut down. https://twitter.com/ElleArmageddon/status/1256626886534287361
«Я использовал пакет исправлений к серверу AS/400. При запуске он выключает сервер, поэтому у него есть настройка, когда его применить. Я написал опцию для немедленного запуска. Там не было вопроса "Вы уверены?", так что сервер сразу же отключился»
Ответ на публикацию @ElleArmageddon
For 47 harrowing minutes after 9:30pm in the year 2000, every account holder at a major US Bank had the same account number — because of me. https://twitter.com/ElleArmageddon/status/1255870742727585792
«В 2000 году каждый владелец счёта в крупном американском банке имел один и тот же номер счёта в течение 47 мучительных минут после 21:30. Из-за меня»
@ElleArmageddon I was supervising a pen-test of a decent sized bank, and we found a mismatch between how the Java web app and backend mainframe handled integers. This let us transfer negative amounts of money and, effectively, invent money out of thin air.
«Я руководил пентестом в банке приличного размера, и мы нашли несоответствие в том, как Java в веб-приложении и мейнфрейм обрабатывают целые числа. Это позволило нам переводить отрицательные суммы и фактически делать деньги из воздуха»
@ElleArmageddon We were testing against production, and the customer had wanted a heads up before doing anything really risky. It was late at night, so we decided to do the PoC and let them know the next morning. Mistake #1. Mistake #2: we tested with $5M and not $5.
«Мы тестировали уже на проде, и клиент хотел знать заранее, если будем делать что-то и правда рискованное. Была поздняя ночь, поэтому мы решили проверить гипотезу и сказать ему об этом на утро. Это первая ошибка. Вторая ошибка: мы тестировали с $5 млн, а не $5»
@ElleArmageddon Banks continuously run batch jobs and know exactly how much money they have on hand, checking that against a variety of records and the Federal Reserve. A $5 mismatch triggers an investigation. For $5M, the Secret Service is there at 8am the next morning. Anyway, lessons learned!
«Банки постоянно отслеживают кражи и точно знают, сколько денег у них на руках, сверяя данные с различными документами и Федеральной резервной системой. Пропажа 5$ запускает расследование. За $5 млн секретная служба была в банке уже на следующее утро. В любом случае, урок усвоен!»
@ElleArmageddon You mean like the time I accidentally unplugged http://www.sony.com, shut the cage, left the colo, and boarded a subway?
«Ты имеешь ввиду время, когда я случайно вырубил sony.com, закрыл серверную клетку, покинул дата-центр и сел в метро?»
@ElleArmageddon I once used cron to send a marketing email to 15k users. Took more than a minute so the next cron iteration spawned a new process and sent the same email again to 15k users, same again a minute later. Didn’t realise for 2 hours. Made the same mistake with the apology email 🤦‍♂️
«Однажды я использовал команду cron для отправки маркетингового письма 15 тысячам пользователей. Это заняло больше минуты, поэтому следующая итерация cron запустила новый процесс и отправила то же письмо тем же 15 тысячам пользователей, а спустя минуту вновь. Два часа я не понимал это. И повторил эту ошибку, когда отправлял письмо с извинениями»
@lemonodor @ElleArmageddon @BrianTRice I lost two weeks of coding work because I emptied the trash after my toddler discovered dragging icons in the trash.
«Я потерял две недели написания кода, когда очистил корзину после того, как мой малыш открыл для себя перетаскивание иконок в корзину»
@ElleArmageddon Ohhhhh there was that one time when accidentally inverted an if statement, and so every time someone tried to save their profile, it got deleted instead. Took 450 profiles before we figured out what was going on 😅
«Ох, как-то раз я случайно перевернул оператор if и каждый раз, когда кто-то сохранял свой профиль, он удалялся. Прежде чем мы поняли, что происходит, пропало 450 профилей»
@ElleArmageddon I plugged a 9 volt power adapter into a 5 volt Android device worth $300 . This silently destroyed it beyond repair.

"This device is faulty" I said.

So I got a different 5 volt Android device and plugged it into the same power adapter.
«Я подключил адаптер питания на девять вольт к Android-устройству на пять вольт ценой $300. Это тихо уничтожило его без возможности реанимировать. "Это устройство с дефектом", — сказал я. И получил новое устройство Android на пять вольт, и подключил его к тому же адаптеру»
@ElleArmageddon I had just finished installing software on a production web server in the early 2000s. When I finished, I went to clean up my working directories with an "rm -rf *". I didn't double check where I was in the file system first. I was at the root and wiped the whole system. 😭😭
«Я только закончил устанавливать программное обеспечение на веб-сервер в начале 2000-х годов. Когда завершил, то пошёл почистить мои рабочие каталоги командой "rm -rf *". Я не проверил, где нахожусь. Я был в корне и снёс всю систему»
@ElleArmageddon It's cliche because it happens.

We had backups of the data but not the system configuration itself. It was the days before all our fancy devops configuration management tools. I had to rebuild the server by hand before I could restore the web site backups.
«У нас были резервные копии данных, но не конфигурации самой системы. Это было до того, как появились модные инструменты управления DevOps. Мне пришлось перестраивать сервер вручную, прежде чем я смог восстановить резервные копии сайта»
@ElleArmageddon The server was at a colocation facility, so I had to physically go there to reinstall the OS before I could start rebuilding. It took me an entire day to bring everything back up. A very. Long. Day.
«Сервер находился на территории провайдера, поэтому мне пришлось физически отправиться туда, чтобы переустановить ОС, прежде чем я смогу запустить восстановление. Мне потребовался целый день, чтобы привести всё в порядок. Очень. Длинный. День»
@ElleArmageddon I was working at Zenimax Online supporting the Elder Scrolls online at it's launch. I was supposed to be patching European Servers during their maintenance window.... accidentally did the US servers instead....and it was during peak hours. Locked 40k people out midgame
«Я работал в Zenimax Online, поддерживал Elder Scrolls Online во время запуска. Я должен был патчить европейские серверы во время технического обслуживания. Случайно я сделал это для американских серверов, и это произошло в пиковые часы. 40 тысяч человек оказались заблокированы посреди игры»
@ElleArmageddon I toasted a prod database on the first day of my first internship. I had added some new columns to a database table in a SQL file, and asked the senior engineer how to update the schema. "Just run the install method" they said, without telling me that it would first drop the DB.
«Поджарил продакшн-базу в первый же день своей первой стажировки. Добавил несколько новых столбцов в таблицу базы данных в файле SQL и спросил старшего разработчика, как обновить схему. "Просто запустите метод установки", — сказали мне, но не предупредили, что сначала БД будет сброшена»
Ответ на публикацию @ElleArmageddon
When I did tech support for AOL, in '98, I told a more junior phone rep "oh, just have them `deltree windows`, it'll fix their computer", and laughed

and then the phone rep actually said it to the customer, and it started destroying their Windows 98 install https://twitter.com/ElleArmageddon/status/1255870742727585792
«Когда в 98-м я оказывал техподдержку для AOL, однажды сказал более младшему оператору поддержки: "Просто скажи им набрать команду deltree windows, это исправит их компьютер" и засмеялся. А потом он повторил это клиенту и тем самым начал удалять их Windows 98»

Расскажите в комментариях свою историю о том, как допустили ошибку на работе и к чему это привело.

7878
74 комментария

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

Откуда даже не сказали спасибо. 

Самая большая ошибка...

37

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

17

😂😂😂👍 надо было обнулить все к херам. Сэкономили бы куче народу, Много денег 😂

5

Я дропнул продакшн базу...

Мы запустили новый проект, который состряпали очень быстро. Анонс запуска был давно, и в течение первых дней в проекте зарегистрировалось около 30 тыс человек, которые сразу закинули прилично денег. 
По плану была смена команды, новые ребята оказались личностями неприятными. Я передавал дела новому тимлиду. Он захотел дома развернуть стенд и разобраться, для чего попросил у меня дамп базы (это было давно, практики миграций тогда не было). В этот же момент у меня начался конфликт с новым менеджером. Я попросил его не злить меня, потому что мне надо сделать важную операцию. Тот меня оставил на какое-то время. Я полез в phpmyadmin от рут-аккаунта (чтобы получить доступ ко всем таблицам, тригерам и аккаунтам пользователей БД). И в этот момент менеджер спускает на меня собак. Я начинаю в ответ орать и промазываю мышкой, кликая не на дамп, а на "удалить бд" и уже на полном автомате кликаю подтверждение "ок".
Осознание пришло через секунд 15. Полез проверил - базы нет. Но я держу себя в руках. Я-то знаю, что есть дамп. Админу когда-то ставил задачу, потом принимал её. Скачиваю дамп, распаковываю, а там файл только со структурой... Данных нет... Почему я не заметил при приемке? Очень просто - принимал я задачу, когда база была пустой...

Но все же удалось выйти почти сухим из воды. В самом начале, когда я продумывал архитектуру всей платформы, часть данных пользователей я задублировал в другой БД на другом сервере. Поэтому id, никнеймы и почта у меня были на руках. Я сгенерировал новые пароли и разослал их пользователям.
Основной проблемой стало то, что часть email'ов были фиктивными, а мы их не верифицировали при регистрации. Поэтому потом в течение трех дней восстанавливали доступы пользователям по описанию их покупок.

17

конфликты с коллегами или руководством никак не оправдывают твою ошибку.

Сочувствую, что ты промазал.

6

Спасибо, теперь легче жить

14