Pavel Egorov ([info]xoposhiy) wrote,

Sapka contest. Lessons learned

Инструменты

Как оказалось, в условиях такого соревнования оказываются бесполезными Issue tracker и wiki — попробовали — не работает.
Естественно, нечего и думать о командной работе без репозитория системы контроля версий. У нас туда было более 200 коммитов! Сложившееся вначале у некоторых людей мнение о том, что комменты к коммитам писать нет смысла быстро развеялось. На них было удобнее всего ориентироваться, понимая, а что было сделано другими пока ты спал/ел/гулял/думал.

Ещё одно открытие сезона — jabber-конференция, для обсуждения насущных вопросов и для координации деятельности команды. Туда писали текущие самые насущные задачи, кто чем собирается заниматься, у кого какие результаты и какие проблемы и т.д.

Смелее надо быть

На старте мы немного ступили. Надо было прямо сразу же выделить одного человека на взлом сервера и выламывание оттуда конфигурационных токенов. Вместо этого все весело улюлюкая кинулись решать увлекательные задачки. Между тем, мне понадобилось в сумме не болеедвух часов, чтобы добыть все токены. В реальности у нас они были только через 20 часов после старта. Тут, конечно, подвело моё подсознательное стремление играть более менее по правилам... Надо, надо ломать стереотипы!

Доверяй, но проверяй!

Дальше мы бодренько разбили задачу на подзадачи и пустились в бой.

Хронология:
  • Парсер: закончен в Ч + 27 (27 часов после начала игры).
  • Простой визуализатор: закончен в Ч + 35.
  • Клавиатурный бот: закончен в Ч + 42.
  • Исследование игрового мира.
  • GameState — структура данных для хранения текущего состояния игрового мира: закончен в Ч+45
  • Первая версия PathFinder-а: Ч+48
  • Скелет ИИ нашего бота: Ч+52
  • Первая версия DestroyWallAdviser: Ч+54
  • Первый эксперт: Ч+55
  • Показ путей, найденных PathFinder-ом в визуализаторе: Ч+56
  • Второй эксперт: Ч+72
А дальше мы увязли в багофиксинге. По сути оставшиеся 4 вечера/ночи (дни были рабочими), мы занимались тем, что искали и правили баги и оптимизировали PathFinder. После того, как исправили достаточно много багов, получилось то, что получилось... В частности, для того, чтобы их было проще искать мы делали систему логгирования, докручивали визуализатор, делали просмотр логов.

Проблема в том, что баги мы пофиксили далеко не все, поэтому бот наш сильно лажает на некоторых картах. На победу, честно говоря, никто не расчитывает. :-) Наш ИИ будет иногда очень красиво играть, но в чаще очень быстро умирать. :)

Мораль у этого очень простая. Каждый раз, когда ты что-то пишешь, надо сильно задуматься над тем, как это что-то тестировать. Гогда Слава выдал на гора чудо PathFinder, я тут же со страхом подумал, как же его тестировать?! Быстро придумал сделать визуализатор результатов работы PathFinder-а, чтобы тестировать вручную.
Когда мы сделали первого Советника, мысли о том, что его надо как-то тестировать уже вообще не было... А зря...
Экспертов тоже не тестировали...
В результате, очень много времени провели в безумной отладке того, о тестировании чего не задумывались при написании... Это было ужасно. Из-за рил-таймовости сервера даже поотлаживаться было невозможно. Почти все баги находились в результате анализа логов.

Первый шаг — признать, что ты лузер... FAILED

Ещё один жесткий прокол был в конце. За пару часов до конца у нас был бот, который уверенно играет на малых картах, и страшно лажает на больших. Естественное решение — запретить боту ставить бомбы вообще на больших картах. Пусть хотя бы себя не убивает — просто уворачивается. Был бы шанс выигрыша, когда остальные сами себя повзрывают. Но нет, додумались мы до этого лишь через 10 минут после окончания контеста, когда мозги расслабились...

Мораль

1. Больше думать о стратегии работы команды.
2. Иметь механизм обретения уверенности в каждом конкретном модуле, который мы запрограммировали. Тесты, визуализация, code-review, ... Иначе неизбежно подохнем в отладке.
Tags: contest, programming

  • Post a new comment

    Error

  • 2 comments

[info]vadimmer

March 22 2009, 05:36:48 UTC 3 years ago

Submit-Driven Development

Сабмит протестит? :) ага, уже слышали :)

Anonymous

March 25 2011, 00:44:55 UTC 1 year ago

MYfavour

[url=http://ucoztime.com/index/0-9]Photoshop online[/url], [url=http://wcgamer.ru/load/18-1-0-35]garena[/url], [url=http://www.animegod.info/index.php]anime[/url], [url=http://thebestgdz.ucoz.ru/]???[/url], [url=http://halif.ucoz.ru/news/kljuchi_dlja_nod_32_svezhie/2011-03-12-6]nod32[/url], [url=http://keys4all.com/keys_for_soft/11-klyuch-dlya-microsoft-office-2010-aktivator.html]office 2010[/url], [url=http://xn-one.clan.su/]CS 1.6[/url]Photoshop online (http://ucoztime.com/index/0-9), garena (http://wcgamer.ru/load/18-1-0-35), anime (http://www.animegod.info/index.php), GDZ (http://thebestgdz.ucoz.ru/), nod32 (http://halif.ucoz.ru/news/kljuchi_dlja_nod_32_svezhie/2011-03-12-6), office 2010 (http://keys4all.com/keys_for_soft/11-klyuch-dlya-microsoft-office-2010-aktivator.html), CS 1.6 (http://xn-one.clan.su/)
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…