Онлайн лекция

10 декабря 2011 г.

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

Мы договорились 18 декабря в 17.00 (время московское) сделать онлайн лекцию с разбором кода этого семестрового задания. Раз уж это будет онлайн лекция, я подумал, что можно предоставить доступ всем желающим (заодно опробовать идею с онлайн конференцией dotnetconf).

Как это будет:

  • Думаю, что это будет похоже на совместное программирование на AgileCamp, когда я сидел за компьютером и мой экран отображался на проекторе. Все участники сначала обсуждали куда двигаемся, а я воплощал это в коде.
  • Исходный код я выложу на Google Code. Чтобы его скачать надо будет установить TortoiseHg (Quick Start по TortoiseHg). Во время обсуждения я буду делать коммиты и пушить, так что все смогут получать себе последние версии кода. Ссылка на исходный код - http://code.google.com/p/tdd-refactoring-poker/source/checkout
  • Будем писать программу для игры в покер, это и есть семестровое задание моего студента, которое он сам себе придумал. Я плохо знаю правила покера, поэтому буду рад экспертам в этой области :)
  • Код будет в Visual Studio 2010, писать будем на WinForms/C#
  • Я буду использовать ReSharper
  • Тесты на xUnit
  • Взаимодействие будем строить через GoToWebinar. Ссылка на регистрацию https://www3.gotomeeting.com/register/544517654. Не забудьте подключить микрофон, будет очень много живого общения.

По способу разработки я вижу два варианта:

  1. Рефакторить существующий код. Этот вариант меня немного беспокоит, потому что код очень запутанный, а тестов на него нет. Даже автор проекта не сможет гарантировать, что мы ничего не сломаем в логике.
  2. Оставить существующий код в виде артефакта, его не трогать, а писать систему заново с помощью TDD.

Я пока думал сделать второй вариант, но большинству интересен первый, поэтому будем рефакторить legacy code.

Буду рад услышать ваши пожелания по проведению. План написан примерный, в него можно вносить изменения.

Обратите внимание: автор проекта, студент 4-го курса кафедры Информатики, признал, что в коде есть недостатки и будет рад конструктивной критике.

