Дедлайн
Боянометр нашел оригинальный ГИФ.
Боянометр нашел оригинальный ГИФ.
Начало
- Команда, всем прыгать от радости! У нас новый проект!
- Кого делаем, шеф?
- Вот: человек.
- Блин, а что это? Юз-кейсы есть? Как оно хоть выглядеть должно?
- Ну вы как первый день на работе. Это же заказчики! Вот вам генетический код, вы специалисты, сами справитесь.
- Блин. Ну ладно. Берём фреймворк от кольчатых червей, там всё должно быть стандартно. Пока напишем базу, аналитики разберутся.
Две недели
- Какое яйцо? Какая икра, идиоты?!.. Вы спецификации интерфейса читали? Плацентарное, живородящее, сухопутное! Да, я вижу, что оболочку икры уже написали. И тестами покрыли, умницы. Теперь рефакторьте в плаценту, там разница небольшая...
Четыре недели
- Всё по плану, шеф. Базовые классы для всех сегментов готовы.
- Для всех?
- Для всех, точно. Мы сверялись по плану. Эпителий, хорда, сосуды, хвост, жабры... В песочнице запускали, оно уже плавает.
- Прекрасно. Хвост, говорите. Жабры, да? Спецификации интерфейса?..
- Ой. Простите, шеф. Мы всё сейчас закомментируем. И тесты поправим.
Шесть недель
- Прогресс, шеф! От плавников удалось унаследоваться, теперь на каждый палец отдельные структуры. Сердце бьётся, мы оставляли тесты на сутки - никаких утечек, обе камеры, всё как надо.
- Обе, да? А сколько по спецификациям?
- Ну четыре. Да это фигня, за пару дней допишем.
Десять недель
- За пару дней, вы говорили?
- Ну вы же понимаете. Пока баги выловили, пока то, пока сё... Но теперь всё точно как надо. На тридцать лет непрерывной работы хватит с запасом!
- А заказчик сколько просил?
- Блин. Да ладно, сейчас две дублирующих системы ритмовождения воткнём - должно дотянуть.
- Ладно... Остальные системы?
- Прототип нервной системы готов. Прототип пищеварительной системы готов. Прототип лёгочного дыхания готов...
- Только прототипы? Половина проектного срока уже прошла!
- А что делать, шеф? Заказчик тестовый стенд до сих пор не предоставил! Куда нам это чучело релизить? Оно всё ещё с жаб...
- Вот это слово при мне больше не говорите.
Двенадцать недель
- Скелет, в общих чертах, готов.
- Вижу, что в общих чертах. Когда финализируете?
- Э... не можем оценить. Всё ещё нет схемы развёртывания.
- Д-детский сад... Ладно, оставляйте пока отладочные параметры, после пуска подкрутите. Хоть что-нибудь тут уже работает по плану?
- Слух. Стопроцентный. Любые колебания жидкой среды.
- ...
- Да, шеф. Альтернативную имплементацию для газовой среды пишем. В модели не уверены. Тестировать не на чем. Когда заказчик предоставит?
- Заказчик написал, что не предоставит. Пишите модели, всё должно запуститься при релизе с первого раза.
- Блиииннн...
Четырнадцать недель
- В общем, всё готово. Ещё детали функциональности дописать, конечно...
- Сколько?
- Ну... Ещё девяносто пять процентов объёма.
- Сколько?...
- Ну, девяносто. Но это точно надо, шеф! Один только шерстяной покров, с двумя линьками в год - это знаете сколько рендеринга?
- Шерстяной, говорите. С двумя линьками...
- Ой. Извините, шеф, мы это сейчас удалим. Воткнём заглушку с незаметными волосками...
Двадцать шесть недель
- Ну как, к релизу готовы?
- Ну, в целом, да...
- В целом?
- Две тысячи багов в бэклоге, шеф. Лично я не ручаюсь, что оно сможет само дышать. Не успеваем рефакторить.
- Так. Наплюйте на рефакторинг. Давайте грубой копипастой.
- Оно же разбухнет! Вы представляете, сколько там получится? Раза в четыре больше!
- Плевать, спецификации не ограничивают. Пусть разбухает. А я пока попрошу заказчика отодвинуть дедлайн...
Тридцать две недели
- Команда, у меня две новости: плохая и очень плохая. Первая: крайний дедлайн - ещё четыре недели, дальше у них заканчиваются ресурсы. Вторая: поступили ограничения по размеру. Ещё максимум в полтора раза, и не больше.
- ...
- Да, у них ограничения канала. Да, вот если бы они сказали это с самого начала. Ну вы как в первый раз! Да, до релиза работаем без выходных. Ну что у вас?
- Череп уже не проходит.
- Дайте гляну... Так... Начальный объём мозга ужать нельзя?
- Можно. Ещё четыре месяца на рефакторинг.
- Забудьте. Замораживайте функционал как есть, а в черепе поставьте подвижные элементы...
- То есть как - как есть? Оно же ещё ни ходить, ни жевать само не может!
- Всё в бэклог на вторую фазу. Я переговорю с маркетингом.
Тридцать шесть недель
- Ну, поехали.
- Какое поехали, шеф! Тысяча багов в бэклоге! Двести фич! Это только с первым приоритетом!
- Я сказал - поехали! Финансирование заканчивается завтра. Остальное скинем на поддержку.
- Они нас проклянут, шеф. Там ещё три года только первый приоритет допиливать.
- А полный бэклог?
- Лет двадцать.
- З-заиньки... Ну что делать, пусть проклинают. Алло, поддержка? Приготовьтесь обрабатывать первые багрепорты. Да, дыхание запускаем вручную. Первым делом. Да, не успели. Да, стукнуть по жопе. Не спрашивайте. Ну... деплой в продакшн... Начали!
(с) Андрей Новоселов
Всем привет! Пока я в отпуске, продолжаю повествовать о приключениях в геймдеве.
Была запланирована в игре одна супер фишка. Народ на форумах давно ныл и требовал её. Реализация заняла у нас где-то месяц. Её разрабатывал один программист, но, как мы шутили тогда, срок заключения в нашей компании у него подошёл к концу и он благополучно покинул наши ряды.
Всё бы ничего, но закончить его труд (примерно 50% общей работы) предстояло мне. Я сел разбираться с его документацией. Вроде бы написано всё понятно, что делать надо понятно. Новая фишка была ожидаема. Очень. Наша пресс-служба на форуме и сайте, и в группе вк/фейсбуке/одноклассниках сказала:"Радуйтесь и ликуйте! Во вторник будет обновление с новой фишкой". Начальство из Москвы было в нетерпении, да и менеджер наш тоже слегка ёрзал. А ваш покорный слуга, вообще сон потерял от нервов. Мы тестировать начали с четверга. Весь четверг, пятницу. понедельник были тесты. Я уже перестал есть. Мы перепробовали все случаи, когда может не сработать, но... всё работало на тестовом сервере! И вот он вторник...
Объявлены техработы на сервере, игра будет недоступна час. Мы заливаем новую версию игры и начинаем на расслабоне смотреть: а ничего не отпало ли? Парадокс. Но мою фишку, несмотря на всю важность, решили посмотреть самой последней. Мол, и так уже три дня все смотрели, что там может пойти не так? Ага. Щас...
Первая же попытка использовать мою фишку сокрушительно провалилась. Не работает! Какая реакция у обычного программиста на такие вещи за полчаса до релиза? Обновить резюме Посмотреть ещё раз, может это какой-то супер редкий случай и торжественно заготовить классическую отмазку пользователю, что "это не баг, это фича!".
Но нет. Ни у меня, ни у моих коллег это не работало. НИКАК. Ни при каких обстоятельствах...
Этот зверёк уже не просто подкрадывался к нашему офису, а он пришёл и нагло хохотал нам всем в лицо. Я просто сел на стул... Менеджер проекта был белее белого, собрал свои яйца в кулак и позвонил в Москву, сказав, что необходимо продлить техработы... Что у нас фишка главная не работает... Единственное, что спасло лично меня от немедленных анальных кар - несколько тестеров за три дня не имели претензий к моей работе. Москва сказала:"Даём ещё 4 часа. Если не будет введена фича в эксплуатацию... Ваши задницы ждёт жёсткое изнасилование. Впрочем, всех тестеров тоже касается".
А теперь, представьте себе мои ощущения... Я залез на форум, и почитал посты с сарказмом, где гадали, что у нас отвалилось. Но делать нечего. Вазелин стоит дорого, а зп у меня была мелкая, поэтому надо было разбираться с проблемой. Стал искать зацепки.
Во-первых, на тестовом сервере всё работает, а на основном нет. Также работает на локальном сервере у меня. Значит, проблема в том, что серверы различаются как-то.
Спрашиваю у менеджера, что стоит на основном сервере, а что на тестовом. И таки да. Они разные. На одном линукс, а у меня на компе и тестовом сервере винда... Запомните это. Это будет ключ, почему не работает.
Во-вторых, раз ничего не падает, а просто не работает, то значит никаких нулевых указателей или какой-нибудь такой хрени нет. Наверное, не работает что-то в коде.
Стал смотреть код . Код клиента (то есть, код отвечающий за то, что будет видеть клиент) без ошибок. Всё правильно. Код сервера - тоже. Чёрт... время,время... осталось полчаса всего.
Пошёл проверять запросы к базам данных и опять всё верно. Хотя...Оу... а почему тут у нас в запросе в названии таблицы есть символ в верхнем регистре (то бишь, заглавная буква)???? Как бесит, когда не соблюдают элементарные правила оформления кода! Надо исправить. Минутку... На тестовом сервере и у меня на компе винда, а там линукс... MySQL на Винде по барабану на регистр, а линуксу нет! Точно, запрос ничего на основном сервере не возвращал данных!!!! Товарищи, коллеги,
Менеджер был очень рад. Он даже дал мне выходной на следующий день. Москва побурчала для виду из серии:"Вам просто повезло!", но в целом тоже была довольна.
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.