Не, хуже, когда оно работало и перестало, а ты никаких правок не вносил. Залезаешь в код, видишь где проблема, исправляешь за пару минут. А потом оставшиеся 7 часов рабочего времени пытаешься понять, как оно вообще работало всё это время. Откатываешь одну версию программы, вторую, третью. Все нерабочие, ведь этот модуль не менялся уже пару лет. Но до этого дня программа работала.
Там хреново был прописан вызов процедуры. Переписал по новой, и оно заработало. Сейчас уже и не вспомню, чем именно был плох прошлый вызов, но точно помню, что программа так вообще не должна была работать. Но был и ещё один интересный момент.
Соседняя процедура имела точно такой же код, и она продолжала работать. Два идентичных куска, один работает, другой нет. (Естественно с некоторыми отличиями внутри, перестановка которых не сказывалась на работоспособности)
Писано было в древнем CBuilder5 , гугление ошибки сводилось к не менее древним форумам с сообщениями вроде: "Это известная проблема, исправленная в **** году".
В конечном счёте, внёс исправления везде, чтобы и оно внезапно не отпало. Но подобных случаев хватало.
В пятницу принесли редкую багу, на локальной-тестовой среде не повторяется, на бою повторяется.
В поте лица закрыли костылями, протестировали худо-бедно, ушли в девять вечера домой.
В понедельник выпилили костыли, тестирование отложили до пятницы (другая работа в приоритете), вечером выкатили, все норм.
В субботу поймали багу на бою, быстро ревертнули до состояния пятницы. Еще раз поймали багу, значит все наши фиксы с самого начала не работали.
В понедельник еще раз сломали голову, наконец дошло что бага проявляется под нагрузкой, на нагрузочное тестирование забили давно и думать про него забыли, багу отловили и пофиксили.
Зато теперь есть история рассказать кому.
Да ладно уж Нарния.. Глядя на всякие сервисы, кажется, на нагрузочные тесты вообще все хуй кладут. Кассы покупки билетов, жэк, внутренний софт всякий ритейлов, софт всяких опсосов. Куда не сунься, везде всё зависает и глючит.
Даже у нас на предприятии. Кучу миллионов в создание сайтов вложили, а работают они все через жопу. Элементарные формы заявок, а грузит так, будто я весь сервак на клиент качаю.
...почему не работает... а, вот почему, это я тупанул. Поправлю и ладно, запускаем заново...
Да бл..., а забыл указать новые данные. Так... сюда. Ок, заново...
ДА БЛЯТЬ! ЧТО НА ЭТОТ РАЗ!?
Ты наивно думал что проблема в синтаксисе, а у тебя вообще логика в коде не правильная и все надо переписывать. А когда допишешь, окажется что фича уже не нужна, и зря писал.
Забытые легенды гласят, что в доисторическую эпоху, когда IT ещё никто не называл IT, люди начинали заниматься программированием и другими веселыми занятиями с компуктером (и другими штуками поддающимися программированию) потому, что им это нравилось, а не потому что модно-молодежно, можно срубить бабла, можно надеть заужи, отпустить бороду, потягивать смузи и смотреть на всех остальных как на быдло.
Лучше заниматься любимым делом за большие деньги, чем за малые. Хотя проблемы тогда ещё похлеще были. Почему не работает? Вот тебе книжка, читай и ищи причину.
мой первый баг был 23 года назад, когда я сделал управление в своей первой игре.
написал функцию хождения направо, проверил - работает
скопировал 4 раза, исправил знаки координаты, запустил, все работает кроме стрелки вниз, она почему-то идет налево, оказалось знак поменял а координату забыл.
так я исправил свой первый баг.
Прекрасная IT'шная жизнь embedded-разработчика под микроконтроллеры без freertos. Вот только 48кб оперативной памяти закончились и надо оптимизировать дремучее легаси. Особенно вот тот switch-case на 10000 строк.
Ты будешь смеяться, но чаще всего найти, где ужаться, в микроконтроллере, где всего килобайты, и аккуратная прошивка, проще, чем в монстре, который отжирает 500 гиг оперативы, и содержит столько кода, что для клона проекта нужно удалять несколько игрушек с компа.
Если бы. "Аккуратная прошивка" на 200000+ строк и под сотню файлов. Но твоя правда, найти место для оптимизации довольно легко - просто посмотреть .map-файл и переписать очередной кусок легаси. Благо heap у нас вообще не используется, управлять памятью просто.
Я понял почему мне нравится быть тестировщиком))) Это как быть котом: Ходишь гадишь, а убирать должны другие, и еще говорить что ты - молодец) « 0;2- ^
Отличный комментарий!