[Перевод] У вашей компании есть долг знаний
Когда у вашей компании не хватает опыта в инструментарии или технологиях, которые могут сделать её более продуктивной, у неё есть «долг знаний» (knowledge debt).
При этом, компании и сами зачастую работают так, что только усиливают проблему долга знаний. Посмотрите на этот достаточно типичный пример вакансии:
Initech ищет опытного Разработчика, готового присоединиться к нашей команде.
Задачи
— Разработка ядра системы и компонентов бекенда
— Анализ и улучшение эффективности, масштабируемости и стабильности различных ресурсов системыТребования
— Магистр в Computer Science или смежной области
— 2+ года опыта в Java
— Эксперт в реляционных базах данных и оптимизации запросов в MySQL
Скорее всего, это компания использует Java для большинства своих продуктов, и MySQL для бекенда. Естественно, компания хочет нанять людей, которые имеют этот же набор навыков и смогут сразу же войти в проекты и начать работать.
Но у такого подхода есть фундаментальный недостаток. Компания должна нанимать людей, умеющих решать проблемы, программировать и которые впишутся в коллектив, а не обладающих специфическим набором знаний.
При прочих равных, компания должна предпочитать кандидатов, которые обладают опытом в разных технологиях. Любой действительно толковый программист сможет выбрать подходящие технологии необходимые для работы с существующей кодовой базой. Найм людей с разными умениями и знаниями даст вам мгновенный опыт в новых технологиях для решения ваших задач.
Распознание долга знаний
Каждый раз, когда придумывается новый язык, база данных, инструмент или технология, компания накапливает долг знаний. Если только компания не пытается активно бороться с ним, она будет продолжать использовать всё те же старые инструменты и технологии, с которыми ей «комфортно», начнёт отставать и, в результате, превратится в что-то наподобие компаний, использующих Enterprise Java в наши дни.
Точно также как технический долг подразумевает выплату процентов в виде ручной работы и стоимости поддержки, по долгу знаний также приходится расплачиваться меньшей продуктивностью.
Но вы должны распознавать долг знаний прежде чем вы начнете с ним бороться. Каждая компания, в которой мне приходилось работать, страдала от него так или иначе, особенно большие компании. Людям обычно сложно выходить из их зоны комфорта, чтобы решать проблемы разными способами и разными инструментами.
Боритесь с долгом знаний экспериментируя
Вы должны начать прикладывать перманентные усилия для борьбы с долгом знаний или вы гарантированно отстанете. И один из способов борьбы с ним это пожертвовать продуктивностью в краткосрочной перспективе, экспериментируя с разными технологиями в надежде на улучшение продуктивности в будущем.
Экспериментирование может быть сложным в больших системах, в которых много legacy-кода. Маленькие, достаточно независимые проекты будут наилучшими кандидатами для экспериментов.
К примеру, я впервые попробовал Clojure для реализации Thrift сервиса, собирающего записи на распределенную файловую систему. Проект был независим от остальной кодовой базы, что сделало его отличным кандидатом, чтобы попробовать Clojure. Проект научил меня многому о Clojure, который в итоге стал большим успехом для моей компании.
Инструменты, которые вы используете для собственной продуктивности — одни из лучших кандидатов для экспериментов. Попробуйте новый редактор для кода, вроде Netbeans или Emacs. Если вы привыкли к Subversion для контроля версий, попробуйте Git для новых проектов или для ваших open-source проектов.
В конце концов, ваша компания должна выработать культуру экспериментирования и поощрять людей выходить из их зоны комфорта.
При этом, выплачивая долг знаний с помощью экспериментирования вы можете увеличить ваш технический долг. Используя различные технологии, вы можете диверсифицировать вашу инфраструктуру и сделать её более сложной. В какой-то момент, возможно, вам придется расплачиваться за это, когда вы решите объединить технологии.
Боритесь с долгом знаний наймом людей
Как я уже упоминал выше, ещё один хороший способ борьбы с долгом знаний это найм людей с различным набором знаний и умений. Этот путь даст вам знания плюсов и минусов различных технологий без того, чтобы проходить это всё на своем опыте.
Разумеется, тот факт, что у вас есть люди с каким-то знанием, не означает, что ваша компания сможет эффективно воспользоваться этим знанием. Вам нужны механизмы, позволяющие дать другим людям в компании узнать о нём. Тут нет единого ответа, как это сделать, но одно из решений заключается в том, чтобы иметь регулярные внутренние презентации в компании, рассказывающие об инструментах или техниках остальным членам команды. Или, для большей компании, иметь внутреннюю базу данных, связывающую людей и технологии.
Заключение
Кроме долгосрочной выгоды, поддержка долга знаний на низком уровне имеет и более тонкие преимущества. Низкий долг знаний может помочь с набором людей, поскольку хорошие программисты зачастую хотят работать с последними и современными инструментами и технологиями. Борьба с долгом знаний также открывает вам несколько различных способов смотреть на проблемы, что делает вас более эффективными даже со старыми технологиями. Как пример последнего утверждения, у Эрика Реймонда есть известная цитата про Lisp:»[изучение Lisp] сделает вас более лучшим программистом до конца жизни, даже если вы никогда не будете активно использовать Lisp»
Так что выходите из своей зоны комфорта и выплачивайте свой долг знаний. Вы не пожалеете.
© Megamozg