Ping-pong programming
В октябре 2015 г. сотрудники компании «Ардекс» принимали участие в известной Java-конференции Joker 2015. Это место, где собираются сотни программистов со всех уголков русскоязычного Java-мира, затрагиваются самые актуальные темы в сфере информационных технологий. Программа конференции состоит из докладов и тренингов от Java-экспертов.
Среди прослушанных докладов нашим коллегам особенно запомнилось выступление А. Кекса и А. Солнцева, которые известны по своим докладами о Java,TDD и способах создания ПО. Эксперты рассказывали о «ping-pong programming» - технике написания кода, совмещающей элементы TDD и парного программирования.
Данная техника интересна тем, что код создается парами людей, выполняющих одну задачу. Участники разделяют одно рабочее место: в паре один является «ведущим», т.е. управляет компьютером и, в основном, думает над кодированием в деталях, а другой («штурман») сосредоточен на картине в целом и непрерывно просматривает код, производимый первым программистом. При этом задача делится на небольшие шаги. Выполнение каждого шага включает в себя написание теста первым программистом и написание функционала вторым, затем происходит смена ролей.
Живая демонстрация техники «ping-pong programming», в исполнении Антона Кекса и Антона Архипова с одной из встреч DevClub:
Вдохновившись идеей «ping-pong programming», команда программистов «Ардекс» решила попробовать парное программирование на практике. Поскольку это был первый опыт, участники взяли простую задачу - написать эмулятор черепашки в лабиринте, которая может двигаться в четырех направлениях. Первые шаги дались с небольшими трудностями: приходилось преодолевать привычное желание работать одному. И это не удивительно, для успешного применения «пинг-понг программирования» надо учитывать психологическую совместимость партнеров, тем не менее участинки проявили интерес и соперничество. В процессе работы обсуждались интересные идеи и предложения, писались тесты, поэтапно создавалась основная функциональность системы. В результате применения TDD получилось приложение, его функциональность была многократно проверена на уровне unit-тестов, созданные блоки отвечают принципам SOLID. По словам команды, работа в паре позволила им поделиться своими соображениями о создаваемом коде и требованиями к его оформлению, и совместная разработка принесла немало положительных эмоций.
Из вышесказанного, следует что «ping-pong programming» - эффективная практика написания кода. Рекомендуем всем программистам попробовать применить его в процессе разработки ПО.