Вольный перевод с 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...