Какие навыки я должен развивать, чтобы стать разработчиком / техническим лидером? [закрыто]

82

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

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

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

lunchmeat317
источник
Есть ли в вашей компании возможности стать руководителем команды? Без опыта руководства командой, интересно, слишком много компаний нанимают только изнутри.
Джеффо
@JeffO Я просто поменял работу. Я не знаю, будет ли у меня возможность здесь - я думаю, что есть возможность, но это небольшой стартап, и я думаю, что будет только один лидер разработки за раз.
lunchmeat317
2
Только один навык: способность убеждать человека, который может дать эту позицию, чтобы дать эту позицию вам.
vortexwolf
1
Как выяснилось, есть очень четкая вероятность того, что я на самом деле не готов для этого. Как бы я ни хотел продвинуть свою карьеру в этом направлении, я думаю, что больше склоняюсь к стороне разработчика - я просто хочу иногда опускать голову и писать код. Все еще рассматривая возможности, но теперь с осторожностью.
lunchmeat317

Ответы:

90

Для того, чтобы стать техническим руководством следующих являются важными

  • Возможность наставничества сотрудников на всех уровнях старшинства, от человека, который не работал в университете в течение 3 месяцев, до человека, который программировал в течение 30 лет

  • Хорошее знание вашей области разработки. Это включает в себя: языки, платформы, утилиты, среды разработки

  • Твердое понимание систем управления проблемами, навыков управления проектами и контроля версий

  • Будьте убийцей жучков

  • Знать, как проводить своевременные проверки кода, что искать и как минимизировать количество времени, которое они затрачивают на удержание, и на внесение изменений

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

  • Как писать модульные тесты и макеты, и заставить ваших разработчиков писать их тоже

  • Знание того, что такое шаблоны проектирования и когда их использовать

  • Знание того, что пахнет код и как их смягчить

  • Непрерывная интеграция

  • Умение планировать проекты и релизы

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

  • Способность разбивать на части ваши проекты и разбивать их на функциональные части

  • Тщательное понимание безопасности, включая правильный способ обработки паролей, разделения систем, защиты данных и т. Д.

  • Корпоративные концепции, такие как служебные шины, очереди сообщений, BizTalk

  • Шаблоны корпоративного дизайна

  • Сервисные архитектуры / RPC, такие как SOAP и REST

  • Платформы ORM, такие как Hibernate, Entity Framework, Doctrine

  • Постоянное развертывание

  • Облако

  • Возможность рекомендовать правильные технологии для использования в проекте. Это может быть сложно, если ваша команда / магазин работает только с .NET, PHP или Java.

  • Разработайте приложение таким образом, чтобы будущие улучшения были легко учтены

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

  • Навыки собеседования и как правильно подобрать персонал
  • Как решать проблемы людей с членами вашей команды
  • Управление бизнес-директивами / целями и преобразование соответствующих в информацию для ваших разработчиков
  • Возможность оценить время для программистов разных навыков
  • Возможность распределять задания по нужным разработчикам на основе их навыков и способностей.

И, наконец, некоторые другие рекомендуемые моменты:

  • Учиться за пределами вашей области разработки

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

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

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

Независимо от конкретной должности, любая старшая роль требует от вас способности эффективно общаться. Если вы не уверены в себе, посмотрите на что-то вроде Toast Masters (публичное выступление). Узнайте, как сделать и держать зрительный контакт. Будь уверен. Оденьтесь соответственно для положения. Подавать пример.

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

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

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

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

    • Чтобы посещать больше встреч, чем вы заботитесь. Это, пожалуй, самая ошеломляющая часть лидерства команды
    • Работа по распределению ресурсов. Если вам повезет, ресурсов будет мало, а проектов много.
    • Возьмите на себя инициативу по архитектуре и дизайну проекта
    • В зависимости от размера и структуры организации, предоставьте множество отчетов, по расписанию и в срок. Думайте о лидерстве как о менеджере проекта с низкой арендной платой.
  3. Подготовьтесь к эффективному делегированию . Это IMO будет самым сложным для настройки. Как разработчик, вы привыкли пачкать руки, добиваться цели. Занимаюсь всей сантехникой и исследованиями. Это должно прекратиться или уменьшиться. Приходят концерты, вы раздаете их команде. Вы получите часть действия, а не столько, сколько вы привыкли. И вы прикусите свой язык, чтобы противостоять искушению загнать в угол больше действий для себя.

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

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

Kolossus
источник
2
Отличные ответы, мне нравится, как вы отметили все, о чем вы, как разработчик, обычно не подозреваете, в частности, делегирование. На прошлой работе я делегировал все, что мог, и все еще имел массу вещей, чтобы занять себя. Затем в (редкие) свободные моменты я делал «скучные» вещи - предлагал помочь исправить мелкие ошибки, документацию. Должен вести с фронта.
Rocklan
2
+1 за
акцентирование
Это выдающийся ответ и действительно отражает суть роли. Отлично сработано.
Ллойд Мур
14

То, что Сэм не сказал, также важно:

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

  • Как создать приложение-скелет / прототип, которому должны следовать все остальные

  • Как воспитать хороший командный дух

  • Как посещать, проводить и проводить встречи, как задокументировать действия

  • Как оценить, написать план проекта и обновить план проекта

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

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

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

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

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

  • как проблему трудно решить или
  • почему это не может быть решено в данный момент времени или
  • даже как менее важно решить.

Для этого вам нужны навыки объяснения технических вещей нетехническим людям, в нетехнических терминах. И это очень сложно. Например, рассмотрите возможность объяснения P = NP до 6 лет. К сожалению, для этого нет формального обучения, и вы должны изучить его самостоятельно.

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

Маной Р
источник
1
"должен знать, как скрыть свое скучное лицо и выглядеть энергичным", хахаха
Adrien Be
Мне всегда скучно, когда начинаются эти встречи, за исключением того, что обсуждается что-то, связанное с техническим
Акшай Мукадам