«Часова». Як вельмі дзіўныя кастылі затрымліваюцца ў кодзе на гады
У Threads разгарнулася цікавая дыскусія: распрацоўшчыкі дзеляцца гісторыямі пра тое, як часовыя рашэнні, часта зробленыя на каленцы і вельмі сумнеўныя, застаюцца ў кодзе надоўга — і чаму іх ніхто не выпраўляе.
А ў вашай практыцы былі такія выпадкі? Дзяліцеся ў каментарыях.
У Threads разгарнулася цікавая дыскусія: распрацоўшчыкі дзеляцца гісторыямі пра тое, як часовыя рашэнні, часта зробленыя на каленцы і вельмі сумнеўныя, застаюцца ў кодзе надоўга — і чаму іх ніхто не выпраўляе.
А ў вашай практыцы былі такія выпадкі? Дзяліцеся ў каментарыях.
Тэму распачаў PHP/Python-распрацоўшчык. Ён распавёў, як нядаўна разбіраўся з крытычным багам у праекце з 10-гадовым кодам. Праз 4 дні ён нарэшце знайшоў праблему: хтосьці з распрацоўшчыкаў прыбраў з сістэмы праверку плацежных карт з паметкай «Часова, потым вярну» — і, натуральна, не вярнуў. Коміт гэтага распрацоўшчыка быў датаваны 2018 годам.
— Сем чортавых гадоў кампанія прымала любыя карткі без праверкі! Нават неіснуючыя. І ніхто гэтага не заўважаў… — абураецца топікстартар.
За гэты час у кампаніі змяніліся 3 распрацоўшчыкі, але ніхто так нічога і не зрабіў з гэтым «Часова, потым вярну».
«Ніхто не возьме на сябе рызыку выпраўляць па прынцыпе: «Не чапай, калі працуе!»
Пад пастом — «100% разумення» і ніякага асуджэння. Хтосьці піша, што «такое ўвесь час сустракаецца ў легасі, але паколькі ўжо змянілася 10 пакаленняў айцішнікаў, ніхто не хоча браць на сябе рызыку і выпраўляць відавочныя багі па прынцыпе: „Не чапай, калі працуе!“».
Другі каментатар прыводзіць прыклад: «Я ў фінансах. Рэгулярна знаходжу ў сістэме плацяжы, пастаўленыя на холд у годзе гэтак 2020».
— Калі быў аўтаматызатарам, бачыў паведамленне «ё***ным індусам, калі хопіць мазгоў дапілаваць маю фічу». Распрацоўшчык рабіў нейкі функцыянал для смарт-сістэм дамоў, а праект павінен быў перайсці да індусаў».
Адзін з каментарыяў — ад чалавека, які прадставіўся супрацоўнікам кампаніі па падтрымцы і аптымізацыі legacy codebases. Ён склаў топ-3 сваіх найулюбёнейшых «часовых» рашэнняў, што сталі пастаяннымі:
часовы while (true) у некаторых месцах для тэставання — і гэта працавала 10 гадоў разам з асноўным кодам;
выгрузка з базы дадзеных у адзін радок даўжынёй каля 1000 з каментарыем: «Выправіць, калі будзе сапраўдная база дадзеных». Базу потым проста падагналі пад гэты радок;
зашыты лагін admin і пароль 12345 з todo-камментам. Кампанія была ўпэўненая, што трэба будзе дадаць логін, і гэтая таска правісела ў backlog’у 2 гады.
І канечне ж, там шмат пацешных гісторый ад карыстальнікаў. Вось некалькіх з іх:
«А ў пачатку бязладдзя — мой жа каментарый: «часовае рашэнне»
— У далёкім 2007 годзе мне трэба было тэрмінова запусціць новую інфармацыйную сістэму. На навагодніх вакацыях я налабаў жудасны «гаўнакод» для выгрузкі дадзеных з гэтай сістэмы. Код быў сапраўды жудасны: замест стварэння і запуску дынамічнага SQL па параметрах у UNION’ах былі пералічаныя ўсе магчымыя на той момант варыянты выгрузкі дадзеных — і без аніякай аптымізацыі… Я хацеў выправіць код праз пару месяцаў пасля запуску сістэмы…
…Я ўжо даўно перайшоў у іншае прадпрыемства холдынгу і нават змяніў сферу дзейнасці. І вось у мінулым 2024 годзе былыя калегі паведамілі, што, нарэшце, гэтую састарэлую сістэму знеслі і замянілі новай. Я спытаў: «А што, тая выгрузка дадзеных так і прапрацавала ўвесь час?!.» Мне паказалі мой жа код з «клапатліва» дапісанымі UNION’амі… А ў самым пачатку гэтага бязладдзя ганарліва стаяў мой уласны каментарый, датаваны 03.01.2007 года: «часовае рашэнне».
«Праз 8 гадоў патэлефанавалі з мінулай працы і папрасілі аднавіць скрыпт»
— У 2007 годзе я, яшчэ студэнт пятага курса, працаваў у вялікай фармацэўтычнай кампаніі. Аднойчы мяне папрасілі напісаць невялікі скрыпт для выгрузкі дадзеных з 1С па запыце праз сайт.
Я зляпіў яго на каленцы і аддаў працаўнікам складу на тэставанне. Тэст, мабыць, ён прайшоў адразу, бо ніхто мяне не прасіў нешта дапісаць ці выправіць. Праз пару гадоў я звольніўся, з’ехаў за мяжу. А ў 2015 годзе мне патэлефанавалі з мінулай працы і папрасілі аднавіць гэты скрыпт. Выявілася, што ён быў вельмі важны, і ўся сетка з сотняў фармацэўтаў і правізараў ім карысталася. А я нават не ведаў, што стварыў супер-зручны інструмент для аптэк.
«Прыкладна гады два гэтым усім карысталіся аналітыкі і лаяліся»
— Калі я была маленькай дзяўчынкай-стажорам, мне далі задачу, разабрацца, як працуюць базы дадзеных (з нуля, па кнізе Microsoft Access для чайнікаў) і з нуля ж зрабіць базу, якая звярталася б да сайту са статыстыкай і выгружала дадзеныя ў Excel для некалькіх вельмі важных справаздач.
Паколькі я рабіла гэта ўпершыню ў жыцці, а на праект быў усяго месяц, шмат прыходзілася рабіць праз пякельныя кастылі. Але прыкладна гады два гэтым усім, лаючыся, карысталіся аналітыкі.
Як распрацоўшчык у Польшчы працаваў кур'ерам (але потым усё атрымалася)
@dzikpic, канал для айцішнікаў у Польшчы, расказаў гісторыю Аляксандра. Перад тым, як патрапіць у польскую кампанію, ён два месяцы дастаўляў ежу ў Glovo. Як гэта — ездзіць на ровары па 10-12 гадзін на дзень і чаму манікюршчыца зарабляе больш за распрацоўшчыка.
Айцішнік купіў дом у Польшчы. Як атрымаць дазвол у 2022, калі адмоў большае
@dzikpic, канал для ІТ-экспатаў у Польшчы, расказвае гісторыю беларускага айцішніка, які купіў дом у Гданьску, з каментарамі эксперта. Абмеркаваць гісторыю можна ў чаце.
на том стоим. как-то в целях изучения перла и апача написал внутренний сайтик для зарядки и выгрузки данных с адским текстовым форматом в виде источника и access как БД. Через 5 лет зашел на поболтать - ниче, работает, активно пользуют.
Рэлацыраваліся? Цяпер вы можаце каментаваць без верыфікацыі акаўнта.
были. 15 лет назад написали костыль а сегодня плюемся выпиливаем его из 80 сервисов по всему тихоокеанскому региону
Костыльно-Ориентированное Программирование опирается на три кита:
Костылирование
Инкостыляция
Поликостылизм
а что он сразу в мастер вмержил, безо всяких апрувов и все такое? Ну так на зеркало неча пенять, коли рожа крива
на том стоим. как-то в целях изучения перла и апача написал внутренний сайтик для зарядки и выгрузки данных с адским текстовым форматом в виде источника и access как БД. Через 5 лет зашел на поболтать - ниче, работает, активно пользуют.