Модель сверхэффективного программиста

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

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

Ну хорошо, можно при этом уметь кодить программы на 3-5 (да пусть и на 50-100) тысяч строк — длительное время, месяцами, с кучей багов и бесконечной отладкой. А итоговая система получается крайне неповоротливой, заторможенной и совершенно негибкой.

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

Различие это заключается в так называемых микро-стратегиях.

Общую стратегию правильного ведения игры любой здравомыслящий человек может освоить на практике за десяток часов игры. Она составлена из общих советов, которых надо неукоснительно придерживаться. Так как само смысловое игровое пространство StarCraft не так велико, этих советов так же немного, и немного поэкспериментировав с ними на практике, можно быстро стать игроком удовлетворительного уровня. А так как баланс в игре отлично отшлифован, то игроки такого уровня будут выигрывать друг у друга по сути с вероятностью 50%.

За счёт чего же тогда удаётся всегда побеждать топовым игрокам? Глобальная стратегия — это принятие единичных за всю игру принципиально важных долгосрочных решений, без которых игра будет быстро проиграна. А микро-стратегия — это ежеминутная организация своей работы самым оптимальным образом. Именно набор выигрышных «микр», оптимизированных под конкретного человека, и отличает профи. Так, опытный игрок в старкрафт совершает подчас более трёх(!) действий каждую секунду на протяжении получаса! Одной мышкой тут ему, конечно, не обойтись, поэтому активно задействована и клавиатура.

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

Далее рассмотрим каждую из этих микро-стратегий подробно.

Поделиться статьей ...Share on Facebook0Share on Google+0Tweet about this on TwitterShare on LinkedIn0Share on VKPrint this page

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *