Мы команда из 3 разработчиков (2 опытных разработчика и младший).
Мы только начали новый проект. Мы разработали приложение, сконцентрировали усилия на выборе правильной архитектуры, и теперь мы закладываем первые строки кода. Мы пишем суть этого, что будет основой всего приложения.
Это не легкое приложение. Жесткие требования к производительности, массовое распределение, сложная модель объекта и т. Д.
Мы все вне нашей зоны комфорта, особенно младшие. У него нет опыта, чтобы создать хороший дизайн заранее. Это не проблема, потому что я и другой разработчик здесь, чтобы помочь, и мы оба верим в наставничество и в создание команд, но ... мы не знаем точно, что было бы лучшим способом сделать это, чтобы он получил приятный опыт и изучает максимальное количество навыков.
Мы оба поняли, что у нас нет младшего в новых проектах, только в существующих, где младшему было легче, потому что у него была целая база кода, из которой можно учиться и вдохновлять. Но для этого приложения у нас почти нет кода. Мы только начали.
Мы думали о нескольких подходах:
- пусть он попробует сам в течение пары дней, затем вмешается и проведет рефакторинг кода вместе с ним, направит его в правильном направлении, затем повторите => Возможно, это не будет для него забавным опытом, так как мы будем указывать на его ошибки на каждом рефакторе ;
- пусть он запрограммирует парочку с одним из нас => он может стать просто «свидетелем» и согласиться со всем, что мы делаем, фактически не изучая много или переваривая большую часть информации;
- пусть мы создадим каркас каждого модуля с продуманным дизайном, а затем дадим ему модуль, чтобы добавить недостающие фрагменты => может быть неинтересно подбирать после нас, и есть риск, что он уделяет внимание только заполнению пробелов а не на весь дизайн.
Как мы можем вовлечь его в проект, чтобы он не чувствовал себя как-то вне его и чтобы он многому научился на опыте и набрал достаточно уверенности, чтобы попробовать его самостоятельно?
Ответы:
Я рекомендую следующие рекомендации:
источник
Я думаю, это зависит от того, в какой области вы хотите, чтобы этот младший разработчик улучшился. Когда я был (очень) младшим, они давали мне API, которые мне нужны для создания одной конкретной ограниченной вещи, такой как:
->
Задача: создать страницу со списком сотрудников, которая показывает его статистику при нажатии на запись персонала. Вот простой пример страницы, созданной ранее в проекте.
Наиболее важным аспектом данной задачи является то, что она решается именно этими ресурсами и не требует каких-либо изменений в них.
источник
Все 3 способа выглядят хорошо для меня. На самом деле, одновременное использование 10 различных гибких способов должно дать вам хорошие результаты, по крайней мере, вы будете знать, какой способ работает, а какой нет (какой из них будет работать лучше всего, во многом зависит от личности игроков).
Проблема парного программирования не возникнет, если вы будете придерживаться процесса, когда печатные / думающие шляпы переключаются каждые 10 минут (или около того), без исключения, следуя процессу, первоначально описанному Кентом Беком (я не помню, где)
Что касается вовлечения в проект других людей - мы обнаружили, что это помогает, если на этапе проектирования создаются некоторые проектные документы (с некоторыми моделями UML). Другие люди (ваш младший) могут затем прочитать их, просмотреть их, сыграть адвоката дьявола. Эта роль независимой неиспорченной третьей стороны может быть действительно очень полезной, например, для исследовательского тестирования - http://www.softwaretestinghelp.com/exploratory-testing-beyond-traditional-testing-boundaries
источник