Как ввести код коллеге

11

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

Я думаю, что самым простым способом было бы выстроить общую архитектуру с помощью диаграмм и потратить пару недель (или месяцев), чтобы дать новому человеку четко определенные (и хорошо ограниченные) задачи, поскольку он становится более привыкшим к коду.

Однако, как консультант (и младший сотрудник), я не всегда могу иметь это из-за нехватки времени или из-за роли в команде. (Я был в этом конкретном проекте вдвое дольше, чем кто-либо другой, поэтому «младший» никоим образом не «знает меньше о коде / проекте».)

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

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

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

Любой совет будет принята с благодарностью. Я в основном ищу руководство, которому я могу следовать. Например: с чего начать? Как вы продолжаете? Как вы освещаете незнакомые технологии или шаблоны со стороны слушателя, не занимая весь день? Где вы связываете бизнес-логику и структуру кода?

Спасибо!

(Как всегда, пожалуйста, не стесняйтесь редактировать вопрос по своему усмотрению.)

emragins
источник
3
Не понимаю, почему вы комментируете код ...
Rig
4
@Rig - да, обычно с# TODO: fix this ugly hack
ловко

Ответы:

9

Первый шаг - это, конечно, удалить «ошибки» из кода. Ясный, лаконичный, согласованный код легче внедрить, работать и отлаживать.

С чего начать?

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

Как вы освещаете незнакомые технологии или шаблоны со стороны слушателя, не занимая весь день?

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

Где вы связываете бизнес-логику и структуру кода?

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


Одна вещь, которую нужно помнить, это держать инструкцию короткой. Люди, как правило, проверяют довольно быстро, поэтому любые инструкции в этот момент просто не «прилипают». Покажите им вещи в течение 15-60 минут (у разных людей разная концентрация внимания), затем сделайте перерыв в 5-30 минут, чтобы они это обработали.

Telastyn
источник
чем больше я работаю с этим человеком, тем больше я вижу, насколько уместен ваш совет - просто оставить на время не относящиеся к делу или «более сложные» темы и даже не упомянуть их.
Emragins
2

По моему опыту, хороший способ преодолеть разрыв между широким обзором, который дает диаграмма архитектуры, и мельчайшими подробностями фактической работы с кодом, - это выполнить детализацию системы, то есть то, что происходит при поступлении запроса (для кода сервера). ) или пользователь делает ввод (для клиентского кода), затем шаг за шагом объясняет все уровни кода, которые участвуют.

Другой способ - это «ознакомительная экскурсия» по исходному коду, то есть просмотр пакетов / пространств имен / модулей / каталогов и объяснение того, что код в каждом из них делает в целом. Конечно, это требует, чтобы код был выложен несколько логически.

Майкл Боргвардт
источник
1

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

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

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

Далее подтяните известное отставание. Какие вещи вам нужно исследовать, чтобы завершить эти задачи? Какие области кода наиболее вероятно содержат проблему? Передайте эту информацию, как будто вы делали заметки для себя.

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

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

Карл Билефельдт
источник
Множество полезных советов здесь - это другой взгляд на вещи, которые должны помочь. Благодаря!
Emragins
0

Лучше всего работать со службой поддержки, возьмите легкий баг и проведите его через места, где он будет найден. они быстро узнают, как код сочетается. Естественно, они придут, чтобы задать вопросы об этой ошибке и кодовой базе, но они доберутся до нее (и вы исправите ошибку). Часто гораздо проще разобраться с примерами, аналогично, проще создать базу кода, прогоняя ее в отладчике.

Если вы не уверены в изменениях кода (или, как правило, я не уверен в своих исправлениях кода, пока не ознакомлюсь с базой кода), вы можете просмотреть его перед регистрацией.

Конечно, ваши существующие идеи широких обзоров и блок-схем являются важными первыми шагами.

gbjbaanb
источник