Разработчики не видят, что они делают не так

Я менеджер технических проектов и недавно переехал в Америку после 13 лет работы в Европе инженером-программистом. Я работал для важных клиентов и развивался в любой среде.

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

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

Каждый раз, когда я прошу о встрече с разработчиками, они просто говорят: «Работает, зачем менять?». Однажды мне сказали: «Ты не прав!» очень грубо.

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

Технический директор полностью доверяет мне, он сказал: «Если они не хотят делать то, что вы им говорите, они могут просто уйти с работы!»

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

Я хочу, чтобы они понимали, почему я хочу что-то делать. Бывший премьер-министр ушел по этой причине, и она предупредила меня.

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

Если они не хотят делать то, что вы им говорите, они могут просто бросить работу! Ваш технический директор прекрасно понимает ситуацию и говорит вам, что он не против потерять людей, если они не улучшатся. Увольнять людей - последнее, чего я хочу, особенно теперь, когда у одного из них есть маленький ребенок. То есть работник плохо работает на работе, но это нормально, потому что у него маленький ребенок? Я знаю, это звучит грубо, но вы не несете ответственности за ребенка, а его родитель. Если родитель капризничает на работе и его за это увольняют, это его вина, а не вина менеджера, который уволил.
Не совсем уверен, что это вопрос об управлении проектами (честно говоря, я не уверен, что это вопрос.....) Не могли бы вы уточнить, как это вписывается в управление проектами? Будет ли это более подходящим для сайта, посвященного проблемам на рабочем месте, или для дискуссионного сайта?
@ Богдан, у меня маленький ребенок, и, к сожалению, в США, когда вы меняете работу, скорее всего, вы меняете и свою медицинскую страховку, и это может занять до двух месяцев, чтобы получить право на нее. Я не хочу, чтобы ребенок два месяца оставался без медицинской страховки в этой стране.
@MCW Я рад переместить вопрос в другое место, если вы можете найти лучшее место.
@Bananajoe На первый взгляд в HNQ это выглядело как вопрос с рабочего места . Потом я увидел, что это было в «Управлении проектами» .
@Bananajoe: Я понимаю вашу озабоченность (вы хороший человек), но это все равно оставляет вас с проблемой, которую вы пытаетесь решить. Вы можете попробовать то, что упоминается в ответе с наибольшим количеством голосов, например, но, судя по вашему вопросу, существует также проблема отношения. Я работал со многими хорошими и плохими разработчиками, и знаете, что общего у хороших разработчиков? Они были готовы слушать, когда вы говорили им, что есть способы улучшить их работу. Одно дело быть неопытным или не знать ничего лучше и натворить беспорядка, и совсем другое — отказаться исправить беспорядок.
@Bananajoe: ты знаешь, как все стало так, как сейчас?
Это похоже на то же самое отношение работодателя, которое вы найдете в сотнях ответов на Workplace.SE. «Мне заплатили за то, что я написал этот c**p-код, и мне больше не будут платить за то, что я его очистил и больше не создавал, так почему я должен что-то менять?». Добро пожаловать в «страну свободы». :)
Вероятно, (некоторые) важные детали отсутствуют в вопросе (по крайней мере, ИМО): я составил список технических долгов, чтобы покрыть, почему вы это сделали? это было частью вашей деятельности? Компания наняла вас, чтобы выяснить, что можно улучшить? нуждается ли в этих улучшениях проект, которым вы сейчас руководите? Являются ли эти улучшения частью незавершенной работы? Вероятно, слишком много вопросов, но я хочу сказать, что, возможно, «плохое отношение» происходит из-за того, что «новый парень, который не знает всего, что мы сделали, пытается рассказать нам, как что-то делать», или, может быть, это ...
... (продолжение) что есть новый блестящий проект, над которым они должны работать, и вы пытаетесь заставить их исправить их предыдущую работу, которая уже выпущена.
@ Джош, я согласен, это именно то, что происходит. Краткая информация обо мне: я инженер-программист, который недавно перешел на должность менеджера проектов. Меня взяли на должность главного инженера, но новый технический директор изменил мои задачи и мою должность. Он попросил меня найти технические долги и улучшить код в его плане на третий квартал.
@ Все, я не говорю им, что код отстой, я пытаюсь научить их очевидной концепции, которую они уже должны знать (SOLID, KISS, DRY и так далее...).
Надеюсь, вы не считаете, что дублирование кода имеет такую ​​же серьезность, как открытый пароль/ключ.
"Они просто говорят: "Работает, зачем менять?"" - и что вы на это ответили? Вы пытались объяснить им, почему вещи, которые вы предлагаете, важны и какие проблемы они решают или избегают? Наличие веских аргументов в пользу того, почему что-то должно быть сделано, необходимо, если вы хотите не просто давать подчиненным команды, которым вы хотите, чтобы они слепо следовали. Кроме того, действительно ли эти проблемы существуют в проекте? Если это просто передовой опыт, который не решает реальной проблемы, уверены ли вы, что стоит потратить время на его изменение?
Вы спрашивали их, что, по их мнению, можно улучшить в системе? Что они сказали?
@Bananajoe Я знаю, что ваш вопрос не о системе здравоохранения США, и я не говорю, что вы должны уйти в отставку, но определенно возможно найти новую работу (до того, как вы уволитесь с существующей) и начать новую без перерыва в охвате медицинского страхования. Для большинства рабочих мест профессионального типа не будет периода ожидания до тех пор, пока вы не получите право на медицинскую страховку, а возможность ретроактивного покрытия COBRA предоставляет способ покрыть короткий промежуток времени, если он возникнет.
Каков темп? достаточно ли времени для решения этих проблем? И какие последствия, если они не слушают? Если вы не запишете их, не накажете или, в конце концов, не уволите... тогда почему они должны менять свое поведение? Существует много информации о преимуществах IE: SOLID... но если они слишком заняты, напряжены и то, что они делают, "работает" - и они знают, что вы не будете следовать их рецензиям (и не только... )... и, наконец, вы, ребята, Ловкие или похожие? Какие циклы обратной связи у вас есть, чтобы помочь?
(Разработчик программного обеспечения, а не PM) Мой ответ на "Это работает, зачем это исправлять?" будет "Откуда ты знаешь?". Если у вас есть кусок унаследованного кода, который не прошел тестирование, его нелегко понять, он имеет слишком много зависимостей и нечеткие контракты — как вы узнаете, что он действительно работает и будет продолжать работать в будущем?
как разработчик, я бы отдал все, чтобы иметь менеджера, который будет критиковать мою работу за то, что она не НАДЕЖНА
Мне кажется, что ключевой частью «гибкого» процесса является участие команды. Я бы предложил вместо того, чтобы пытаться принуждать или даже убеждать их поступать так, как вы считаете (или знаете) правильным, собрать их вместе и недвусмысленно сказать им, что у нас есть эта проблема, и мы должны решить ее, и статус-кво неприемлемо. Затем попросите их придумать решение и принять собственное решение, и пока это серьезная попытка решить проблему, вы ее принимаете. [продолжение в следующем комментарии]
Конечно, вы должны собирать данные... фактические показатели, чтобы показать их. Либо их решение сработает, и в этом случае, ура, вы только что открыли новый подход, либо нет, и тогда вы вытаскиваете данные, чтобы показать им доказательство, а затем снова позволяете им скорректировать свой подход. Суть в том, чтобы заставить их следовать собственному плану качества программного обеспечения. Если кто-то не хочет сотрудничать, что ж, как бы это ни было отстойно, вы не хотите, чтобы они были в вашей команде. Изменить командную культуру сложно, и на это потребуется время. Ошибки будут. Пока они честно приспосабливаются, это может работать.
Может быть, категоризация проблем в словаре заставит людей волноваться, например, Security Vulnerabilitiesкатегория для открытых паролей и т. Д. (Я Full Stack Developer, у меня нет опыта управления.)
ВОЗМОЖНО, ваши сроки НЕ подходят для дополнительной работы? т.е. должны ли разработчики тратить дополнительное время (чем рабочее время), чтобы внести изменения? или вехи учитывают новые изменения?
Всем привет. Ситуация ухудшается с каждым днем. Они больше не здороваются со мной. Я добавил себя в качестве кодовладельца github для проекта, они начали орать, что мне нужно их разрешение, чтобы сделать что-то подобное (я попросил разрешение у технического директора!), Я сделал это, потому что обнаружил, что они объединяют ветки для мастера, не позволяя мне смотри сначала код. Это было необходимо и недопустимо!
Я написал электронное письмо техническому директору, поговорю с ним в понедельник. Проблема в том, что продакт-менеджер видит в них хороших разработчиков (он не пишет код). Я бы хотел, чтобы они просто покинули компанию...

