Пссс, хотите немного ужасных IT-историй?
Боитесь ли вы темноты? Может быть, зомби-апокалипсиса или чудовища под кроватью? Мы знаем, что нет. У нас, айтишников, свои источники ужаса: криворукие пользователи, далёкие от IT начальники, упавшие сервера, пропавшие или не сделанные бэкапы, легаси код и Agile-митинги, когда на самом деле вся разработка управляется вскриками «ещё вчера», «заказчик мечет», «там критикал на проде». Накануне Хэллоуина мы решили найти самые ужасные истории, рассказать пару своих, а заодно услышать ваши. Ну что, готовы рассказать холодящие душу байки?
Лёгкая разминка до мурашек
Начнём с одной очень простой функции. По идее она должна проверять, является ли число простым.
bool primeCheckUgly(unsigned long long int n){//good luck
...
Ну раз комментарий пожелал нам удачи, то вы точно готовы увидеть скриншот полного кода этой функции. Готовы? Ну?
А что делает фрагмент кода на следующем скриншоте?
Проверяет, является ли число нечётным. А вы что подумали?
Время страшных историй с Reddit
История 1
Пользователь пришёл, чтобы обсудить, годный ли этот код… для бизнес-приложения. Комментаторы были как минимум в шоке и насчитали массу проблем:
- кошмарные угрозы безопасности, SQL-уязвимости
- проблемы с поддержкой кода (монолит на 3,5 тыс. строк)
- проблемы с масштабированием
- ужасные приёмы, функции и организация кода (автор не пожалел пробелов)
- плохая структурированность и читабельность кода.
Суровые читатели посоветовали оставить как есть и извлечь урок для бизнеса (да-да, мы как хостинг-провайдер тоже знаем, какие бедовые клиенты приходят от «бесплатных» провайдеров от сохи). Ну и точки над i расставил лучший комментарий: «If not for alcohol, most code I see would keep me up too» (Если бы не алкоголь, этот код мне тоже не дал бы уснуть).
История 2
Онлайн-учебник рассматривает каждое слово как отдельный HTML-элемент, поэтому копировать и вставить более 10 слов на параграф невозможно. Однако местами Реддит это почти как Хабр, поэтому в комментариях лишь несколько пользователей отозвались об авторе кода как о му**ке, остальные дали множество советов как обойти эту фичу и заполучить весь текст в лучшем виде. Если кому-то нужны способы, о них можно прочитать в самом треде.
История 3
Этому парню платили за такой код 50$ в час, и он сотворил (наговнокодил) целый файл длиной более 300 строк.
Заказчик сам виноват, порешило сообщество, потому что 50$ это копейки, а значит, рассчитывать можно только на найм «обезьяны». Некоторые решили, что это просто плохая шутка и парень нагонял себе часы. Ну, а подробный разбор того, что в коде не так, в треде.
История 4
Это, конечно, рассказ, граничащий с фантастикой, но кто на заре прекрасной юности не творил что-то подобное.
Парень был слишком ленив, чтобы выбрать все файлы в директории и не придумал ничего лучше, как воспользоваться утилитой
rm -rf /*
Но что-то, видимо, в душе ёкнуло и он обратился к своему СТО, правильный ли выбран ход мысли, парень получил подтверждение и… ну вы поняли. Комментарии доставляют на сто процентов: «как вкусны твои слёзы» «бессмысленно спрашивать технического управленца, как удалять файлы в Linux», «вы, должно быть, не очень освоились с Linux» (нам думается, там ещё нелады с гуглом и здравым смыслом), «фейл!». Нам думается, что история больше похожа на байку, но именно от неё прошёл по спине недобрый холодок и как-то сразу захотелось выйти из-под root. Кстати, несколько полезных советов там тоже есть.
История 5
Байка, похожая на предыдущую. Одной командой :-)
sudo rm –fr /
А ничего здесь страшного нет.
История нашего знакомого из его прошлого опыта
»2008 год. Наш сайт взломали. Это был нормальный, защищённый сайт, на который заходило более 5000 человек в сутки. И вот на главной появился текст с ошибками, про Пентагон и угрозы забрать у нас сто миллионов (к слову, это была лишь часть выручки компании). СБ-шники на ушах, директор в панике, СТО мылил верёвку, разработчики бежали за вазелином. Ничего. Закрыли сайт, повесили 404, получили шквал звонков. На следующий день пришла мама а-ля Анфиса Чехова в лучшем соку и привела совершенно замученного пацанчика 16 лет в очках. Говорит: «Это мой сын, он хакер, возьмите его на работу». СТО вылез из петли, взял малого за плечико и заставил показать брешечку (подробности нам уже не огласили), маме рассказали про УК РФ, но парню что-то подарили».
В общем, человеческий фактор — причина того, что у каждого из нас в любой рабочий день может случиться свой персональный Хэллоуин.
Как не стать героем таких историй для своих коллег
Советы программистам
- Комментируйте код, особенно если вы новичок в разработке. Это поможет и вам, и коллегам, и тем, кто войдёт в проект намного позже.
- А ещё лучше пишите читабельный код. Код — ни что иное, как особый язык общения команды программистов. Хороший код самодостаточен, помните об этом. Пусть в нём разберутся даже те, кто придёт в команду после вас.
- Называйте переменные и функции нормальными лексическими единицами, чтобы можно было понять, что они должны делать.
FsskdQwertZeta
плохоMoveEmployeeFromList
нормально. - Следуйте принятому в компании code style — благодаря этому проект будет не только понятным, но и безопасным: любой разработчик команды сможет в экстренной ситуации внести правки, не тратя время на распутывание то ли обфускации, то ли плохого стиля.
- Не плодите мусор в коде, модулях, проектах. Удаляйте ненужные модули, не тащите за собой нерабочий легаси, по возможности рефакторьте, чтобы выкинуть костыли и переплавить велосипеды на хороший код.
- Тестируйте свой код, проверяйте реальные сценарии. Если вы не протестируете код, его протестирует прод :-)
Советы системным администраторам
- Документируйте свою работу, чтобы вашим коллегам, сменщикам и вам самому было проще разобраться в стандартных сценариях.
- Делайте бэкапы. Делайте, мать их, бэкапы!
- Автоматизируйте свою работу, используйте тикет-системы и системы мониторинга.
- Работайте только по заявке — так вы сможете доказать, что вы работаете, а не гоняете в Доту, и «просто перезалить базу 1С» это не «просто».
- Выстраивайте систему информационной безопасности в компании, предупреждайте правонарушения со стороны коллег и особо ретивых «продвинутых пользователей».
- Логируйте, журналируйте, храните записи.
- Имейте подменный фонд периферии и железа, управляйте лицензиями, бюджетируйте — будьте ИТ-менеджером, а не просто парнем «по вызову».
Очевидно, не правда ли? Но соблюдение этих нехитрых принципов закроет больше ⅔ возможных проблем, которые рискуют обратиться в леденящие душу истории на Хабре, Реддите и других ресурсах, где готовы обсудить ваш лютый факап.
Друзья, сегодня, в Хэллоуин, мы жаждем леденящих душу историй и вашей IT-практики. От чего у вас потели ладони, темнело в глазах и холодело внутри? За лучшую историю (с самым высоким рейтингом комментария) вручим призы. За первое место — толстовку с автографом thelevelord, создателем Duke Nukem:
За второе место — запас носков на целый год :)