Как лучше всего привлечь младшего разработчика к разработке приложения с нуля? [закрыто]

9

Мы команда из 3 разработчиков (2 опытных разработчика и младший).

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

Это не легкое приложение. Жесткие требования к производительности, массовое распределение, сложная модель объекта и т. Д.

Мы все вне нашей зоны комфорта, особенно младшие. У него нет опыта, чтобы создать хороший дизайн заранее. Это не проблема, потому что я и другой разработчик здесь, чтобы помочь, и мы оба верим в наставничество и в создание команд, но ... мы не знаем точно, что было бы лучшим способом сделать это, чтобы он получил приятный опыт и изучает максимальное количество навыков.

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

Мы думали о нескольких подходах:

  • пусть он попробует сам в течение пары дней, затем вмешается и проведет рефакторинг кода вместе с ним, направит его в правильном направлении, затем повторите => Возможно, это не будет для него забавным опытом, так как мы будем указывать на его ошибки на каждом рефакторе ;
  • пусть он запрограммирует парочку с одним из нас => он может стать просто «свидетелем» и согласиться со всем, что мы делаем, фактически не изучая много или переваривая большую часть информации;
  • пусть мы создадим каркас каждого модуля с продуманным дизайном, а затем дадим ему модуль, чтобы добавить недостающие фрагменты => может быть неинтересно подбирать после нас, и есть риск, что он уделяет внимание только заполнению пробелов а не на весь дизайн.

Как мы можем вовлечь его в проект, чтобы он не чувствовал себя как-то вне его и чтобы он многому научился на опыте и набрал достаточно уверенности, чтобы попробовать его самостоятельно?

Meme
источник
5
Мой опыт работы с (очень) младшими членами команды состоит в том, что пара дней между обзорами слишком длинная. Они берутся с добрыми намерениями, не находя пути вперед. Короткие утренние и дневные сессии в течение первого месяца или около того работали лучше. Как только они нашли свои ноги - и, что более важно, знали, когда обратиться за помощью - мы уменьшили частоту.
Майкл Грин

Ответы:

12

Я рекомендую следующие рекомендации:

  • Вовлеките младшего разработчика в свои дизайнерские встречи и попросите его внести свой вклад. Это заставит его задуматься над общей картиной, даже если он не готов сам сделать дизайн высокого уровня.
  • Попробуйте выделить и четко определить модуль приложения, чтобы назначить его младшему разработчику. Опишите в письменном виде, что такое входы / выходы и другие требования модуля. Избегайте назначения ему модуля, который не может быть легко протестирован или который может быть протестирован только при интеграции с другими еще не написанными модулями.
  • Возможно, младший разработчик мог бы помочь другими способами, кроме написания основного приложения. Например, он мог написать тестовый код. Написание хороших тестовых сценариев, не являющихся рутинной работой, вносит ценный вклад в проект, а также дает начинающему разработчику четкое понимание проекта.
Крис Мерк
источник
2
Абсолютно убедитесь, что они сидят на дизайне. Тогда он поймет, где его вклад в целом вписывается, и какую ценность он добавляет. Он может утонуть в сложности, но, по крайней мере, он будет знать, в каком океане он находится!
Майкл Грин
1

Я думаю, это зависит от того, в какой области вы хотите, чтобы этот младший разработчик улучшился. Когда я был (очень) младшим, они давали мне API, которые мне нужны для создания одной конкретной ограниченной вещи, такой как:

  • эта функция дает N численность персонала из таблицы персонала
  • эта функция предоставляет статистику персонала с учетом идентификатора персонала

->

Задача: создать страницу со списком сотрудников, которая показывает его статистику при нажатии на запись персонала. Вот простой пример страницы, созданной ранее в проекте.

Наиболее важным аспектом данной задачи является то, что она решается именно этими ресурсами и не требует каких-либо изменений в них.

uylmz
источник
0

Все 3 способа выглядят хорошо для меня. На самом деле, одновременное использование 10 различных гибких способов должно дать вам хорошие результаты, по крайней мере, вы будете знать, какой способ работает, а какой нет (какой из них будет работать лучше всего, во многом зависит от личности игроков).

Проблема парного программирования не возникнет, если вы будете придерживаться процесса, когда печатные / думающие шляпы переключаются каждые 10 минут (или около того), без исключения, следуя процессу, первоначально описанному Кентом Беком (я не помню, где)

Что касается вовлечения в проект других людей - мы обнаружили, что это помогает, если на этапе проектирования создаются некоторые проектные документы (с некоторыми моделями UML). Другие люди (ваш младший) могут затем прочитать их, просмотреть их, сыграть адвоката дьявола. Эта роль независимой неиспорченной третьей стороны может быть действительно очень полезной, например, для исследовательского тестирования - http://www.softwaretestinghelp.com/exploratory-testing-beyond-traditional-testing-boundaries

xmojmr
источник