Ответы (7)

Я хочу, чтобы они понимали, почему я хочу что-то делать. [...] Любой совет?

Не теоретизируйте, покажите им.

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

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

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

У вас много регрессионных ошибок, которых не было бы при лучшем тестировании? Что ж, составьте список и попросите их протестировать каждый из них с каждым выпуском. Это то, что необходимо для бизнеса. А затем напишите один из них в виде модульного теста, покажите им, насколько простой может быть их жизнь, и позвольте им решить, хотят ли они тратить свое время на рутинную работу, выполняя вручную список тестов в течение нескольких часов, или они хотят иметь причудливую автоматизацию. набор тестов, которые они могут запустить, просто щелкнув пальцами.

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

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

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

В исследовании, проведенном Sharp et al. (2009), исследователи предполагают, что наиболее влиятельным фактором мотивации разработчиков была их способность идентифицировать себя со своей работой. Это означает, что большинство разработчиков должны найти смысл в работе, которую они выполняют, иначе их мотивация продолжать работу снизится.

https://medium.com/gameful-design/does-gamification-work-in-the-software-development-process-76780e49e545

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

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

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

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

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

Посторонняя помощь

Есть также множество веб-сайтов, которые сосредоточены на геймификации кодирования, даже если они не обязательно обучают SOLID или другим принципам, которые вы пытаетесь внедрить. Вам просто нужно исследовать, чтобы найти тот, который делает. Я использовал CodinGame, чтобы улучшить свои навыки кодирования, но я не помню конкретно, какие принципы, если таковые имеются, обучали задачам. На сайте есть много испытаний, и большинство из них создаются участниками, поэтому они продолжают добавляться, так что там может быть что-то, что вы можете использовать. Просто убедитесь, что сначала получили разрешение на это в рабочее время. И да, это нужно делать в рабочее время, иначе это станет «домашним заданием», которое, скорее всего, не будет выполнено.

