Я в настоящее время профессиональный программист. Я хочу расширить свой набор навыков, но я также хочу сделать карьеру, чтобы стать лидером в команде. Я знаю, что многому нужно научиться (и это не будет моментом), но я думаю, что я достаточно умен, чтобы справиться с этим, и я готов принять вызов.
Я уверен, что многие из участников здесь, вероятно, сами прошли через это, и теперь являются успешными разработчиками. К сожалению, хотя я знаю некоторые личные области, которые я хотел бы улучшить (глубина знаний, широта знаний, набор навыков и т. Д.), Я не совсем уверен, как бы я начал что-то подобное.
Как программисту сейчас, какие шаги я должен предпринять, чтобы достичь этой цели? Что я должен расставить приоритеты?
skills
experience
team-leader
lunchmeat317
источник
источник
Ответы:
Для того, чтобы стать техническим руководством следующих являются важными
Возможность наставничества сотрудников на всех уровнях старшинства, от человека, который не работал в университете в течение 3 месяцев, до человека, который программировал в течение 30 лет
Хорошее знание вашей области разработки. Это включает в себя: языки, платформы, утилиты, среды разработки
Твердое понимание систем управления проблемами, навыков управления проектами и контроля версий
Будьте убийцей жучков
Знать, как проводить своевременные проверки кода, что искать и как минимизировать количество времени, которое они затрачивают на удержание, и на внесение изменений
Будьте в курсе событий в вашей области разработки. Например, если бы вы не изучали новые фреймворки или технологии из .NET 2, вы бы поступили сегодня совершенно в обратном направлении.
Как писать модульные тесты и макеты, и заставить ваших разработчиков писать их тоже
Знание того, что такое шаблоны проектирования и когда их использовать
Знание того, что пахнет код и как их смягчить
Непрерывная интеграция
Умение планировать проекты и релизы
В зависимости от вашей организации и наличия у вас архитекторов, вам, вероятно, потребуется знать следующее:
Способность разбивать на части ваши проекты и разбивать их на функциональные части
Тщательное понимание безопасности, включая правильный способ обработки паролей, разделения систем, защиты данных и т. Д.
Корпоративные концепции, такие как служебные шины, очереди сообщений, BizTalk
Шаблоны корпоративного дизайна
Сервисные архитектуры / RPC, такие как SOAP и REST
Платформы ORM, такие как Hibernate, Entity Framework, Doctrine
Постоянное развертывание
Облако
Возможность рекомендовать правильные технологии для использования в проекте. Это может быть сложно, если ваша команда / магазин работает только с .NET, PHP или Java.
Разработайте приложение таким образом, чтобы будущие улучшения были легко учтены
Если вы собираетесь стать менеджером по развитию, вам также понадобятся:
И, наконец, некоторые другие рекомендуемые моменты:
Учиться за пределами вашей области разработки
Научитесь говорить « НЕТ», когда это невозможно или выходит за рамки возможностей или противоречит ограничениям, таким как бюджет или время.
Управление командой - это сложная задача. Вы должны быть человеком, который может ответить на любой вопрос, вы должны знать, какие технологии использовать (если у вас нет архитектора), вы должны иметь навыки управления людьми и быть доступными вашими сотрудниками (занимая руководящую должность). В дополнение к этому вам необходимо обладать навыками точной оценки, чтобы обеспечить прибыльность проекта, а также иметь возможность запачкать руки чьим-либо кодом, чтобы точно определять проблемы и быстро их устранять. Вы должны избегать желания делать все самостоятельно и создавать командную среду, которая не токсична. Вам необходимо постоянно оставаться на вершине своего технологического стека и изучать новейшие разработки и технологии, а также более широкие отраслевые тенденции.
Вы также должны знать хотя бы одну платформу базы данных и хорошо ее знать. Знать, как выполнять репликацию, хранимые процедуры, как работает оптимизатор запросов, как правильно разрабатывать схему и какие поля индексировать.
Независимо от конкретной должности, любая старшая роль требует от вас способности эффективно общаться. Если вы не уверены в себе, посмотрите на что-то вроде Toast Masters (публичное выступление). Узнайте, как сделать и держать зрительный контакт. Будь уверен. Оденьтесь соответственно для положения. Подавать пример.
источник
По моему опыту, лидерство имеет немного меньше общего с грязной работой по программированию и больше связано с управлением. Для этого я бы порекомендовал следующее
Инвестируйте больше времени в дизайн и архитектурные изыскания и разработки . Будучи лидером, ваша функция будет сосредоточена вокруг предоставления технического руководства и руководства вашей команде. Вам будет предложено больше понять, как куски целого сочетаются друг с другом, и меньше, как работает сантехника. Не поймите меня неправильно, вам нужны серьезные технические решения, чтобы быть эффективным и хорошо осведомленным лидером, но более высокий уровень понимания того, что происходит и как это будет работать, будет здесь более важным. Вы должны знать больше шаблонов проектирования лучших практик и эффективных методов кодирования
Научитесь многозадачности и управляйте временем . Если ты хорош в этом сейчас, это хорошо: развивайся больше. Как разработчик, вам нужно беспокоиться только о вашей текущей задаче / проекте. Как лидерство, вы будете иметь
Подготовьтесь к эффективному делегированию . Это IMO будет самым сложным для настройки. Как разработчик, вы привыкли пачкать руки, добиваться цели. Занимаюсь всей сантехникой и исследованиями. Это должно прекратиться или уменьшиться. Приходят концерты, вы раздаете их команде. Вы получите часть действия, а не столько, сколько вы привыкли. И вы прикусите свой язык, чтобы противостоять искушению загнать в угол больше действий для себя.
Вдобавок к более профессиональной линии, подумайте о некоторых тренировках, которые не только улучшат ваши способности, но и изменят ваш кругозор . Ускоренный курс, скажем, управления программным проектом не повредит. Lean Six Sigma - это также очень хорошая программа обучения (я могу подтвердить ее эффективность), которая поможет вам взглянуть на решение проблем с более логичной точки зрения. Не говоря уже о том, что с ведущей должности вы готовы к еще более старшим ролям, которые потребуют меньше практических технических навыков и больше управленческих способностей.
Отточите свое общение и навыки межличностного общения . Вы будете главной точкой входа в вашу команду из внешнего мира. Ваш менеджер или другой руководитель придет к вам первым. Другие подразделения / команды в вашей организации будут взаимодействовать с вами по всем вопросам, касающимся команды. Вы будете управлять самым трудным и непредсказуемым ресурсом из всех: людьми. Вам нужно вырастить толстую кожу, научиться глотать большое количество гордости и взять на себя ответственность за провал своей команды.
источник
То, что Сэм не сказал, также важно:
Как конкретизировать вещи и дать работу другим разработчикам. Часть вашей работы заключается в том, чтобы поддерживать других разработчиков на 100%. Написание спецификаций, которые являются однозначными, очень важно.
Как создать приложение-скелет / прототип, которому должны следовать все остальные
Как воспитать хороший командный дух
Как посещать, проводить и проводить встречи, как задокументировать действия
Как оценить, написать план проекта и обновить план проекта
Как заглянуть в будущее - если проблема случится через 3 месяца, вы должны попытаться устранить ее как можно раньше. Если разработчик собирается в отпуск на 7 недель, вам нужно начать планировать это сейчас.
Как поговорить с руководством. Они говорят на другом языке для нас. Дайте им решения, а не проблемы. Скажите им, что технические вещи значат для них.
И хотя Сэм уже сказал это, одна из самых важных вещей - научиться говорить «нет» . Вы будете делать это много . Другой способ взглянуть на это - сказать « да» , но «только если мы сможем получить больше денег / времени / ресурсов» - или «это для второго выпуска» :)
источник
Все это благодаря книге и хорошим ответам. Позволь мне ударить тебя реальностью.
Верьте или нет, большую часть времени вы будете тратить на объяснение менеджеров
Для этого вам нужны навыки объяснения технических вещей нетехническим людям, в нетехнических терминах. И это очень сложно. Например, рассмотрите возможность объяснения P = NP до 6 лет. К сожалению, для этого нет формального обучения, и вы должны изучить его самостоятельно.
Также это позиция, когда политический дерьмо начинает бить вас. Менеджер скажет вам отдать предпочтение человеку, потому что он / она следует за процессом, но вы знаете, что этот человек бесполезен в вашей команде по разным причинам, от недостатка технических навыков до плохого члена команды. Таким образом, вы все равно должны не только работать с этим человеком, но и давать хорошие оценки этому человеку. Противоположным является человек, у которого хорошие навыки и очень эффективный член команды, но который не знает, как угодить руководству, и поэтому получает меньше оценок.
Затем идут бесполезные встречи с кем-то, занимающим высокие посты, из отдаленных мест, где они читают лекции об эффективных процессах и о том, как его / ее последнее изменение процесса повысит производительность. Вы должны знать, как скрыть скучное лицо и выглядеть энергичным.
источник