- PVSM.RU - https://www.pvsm.ru -
Когда у вашей компании не хватает опыта в инструментарии или технологиях, которые могут сделать её более продуктивной, у неё есть «долг знаний» (knowledge debt).
При этом, компании и сами зачастую работают так, что только усиливают проблему долга знаний. Посмотрите на этот достаточно типичный пример вакансии:
Initech ищет опытного Разработчика, готового присоединиться к нашей команде.
Задачи
— Разработка ядра системы и компонентов бекенда
— Анализ и улучшение эффективности, масштабируемости и стабильности различных ресурсов системыТребования
— Магистр в Computer Science или смежной области
— 2+ года опыта в Java
— Эксперт в реляционных базах данных и оптимизации запросов в MySQL
Скорее всего, это компания использует Java для большинства своих продуктов, и MySQL для бекенда. Естественно, компания хочет нанять людей, которые имеют этот же набор навыков и смогут сразу же войти в проекты и начать работать.
Но у такого подхода есть фундаментальный недостаток. Компания должна нанимать людей, умеющих решать проблемы, программировать и которые впишутся в коллектив, а не обладающих специфическим набором знаний.
При прочих равных, компания должна предпочитать кандидатов, которые обладают опытом в разных технологиях. Любой действительно толковый программист сможет выбрать подходящие технологии необходимые для работы с существующей кодовой базой. Найм людей с разными умениями и знаниями даст вам мгновенный опыт в новых технологиях для решения ваших задач.
Каждый раз, когда придумывается новый язык, база данных, инструмент или технология, компания накапливает долг знаний. Если только компания не пытается активно бороться с ним, она будет продолжать использовать всё те же старые инструменты и технологии, с которыми ей «комфортно», начнёт отставать и, в результате, превратится в что-то наподобие компаний, использующих Enterprise Java в наши дни.
Точно также как технический долг [1] подразумевает выплату процентов в виде ручной работы и стоимости поддержки, по долгу знаний также приходится расплачиваться меньшей продуктивностью.
Но вы должны распознавать долг знаний прежде чем вы начнете с ним бороться. Каждая компания, в которой мне приходилось работать, страдала от него так или иначе, особенно большие компании. Людям обычно сложно выходить из их зоны комфорта, чтобы решать проблемы разными способами и разными инструментами.
Вы должны начать прикладывать перманентные усилия для борьбы с долгом знаний или вы гарантированно отстанете. И один из способов борьбы с ним это пожертвовать продуктивностью в краткосрочной перспективе, экспериментируя с разными технологиями в надежде на улучшение продуктивности в будущем.
Экспериментирование может быть сложным в больших системах, в которых много legacy-кода. Маленькие, достаточно независимые проекты будут наилучшими кандидатами для экспериментов.
К примеру, я впервые попробовал Clojure [2] для реализации Thrift [3] сервиса, собирающего записи на распределенную файловую систему. Проект был независим от остальной кодовой базы, что сделало его отличным кандидатом, чтобы попробовать Clojure. Проект научил меня многому о Clojure, который в итоге стал большим успехом [4] для моей компании [5].
Инструменты, которые вы используете для собственной продуктивности — одни из лучших кандидатов для экспериментов. Попробуйте новый редактор для кода, вроде Netbeans [6] или Emacs [7]. Если вы привыкли к Subversion [8] для контроля версий, попробуйте Git [9] для новых проектов или для ваших open-source проектов.
В конце концов, ваша компания должна выработать культуру экспериментирования и поощрять людей выходить из их зоны комфорта.
При этом, выплачивая долг знаний с помощью экспериментирования вы можете увеличить ваш технический долг. [1]. Используя различные технологии, вы можете диверсифицировать вашу инфраструктуру и сделать её более сложной. В какой-то момент, возможно, вам придется расплачиваться за это, когда вы решите объединить технологии.
Как я уже упоминал выше, ещё один хороший способ борьбы с долгом знаний это найм людей с различным набором знаний и умений. Этот путь даст вам знания плюсов и минусов различных технологий без того, чтобы проходить это всё на своем опыте.
Разумеется, тот факт, что у вас есть люди с каким-то знанием, не означает, что ваша компания сможет эффективно воспользоваться этим знанием. Вам нужны механизмы, позволяющие дать другим людям в компании узнать о нём. Тут нет единого ответа, как это сделать, но одно из решений заключается в том, чтобы иметь регулярные внутренние презентации в компании, рассказывающие об инструментах или техниках остальным членам команды. Или, для большей компании, иметь внутреннюю базу данных, связывающую людей и технологии.
Кроме долгосрочной выгоды, поддержка долга знаний на низком уровне имеет и более тонкие преимущества. Низкий долг знаний может помочь с набором людей, поскольку хорошие программисты зачастую хотят работать с последними и современными инструментами и технологиями. Борьба с долгом знаний также открывает вам несколько различных способов смотреть на проблемы, что делает вас более эффективными даже со старыми технологиями. Как пример последнего утверждения, у Эрика Реймонда есть известная цитата [10] про Lisp: "[изучение Lisp] сделает вас более лучшим программистом до конца жизни, даже если вы никогда не будете активно использовать Lisp"
Так что выходите из своей зоны комфорта и выплачивайте свой долг знаний. Вы не пожалеете.
Автор: divan0
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/upravlenie-proektami/110967
Ссылки в тексте:
[1] технический долг: http://www.startuplessonslearned.com/2009/07/embrace-technical-debt.html
[2] Clojure: http://www.clojure.org/
[3] Thrift: http://incubator.apache.org/thrift/
[4] большим успехом: http://nathanmarz.com/blog/introducing-cascalog
[5] моей компании: http://www.backtype.com/
[6] Netbeans: http://netbeans.org/
[7] Emacs: http://www.gnu.org/software/emacs/
[8] Subversion: http://subversion.tigris.org/
[9] Git: http://git-scm.com/
[10] известная цитата: http://catb.org/~esr/faqs/hacker-howto.html
[11] Источник: https://megamozg.ru/post/23752/
Нажмите здесь для печати.