Зачем «шарить» знания?

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

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

Текстовые способы

Создание wiki страничек

Можно создать базу знаний в корпоративной Wiki/Confluence. Недостаток этого способа связан с поддержкой актуальности информации. Как правило, наиболее полезная информация о проекте — это UML-схемы и самые базовые понятия.

Эффективность: 5/10.
Сложность внедрения: 3/10.

Список ресурсов, подборки

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

Эффективность: 6/10.
Сложность внедрения: 4/10.

Чаты по узкой тематике

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

Эффективность: 3/10.
Сложность внедрения: 2/10.

Написание статей

Как правило, поиск материала и исследование при написании статьи дают сильный толчок к развитию кругозора автора, а полученный опыт может быть полезен и релевантен для коллег. Например, темой для статьи может стать какая-то «боль» в проекте или описание полученного опыта. Чтобы процесс написания не затягивался на бесконечный срок, лучше придумать какие-то дедлайны либо создать их искусственно. Если статьи публикуются на внешних площадках и укрепляют HR-бренд компании, то стоит рассмотреть варианты поощрения авторов для поддержания мотивации.

Эффективность: 6/10.
Сложность внедрения: 7/10.

Базы данных по инцидентам

Результаты разбора инцидентов можно систематизировать на Wiki и использовать для обучения новичков на уже полученном опыте, а для senior-сотрудников будет полезным проводить ревизию этих знаний для выявления основной информации и принятия системных мер

Эффективность: 7/10.
Сложность внедрения: 7/10.

Способы, основанные на живом общении

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

Площадки для прогона докладов

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

Эффективность: 3/10.
Сложность внедрения: 7/10.
 

Создание сообществ и гильдий по разным технологиям

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

Эффективность: 7/10.
Сложность внедрения: 10/10.

Архитектурные комитеты

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

Эффективность: 9/10.
Сложность внедрения: 6/10.

Совместное исследование

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

Эффективность: 8/10.
Сложность внедрения: 6/10.

Площадки для обсуждения прочитанных книг

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

Эффективность: 5/10.
Сложность внедрения: 6/10.

Написание статей в соавторстве с другим сотрудником

Найти соавтора может быть непросто, но результат от командной работы может превзойти ожидания. Стимулом для написания статьи может быть всё то же желание разобраться в какой-нибудь сложной теме.

Эффективность: 8/10.
Сложность внедрения: 8/10.

Написание прототипов, MVP, участие в feature team

Одним из способов быстро создать прототип нового процесса в крупных компаниях является объединение свободных разработчиков из нескольких команд в так называемую “feature team”. Как правило, MVP продукта создаётся в короткие сроки «в режиме стартапа», и это хорошая проверка на прочность ранее полученных разработчиком навыков. Обмен знаниями и опытом идёт в максимально интенсивном режиме, и навыки оперативно превращаются в рабочий код. По достижению результата feature-команду расформировывают (проект отдаётся на поддержку и развитие одной из существующих команд), но бонусом остаются приятные воспоминания и налаженные связи. Часто применять такой способ написания новых сервисов нельзя, потому что повышенная нагрузка ведёт к выгоранию сотрудников.

Эффективность: 10/10.
Сложность внедрения: 8/10.

Дежурства по сервису, релизы, разбор багов

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

Эффективность: 8/10.
Сложность внедрения: 7/10.
 

Участие в разборе инцидентов

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

Эффективность: 7/10.
Сложность внедрения: 7/10.

Обучение внутри компании (внутренние курсы)

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

Эффективность: 8/10.
Сложность внедрения: 9/10.

Голосование по интересующим темам

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

Эффективность: 5/10.
Сложность внедрения: 3/10.
 

Способы получения знаний вне компаний

Хакатоны

Способ чем-то похож на участие в “feature team”. Плюсом хакатона является его ограниченность во времени и сфокусированность на конкретной проблеме. Хакатоны могут быть хорошей встряской для заскучавших программистов, помогающей не выгореть в нашей нелёгкой профессии.

Эффективность: 9/10.
Сложность внедрения: 8/10.

