Пссс, хотите немного ужасных IT-историй?

Боитесь ли вы темноты? Может быть, зомби-апокалипсиса или чудовища под кроватью? Мы знаем, что нет. У нас, айтишников, свои источники ужаса: криворукие пользователи, далёкие от IT начальники, упавшие сервера, пропавшие или не сделанные бэкапы, легаси код и Agile-митинги, когда на самом деле вся разработка управляется вскриками «ещё вчера», «заказчик мечет», «там критикал на проде». Накануне Хэллоуина мы решили найти самые ужасные истории, рассказать пару своих, а заодно услышать ваши. Ну что, готовы рассказать холодящие душу байки?  

c9541f0e7789505da6d03442e9bd7468.jpg


Лёгкая разминка до мурашек


Начнём с одной очень простой функции. По идее она должна проверять, является ли число простым. 

bool primeCheckUgly(unsigned long long int n){//good luck
    ...


Ну раз комментарий пожелал нам удачи, то вы точно готовы увидеть скриншот полного кода этой функции. Готовы? Ну?

Бу!
89cef23b569d63147fffa78f5ef38834.png


А что делает фрагмент кода на следующем скриншоте?

cfa7ef032080bfa60a3d7d4692690022.png


Бу!

Проверяет, является ли число нечётным. А вы что подумали?


Время страшных историй с Reddit


История 1


Очень длинный и страшный листинг — мы предупредили!


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

  • кошмарные угрозы безопасности, SQL-уязвимости
  • проблемы с поддержкой кода (монолит на 3,5 тыс. строк)
  • проблемы с масштабированием
  • ужасные приёмы, функции и организация кода (автор не пожалел пробелов)
  • плохая структурированность и читабельность кода.


Суровые читатели посоветовали оставить как есть и извлечь урок для бизнеса (да-да, мы как хостинг-провайдер тоже знаем, какие бедовые клиенты приходят от «бесплатных» провайдеров от сохи). Ну и точки над i расставил лучший комментарий: «If not for alcohol, most code I see would keep me up too» (Если бы не алкоголь, этот код мне тоже не дал бы уснуть). 

История 2


Онлайн-учебник рассматривает каждое слово как отдельный HTML-элемент, поэтому копировать и вставить более 10 слов на параграф невозможно. Однако местами Реддит это почти как Хабр, поэтому в комментариях лишь несколько пользователей отозвались об авторе кода как о му**ке, остальные дали множество советов как обойти эту фичу и заполучить весь текст в лучшем виде. Если кому-то нужны способы, о них можно прочитать в самом треде.

3384eb757dfc810fcfda700cb98ae777.png


История 3


Этому парню платили за такой код 50$ в час, и он сотворил (наговнокодил) целый файл длиной более 300 строк. 

Заказчик сам виноват, порешило сообщество, потому что 50$ это копейки, а значит, рассчитывать можно только на найм «обезьяны». Некоторые решили, что это просто плохая шутка и парень нагонял себе часы. Ну, а подробный разбор того, что в коде не так, в треде. 

a61487a67358271ec19d05229656d54d.png


История 4


Это, конечно, рассказ, граничащий с фантастикой, но кто на заре прекрасной юности не творил что-то подобное. 

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

rm -rf /* 


Но что-то, видимо, в душе ёкнуло и он обратился к своему СТО, правильный ли выбран ход мысли, парень получил подтверждение и… ну вы поняли. Комментарии доставляют на сто процентов: «как вкусны твои слёзы» «бессмысленно спрашивать технического управленца, как удалять файлы в Linux», «вы, должно быть, не очень освоились с Linux» (нам думается, там ещё нелады с гуглом и здравым смыслом), «фейл!». Нам думается, что история больше похожа на байку, но именно от неё прошёл по спине недобрый холодок и как-то сразу захотелось выйти из-под root. Кстати, несколько полезных советов там тоже есть.

История 5


Байка, похожая на предыдущую. Одной командой :-)

sudo rm –fr /


Бу!

А ничего здесь страшного нет.


История нашего знакомого из его прошлого опыта


»2008 год. Наш сайт взломали. Это был нормальный, защищённый сайт, на который заходило более 5000 человек в сутки. И вот на главной появился текст с ошибками, про Пентагон и угрозы забрать у нас сто миллионов (к слову, это была лишь часть выручки компании). СБ-шники на ушах, директор в панике, СТО мылил верёвку, разработчики бежали за вазелином. Ничего. Закрыли сайт, повесили 404, получили шквал звонков. На следующий день пришла мама а-ля Анфиса Чехова в лучшем соку и привела совершенно замученного пацанчика 16 лет в очках. Говорит: «Это мой сын, он хакер,   возьмите его на работу». СТО вылез из петли, взял малого за плечико и заставил показать брешечку (подробности нам уже не огласили), маме рассказали про УК РФ, но парню что-то подарили». 

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

Как не стать героем таких историй для своих коллег


Советы программистам


  • Комментируйте код, особенно если вы новичок в разработке. Это поможет и вам, и коллегам, и тем, кто войдёт в проект намного позже.
  • А ещё лучше пишите читабельный код. Код — ни что иное, как особый язык общения команды программистов. Хороший код самодостаточен, помните об этом. Пусть в нём разберутся даже те, кто придёт в команду после вас. 
  • Называйте переменные и функции нормальными лексическими единицами, чтобы можно было понять, что они должны делать. FsskdQwertZeta плохо MoveEmployeeFromList нормально. 
  • Следуйте принятому в компании code style — благодаря этому проект будет не только понятным, но и безопасным: любой разработчик команды сможет в экстренной ситуации внести правки, не тратя время на распутывание то ли обфускации, то ли плохого стиля.
  • Не плодите мусор в коде, модулях, проектах. Удаляйте ненужные модули, не тащите за собой нерабочий легаси, по возможности рефакторьте, чтобы выкинуть костыли и переплавить велосипеды на хороший код.
  • Тестируйте свой код, проверяйте реальные сценарии. Если вы не протестируете код, его протестирует прод :-)


Советы системным администраторам


  • Документируйте свою работу, чтобы вашим коллегам, сменщикам и вам самому было проще разобраться в стандартных сценариях.
  • Делайте бэкапы. Делайте, мать их, бэкапы!
  • Автоматизируйте свою работу, используйте тикет-системы и системы мониторинга.
  • Работайте только по заявке — так вы сможете доказать, что вы работаете, а не гоняете в Доту, и «просто перезалить базу 1С» это не «просто».
  • Выстраивайте систему информационной безопасности в компании, предупреждайте правонарушения со стороны коллег и особо ретивых «продвинутых пользователей».
  • Логируйте, журналируйте, храните записи.
  • Имейте подменный фонд периферии и железа, управляйте лицензиями, бюджетируйте — будьте ИТ-менеджером, а не просто парнем «по вызову».


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

Друзья, сегодня, в Хэллоуин, мы жаждем леденящих душу историй и вашей IT-практики. От чего у вас потели ладони, темнело в глазах и холодело внутри? За лучшую историю (с самым высоким рейтингом комментария) вручим призы. За первое место — толстовку с автографом thelevelord, создателем Duke Nukem:


За второе место — запас носков на целый год :)

© Habrahabr.ru