Интересные истории о плохом коде

      Комментарии к записи Интересные истории о плохом коде отключены

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

Аластер Стелл, Javascript, Python, C++, C#, Smalltalk, C, Web-разработка, SQL и т.д.

У меня столько примеров, что кроме того и не знаю, с какого именно начать.

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

Хорошо, это еще помой-му не самое ужасное. Как по поводу приложения для поиска недвижимости, в котором не трудилась функция сортировки? В то время, когда моя команда была приглашена для доработки данного решения и проекта существующих неприятностей, нанявшая нас компания растолковала подобный кошмар в технической части тем, что «у них была высокая текучка в персонале, исходя из этого как-то было не до введения функции сортировки». В итоге нам пригодилось полностью переделать и переписать около 8 миллионов строчков кода.

Но подождите, и это не самое ужасное. в один раз мне было нужно столкнуться с одним страшным кодом на C и C++. В нем употреблялись указатели стека для восстановления переменных, каковые были исключены из подписи API. Плюс, программисты весьма не желали тратить лишнее время, исходя из этого, дабы не трудиться на выходных, они решили пропустить процесс экспертизы. В следствии мы израсходовали около 250 тысяч долларов на сверхурочную работу и оплату штрафов, которая потребовалась для нахождения этого бага.

К сожалению, мне иногда приходится сталкиваться с страшным кодом. Практически, это происходит благодаря 3 факторов:

  • Через чур мало опыта или его избыточность.
  • Неверная оценка времени, благодаря чего кое-какие этапы работы приходится делать в условиях его нехватки, что ведет к ухудшению качества.
  • Полное отсутствие таланта (а вместе с ним и критического мышления, умения и логики функционировать исходя из внутреннего ощущения). В целом, на мой взор, лишь только 10% разработчиков ПО вправду владеют талантом к этому. 30% — это люди, каковые занимают совсем не собственный место и которым лучше было бы отыскать другую работу. Все остальные вычисляют себя крутыми экспертами, но на деле это только средние либо кроме того плохие программисты.

Стив Коулман, аналитик в физической лаборатории Университета Джона Хопкинса

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

И вот я выхожу в собственной первый сутки на рабочее место, где меня сажают наоборот терминала, дабы я имел возможность познакомиться и разобраться с программой. Под маленькой проблемой прятались, они утвержают, что маленькие неприятности с производительностью. Конечно, я постарался ввести несложный запрос в совокупность, дабы оценить ее работоспособность. Я надавил клавишу Enter, и мне было нужно «мало подождать. Всего лишь 45 мин.! Я был в один момент в возмущении и ужасе: кто имел возможность сконструировать аналогичного ни на что не годного монстра? И да, я замечательно осознавал, что на исправление данной «небольшой проблемки» нужно будет потратить уйму сил и времени, и разбираться с ней придется поэтому мне – молодому программисту, что лишь пришел трудиться на это место. И это с учетом того факта, что по замыслу совокупность должна быть открыта уже через месяц!

Спустя пара недель усердного труда я смог снизить время загрузки страницы до 8 секунд. Конечно, это все еще был через чур большой временной отрезок для Минобороны. Я внес предложение замысел предстоящей работы, но они посчитали его неполным и неподходящим. Исходя из этого они пригласили так именуемого «Специалиста», которому было нужно платить по тысяче долларов за любой рабочий сутки (а я напоминаю, что тогда это были легко огромные деньги). И что же в итоге? Через несколько недель он внес предложение им совершенно верно тот же концепт, в соответствии с которым я строил и предлагал им собственный замысел. Конечно же, затем они разрешили мне реализовать мою идею, и уже через полторы семь дней я смог сократить время загрузки с 8 секунд до меньше чем 1 секунды. Это был вправду прекрасный результат, плюс, благодаря моей оптимизации во многих вторых моментах пользоваться программой стало намного эргономичнее. Так начался мой путь в качестве опытного программиста.

Интересные истории о плохом коде

Рагхавендра Нв, программист

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

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

Одному из разработчиков я разрешил задание написать пара сервисных способов (API-вызовов). Я заблаговременно написал 35 модульных тестов для этих еще не созданных сервисных способов. Ни один из этих тестов не трудился, поскольку api были еще не готовы. Я попросил разработчика доделать работу с сервисными способами, в силу того, что когда они готовься , то пройдут все модульные тесты. Я настоятельно попросил его удостовериться, что все модульные тесты закончены удачно. Он заявил, что все осознал и что все будет сделано.

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

Затем я залез в служебный слой и понял, что в нем нет по большому счету ни одного кода, о которых я просил разработчика. Я был в удивлении, поскольку я не забывал, что 34 теста прошли удачно, тогда как сервисные способы не были кроме того введены. Тогда я открыл код этих 34 юнит-тестов, по окончании чего испытал настоящий шок: все они были закомментированы.

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

От аналогичного заявления я опешил и не нашелся, что и ответить. Затем я к нашему начальнику и уведомил его, что предстоящая работа с данным экспертом для меня неосуществима.

Дэнни Кодичек, разработчик ПО

Вне всяких сомнений, к такому провалу возможно отнести один из моих кодов.

Самый нехороший код, что и сейчас вгоняет меня в краску, был создан мной по просьбе моих друзей из Лондона. Я должен быть сделать несложную программку для финального отсчета времени, что должен был состояться при объявлении ответа Олимпийского Комитета о том, где будет проводиться Летняя Олимпиада 2012. Поэтому Лондон был одним из основных фаворитов в том состязании за проведение олимпиады, исходя из этого обратный отсчет должен был транслироваться в офис в Лондоне.

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

00:05

00:04

00:03

00:02

00:01

00:00

00:-01

00:-02

Я сгораю со стыда любой раз, в то время, когда я вспоминаю тот случай.

Иосиф Сталин. Интересные Факты и Истории из Жизни Сталина. Шутки Сталина


Интересные записи: