Помогите нам делать больше полезного контента — поддержите редакцию.
Support us

«Временно». Как очень странные костыли застревают в коде на годы

Интересная дискуссия развернулась в Threads: разработчики делятся историями о том, как временные решения, часто сделанные на коленке и очень сомнительные, остаются в коде надолго — и почему они никем не исправляются. 

А в вашей практике были такие? Делитесь в комментариях.

4 комментария
«Временно». Как очень странные костыли застревают в коде на годы

Интересная дискуссия развернулась в Threads: разработчики делятся историями о том, как временные решения, часто сделанные на коленке и очень сомнительные, остаются в коде надолго — и почему они никем не исправляются. 

А в вашей практике были такие? Делитесь в комментариях.

Тему начал PHP/Python-разработчик. Он рассказал, как недавно разбирался с критическим багом на проекте с 10-летним кодом. Спустя 4 дня кое-что нашёл: кто-то из разработчиков убрал из системы проверку платёжных карт с пометкой: «Временно, потом верну» — и не вернул, само собой. Коммит того разработчика датирован 2018 годом.

— Семь чёртовых лет компания принимала любые карты без проверки! Даже несуществующие. И никто не замечал… — возмущается топикстартер. 

В компании за это время сменилось 3 разработчика, но никто так ничего и не сделал с этим «Временно, потом верну». 

«Никто не возьмёт на себя риск исправить по принципу: «Не трожь, если работает!»

Под постом — «100% понимания» и никакого осуждения. Кто-то пишет, что такое «постоянно находится в легаси, но так как уже сменилось 10 поколений айтишников, то никто не возьмёт на себя риск исправить очевидные баги по принципу: «Не трожь, если работает!» 

Кто-то приводит пример: «Я в финансах. Регулярно нахожу в системе платежи, поставленные на холд в году этак 2020».

Один из комментариев — от человека, представившегося сотрудником компании по поддержке и оптимизации legacy codebases. Он составил топ-3 своих любимых «временных» решений, превращающихся в постоянные:

  • временный while (true) в некоторых местах для тестов — и это так и крутилось 10 лет вместе с основным кодом;
  • выгрузка из базы данных в одну строку длиной около 1000 с комментом: «Исправить, когда будет настоящая база данных». Базу просто потом подогнали под эту строку;
  • вшитый логин admin с паролем 12345 с todo-комментом. Компания была свято уверена, что нужно добавить логин, и эта таска висела в бэклоге 2 года.

И, конечно же, там много забавных историй от пользователей. Вот несколько из них: 

«А в начале безобразия — мой же комментарий: «временное решение»

— В далёком 2007 году мне нужно было срочно запустить одну новую информационную систему. На новогодних каникулах я налабал ужасный «говнокод» для выгрузки данных из этой системы. Код был реально ужасен: вместо создания и запуска динамического SQL по параметрам в UNION’ах были описаны все возможные на тот момент варианты выгрузки данных — и без всякой оптимизации… Я собирался поправить код через пару-тройку месяцев после запуска системы.

…Я уже давно перешёл в другое предприятие холдинга и даже сменил сферу деятельности. И вот в прошлом 2024 году бывшие коллеги сказали, что наконец-то эту устаревшую систему снесли и заменили новой. Я спросил: «А что, та выгрузка данных так и проработала все время?!.» Мне показали мой-же код с «заботливо» дописанными UNION’ами… А в начале всего этого безобразия гордо стоял мой же собственный комментарий, датированный 03.01.2007 года и указывавший на то, что это «временное решение». 

Спустя 8 лет «позвонили с прошлой работы и попросили восстановить скрипт»

— В 2007 году я, в то время ещё студент пятого курса, работал в большой фармацевтической компании. И как-то меня попросили написать небольшой скрипт для выгрузки данных из 1С по запросу через сайт. 

Я навалял его на коленке и отдал на тестирование работникам склада. Тест, видимо, он прошел сразу, так как никто меня не просил что-то дописать или исправить. Через пару лет я уволился и уехал за границу. А в 2015 году, мне позвонили с прошлой работы и попросили восстановить этот скрипт, так как он оказался очень важен и вся сеть из нескольких сотен фармацевтов и провизоров использовала его. А я даже не знал, что сделал супер-удобный инструмент для аптек.

«Примерно года два этим всем, матерясь, пользовались аналитики»

— Когда я была маленькой девочкой-стажером, мне дали задачу, разобраться, как работают базы данных (с нуля, по книжке Microsoft Access для чайников) и с нуля же создать базу данных, которая обращалась бы к сайту со статистикой и выгружала данные в Excel для нескольких очень важных отчётов. 

Поскольку делала я это всё впервые в жизни, а на проект был всего месяц, многое приходилось делать через адские костыли. Но примерно года два этим всем, матерясь, пользовались аналитики.

Почему говнокод — это норма: объясняют опытные кодеры
Почему говнокод — это норма: объясняют опытные кодеры
По теме
Почему говнокод — это норма: объясняют опытные кодеры
Благодаря вашей поддержке мы можем выпускать еще больше полезного контента.

Как помочь редакции

Читайте также
Как разработчик в Польше работал курьером (но потом всё получилось)
Как разработчик в Польше работал курьером (но потом всё получилось)
Как разработчик в Польше работал курьером (но потом всё получилось)
@dzikpic, канал для айтишников в Польше, рассказал историю Александра. Перед тем, как попасть в польскую компанию, он два месяца доставлял еду в Glovo. Каково это — ездить на велосипеде по 10-12 часов в день и почему маникюрщица зарабатывает больше разработчика.
15 комментариев
Айтишник купил дом в Польше. Как получить разрешение в 2023, когда отказов больше
Айтишник купил дом в Польше. Как получить разрешение в 2023, когда отказов больше
Айтишник купил дом в Польше. Как получить разрешение в 2023, когда отказов больше
@dzikpic, канал для ИТ-экспатов в Польше, рассказывает историю белорусского айтишника, который купил дом в Гданьске, с комментариями эксперта. Обсудить историю можно в чате.
13 комментариев
Belka Games уволила сотрудников в Беларуси, России и Литве
Belka Games уволила сотрудников в Беларуси, России и Литве
Belka Games уволила сотрудников в Беларуси, России и Литве
22 комментария
Российская «Леста» стала 100%-м собственником «Гейм Стрим»
Российская «Леста» стала 100%-м собственником «Гейм Стрим»
Российская «Леста» стала 100%-м собственником «Гейм Стрим»

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

0

были. 15 лет назад написали костыль а сегодня плюемся выпиливаем его из 80 сервисов по всему тихоокеанскому региону

zabelarus14
zabelarus14 Инженер в НИИ им. Баца
2

Костыльно-Ориентированное Программирование опирается на три кита:

Костылирование
Инкостыляция
Поликостылизм

table
table Table в Database
-1

«Временно, потом верну» — и не вернул, само собой. Коммит того разработчика датирован 2018 годом.

а что он сразу в мастер вмержил, безо всяких апрувов и все такое? Ну так на зеркало неча пенять, коли рожа крива

shipishi
shipishi Должность в Белокрылые лошадки
0

на том стоим. как-то в целях изучения перла и апача написал внутренний сайтик для зарядки и выгрузки данных с адским текстовым форматом в виде источника и access как БД. Через 5 лет зашел на поболтать - ниче, работает, активно пользуют.