50

Программирование: как важно быть внимательным

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

Была запланирована в игре одна супер фишка. Народ на форумах давно ныл и требовал её. Реализация заняла у нас где-то месяц. Её разрабатывал один программист, но, как мы шутили тогда, срок заключения в нашей компании у него подошёл к концу и он благополучно покинул наши ряды.


Всё бы ничего, но закончить его труд (примерно 50% общей работы) предстояло мне. Я сел разбираться с его документацией. Вроде бы написано всё понятно, что делать надо понятно. Новая фишка была ожидаема. Очень. Наша пресс-служба на форуме и сайте, и в группе вк/фейсбуке/одноклассниках сказала:"Радуйтесь и ликуйте! Во вторник будет обновление с новой фишкой". Начальство из Москвы было в нетерпении, да и менеджер наш тоже слегка ёрзал. А ваш покорный слуга, вообще сон потерял от нервов. Мы тестировать начали с четверга. Весь четверг, пятницу. понедельник были тесты. Я уже перестал есть. Мы перепробовали все случаи, когда может не сработать, но... всё работало на тестовом сервере! И вот он вторник...


Объявлены техработы на сервере, игра будет недоступна час. Мы заливаем новую версию игры и начинаем на расслабоне смотреть: а ничего не отпало ли? Парадокс. Но мою фишку, несмотря на всю важность, решили посмотреть самой последней. Мол, и так уже три дня все смотрели, что там может пойти не так? Ага. Щас...

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

Но нет. Ни у меня, ни у моих коллег это не работало. НИКАК. Ни при каких обстоятельствах...

Программирование: как важно быть внимательным Программист, Программирование, Невнимательность, Дедлайн, Разработка, Реальная история из жизни, Опечатка, Длиннопост

Этот зверёк уже не просто подкрадывался к нашему офису, а он пришёл и нагло хохотал нам всем в лицо. Я просто сел на стул... Менеджер проекта был белее белого, собрал свои яйца в кулак и позвонил в Москву, сказав, что необходимо продлить техработы... Что у нас фишка главная не работает... Единственное, что спасло лично меня от немедленных анальных кар - несколько тестеров за три дня не имели претензий к моей работе. Москва сказала:"Даём ещё 4 часа. Если не будет введена фича в эксплуатацию... Ваши задницы ждёт  жёсткое изнасилование. Впрочем, всех тестеров тоже касается".

А теперь, представьте себе мои ощущения... Я залез на форум, и почитал посты с сарказмом, где гадали, что у нас отвалилось. Но делать нечего. Вазелин стоит дорого, а зп у меня была мелкая, поэтому надо было разбираться с проблемой. Стал искать зацепки.

Программирование: как важно быть внимательным Программист, Программирование, Невнимательность, Дедлайн, Разработка, Реальная история из жизни, Опечатка, Длиннопост

Во-первых, на тестовом сервере всё работает, а на основном нет. Также работает на локальном сервере у меня. Значит, проблема в том, что серверы различаются как-то.

Спрашиваю у менеджера, что стоит на основном сервере, а что на тестовом. И таки да. Они разные. На одном линукс, а у меня на компе и тестовом сервере винда... Запомните это. Это будет ключ, почему не работает.


Во-вторых, раз ничего не падает, а просто не работает, то значит никаких нулевых указателей или какой-нибудь такой хрени нет. Наверное, не работает что-то в коде.


Стал смотреть код . Код клиента (то есть, код отвечающий за то, что будет видеть клиент) без ошибок. Всё правильно. Код сервера - тоже. Чёрт... время,время... осталось полчаса всего.


Пошёл проверять запросы к базам данных и опять всё верно. Хотя...Оу... а почему тут у нас в запросе в названии таблицы есть символ в верхнем регистре (то бишь, заглавная буква)???? Как бесит, когда не соблюдают элементарные правила оформления кода! Надо исправить. Минутку... На тестовом сервере и у меня на компе винда, а там линукс... MySQL на Винде по барабану на регистр, а линуксу нет! Точно, запрос ничего на основном сервере не возвращал данных!!!! Товарищи, коллеги,

Программирование: как важно быть внимательным Программист, Программирование, Невнимательность, Дедлайн, Разработка, Реальная история из жизни, Опечатка, Длиннопост

Менеджер был очень рад. Он даже дал мне выходной на следующий день. Москва побурчала для виду из серии:"Вам просто повезло!", но в целом тоже была довольна.

Найдены дубликаты

+18

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

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

раскрыть ветку 3
+4

Люто плюсую и подписываюсь под каждым словом!

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

раскрыть ветку 2
+3
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку 1
+3
Хе хе... Аллоды )))
раскрыть ветку 2
0
Не пали контору, бро
раскрыть ветку 1
+5
Да эту контору давно надо было спалить к хуям ))))
+2

Говноконтора, говноигра, говноразработчики (с)