Реализация равноправного программирования также может помочь. Объединение старшего и младшего в пары для работы над задачей может научить их обоих новым вещам. Это также может помочь им преодолеть препятствие в обучении. Это может быть эквивалентно обучению один на один, без необходимости проводить обучение. Кроме того, один из лучших способов учиться — учить. Если вы можете объяснить это кому-то другому, вы это понимаете. И чем проще вы сможете объяснить это кому-то другому, тем больше вероятность, что вы действительно это понимаете, а не просто повторяете то, что написано в книге или статье.

Не заставляйте это

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

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

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

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

Предостережение

Не пытайтесь сделать слишком много сразу. Я попросил менеджера дать моему отделу книгу на несколько сотен страниц о принципах SOLID и заставил всех нас прочитать ее. Это было настолько скучно, что я не мог продержаться и 5 страниц, не засыпая. Это было в то время, когда менеджер пытался заставить нас изменить очень значительную часть того, как мы писали код почти за одну ночь. Да, нам нужно было внести эти изменения, но их было так много, что мы не успевали за всеми. И все это была команда, без места для вопросов или даже объяснений того, что и почему были необходимы изменения. Наряду с другими существенными изменениями в отношении руководства это привело меня к тому, что после 4 лет работы я нашел другую работу.

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

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

Хороший ответ! Я действительно ценю то, что это идет рядом и помогает разработчикам освоиться с изменениями и относится к их опыту как к действительному (но обновляемому), вместо того, чтобы противостоять им как неуправляемым за то, что они не поддерживают то, в чем они еще не понимают ценности. Поднимите их к пониманию рисков (и дополнительных сложностей) старого способа и будьте открыты для их идей по его устранению, в то же время будьте готовы к ТВЕРДЫМ принципам, когда у них нет никаких предложений. Относитесь к своим разработчикам как к экспертам, а не как к кошкам, которых нужно пасти. Будьте дальновидными и поддерживающими, а не авторитарными.
Ссылка на "ответ от nvoigt"
сверхсложныйсверхсложный
Последнее предложение является предложением с продолжением .
По поводу «однорангового программирования» : вы не имеете в виду парное программирование ?
@PeterMortensen, я слышал это в обоих случаях, и они используются почти взаимозаменяемо. computerlanguage.com/results.php?definition=peer+programming

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

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

  1. Заставьте их исправить эти проблемы, а затем отследить результаты
  2. Вы позаботитесь об этих исправлениях и продемонстрируете результаты

Последнее всегда работало для меня. Когда вы сделаете это правильно и когда команда увидит ценность того, что вы сделали. Естественно, они вынуждены заботиться об этом в будущем.

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

Начните и держите нас в курсе...

Вам нужно атаковать эту проблему на нескольких фронтах:

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

Заткните дыры в данных. Вам нужны доказательства, подтверждающие ваши утверждения. Все проверки кода должны сопоставляться с ошибкой, функцией или пользовательской историей. Начните измерять время, потраченное на работу над этими ошибками и функциями. Добавьте частые вскрытия. Вы все должны точно знать, сколько усилий уходит на переписывание кода по сравнению с добавлением нового кода для каждой задачи. Вернитесь и проанализируйте старые ошибки. Что было первопричиной? Была ли это ошибка нулевого дня или она появилась потому, что «работающий код» был изменен, чтобы добавить что-то новое?

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

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

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

Предисловие

Поскольку этот вопрос был опубликован на Project Management Stack Exchange, а не на The Workplace или каком-либо другом соответствующем сайте, единственный правильный способ ответить на него с точки зрения управления проектами — сосредоточиться на организационных обязанностях и обязанностях по управлению проектами. Это означает отбрасывание многих несущественных частей вашего вопроса и сосредоточение внимания на основных аспектах управления проектами, которые имеют либо канонические ответы, либо, по крайней мере, общепринятые лучшие практики.

TL;DR

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

Ситуационный анализ

