Я разработчик Full Stack и работаю в только что созданной команде из 4 человек. Есть еще один парень (назовем его Том), которого наняли вместе со мной. Так что мы двое новички в этой компании.
Однако Том чрезвычайно талантлив. В нашем первом спринте он буквально разрушил проект и в одиночку восстановил его на прочном фундаменте. Единственное, что я делал, это печатал то, что он велел мне печатать. Мы пробовали парное программирование, но в итоге он стал мозгом этой перестройки архитектуры.
С тех пор, как это произошло, мне почти никогда не хочется браться за новые истории во время планирования спринта. Мы все просто соглашаемся с тем, что он говорит. Сначала он брал на себя самые сложные задачи. Затем он, кажется, собирает вместе самые важные и большие части проекта, в то время как остальные из нас троих просто смотрят на его код и пытаются изучить и понять, что он задумал.
Новые истории в бэклоге становятся настолько продвинутыми, что мне трудно за ними следить. Том тоже находит некоторые из них трудными, но он слишком умен и быстро выполняет работу. Затем он садится рядом со мной и заканчивает также выполнением моих задач.
В этот момент я чувствую себя довольно бесполезным. Такое чувство, что мой работодатель больше не нуждается во мне. Что мне нужно сделать, чтобы оставаться продуктивным и продвигаться вперед в этой среде?
PS: Два других разработчика работают на полную ставку с суперстаршими ролями. У них больше дел, кроме написания кода. Поэтому они позволили нам, новичкам-джуниорам, сделать всю реализацию.
Том, очевидно, имеет в виду архитектуру «большой картины». Это значительно упрощает проектирование мелких деталей и наблюдение за тем, как все сочетается друг с другом.
Вместо того, чтобы сосредотачиваться на мелочах, вы должны сосредоточиться на понимании архитектуры, которую имеет в виду Том. Если у вас есть приличное понимание хороших методов проектирования, то это должно вам очень помочь. Если у Тома еще нет чего-то записанного с описанием архитектуры, то вам, вероятно, будет очень полезно попытаться задокументировать архитектуру, а затем попросить Тома помочь заполнить то, что вы пропустили.
Если Том так хорош, как вы говорите, то я готов поспорить, что его подход очень систематичен и на самом деле довольно прост для понимания, как только вы узнаете «что» и «почему» того, чего Том пытается достичь в архитектуре. Как только вы поймете «что» и «почему», вы сможете сосредоточиться на «как», и я уверен, что тогда это будет намного проще.
Из вашего описания кажется, что вы просто реализуете то, что Том говорит вам, не понимая, почему. Вот почему вы не чувствуете, что вам становится лучше. Вам действительно нужно понять почему, иначе вы никогда не станете лучше, и вам понадобится помощь Тома каждый раз, когда вы будете заниматься чем-то отдаленно отличающимся.
Отказ от историй во время планирования спринта просто отодвигает вас на задний план. Перестаньте быть сварливым и начните улучшать свою игру.
Работайте с ним. Учитесь у него. Попросите его помочь вам подняться до его уровня. Рецензируйте его код, задавая вопросы по мере необходимости, чтобы понять его — кто-то должен, и это отличная возможность научиться.
На этот вопрос очень сложно ответить, так как ответ во многом зависит от Тома. Я работал над несколькими разными программами, над которыми работал гениальный программист, и вот некоторые вещи, которые я усвоил.
Какой характер у Тома?
Личность Тома сильно влияет на то, насколько он может и будет готов вам помочь. Если он не против помочь / научить вас, воспользуйтесь этим в полной мере. Если он упрям и/или ему не хватает личных навыков, узнайте как можно больше из Интернета, отточите свои навыки и начните искать новую работу в другом месте. В обоих случаях внесите свой вклад. Если у вашей программы нет тестировщиков, сосредоточьтесь на тестировании его кода. Для этого есть много причин: это поможет вам изучить его вещи, это поможет вам быть занятым и продуктивным, это подтверждает, что его код является кодом уровня гения, а не кодом операции с фрикадельками (последний, который некоторое время выглядит хорошо, а затем разваливается). ).
Совет для лидеров
Как правило, лидеры в команде должны знать, что у них есть гений в команде, и предпринимать соответствующие шаги. Основная причина в том, что разработчики гениального уровня склонны писать код, для понимания которого нужны гениальности. Это приводит к риску для программы, и гений должен научиться писать более удобный для сопровождения код. Пример из моего прошлого:
Однажды в нашей команде на три месяца был гениальный разработчик уровней. Он проделал невероятную работу, решая всевозможные сложные проблемы с кодом, на которые у других разработчиков в команде ушло бы в два раза больше времени. Проблема заключалась в том, что через три месяца его предыдущая программа отчаянно нуждалась в нем, потому что он был единственным, кто мог решить некоторые проблемы, которые у них были. В итоге мы его потеряли, и в этот момент нам пришлось начать поддерживать его код.
К счастью, мы не стали зависеть от него, как его предыдущая программа, но у нас все еще были проблемы с другими разработчиками, пытающимися внести изменения в его код, поскольку им потребовалось так много времени, чтобы нарастить его код. В вашем случае, когда разрабатывают только два человека, и это продолжается годами, а затем Том решает уйти, это может привести к сильному удару по производительности программы.
Я не знал, что ты так себя чувствуешь...
А если серьезно, просто будьте более настойчивыми. Иногда у людей бывает характер, когда они чувствуют, что проекты выполняются неправильно, если они не наблюдают за ними напрямую. Разделите работу так, чтобы каждый из вас мог наблюдать за прогрессом друг друга и понимать, что происходит. Не попадайтесь на глаза, разинув рот, если он вдруг пропал без вести, и вся ответственность лежит на вас.
Обсудите несколько историй, когда у вас появилась идея, если таковая имеется, просто выложите ее там. Вся идея планирования спринта состоит в том, чтобы провести мозговой штурм, чтобы не соглашаться с тем, что сказал «том». Возможно, ваша идея лучше, чем вы думаете. Сидеть на спинке кресла не получится.
В остальном важно тестирование на наличие ошибок. И сделать это в собственном коде сложно. И я имею в виду не модульные тесты, а реальное тестирование на людях. Это может быть не идеальной позицией для вас, но поможет вам действительно подумать о том, как создавать код, чтобы предотвратить ошибки/ошибки в первую очередь.
Это хорошая возможность для вас, возьмите сложную задачу, задайте вопрос своему талантливому члену команды, он определенно поможет вам. Вы многому научитесь у него и не почувствуете себя совершенно бесполезным, это ваша ошибка, что вы не идете вперед, чтобы взять на себя задачи, после него вы только точка контакта, это просто то, что вы не внесли многого из своего стороны, но вы знаете все и все в этом проекте.
Возьмите новые истории, обсудите их с товарищами по команде и начните работать над тем, как работает команда, все члены команды не будут одинаково талантливы, но вам нужно научиться использовать талант других, вежливо спрашивая их, но убедитесь, что вы не утомлять их, задавая глупые вопросы и не пытаясь сделать что-то со своей стороны, что поможет вам продуктивно работать в команде.
Вы уверены, что Том такой гений, каким вы его считаете? Это читается как введение в историю Daily WTF, где появляется Том, заново реализует систему и говорит хорошую фразу, но всякий раз, когда кто-то действительно смотрит на его код, он на самом деле небрежен и безоснователен.
Вполне возможно, что Том знает, что он делает (и вы должны попросить одного из старших разработчиков подтвердить это для вас), и в этом случае, надеюсь, он сможет вас многому научить, но я предполагаю, что Том думает, что знает чертовски много. намного больше, чем он делает на самом деле, и в этом случае вы выиграете, медленно наращивая свои навыки и опасаясь всего, что Том делает слишком быстро и / или слишком легко.
Он тратит время на парное программирование и инструктирует вас, так что постарайтесь учиться у него.
У меня есть младшая коллега, гораздо менее опытная, чем я (я программирую еще до ее рождения). Мы занимаемся не парным программированием, а регулярными проверками кода, и через 1-2 месяца я вижу, что она становится лучше до такой степени, что, по моим оценкам, через 1-3 месяца я могу удалить себя из этой части проекта и позволить ей сделать это самостоятельно.
Так что, если у вашей команды и старшего разработчика правильное отношение (учиться и через какое-то время освободить его для других вещей), мир должен быть в порядке.
Несколько практических советов:
в спринте вы должны оценить, как вы видите задачу — оценка пользовательских историй работает только в том случае, если каждый выскажет свое мнение
принятие задачи не означает, что вы должны делать ее без посторонней помощи - обратитесь за помощью в ежедневном стендапе
если истории невыполненных работ становятся настолько сложными, что только один человек в команде даже чувствует себя способным понять их влияние и масштаб (при условии, что вы занимаетесь скрамом), тогда требуется уточнение/разделение истории. Наличие описания истории, которое не понимает команда в целом, неприемлемо.
Мне кажется, что у него в голове большая часть архитектуры, что может сделать ее ужасно трудной для понимания. Может быть, вы можете «задокументировать» историю архитектуры.
Сальвадор Дали
АндрейROM
Дивиант Джаярадж
Эми Бланкеншип
Вальфрат
Замочить
Антон Косцеев
ctrl-alt-делор
технический сотрудник