Найти тему
DevRootIT [Python/Django]

Забавные истории разработчиков об их худших ошибках

Оглавление

Вольный перевод с Quora
Аудиоверсия: на всех подкаст-платформах:
https://link.chtbl.com/devrootit и на YouTube

Этот терминал...

Моя подруга недавно пыталась смоделировать виртуальную оболочку, которая, по-видимому, могла бы работать лучше, чем стандартная оболочка, и ей удалось впечатлить нас классными параметрами удаления, которые позволяют удалять непустые папки (что не поддерживалось обычным терминалом/оболочкой). Трагедия случилась, когда она с криком позвонила ко мне в дверь в час ночи. Я сварливо открыл дверь и обнаружил, что она сидит на полу, теребит волосы и бьет себя по голове. На мгновение мне показалось, что ящерица снова умерла в её комнате...

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

Реализовать свою функцию удаления может каждый. Запустить её на собственном коде - бесценно.

Интерн

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

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

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

И грянул гром.

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

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

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

«Господа, мы деплоим версию 3!»

В безумном рывке все разработчики собрались вместе, чтобы создать специальную сборку. Мы, затаив дыхание, наблюдали, как снова заработала прод система. Сработало!

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

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

Маленькое приложение

Я делал небольшое социальное приложение. Пользователь проходил тест, получал результат и делился им со своими друзьями. Типичная задача. Я не знал, где будет размещаться сайт, поэтому написал везде XXX, где мне нужно было заполнить, прежде чем он будет запущен.

Мне звонит клиент: они запустили сайт, но он не работает должным образом.

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

Я захожу проверить, и, конечно же, он не работает в разных местах, но самая худшая проблема (которую, к счастью, клиент так и не заметил) заключалась в том, что когда ты делился своим результатом, ты был перенаправлен на мой (невинно названный) временный URL: XXX.com

Ой. Урок усвоен: выбирай плейсхолдеры внимательнее.

Выбор плохих наименований

There are only two hard things in Computer Science: cache invalidation and naming things.

-- Phil Karlton

Я чувствовал себя неловко, когда коллега прочитал мой код и спросил: «Что делает этот метод?» глядя на его название, и говорю: «Ну и дела. Понятия не имею!» Потому что я назвал его чем-то ужасным, например doTheWork() или calculate().

Меня тупо тянет к слову «ядро (core)». Я несколько раз обжигался, называя класс или пакет «core», потому что для меня это была основная часть приложения, как в случае «core» и «plugins».

Однажды я получил application.core, view.core, controller.core и даже scrollbar.core. Затем были эти запутанные разговоры, когда я говорил: «Я работаю над ядром», а коллега спрашивал: «Какое ядро?». На что я иногда отвечал: «the core core». ААа!

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


Подкасты
[RU]
Слушай в своем любимом приложении для подкастов:
Все платформы -
https://link.chtbl.com/devrootit
Castbox
Google Podcasts
Apple Podcasts
[EN]
Castbox - 
https://castbox.fm/channel/id2555636
Apple Podcasts -
https://podcasts.apple.com/us/podcast/id149455872...