В вашем вопросе много материала, который в основном сводится к нескольким ключевым элементам:

  1. Возможно, вы имеете дело с некоторыми различиями между культурой работы в США и Европе. Даже если это не является прямой проблемой, она, безусловно, окрашивает некоторые перспективы и рамки вашей ситуации, и вам необходимо признать этот аспект проблемы.
  2. Технический директор не берет на себя ответственность за проблему и не желает оказывать прямое влияние. Когда топ-менеджер говорит, что люди могут уволиться (а не что их могут уволить), этот человек отказывается оказывать прямое влияние и ставит вас в положение, когда вам приходится решать проблему посредством влияния, а не делегирования полномочий.
  3. Ваша команда разработчиков сопротивляется рекомендуемому вами подходу, независимо от того, представлен ли он в форме предложений, указаний, принципов проектирования или чего-то еще, что может вызывать вопросы. Тот факт, что они делают это таким образом, который вы считаете грубым, свидетельствует о том, что вы не заслужили их уважения ни делегированными полномочиями, ни влиянием социальных навыков. Конечным результатом является то, что у вас нет возможности осуществить значимые изменения, даже если это является целью вашей организации.
  4. С точки зрения управления проектами, ничто в вашем посте не касается метрик, ключевых показателей эффективности, элементов управления проектом или чего-либо еще, что можно измерить. Изменения сложны, и ими нужно руководить с точки зрения видения и применения просвещенного личного интереса. Управление проектами в качестве профессионала часто является трудной ролью именно потому, что это роль с большой ответственностью, но с очень небольшими прямыми или делегированными полномочиями. В результате руководители проектов обычно добиваются наибольшего успеха, когда они сосредотачиваются на контроле проекта в отношении бюджета, объема, графика и качества, а не на архитектурных или инженерных вопросах.
  5. Ваша концепция вашей роли нуждается в уточнении. Вы собираетесь быть менеджером среднего звена, лидером-слугой, тренером, идейным лидером бизнес-процессов или кем-то еще? Тот факт, что у вас нет четкого представления о том, как вы должны руководить командой, и отсутствие указаний от старшего руководства о том, к чему вы должны привести команду, всегда является индикатором организационного процесса. проблема.

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

Рекомендации

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

  1. Убедитесь, что вы получили от исполнительного руководства четкие указания относительно объема ваших полномочий (если таковые имеются), а также четкие ожидания и показатели того, как будет оцениваться ваша эффективность на этой должности.
  2. О любой проблеме, которую невозможно решить в рамках ваших полномочий или влияния, следует четко сообщить высшему руководству вместе с любыми вспомогательными показателями и рекомендациями. То, что они решат делать с этой информацией (если вообще что-то) — это их ответственность, а не ваша.
  3. Если это не является частью вашей работы, не думайте об управлении изменениями. Думайте с точки зрения измеримых результатов . Работайте с командой, чтобы определить желаемые результаты, ключевые показатели эффективности, которые измеряют прогресс в достижении этих результатов, и любые необходимые элементы управления процессом, необходимые для достижения этих результатов. Другими словами, создайте совместную ответственность за четко определенные результаты, а не пытайтесь генерировать изменения сверху вниз, которые вы не можете создать без активного сотрудничества команды.
  4. Перестаньте брать на себя ответственность за проблемы, для решения которых вам не хватает инструментов, навыков, полномочий или других средств. Создайте совместную ответственность там, где это возможно, перенесите другие проблемы на организационный уровень, где они могут быть решены, и убедитесь, что все стороны (включая вас, разработчиков и технического директора) четко понимают, кто и за что отвечает в вашей существующей организации. культура.
  5. Помните, что теперь вы «менеджер технических проектов» (что бы это ни значило в вашей компании), а не разработчик. Точно так же, как вы хотите завоевать их доверие к себе, выполняя свою роль, вам также необходимо создать и продемонстрировать доверие, необходимое им для выполнения своей роли. Если этого не происходит, это часть того, что вам всем вместе нужно исправить.

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

Из вашего сообщения видно, что вся команда не на борту. Следовательно, это не они; это вы и ваше руководство.

  • Как работает команда по вытягиванию?
  • Как обрабатываются оценки, кем?
  • Являются ли последствия технического долга реальной заботой руководства?
  • Будут ли новые разработки остановлены до тех пор, пока не будет устранен весь этот технический долг?

Включите их в планы повышения производительности.

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

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