+2
хорошо написано, я даж переживала за итог)
раскрыть ветку 1
0

Спасибо! :)

p.s. Не волнуйтесь, дальше у меня по программистской стезе всё будет хорошо, равно как и репетиторской ;-)

+2

Из той же серии: у нас тут отчет выбирается, но не хватает 10 рублей (из нескольких миллионов). Оказалось что при выборке данных проверялся флаг X, но в одном месте вместо X (икса) записали русскую букву Х и эта запись выпадала. Часа два искал причину.


p.s.а откуда же появилась русская буква? да потому что кто-то умный данные в таблице напрямую правил и не придал значения вводимому символу.

раскрыть ветку 1
0

У нас было аналогично. Только там была русская с, вместо латинской с. Всегда бесило расположение этой буквы!

+2
Как мне знакома такая ситуация, когда вроде всё ОК, но этот долбаный "генеральский эффект"... Мои поздравления бро... Красавчик ))))
раскрыть ветку 1
0

От души)))

+1

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


Кто-то альтернативно одарённый принял решение иметь совершенно различные платформы на тестовом и продакшен сервере. Тогда как конфигурация тестового сервера должна быть максимально приближенной к промышленному.


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


Второй вопрос касается инспекций. Если есть какой-то code style, то задача инспекции, в том числе, проверить его соблюдение. Ощущение, что код не инспектировался, поэтому любой разработчик мог писать в лучших традициях хуяк-хуяк и в продакшен.


И третий вопрос касается поиска ошибок, как организовано логирование, и как происходит анализ этих ошибок. Ошибка очевидная, совершенно неясно почему её сходу не обнаружили, когда она возникла.


Резюмируя, если кому и надо быть внимательнее и компетентнее, то тем людям, которые организовали подобный процесс. А так по сути сам делаешь через третью ногу, но берёшься рассуждать о чьих-то компетенциях и внимательности.

раскрыть ветку 4
0
Кто-то альтернативно одарённый принял решение иметь совершенно различные платформы на тестовом и продакшен сервере. Тогда как конфигурация тестового сервера должна быть максимально приближенной к промышленному.

Нельзя уволить того, кто владеет компанием и тех, кто уволился лет этак 10 назад. А все остальные - им пофигу. В среднем народ работал год и сваливал. 


Если есть какой-то code style, то задача инспекции, в том числе, проверить его соблюдение. Ощущение, что код не инспектировался, поэтому любой разработчик мог писать в лучших традициях хуяк-хуяк и в продакшен.

  С ревью вообще звездец был. Код ревью любого коммита делал всегда один  и тот же человек, который  ко всему прочему был страшно затрахан  дирекцией жизнью, и как итог пропустил такую опечатку.


И третий вопрос касается поиска ошибок, как организовано логирование, и как происходит анализ этих ошибок. Ошибка очевидная, совершенно неясно почему её сходу не обнаружили, когда она возникла.

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


А так...  Как справедливо писали на отзывах по рейтингу работ, единственная цель работы в данном компании - это получить хоть какой-то опыт работы и искать более-менее нормальную.

раскрыть ветку 3
0

А вообще, огромное вам спасибо за историю.

раскрыть ветку 1
0

Я понимаю, что вы не начальник и не вам решать эти вопросы. Но постарайтесь донести до руководства. Даже если директор когда-то придумал держать тестовый сервер под Виндой, то никогда не поздно переехать на Линукс.


Что касается ревью кода это опять таки баг процесса, который стоило бы исправить сразу же, как только стали очевидны его недостатки. Ревью не должно выполняться одним человеком. В этом участвует команда из нескольких человек. Если у выделенного сотрудника нет времени, то его задача делегировать это другому ответственному работнику. У вас в компании даже инженеры по тестированию были, а того кто бы просто мог проверить соответствие кода code style не нашлось.


В общем я о чём? Если будете сами руководить группой разработчиков думаю вы учёте данный опыт. Я лишь о том, что это проблема не локального программиста, который был невнимательным, а тех кто стоит на более высоких должностях. Именно они организовали процесс таким образом.


У нас в команде тоже есть непробиваемый мистер "Я сегодня первый день", которому можно каждый раз по новой объяснять почему он снова сделал не так. Но это не мешает отправлять его 5 раз переписывать код и отправлять ревью сразу же в Discard без комментариев, если там написан полный бред.

0
Начал изучать html/php/mysql. Вот как прочитал до того, что на разных компах разный результат, закралась мысль про регистр. Спасибо за историю. Буду внимателен при кодинге)))
0

Тесты необходимо запускать в окружении максимально приближённом к боевому. Иначе будут такие проблемы периодически всплывать.

0
А что за игра то?
раскрыть ветку 1
0

Одна отечественная рпг. Называть не буду - у меня в планах ещё посты про репетиторство и работу в другой компании, вдруг описываемые личности узнают и обидятся?

Похожие посты
Возможно, вас заинтересуют другие посты по тегам: