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

28

У меня есть несколько программистов, у них все очень хорошо и очень умно. Большое спасибо.

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

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

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

Мой вопрос

  1. Как это поставить старым программистам, в таком они бы согласились
  2. Какие системы вы используете, чтобы облегчить этот вид «резервного копирования»? Я могу понять, что вы можете сделать обзор кода, но есть ли простой способ сделать это? Я думаю, что мы не готовы к полноценной регистрации заезда с помощью проверки кода проверки.
Гравитон
источник
4
Вы всегда можете упомянуть, что наличие избыточности в данной области позволяет вам СОХРАНИТЬ эту область вместо того, чтобы искать другую область. Это относится и к знаниям в области программирования, так что на самом деле они сохраняют свою работу БЕЗОПАСНОЙ, чтобы другие знали, что они знают.
1
На одной работе у нас был офисный лотерейный бассейн. Менеджер настоял на том, чтобы присоединиться, на том основании, что он не хотел застрять там, если мы все выручили.
Дэвид Торнли
3
Джефф? Это ты! Черт возьми, тебе лучше не пытаться нас убить!
2
Почему в мире изменилось название - идея, получившая широкое признание в автобусе, широко известна, у этой темы есть собственное название и статья в Википедии: Номер автобуса . Вы не слышите, чтобы люди говорили о «лотерейном номере» своей команды .
Николь
1
@Carra, к сожалению, вопрос не тот же - вы не можете убедить кого-то, кого сбил автобус, остаться ради любви к игре! :)
Николь

Ответы:

19

Как это поставить старым программистам, в таком они бы согласились

Представьте им проблему открыто, конечно, таким образом, чтобы они не рассматривали ее как угрозу, а скорее как возможность улучшить работу команды и проекта. Например, «я хотел бы, чтобы другие люди знали, что вы знаете, в случае, если вас уволят» - это явно неправильный подход :-) «Я хотел бы обеспечить бесперебойную работу проекта, даже если некоторые из вас уезжают в отпуск или заболевают " намного лучше.

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

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

В нашей команде, кроме обзоров кода / дизайна, мы используем

  • Ротация задач и областей ответственности между членами команды (у каждого из нас есть свои основные области ответственности, но время от времени мы выполняем задачи в области, более известной другому члену команды)
  • Личные сеансы передачи знаний (обычно, когда требуется выполнение вышеуказанных задач, но также до того, как кто-то покидает команду)
  • Команда / проект вики

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

Петер Тёрёк
источник
Team/project wiki, Вы можете остановиться на этом? А также, face-to-face knowledge transfer sessionsрегулярно ли вы проводите такие сессии в назначенный час?
Гравитон
@Graviton, мы стремимся задокументировать дизайн и реализацию нашей (устаревшей) системы в вики проекта Это легче редактировать и обновлять (любой член команды), чем, например, отдельные документы Word, а также позволяет бесплатно создавать ссылки между любыми страницами. Передача знаний мы делаем по мере необходимости, по конкретному инструменту или части проекта.
Петер Тёрёк
Knowledge transfers we do on when needed, это, вероятно, во время отставки сотрудников? Не слишком ли мало времени для этого?
Гравитон
@Graviton, нет, я имел в виду, когда кому-то из нас назначают задание в области, более известной кому-то другому. (Я добавлю это в приведенный выше список, так как на самом деле это отличный способ создать «резервную копию знаний».)
Péter Török
12

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

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

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

доктор Ганнибал Лектер
источник
4

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

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

Тогда вы можете рассмотреть вопрос о найме новых людей. Или нет, в зависимости от загруженности вашей компании.

user281377
источник
@ammoQ, не слишком уверен, масштабируется ли это; что случится после того, как ты наймешь новых людей, ты собираешься снова нарисовать UML? А что, если архитектура проекта изменится? У вас есть система для проверки этих?
Гравитон
2
@Graviton: Новые люди просто читают документацию, написанную существующим персоналом. Не нужно снова рисовать диаграммы UML. Если архитектура меняется, вы должны принять документацию. Да, это отстой, я знаю. Но есть инструменты UML, которые помогут вам в этом, они читают исходный код и генерируют диаграммы классов и прочее.
user281377
Кстати, как вы думаете, как новый персонал будет изучать внутреннюю часть программного обеспечения, когда нет ничего, кроме исходного кода для изучения и существующих программистов, чтобы спросить?
user281377
@ammoQ, я не знаю; если бы я знал, мне бы не пришлось задавать вопрос.
Гравитон
1
@oosterwal, к счастью, сейчас мы можем использовать стандартную систему управления сборкой (Maven), поэтому существует лишь минимальная необходимость документировать детали процесса сборки. (И если член команды добавляет новые модули без обновления конфигурации сборки, мы все получим письмо от сервера Continuous Integration через 5 минут, сообщающее, что сборка нарушена и кем.) Но да, когда я писал пользовательские скрипты для автоматизации сборок и выпусков, я их хорошо задокументировал.
Петер Тёрёк
4

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

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