На самом деле PIP — это ультиматум, который редко срабатывает. Это вселяет страх в ваших сотрудников, а не улучшает трудовую этику.
Я не могу себе представить, чтобы PIP мог заставить их писать лучший код. Они кажутся не ленивыми (на что обычно нацелен PIP), а скорее упрямыми, непокорными и/или невежественными.
@NotThatGuy Почему PIP нацелен на лень, но не на упрямство, неподчинение или невежество?
@EJoshuaS Я не думаю, что есть какие-то хорошие цели, которые вы можете поставить за невежество, неподчинение или упрямство, чтобы они «прошли» PIP. Эти вещи лучше решать, соответственно, обучая их, давая им официальное предупреждение/увольняя их или в основном обращаясь к авторитету/устанавливая стандарты кодирования.
@NotThatGuy Если у вас есть список того, что вы хотите, чтобы они делали, чего они не делают (например, «следовали принципам программирования SOLID») в своем PIP, имеет ли значение, почему они этого не делают?
@ nick012000 Да, это важно. Как я писал в своем последнем комментарии, разные причины, по которым они не делают то, что им говорят, лучше устранять по-разному. Наказывать кого-то за недостаток знаний, не пытаясь помочь им получить эти знания, — просто ужасный менеджмент. Упрямство слишком расплывчато, чтобы его можно было решить наказанием, если только оно не связано с неподчинением или вы просто хотите, чтобы они соглашались со всем, что им говорят (что, вероятно, еще хуже). С неподчинением можно бороться с помощью PIP (и отдел кадров может даже настаивать на этом), но это не самый лучший способ решения этой проблемы.
@ nick012000 Как бы вы поставили цель «следовать принципам программирования SOLID»? Один человек может утверждать, что что-то следует за SOLID, в то время как другой может утверждать, что это не так. И как бы вы его измерили? Все, что я могу придумать, вероятно, будет иметь множество нежелательных побочных эффектов (например, выбор проблемы, которая позволяет избежать проблемы, или написание плохого кода, потому что он заходит слишком далеко в противоположном направлении). Не говоря уже о том, что наказание за плохие методы написания кода, как правило, просто ужасная идея, которая вообще препятствует написанию кода. Это должно быть просто исправлено в код-ревью.
@NotThatGuy "Как бы вы поставили перед собой цель "следовать принципам SOLID программирования"?" Вы решаете, какой уровень соответствия принципам SOLID является приемлемым (например, «в целом следует принципам SOLID» или «обычно следует принципам SOLID с некоторыми исключениями» или «всегда следует принципам SOLID»), а затем вы просматриваете их коммиты и истории проверки кода. и решить, достигли ли они этого уровня.
Если вы накажете кого-то, если его классы не являются единственной ответственностью, они разделят свои классы на ужасные крошечные бессмысленные фрагменты, просто чтобы избежать классов с несколькими обязанностями. Не только если они мстительны, но и если они законно пытаются достичь цели, потому что то, что является единственной ответственностью, может быть весьма субъективным. Они будут тратить часы, дни или недели на проверку своего собственного кода снова и снова, чтобы попытаться убедиться, что он совершенен, и они будут бояться отправлять свой код на проверку или объединять его, потому что они не хотят, чтобы их снова наказали.
2/2 Может быть, вы можете поставить другие цели, чтобы противостоять некоторым проблемам, вызванным этой целью, но это может быть бесконечный цикл, и вы просто заставите их ненавидеть приходить на работу все равно.
PIP — это не инструмент, который заставляет кого-то совершенствоваться, PIP — это метод отдела кадров для поиска оправданий для увольнения людей. PIP не заставит людей стать лучше, он только заставит их притворяться, пока они не получат лучшую работу на своих условиях.
@nvoigt «PIP - это не инструмент для улучшения кого-либо». Может быть. «Улучшение» буквально в его названии. Его можно использовать просто как инструмент для создания оправдания для увольнения кого-то, но его можно использовать и как способ обеспечить внешнюю мотивацию для улучшения. Очевидно, что внутренняя мотивация лучше внешней, но если вашим сотрудникам не хватает первой, вам, как руководителю, приходится навязывать последнюю с помощью стимулов.