Привет, читатели ДОУ. Меня зовут Дмитрий, я Java Trainer. Обучив в команде более
Как правило, каждый начинающий программист начинает изучение языков программирования из книг, обучающих уроков, видео. Потом начинает реализовывать небольшие задачи для лучшего изучения материала и в скором времени может собрать команду для совместного изучения и обмена опытом. И это правильно, ведь работа в команде значительно увеличивает стек используемых технологий, учит перенимать опыт у других, возможность получать обратную связь о твоей работе от членов команды. Также когда команда работает над каким-то проектом, ежедневно выполняются какие-то задачи, и человеку всегда приятно видеть результат своей работе в чем-то более масштабном, чем в маленьких практических задачах.
Есть много преимуществ командной разработки, но не каждая команда заканчивает свои проекты и успешно получает ожидаемый результат. Это происходит по ряду причин, которые начинающим командам тяжело избежать из-за отсутствия опыта.
В этой статье я постараюсь дать некоторые советы, которые помогут улучшить процесс разработки в команде, получить необходимый опыт и качественно изучать интересующие технологии.
Инициация успешного учебного проекта
Лидер в команде
Перед началом работы важно выбрать лидера, который будет выполнять роль технического руководителя. Выбирать этого человека должны все члены команды, опираясь на компетентность человека в технологиях, которые собрались изучать. Также очень важно, чтобы этот человек был заинтересован в том, чтобы проект был успешный, команда написала качественный продукт. Это даст гарантию того, что избранный вами человек буде стараться решить все проблемы, которые будут появляться в ходе разработке, а также что проект не будет провален.
Команда должна понимать, что последнее слово всегда будет за лидером, и в случае спорных ситуаций окончательное решение будет принимать именно он. Конечно, лидер должен слушать и советоваться со всеми членами команды, но финальный выбор остается за ним — иначе долгих споров и конфликтов по различных вопросах не избежать.
Сталинский подход, или лояльность вредна
Перед началом работы каждый должен знать о своих обязанностях. У каждого члена команды должна быть своя роль и определенные задачи. Каждый должен понимать, что он обязан следовать общим правилам и работать как все. Если человек не заинтересован в качественном выполнении задач и успешном обучении, стоит задуматься, нужен ли такой человек в команде, ведь он будет тормозить весь процесс разработки.
Поэтому важно контролировать процесс выполнения задач. Для этого можно использовать таких инструменты, как Jira, Freedcamp, где видно, какие задачи были назначены человеку и справился ли он с ними. Для этого также важно определять сроки для каждой задачи, иначе можно очень долго тянуть выполнение заданий и в результате так ничего и не сделать. Если все время проявлять лояльность к ребятам, которые ищут только отговорки, а не пути решения, то это завалит весь проект.
Должна быть цель
Команда должна четко знать, чего она хочет достичь в конце командного изучения. Поэтому должна быть определена задача, выбраны технологии. На каждую неделю (или другой удобный промежуток времени) должны быть поставлены подзадачи, которые приведут к конечной цели. Конкретная цель помогает сосредоточиться на главном и дает знание того, к чему нужно идти.
Для этого нужно составить спецификацию — описание главных задач, которые нужно реализовать. В этом документе должен быть подробно описан функционал, следуя которому ваша команда будет выполнять задания. Так вы сможете погрузиться в предметную область, продумать хорошую архитектуру для разработки и в результате решить проблему, а не просто писать какой-нибудь код.
Инструменты разработки одни для всех
Каждый участник команды должен использовать одинаковые средства разработки. То есть если команда выбрала использовать Intellij IDEA, то все используют эту среду разработки Если решили использовать базу данных Oracle, значит никто не использует Postgres. Вам нужно определить с самого начала, чтобы потом все знали и использовали только выбранные инструменты. Иначе будет уходить очень много времени на решение других проблем, которые будут возникать через несовместимость версий и т.д.
Время
Определитесь со временем, которое каждый участник должен уделять проекту. Если у кого-то не хватает времени на работу, стоит ли его вообще брать в команду? Вы должны понимать, что команда должна работать эффективно, мотивировать друг друга. Для этого нужно время. Поэтому заранее договоритесь сколько часов будете ежедневно/еженедельно уделять проекту.
Мотивация
Команда, которую вы формируете или в которой участвуете, должна быть заинтересована в приобретении навыков, а не в том, чтобы что-нибудь написать и скорее устроиться на работу. С таким подходом никогда не достичь эффективного обучения. Выбирайте в команду людей, которые действительно хотят учиться, развиваться, писать красивый код, использовать новые технологии, самостоятельно решать проблемы. Ваша команда должна быть мотивирована к обучению, и эта мотивация будет ключом к успеху проекта и приобретению важных и нужных навыков.
Взаимодействие команды
Для команды необходима коммуникация и хорошие отношение между участниками. Чтобы не было обид, чтобы каждый участник мог смело спрашивать совет у товарища, и последний с радостью ему помогал.
Взаимодействие участников, желание обучить кого-то и оказать помощь — это очень важные компоненты успешного обучения в команде. Для этого советуем каждую неделю организовывать встречи, где будете обсуждать проблемы в решении задач, пути решения, различные теоретические неясные вам вопросы.
Если есть возможность встречаться оффлайн — это просто прекрасно. Если такой возможности нету, нужно, как минимум, организовывать скайп встречи. Это даст больше общения команде и в результате возможность решать проблемы еще на стадии их возникновения. Определите наиболее удобный способ для коммуникации и развивайте в вашей команде про-активность в общении, что даст возможность эффективно решать все проблемы.
Выбор проекта
Часто бывает так, что команда собирается, а что писать будут — решить не могут. Для этого нужно всем вместе обсуждать, какой проект будет интересно всем разрабатывать и какие проблемы решать. После определения темы проекта, нужно составить спецификацию проекта, где будет прописан конкретный функционал, который вы будете реализовывать. Это нужно для того, чтобы каждый участник знал, какой функционал будет в конце, и следуя из этого формировать задачи.
Распространенные ошибки
Выше я описал основные аспекты, на которые нужно обратить внимание при построении командной работы. Стоит также сказать о том, чего не нужно делать , чтобы успешно построить команду:
— Мало общаться с участниками команды;
— Использовать разные инструменты разработки;
— Иметь всем участникам одинаковое право голоса;
— Уделять мало времени проекту;
— Думать, что сделаешь свое задание в последний момент;
— Не интересоваться, как исполняют задания другие;
— Думать только о своих задачах;
— Не выбирать лидера;
— Участвовать в проекте просто так, без мотивации;
— Быть лояльным к постоянному невыполнению задач другими участниками.
Резюме
Работа в команде — это сложно только в том случае, если вы не знаете, как организовать работу. Если же вам известны эти базовые принципы, которые всегда способствуют эффективной учебе, приобретению новых навыков и опыта, то работа в команде для вас будет только удовольствием.
Не забывайте о том, что чтобы построить успешную команду, нужно найти людей, которые заинтересованы в развитии, выбрать интересный всем участникам проект, составить спецификацию проекта, разделить задачи и приступать к их выполнению. Помните, что команда — это люди, которые постоянно общаются, обсуждают и решают проблемы, а не те, кто работают сами по себе и иногда пишут, что что-то сделали.
Учитесь работать в команде, потому что без этого в жизни никак, особенно если вы хотите работать в IT компании или в стартапе. Следуйте этим базовым принципам, чтобы преуспеть в командной разработке, находите единомышленников и создавайте проекты с хорошим кодом и красивой архитектурой.