Прежде, чем сделать свой первый шаг, заблудший в мире программирования даже не понимает, что это за зверь такой «программирование». Он пользуется компьютером или ноутбуком, но даже не догадывается, как это всё работает. Ему кажется, что процесс создания игр — это что-то похожее на съёмку фильма или написание книги. И, если кто-то спросит его, как это всё работает, его мозг сразу же даст сбой, как если бы его спросили, почему теория струн требует 10 измерений.
Теперь наш герой знает, что программисты существуют, но не уверен, что понимает, чем они всё-таки занимаются. Догадывается, что их профессия предполагает нажимания каких-то клавиш на клавиатуре и, возможно, движение мышью. Он понимает, что есть какие-то «программы», какой-то «код», но откуда это всё взялось — без понятия. На этом этапе опытные программисты кажутся для него богами, неуязвимыми в своём мастерстве, с ценнейшими в жизни навыками. Новичку кажется, что желание достичь этого мастерства равноценно обретению навыков сгибать вилки с ложками силой мысли или научиться управлять космосом. Эта чёрная магия недоступна для таких смертных, как он.
Он пишет свою первую программу. Может это будет «Hello, world!» на С++, может, какой-то небольшой калькулятор на чёрном Basic-е, или, возможно, даже JavaScript окажется в цитадели тёмных искусств начинающего программиста. И сколько же еще дорог перед нашим героем на этом этапе...
Итак, открыт целый мир. Синтаксис становится заколдованным садом, каждое ключевое слово держит в себе тайну и порождает восторг. Волна удовольствия является результатом открытия новых сил, таких как массивы и классы. Это совершенно новая реальность, которая, кажется, полностью подчиняется нашему герою. Он ищет подобных себе в интернете, ведь чудеса связаны между собой и открытиями необходимо делиться.
Он опьянён своей новой силой, кажется, что весь мир принадлежит ему и был просто создан для выполнения его команд и желаний. Каждый раз он всё лучше понимает то, что в основе всего лежит код, и чувствует себя от этого безгранично мощным. Все задачи кажутся решаемыми и всё, так или иначе, можно запрограммировать. У нашего героя в вооружении некий «молот Кода», который, пока ещё ограничен в своих возможностях.
После нескольких лет, полных заблуждений и безумных открытий, трагедия постигает нашего героя. Возможно, он уже устроился на работу и получает навыки, которые казались ему некогда чудесными, но сейчас уже кажутся малоэффективными. Или, возможно, он пишет какой-нибудь личный проект вроде игрового движка, который, в конечном итоге, оказывается бесполезным. И куда только подевалось его величие и богоподобие? Столкнувшись с жестокой реальностью, происходит одно из трёх:
Этот этап опасен, так как методологический мир — всё равно, что мифологический, со своими русалками, драконами, горгонами и другими сказочными существами.
Придётся перетерпеть ещё больше боли. Он, наконец, поймёт, что не существует волшебной таблетки. Да, это тяжело, и он начнёт это понимать. Он обнаружит, что самое важное — это научиться делать проекты с максимально возможным уровнем качества в соответствии с дедлайнами. Теперь он может оценивать проекты, исходя не из какой-то методологии, а исходя из собственного опыта, потому что ранее он уже сталкивался с подобным. Его пояс уже обвешен многими инструментами, и он относится ко всему новому с подозрением.
Программист наконец осознаёт себя. Теперь он понимает, насколько всё это сложно, и способен распознавать масштабы поставленной задачи. Он чувствует границы своих знаний и опыта. Он также знает, какие усилия необходимо приложить, чтобы эти границы расширить. Он всё ещё с подозрением относится ко всему новому, но всё же в его арсенале появилось место для этих новых вещей. Он в мире с самим собой, воспринимая хаос развития как нечто столь же элементарное и неизменное, как погода. Никакой царь/король/президент не сможет остановить приливы, и даже самый лучший программист не может не совершать ошибок.
Многие программисты проходят некоторые из этапов выше в своей профессиональной жизни, но далеко не все доходят до последнего этапа. Многие не могут пройти препятствия на ранних стадиях и просто отказываются от своего «путешествия», либо останавливаются на достигнутом и отрабатывают те навыки, которые получили когда-то давно, не бросая себе вызовы и довольствуясь малым.
Не все программисты идут по одному и тому же пути, и не все аспекты работы программиста будут развиваться с одинаковой скоростью или даже в одном направлении.
Вместе с этой неопределённостью приходит и понимание того, что мы можем распознать какой-то из этапов выше в своей профессиональной жизни, только если мы взобрались ещё на 2 этапа выше.
Таким образом, становится понятно, что программист, находящийся на седьмом этапе, никогда по-настоящему не узнает, что он «превосходящий» (хотя может это и подозревать), и всегда будет сомневаться в прагматизме своих решений.
Если вы чувствуете в себе силы и понимание кода, и вам очень хочется достичь мастерства, мы ждем вас здесь.