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

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

  1. Нет контроля версий!
  2. Без документации и комментариев!
  3. Нет трекера ошибок!

Команда сказала, что это «сработало для них». И, честно говоря, они действительно казались продуктивными, а их программное обеспечение — функциональным. Я мягко спросил, готовы ли они принять Git. Менеджер, похоже, согласился с этой идеей, но реакция разработчиков была более нейтральной. (А разговоры, в любом случае, дешевы.)

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

Еще до того, как меня наняли, как мне лучше всего оценить, насколько команда будет реагировать на мои попытки изменить их привычки? Уместно ли просто спросить начистоту? Если да, то есть ли способ сформулировать вопрос, чтобы поощрять более честные, реалистичные и вдумчивые ответы?

это может быть интересно прочитать: joelonsoftware.com/2001/12/25/…
Хорошая статья, @все. Но имейте в виду, что стажировка не длится очень долго, и она имеет еще более сильный оттенок неопытности, чем просто «ворчание». Может потребоваться более агрессивная, преднамеренная, явная стратегия. (Я подозреваю.)
Я не пытался заявить, что это абсолютная правда, просто мне показалось, что это связано с вашей ситуацией и с тем, чтобы потратить ваше время с пользой. Если бы у меня было лучшее представление о том, как справиться с вашей ситуацией, я бы написал ответ... к сожалению, я не эксперт в этой теме...
@gnat Это (и вопрос о том, что это обман ) полезны и связаны, но они спрашивают, как добиться перемен, когда вы уже наняты. Я спрашиваю, как проверить, что изменение вообще возможно, прежде чем меня наймут.
Как долго будет проходить стажировка?
Это не тот вопрос, который вы задали, поэтому я предлагаю его в качестве комментария. Я действительно рекомендую искать другую стажировку. Стажировка должна действительно подчеркивать ваше непрерывное образование, а не обучение вашего спонсора. Отсутствие контроля версий — огромный красный флаг. Они, возможно, создали систему, которая работает для них, но вряд ли это будет процесс, который вы сможете использовать где-либо еще. В будущих интервью, когда вы будете говорить об этой стажировке, они могут спросить: «Какую методологию контроля версий вы использовали?» По крайней мере, они удивятся, если вы скажете «Нет!».
@CharlesE.Grant Хороший вопрос. Но если бы я мог рассказать в этих будущих интервью о том, как я познакомил или пытался познакомить существующую команду с современными передовыми практиками... это выглядело бы неплохо, верно? Может быть, это заслуживает отдельного вопроса.
@Maxpm, это компромисс между риском и вознаграждением. Если вы сможете сказать интервьюеру, что вы успешно внедрили в организацию контроль версий и другие стандартные методы разработки программного обеспечения, это будет действительно впечатляюще. С другой стороны, если все, что вы можете сказать, это: «Ну, я пытался заставить их использовать контроль версий, но они были упрямы и не хотели меня слушать», что ж, это никого не впечатлит, и они могут даже стать скептически относился к ценности стажировки, поскольку она, по-видимому, проводилась в организации, далеко не соответствующей текущей практике.
@Maxpm Попробуй быть реалистом. Более мудрые головы, чем вы, говорят вам, что вам, скорее всего, не удастся изменить их культуру. Представьте, что вы собираетесь сказать на собеседовании, рассказывая о том, как вы прошли стажировку, не изучив современные методы разработки программного обеспечения. Потому что это наиболее вероятный сценарий.
Если структура компании настолько плоха, а вы подаете заявку на стажировку, я бы поискал другую компанию. Если их методы известны, это будет плохо смотреться в вашем резюме. И давайте посмотрим правде в глаза, если они настолько облажались, вы вряд ли многому там научитесь. Стажировка — это не время, когда вы пытаетесь улучшить что-то, это время, когда вы пытаетесь улучшить свои собственные знания.

Ответы (3)

Еще до того, как меня наняли, как мне лучше всего оценить, насколько команда будет реагировать на мои попытки изменить их привычки? Уместно ли просто спросить начистоту? Если да, то есть ли способ сформулировать вопрос, чтобы поощрять более честные, реалистичные и вдумчивые ответы?

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

НЕ

Спросите прямо — вы рискуете заставить их занять оборонительную позицию (с подразумеваемой критикой их текущих методов работы) и показаться высокомерными. Даже если они так не воспринимают это и говорят все правильные вещи, как вы говорите «разговоры дешевы», говоря все правильные вещи, даже если они подкреплены самыми лучшими намерениями, это не означает, что последуют действия.

ДЕЛАТЬ

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

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

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

Боже, да... внедрить git было бы здорово, это сделало бы мою жизнь намного проще!

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

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

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

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

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

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

Это 2018 год, и они не используют никакой системы контроля исходного кода. Моя память может быть недостаточно далекой, но я использовал систему управления исходным кодом (в то время SCCS) в 1996 году. Они отстали на 22 года. Мне жаль это говорить, но у вас нет ни малейшего шанса изменить то, что они делают.

Я использовал SCCS для контроля версий в i984, и он был написан задолго до этого. Они отстают как минимум на 34 года.
В 1984 году я раз в неделю создавал дискету с исходным кодом и хранил их все :-( Коробки, полные дискет. Можно назвать это контролем исходного кода.