Vitor Py
источник
4

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

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

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

Эми Паттерсон
источник
4

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

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

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

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

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

  • Перекрестная тренировка нынешней команды. В краткосрочной перспективе вы можете потерять некоторую эффективность, но в одном углу приложения могут быть извлечены некоторые уроки, которые можно применить к другим частям приложения. Пусть Джейн и Джо некоторое время будут вместе работать над проектом друг друга.
  • Формировать культуру обмена знаниями. В компании, в которой я работал, была программа «Технический разговор о коричневых сумках». Любой может выступить по любой утвержденной теме (обычно знакомит с технологиями или программными процессами). Компания обслужила обед, и ведущий получил пару сотен долларов за их усилия.
  • Наставничество должно быть образом жизни. Цель наставничества других людей состоит в том, чтобы освободить вас от новых дел и сделать вас еще более ценными для компании.
  • Найдите способы пересечь границы информационного бункера, не поднимая звание. Чем больше удовольствия вы сделаете, тем меньше будет угрозы. Если люди в вашей команде так же хороши, как вы говорите, они, вероятно, не совсем довольны тем, как обстоят дела. Вы должны будете судить, сможет ли команда справиться с этим, но у вас может быть «давайте выберем на такой-то» неделе. Всегда начинай с себя здесь. Идея состоит в том, чтобы все посмотрели на то, каковы «такие-то» обязанности, и как они могут решить проблемы, которые у них есть лучше. До тех пор, пока вы начнете с шеи на линии первым, они поймут, что никто не собирается брать свою работу

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

Берин Лорич
источник
2

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

По мере роста компании вам понадобятся как старые разработчики, так и те, кто сделал это после стажировки.

Я думаю, что это может сработать.

Махмуд Хоссам
источник
1

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

Каждому говорят документировать все свои процедуры и процессы

Уровень 3 « Предупреждающие знаки корпоративной гибели ».

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

Tangurena
источник
Я не согласен. Стоимость компании сильно зависит от интеллектуальной собственности (ИС). Это включает патенты, процессы и всю внутреннюю документацию. Сотрудник, который не желает делиться своими секретными знаниями, документируя их, не стоит той бумаги, на которой написаны их секретные знания. Секретные знания сотрудника не добавляют материальной ценности компании.
oosterwal
1
@oosterwol - возможность собрать продуктивную команду разработчиков и управлять ею - намного лучший показатель оценки. Сказать, что у вас есть отличная документация, все равно, что сказать, что у вас отличный контроль над исходным кодом. Конечно, они необходимы, но это не будет отличать вас от конкурентов.
JeffO
@Jeff O: Документация не будет отличать вас от ваших конкурентов сегодня, потому что все знания в области ИС находятся в головах нынешних разработчиков. Через пять лет, когда все нынешние разработчики перешли к компаниям, которые занимаются ценной документацией, новые разработчики будут изо всех сил пытаться поддерживать старый код и не реализовывать идеи, которые в прошлом оказались плохими, но никогда не документировались.
oosterwal
1

Основываясь на концепции полной документации, которую @ammoQ начал в своем ответе ...

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

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

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

oosterwal
источник
Не могли бы вы предоставить ссылку на один документ в Интернете, который демонстрирует спецификацию, написанную достаточно хорошо, чтобы создать целое приложение существенного размера? Я думаю, что это подпадает под городской миф.
JeffO
1
@Jeff O: Вы правы - не существует ни одного документа, который был бы достаточно полным, чтобы описать полную систему существенного размера. Идея, что вы могли бы описать такую ​​систему в одном документе, является результатом плохого управления проектами и истории плохо написанных спецификаций. Существенная система должна быть указана с иерархической серией документов. Корневой документ обеспечивает высокоуровневую структуру системы и ссылки на ее дочерние документы. Каждый дочерний документ предоставляет дополнительную информацию до документов конечного узла, в которых указана только одна материальная особенность.
oosterwal
1

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

Либо с вики, либо с библией из трех колец документов о каждом аспекте их работы.

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

Затем создайте его вики-версию, которую ваши программисты смогут обновлять / редактировать / участвовать / комментировать.

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

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

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

crosenblum
источник
1

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

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

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

Carson63000
источник
0

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

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

Наличие одинокого специалиста над частью вашего кода - иллюзия эффективности.

Кто-нибудь когда-нибудь хочет поехать в отпуск?

JeffO
источник
0

У меня было намного больше компаний, из-за глупых ошибок руководства. Если уйдет один или два инженера, вы не рухнете и не сгорит, вам просто придется немного поработать немного. Шиш, я управляю оффшорной командой, которая теряет кого-то каждую четверть. Начните перемещать задачи вокруг. Cегодня.

SnoopDougieDoug
источник