Мысль из сегодня обсуждения… Плюс навеяно обсуждением книги Good to Great.
Предположим у нас есть программист, который хорошо работает, делает задачи, пишет документацию, обучает и слегка менеджит других программистов, достаточно инициативный — продвигает улучшения, хорошо ведет отчетность и т.п. В целом хороший программист, а может (если он еще и достаточно продуктивный) — даже отличный программист. Но гениальным вряд ли его назовут.
А теперь представим другого программиста — никого не обучает, документацию не пишет, не менеджит других, да и сам плохо менеджится, улучшения в компании не продвигает, отчетности от него никакой, он запирается у себя дома и через 3 недели появляется с решением какой-то большой и важной проблемы. Еще нужно подчеркнуть, что если бы не то, что он решал эти крупные проблемы — то его бы выгнали мгновенно за остальные пункты, а так его будут считать гениальным (не хорошим и даже не отличным), а именно гениальным программистом.
Слава богу, за свой опыт я не слишком часто с такими сталкивался 🙂
Так вот, о чем я задумался, это о том насколько они гениальны такие программисты, на самом деле.
Подведем простой математический расчет. Естественно все цифры взятые с потолка, если вам они не нравятся, подставьте свои.
а) Не ходить на работу и пользовать это время на программирование. (+10% дополнительного времени).
б) не писать документации (+5% дополнительного времени).
в) не обучать других программистов (+10% дополнительного времени)
г) не менеджить других программистов (+15% дополнительного времени)
д) отсутствие отчетности отчетности (+5% времени)
е) отсутствие необходимости согласовывать решения (+5% времени)
е) не присутствовать на всех митингах (+10% дополнительного времени)
д) отсутствие переключения между задачи (+30% эффективности).
е) отсутствие прерываний работы другими людьми (+30% эффективности)
Итого уже накапало 50% дополнительного времени и 60% увеличение эффективности. То бишь, продуктивность возросла в 2.4 раза. Думаю, если покопаться и выписать более полный список того, что НЕ делает гениальный программист, то вполне разность продуктивности может получаться и в 3-4 раза (отсюда и выходит, что хороший программист делает 3 месяца, а гениальный вадает за 4 недели).
А теперь на секунду остановитесь и задумайтесь. Хорошо ли для компании такое увеличение продуктивности в 4 раза? Если вы ответили «Да», то вам двойка в четверти по бизнесоведению 🙂
Ладно, для мелких-мелких компаний, которые только стартуют — это может быть решением, но для средних, а тем более крупных компаний — это выстрел себе в ногу.
Есть такая штука «technical debt». Это когда написал код на скорую руку и решил, что потом его приведешь в божеский вид, но потом как-то не наступило и код продолжает пользоваться/изменяться/дополняться. С каждым днем его становится все сложнее поменять и все больше времени уходит на его поддержание. То есть мы сделали что-то быстрее взяв в долг, но долг не выплатили и него начали расти проценты.
Аналогично, можно, ввести понятие «process debt», когда что-то делается без учета уже действующих правил (а-ля документирование, обучения людей и т.п.). Взять такой долг на короткое время вполне можно, но постепенно он накапливается (остальные разработчики не знаю тех частей, которые написаны гениальным программистом, не возможно предсказать даты выпуска продукта, так как нету никакой отчетности, время поддержки кода растет из-за отсутствия документации, обсуждений по ходу разработки и т.п).
В целом, Гениальных программистов в Бабруйск, даешь хороших программистов.
P.S. В нескольких комментариях отметил, что я не хотел сравнивать производительность людей с разным умением и опытом (плохих и хороших программистов). То, что я в статье пытался сделать – это показать, что программист с одними и теме же знаниями и опытом, в случае если он повышает эффективность компании в целом – будет называться хорошим, если он уменьшает эффективность компании (путем посылания нафиг всего кроме написания кода) – будет называться гениальным.
P.P.S. В еще нескольких комментариях началось обсуждение, как называют этих программистов. Предложенные варианты «Гики», «Хакеры». В целом, пусть хоть горшками (не чайниками) называют. Важно то, что с точки зрения множество людей в компании эти гении/гики/хакеры более (или по крайней мере не менее) полезны чем хорошие программисты выполняющие гораздо больший спектр задач.