34 комментария:

  1. Будет ли сделана видео запись? Очень хочу посмотреть и послушать, но к сожалению не смогу быть у компьютера в назначенное время?

    ОтветитьУдалить
  2. Так, если делать трансляцию через TeamViewer, там там по-моему нет видео записи. Что можно для записи видео использовать? Возможно вместо TeamViewer взять что-то другое?

    ОтветитьУдалить
  3. Посмотрите сюда: http://www.teamviewer.com/download/version_3x/teamviewer_manual.pdf

    Раздел 5.2

    В новой книге от Scott-а Millett-а, которая называется "Pro Agile .NET Development with SCRUM", создаётся проект онлайн игры Блэкджек. Существует некий заказчик, который попросил разработать данную игру что бы добавить её в свой пул игр. На протяжении книги Скотт показывает работу команды по методологии SCRUM. Причём прописаны диалоги, каждого участника на stand-up встречах, обсуждениях и прочее. Не в этом суть. Они создают игру используя BDD вместе с TDD, а также CQRS. Почему бы не попробовать тоже самое или похожее, но с покером?

    ОтветитьУдалить
  4. Было бы интереснее, конечно, посмотреть на то, как переделать неправильную архитектуру и при этом желательно, чтобы приложение находилось минимальное время в разломанном состоянии.

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

    ОтветитьУдалить
  6. Круто-круто :) Вот мой любимый пример разработки игры через TDD - http://www.objectmentor.com/resources/articles/xpepisode.htm

    Пока два варианта есть, я думаю, что студенты решат, какой вариант для них интереснее и более практичный. Им через 2 недели надо зачет у меня получить))

    ОтветитьУдалить
  7. Разве TeamViewer позволяет подключаться нескольким пользователям?
    А задавать вопросы?

    ОтветитьУдалить
  8. Да, там есть все функции скайпа + доска и расшаренный экран.

    ОтветитьУдалить
  9. Это классика. Книгу читал, но там только TDD. Тут же они совмещают приёмочные тесты с unit тестированием.

    Решён ли вопрос с записью? Мой часовой пояс не позволит смотреть сие действие онлайн. :(

    ОтветитьУдалить
  10. Написать заново выглядит более легкой задачей, к тому же в жизни такой подход зачастую оказывается невозможен. Гораздо интереснее и сложнее исправить/улучшить уже существующий код. Это ведь и называется рефакторинг?! Посмотреть на покрытие тестами в реальной ситуации так же любопытно, особенно если код не в очень тестируемом состоянии изначально

    ОтветитьУдалить
  11. Очень хотелось бы посмотреть и послушать, но не смогу. Может есть какая то возможность сделать видео запись?

    ОтветитьУдалить
  12. Сейчас буду пробовать запись через TeamViewer, когда попробую напишу

    ОтветитьУдалить
  13. Можно попробовать присоединиться, ID конференции m88-139-538 

    ОтветитьУдалить
  14. Обратите внимание на время, исправил 12 декабря на 11 декабря.

    ОтветитьУдалить
  15. Исходный код http://code.google.com/p/tdd-refactoring-poker/source/checkout

    ОтветитьУдалить
  16. Можно параллельно использовать Wink для записи скринкаста.

    ОтветитьУдалить
  17. Quick Start для TortoiseHg http://tortoisehg.bitbucket.org/manual/2.1/quick.html

    ОтветитьУдалить
  18. Для того, чтобы код себе забрать хватит прочитать http://tortoisehg.bitbucket.org/manual/2.1/clone.html

    ОтветитьУдалить
  19. Новый ID m80-652-405, если и эта прервется, то опубликую новую

    ОтветитьУдалить
  20. Подключился. Какие-то звуки неприятные типо помех.

    ОтветитьУдалить
  21. Ненависть, TeamViewer вылетает))) Какие будут варианты?

    ОтветитьУдалить
  22. Максим Муратов11 декабря 2011 г. в 19:03

    Может попробовать триальный gotomeeting.com?

    ОтветитьУдалить
  23. Он только за деньги будет работать.

    В наш век, век межпланетных полетов и баллистических ракет... нет системы для онлайн трансляции?

    ОтветитьУдалить
  24. http://www.nefsis.com/leads/free-trial.aspx

    ОтветитьУдалить
  25. Максим Муратов11 декабря 2011 г. в 19:09

    Блин, точно))
    mikogo можно еще, только он звук вроде не передает...

    ОтветитьУдалить
  26. Внимание: мероприятие переносится на следующую неделю. За это время я обкатаю ПО и куплю нормальную гарнитуру. Рад был всех увидеть :)

    ОтветитьУдалить
  27. http://www.xfire.com/
    Круутая штука

    ОтветитьУдалить
  28. Мы то подождём, заодно обкатаешь технологию для конференции dotnetconf. А вот что студенты? У них то зачёт. Они могут ждать неделю?
    Кстати может попробуешь посоветоваться с людьми, которые делали разные podcast, webcast и т.д. Например Дмитрий Нестерук. 

    http://nesteruk.wordpress.com/

    Помню про гарнитуру для онлайн подкастов у него что то такое было.

    ОтветитьУдалить
  29. А Макс купит себе микрофон. все сходится!

    ОтветитьУдалить
  30. > А вот что студенты? У них то зачёт. Они могут ждать неделю?

    У них зачет через 2 недели. Максиму (автор кода) вообще сильно повезет, потому что мы его семестровое будем делать :)
    Я студентам уже показывал, как надо писать и автор кода уже знает недостатки, так что может всю неделю над ним работать. Возможно мы будем рефакторить уже улучшенный вариант.

    ОтветитьУдалить
  31. Мне тоже было интересно посмотреть, как решать проблему с помощью первого варианта.

    ОтветитьУдалить
  32. Уже сейчас можно сказать, что лекция будет на платформе GoToWebinar. Подробности ближе к дате события.

    ОтветитьУдалить
  33. Ссылка на страницу регистрации https://www3.gotomeeting.com/register/544517654

    ОтветитьУдалить

Моя книга «Антихрупкость в IT»

Как достигать результатов в IT-проектах в условиях неопределённости. Подробнее...