На прошедшей встрече участникам посчастливилось стать очевидцами такого явления как программерский пинг-понг в исполнении двух Антонов. Вот видео, наслаждайтесь!
Так называемое “пинг-понг программирование” является детищем двух известных практик экстремального программирования – парного программирования, и разработки через тестирование. Суть в том, чтобы писать тесты до того как будет написан сам код, при этом, выдерживая наименьшие шаги при написании кода. Т.е. один программист пишет один тест, который компилируется, но “падает”. Затем, второй программист должен написать код, который будет отвечать заранее написанному тесту, и, соответсвенно он же должен будет написать следующий тест, чтобы первый программист написал соответствующий код.
Всё это весело и довольно эффектно, но без сомнения требует довольно высокой концентрации на поставленной задаче. Будем рады, если в этой презентации кто то нашёл для себя нечто полезное. Наша цель была показать, как можно программировать вдвоём, а заодно и заставить задуматься присутствующих программистов, как они пишут свой код. Пишите комментарии, соучастники!
Видеопотоки не совпадают по времени. В середине видео ScreenCapture опережает видеокамеру секунд на 10.
спасибо! посмотрим что можно сделать
Хочу поблагодарить Антонов за очень интересную и увлекательную презентацию такого необычного подхода к разработке программ. По-моему получилось здорово! Молодцы! Разумеется презентация носила ознакомительный характер и не смогла охватить всех сторон разработки программ, но лично меня это подталкнуло к дальнейшему самостоятельному изучению экстремального программирования в целом и этого вида в частности. Я присутствовал на встрече, поэтому видео еще не смотрел, комментировать не буду.
Дмитий, спасибо на добром слове! По сути цель уже достигнута, если тебя тема заинтересовала.
Действительно интересный подход к програмированию. Жалко только что он так сильно основывается на обьэктно ориентированный подход. Такие веши как getTotal()-функии я бы сразу переписал в UpdateBillInfo()-стиль, в функию пересчитываюшую все зависимые (derived) части счета. И запускал-бы я эту функцию после каздого изменения в счете. (Для оптимизации можно исползовать разного вида dirty-флаги, указиваюшие какая часть информации устарела)
продемонстрированный подход совершенно не завязан на ООП. TDD можно применять с любой парадигмой программирования.
неособо заметил, чем описанный выше подход лучше. то что сложнее – фаставление флажков и тп – это точно. больше похоже на процедурный подход. хотя может я чего то не понял
так и есть, мой подход исходит из процедурного программирования. давно пытаюсь обуздать шпагетного монстра
могу только посочувствовать
)
Спасибо
[...] втором месте доклад Антона Кекса и Антона Архипова о парном программировании, и с небольшим отстованием доклад Николая Павлова – [...]
Мега-статья, “pair programming is not for the masses”, которая хорошо описывает, каким критериям должна соответствовать здоровая команда девелоперов, чтобы смочь делать pair programming, и какая от этого польза. Recommended read: http://blog.obiefernandez.com/content/2009/09/10-reasons-pair-programming-is-not-for-the-masses.html
[...] в составе Антона Кекса и Антона Архипова устроила нам hands-on по ping-pong programming, фото чего и продемонстировал Андрей. Однако вернёмся [...]
В целом подход понятен и очень прозрачен.
).
Но для наглядности можно было бы одному из участников конференции предложить попедалить все вместе и тесты и код, а потом дать ему в помощь одного из докладчиков для написания тестов. Лично на своем опыте знаю , что так очень наглядно
Не совсем удачный пример, если честно выбран , для самого приложения… как говорил Галыгин (с) “Был у меня один могильничек …” – писал я разбор строки ну и тесты к нему очень полезны оказались тесты особенно когда их стало больше т.е. с большим покрытием бизнес логики . Так к примеру было видно где одни тесты проходят а другие нет хотя как должно быть в идеале все тесты должны проходить .
Но все равно спасибо за видео.
спасибо за мнение!
Господа, подскажите, а какую они нажимают комбинацию клавиш:
Test
-> ??? ->
@Test
public void ()
это кастомный live template