Я руковожу небольшим подпроектом в своей компании, и я никогда раньше не руководил никаким проектом в своей карьере, и этот мини-проект, по словам моего менеджера, должен стать упражнением в лидерстве.
Я сделал разбивку задач и назначил их. Одна из таких задач имела вид
Разработайте функцию/API с подписью
Output functionName(Input1,Input2)
, функция должна выполнять TaskX
Где TaskX был описан довольно подробно. Это было довольно ясно и прямо, а также довольно самодостаточно.
Однако я получил довольно большой класс, в котором запрошенный API был по сути функцией-членом класса, класс также имел элементы данных, которые не очень полезны для самой функции (например, у него есть совершенно бесполезный просмотрщик ради функция). Я сделал обзор кода и пытался объяснить, как бы я это сделал, включая фрагменты кода (которые были примерно 20/30 строк кода), это также включало тело функции.
По какой-то не совсем понятной мне причине мне все время выдают большой класс, чью фичу и реализацию я считаю не совсем корректной, но не в этом дело. Дело в том, что если бы я хотел использовать эту функцию-член, мне пришлось бы создавать довольно большой объект, что не имеет особого смысла.
Так что для меня цель задачи не достигнута, и я пытался обсудить, чего именно я хочу и почему, но каким-то образом я все еще получаю сопротивление. Также имейте в виду, учитывая, насколько короткой была функция, я ожидал, что это будет сделано не более чем за три дня (и это была завышенная оценка, поскольку функция в конце была очень короткой с точки зрения кода), но это было уже две недели . Причина такой задержки в том, что вместе с самой сутью задачи я получаю целый класс, как описано, несколько скриптов и проект IDE, который мне, честно говоря, не нужен. Единственное, что мне физически нужно, это один или два исходных файла.
Я уже говорил об этом со своим непосредственным руководителем, и, по сути, единственное, что я понял из этого разговора, это то, что инженер, с которым я сейчас работаю, имеет тенденцию переусердствовать. Итак, мой вопрос заключается в том, как лучше всего справиться с этой ситуацией в будущем?
Единственное, что я лично думал, это сесть рядом с ним и попытаться провести его через задачи, которые я ему поручил, но часто эти разговоры уходят на вещи, не имеющие прямого отношения к задаче (это, вероятно, потому, что я слишком доступен в давать объяснения, а это приносит больше вреда, чем пользы).
Любой совет?
(Примечание: проект очень маленький, в нем участвуют три инженера, включая меня).
Обновление : Итак, несмотря на мой обзор кода, мне снова предоставили раздутый код. Так что техника, которую я принял, чтобы разобраться с этим, была своего рода смесью нескольких ответов, которые я получил отсюда.
Прежде всего, я прямо спросил, почему мне дали так много кода с учетом задачи. Мне были даны причины (согласен я или нет, это не имеет особого значения), но в конце мы уточнили, что необходимо для задачи, так что в конце я получил те 20 строк, которые считал нужными. Итак, на этом текущая задача решена.
Однако в качестве упражнения для него я поручил дать мне некую форму дизайна/псевдокода, реализация которой позволила бы достичь цели следующей задачи. Поэтому у нас была встреча, где мы обсудили это. Обсуждение несколько раз имело тенденцию переходить к другим деталям (полезным для понимания, но не важным с точки зрения кодирования), я думаю, на этот раз, однако большую часть времени мне удавалось оставаться в курсе. В конце этой встречи я задал явный вопрос: «Как вы думаете, сколько строк кода вам нужно, чтобы это реализовать?» он объяснил мне, что он должен был сделать, по его мнению, и на этот раз звучало правильно, я также много раз подчеркивал минимальный требуемый код, и я думаю, что на этот раз меня поняли.
Единственное, что я лично думал, это сесть рядом с ним и попытаться провести его через задачи, которые я ему поставил.
Это кажется мне хорошей идеей. По сути, это следование принципу «Показывайте пример» .
Конечно, идея состоит в том, что ваша команда в конечном итоге сможет делать что-то самостоятельно, без необходимости сидеть рядом с ними, но в этом случае кажется, что один раз сделать это с этим человеком может помочь.
Попробуйте договориться с ними и попытайтесь выполнить одно из порученных им заданий. Поделитесь с ними своим мыслительным процессом, спросите их, каковы их мысли и рассуждения, поделитесь своими отзывами, предложениями и исправлениями, но пусть они сами займутся кодированием.
После этого пусть они доделают остальные задания самостоятельно, а теперь посмотрим, как им это удалось. Возможно, этот человек склонен все усложнять, и ему нужно немного руководства, чтобы понять и изменить свой образ жизни.
но часто эти разговоры уходят на вещи, не имеющие строгого отношения к задаче (вероятно, потому, что я слишком открыт в объяснениях, и это приносит больше вреда, чем пользы).
Я бы не стал оформлять это как разговор ; возможно, это ваша ошибка и почему это отклоняется.
Это должно быть больше похоже на парное программирование (но, опять же, пусть они пишут код и воздерживаются от написания кода самостоятельно, насколько это возможно).
Если вы чувствуете, что этот человек начинает отклоняться или вдаваться в ненужные детали, вежливо верните упражнение в нужное русло и снова сосредоточьтесь на поставленной задаче.
Поставьте перед инженером задачу: создать минимальный код, отвечающий требованиям. Эта версия не обязательно должна быть готова к выпуску, достаточно корректной реализации требований.
Когда это будет сделано, обсудите с инженером, что еще нужно для подготовки к выпуску. Какова польза и стоимость чего-либо, что может быть добавлено?
Это очень похоже на запутывание . Обфускация — это практика, обычно используемая разработчиками, которые плохо справляются со своей работой, посредством чего они обеспечивают безопасность своей работы, делая свой код максимально сложным для понимания и работы с ним, чтобы они были единственными, кто знает, как он работает. Поэтому, если их увольняют, компании приходится выбрасывать всю сделанную ими работу и переделывать ее с нуля, потому что никто не понимает, что было сделано. Поэтому, по их мнению, их меньше увольняют, потому что накладные расходы на их замену слишком высоки.
Вот что вы делаете: если вы думаете, что проект можно сделать за 3 дня, вы устанавливаете крайний срок в 3 дня. Это KPI, которому должен соответствовать ваш разработчик; если они не могут выполнить задание за 3 дня, то это предупреждение против них, которое вы можете использовать при следующем обзоре их эффективности. Если они не считают, что 3 дня — это достаточно времени, они могут прийти к вам и договориться о сроках, а в это время вы можете уточнить у них требования и дать им понять, что задание, которое они получают, не такое большое, как они думают. это так, а потом, если они все же попытаются поставить что-то действительно большое, вы можете сказать им, что их код не соответствует спецификациям.
Самое важное, что нужно делать с разработчиком, который занимается обфускацией, — это не объединять его код . Схема обфускации терпит неудачу, если их код не может быть запущен в производство. Убедитесь, что в производство идет только чистый код, чтобы, если этот разработчик покинет компанию, вы не застряли с кучей технических долгов.
В качестве предостережения ко всему вышесказанному : во многих языках есть «лучшие практики», которые очень похожи на обфускацию кода, например, определения интерфейсов, множество накладных расходов на настройку и т. д. Убедитесь, что вы понимаете ограничения, с которыми работает разработчик; возможно, он предоставляет хороший, чистый код, соответствующий стандартам языков/фреймворков, с которыми он работает, а вы говорите ему писать плохой, хакерский код, который трудно поддерживать, а он пытается вежливо сказать вам, что вы придурок, а ты не слушаешь. Помните об этом, что бы вы ни делали.
Если у вас есть полномочия, при работе с этим разработчиком попробуйте сузить сроки и добавить конкретные требования к результату.
Вплоть до того, что вы отправляете ему специальный файл редактора кода, в зависимости от используемого вами языка (например, *.cs) со структурой и «Поместите сюда код» в контексте
Таким образом, ему будет сложнее раздуть и запутать свою работу.
Но, если в результате вы получите неприемлемую работу, вам будет с чем обратиться к вышестоящему за советом/подтверждением необходимого для этого разработчика действия.
ИМХО, работа со всевозможными подчиненными - это тоже часть роста до руководящей роли, где твоя задача не выполнять работу, а распределять задания и интегрировать полученные результаты в конечный продукт.
Бернхард Дёблер
Елена
пользователь8469759
пользователь8469759
Дэниел Р. Коллинз
пользователь8469759
пользователь8469759