Работа над open source

При работе над Open Source программист совершенствует свои навыки, создавая новое либо улучшая существующее ПО. Полученная на pull request'ах обратная связь от опытных программистов может дать стимул для получения новых знаний и чтения профессиональной литературы. Для разработки предпочтительно выбирать те проекты, которыми сам регулярно пользуешься, либо которые востребованы работодателем.

Эффективность: 10/10.
Сложность внедрения: 8/10.

Хождение по собеседованиям

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

Эффективность: 9/10.
Сложность внедрения: 8/10.
Опасность: 10/10.

Итоговая таблица

Эффективность

Сложность внедрения

Создание wiki-страничек

5

3

Список ресурсов и подборки

6

4

Чаты по узкой тематике

3

2

Написание статей

6

7

Базы данных по инцидентам

7

7

Площадки для прогона докладов

3

7

Создание сообществ и гильдий по разным технологиям

7

10

Архитектурные комитеты

9

6

Совместное исследование

8

6

Площадки для обсуждения прочитанных книг

5

6

Написание статей в соавторстве с другим сотрудником

8

8

Написание прототипов, MVP, участие в feature team

10

8

Дежурства по сервису, релизы и разбор багов

8

7

Участие в разборе инцидентов

7

7

Обучение внутри компании (внутренние курсы)

8

9

Проведение голосования по интересующим темам

5

3

Хакатоны

9

8

Работа над open source

10

8

Хождение по собеседованиям

8

8

А как обмениваетесь знаниями вы?

Способов поделиться знаниями существует великое множество, но бывает сложно выбрать какие-то конкретные и системно внедрить в культуру компании. Буду рад, если вы поделитесь более простыми и эффективными методами в комментариях.

Комментарии (11)


  1. shurup
    21.09.2021 15:29

    Классная подборка из подходов, спасибо!


  1. Arvardan
    21.09.2021 15:39
    +1

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


    1. SeekerOfTruth Автор
      22.09.2021 17:50

      спасибо за ссылку на интересную статью :)


  1. NeverIn
    21.09.2021 18:46

    Все описанные способы хороши.
    Но первый вопрос в этой теме это такой: «мы начинаем обмениваться знаниями чтобы ...».

    Далее идут варианты мотивации заниматься этим. Можно заставить, попросить, купить.


  1. flowboarder
    22.09.2021 01:55

    Хорошая подборка. Я бы добавил к списку совместную деятельность в режиме pair/mob. Часто, когда возникает необходимость объяснить даже небольшую тему, предпочитаю передавать управление действием тому, кто обучается. Сам выполняю роль навигатора.


    1. SeekerOfTruth Автор
      22.09.2021 17:50

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


  1. Fi1osof
    22.09.2021 02:02
    +3

    А как обмениваетесь знаниями вы?

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

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

    3. Создаю стратегии развития, в которых перечисляю требуемые технологии какого уровня и какие еще стратегии надо освоить.

    4. Веду проекты и задачи в них с указанием какие технологии требуются и какого уровня.

    5. Даю возможность другим пользователям делать то же самое.

    6. Завожу раздел с кучей уроков с тестовыми заданиями.

    7. Менторю учеников.

    Короче, все это очень долгий процесс. Сложность внедрения 10/10 :) Но постоянно держу руку на пульсе что мне надо, а что нет, изучаю что надо, практикуюсь на практике, пишу статьи про то, что знаю и т.п. Мне нравится :)


    1. SeekerOfTruth Автор
      22.09.2021 17:47

      спасибо за подробное описание!


  1. vgogolin
    22.09.2021 06:28

    Вобщем, ходите по хакатонам и собеседованиям, комитьте в опенсорс и пилите периодически новые MVP в своё удовольствие!


  1. dd84ai
    28.09.2021 13:23
    +2

    А потом инвертируем сложность на легкость внедрения, перемножаем с эффективностью и сортируем по итоговой крутизне


    1. SeekerOfTruth Автор
      30.09.2021 12:13

      интересный подход к оценке, спасибо)