Путь разработчика. Часть 0x0. Начало

«Я думал, произойдет настоящая компьютерная революция,
а вижу полное предательство.» (Теодор Нельсон)

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

Разработка - это конструирование, жизнь - это величайший конструктор, доступный нам для бесплатного Trial-использования. Будучи рождёнными в рамках закрытого, скорее всего, проприетарного обеспечения, отлаженные поколениями тестеров, мы изменяем время от времени собственные хедеры и добавляем комментарии в линиях жизни, создавая новые сборки раз в 9 месяцев. С новым поколением добавляют новые баги, пишутся технические задания, старое же поколение каждый раз бьётся об стену своей некомпентности и уходит на переиспользование.


Я начал изучать жизнь по конструктору Lego: сперва анализ доступных возможностей, расчёт параметров, включение воображения, затем сборка, наслаждение моментным результатом и непременная разборка, в общем желании сделать что-то выходящее за рамки доступной модели. Кубики Lego помогли мне понять паттерны проектирования, я их понимал на уровне подсознания, работающего, как известно, на более быстрой шине.


Другое дело, что за время моего взросления поменялись обстоятельства, забылся начальный предтечь; растянутые годы детства, отрочества, юности и взрослой жизни не давали мне сосредоточиться на самом главном, то и дело замыливая собственное "детское" понимание мира. Поэтому здесь я пишу свой "Путь разработчика" именно так, непонятно, с ошибками, зато не упускаю из виду те самые чувства своей жизни.

«Software is eating the world» (M. Andreessen)
Продолжу.

Когда-то давно ко мне пришла ясность мыслей и всё кругом предстало в новых красках. На следующий день я проснулся с сознанием человека и теперь каждый день ощущаю его на себе. Странно иметь такое сознание: мысли сливаются с чувствами, словно краски сливаются с фоном до такой степени, что невозможно отделить одно от другого. Конечно, есть запрещённые хаки, обороты которых контролируется правительством, употребляя которые можно видеть пространство as is. Но разработчики отличаются от хакеров тем, что для начала им достаточно иметь криво написанный костыльный велосипед и использовать его пока он едет. Блин, я опять отвёл мысль в сторону. goto continue;


Потом я открою виртуальную реальность мира, осязаемую ноосферу о которой так много писали, пока же я простой ребёнок, уставившийся на точку в неизменной обстановке. Без морганий уже через несколько минут всё пространство представляется одним сплошным чёрным цветом. Происходит моя собственная первая перегрузка аппаратного обеспечения девайса Мозг. Такова работа мозга: без новых ощущений ты тонешь в потоке чёрного эфира, уходишь из мыслей, превращаешься в очередного зомби, управляемого рефлексами общей массы. Незнающие это видят, конечно, иначе.


Я помню какое неожиданное чувство подарили мне игры. Вот стоит передо мной тёплый ламповый телевизор с подключённым NES. Я, как и многие дети, сижу перед ним играя в Super Mario Br, танчики и гэлэксианы. Наблюдаю в начале своей жизни настоящие технологические скачки, в которых телевизоры сменяются плоскими панелями, а ощущение от 16-битной графики превосходит ощущение присутствия в цветных снах.


В только созданной игровой индустрии масштабы берут вверх над здравым смыслом. Одно из подтверждений: 9999 игр на одном картридже (CD/DVD/Blu-Ray)! В голове вспыхивает здравая мысль о нехватки всего свободного времени 100-летней жизни для полного 100% прохождения кусочков пластика с интегральными мозгами. Но я скипаю нудные мысли из-за отсутствия лучших возможностей, провожу часовые рейды сидя с геймпадом перед голубым экраном. Наконец, у меня ломается геймпад и мне не остаётся ничего кроме как взять в руки паяльник, чтобы починить кусок китайской консоли самостоятельно. В процессе разбора механизмов, пайки и запаха олова я чувствую, что похоже у меня получается фиксить все эти сложные вещи. Мой страх к электричеству (после удара током из 220 вольтовой разетки по "советам" блядосестры) проходит.


Река времени движется. 
Теперь 32-битные приставки переходят в n^2-битные консоли; происходит разрыв поколений, а повальное появление 3D-акселераторов знаменует переход игр из гиковской культуры в культуру народных масс. Дальше шутеры, гонки, пентиумы, обзоры игровых E3-мероприятий и полуподвальные компьютерные клубы, где на насыщенных флешем веб-страничках красуется огромный бюст Лары и шотган Дюка. Мозг обманут, ему кажется заэкранный мир реалистичным и фидбэчным. Кажется, ещё чуть-чуть и долгожданная виртуальная реальность будет создана; хочется помочь приблизить её наступление. Прогресс не стоит на месте, то и дело появляются новые контролеры, шлемы, более мощные компы, ОСи, среды. Будто всё что существует в этом мире крутится вокруг ИТ!

По достижению 14-летнего возраста происходит резкий подъем внутреннего максимализма, но мысли мальчишки всё также заняты видеоиграми, а не собой или хотя бы каким-то хобби, например, игрой на гитарке. Бессмысленная трата трёх лет в музыкалке по дурацким советам дурацких родителей приводит меня в чувство, я слышу собственные мысли ярче: "Хватит играть по чужим нотам, играть чужую музыку! Музыка не написана на бумаге, бумага - лишь долгий путь к настоящей игре. Звуки настоящей музыки извлекаются не из инструментов, а из души". Я бросаю музыкалку и скупаю десятки пиратских дисков на сэкономленные деньги из школьных обедов. Обучаюсь курсам по английскому, 2D и 3D-графики. Потратив несколько десятков часов на рисование сисек и хуйцов, я уже умею коряво применять блюр-фильтры, скрывать прыщи и рисовать 3D-домики. Настаёт время идти в универ.


Какой вуз может выбрать тупой школьник-девстенник-задрот, живущий в сраной хрущевке с разведёнными родителями в далёкой жопе мира и России в частности? - Я выбрал тот, который будет ближе к моей хате.


Учёба в универе не создана для обучения, здесь, в первую очередь, надо обрастать связями, находить друзей и тусить с девчонками в ночных клубах. Но если ты попадаешь в технический вуз, тебя ждет анально-военный диктат со стороны преподов, а в общем перерыве общение с разномастными фриками и ебля с матаном, CPP/ASM и прочей [CENSORED]. Этот треш чередуется каникулами и сессиями, что в целом добавляет изюма в общажно-сосисочный соус студенческой жизни. После сдачи диплома общество получит очередного широкопрофильного маргинала с немного поднятым ЧСВ, ищущего работу по специальности. Но об этом позже.


Настоящее обучение в универе начинается когда нет больше сил чувствовать себя самым тупым бездарем в давно не видящего ремонта аудитории. Комп уже не тянет новые игрушки, денег на апгрейд не дают, поэтому я решаю здорово задрочиться над Страуструпом и заняться вплотную погромированием. Так, в свободное от учёбы время, которое должно быть потрачено на баб и бухло, я трачу на кодинг, дабы разобраться в словах типа НЕХ.


Часы интернет ковыряния говнотопиков постановили: "надо таки пилить на C#". Готовлюсь как Рокки, ставлю последнюю студию и решарпер, устанавливаю разные SDK и начинаю курить XAML и Silverlight. В ход идёт всё чему не учат в универе: обучение физическим движкам, рисовке в Photoshop и Blend, моделированию в zModeler и 3DS Max... Под жёсткий загон моего первого нормального торрентного учителя - Александра Гудка, бесплатно скаченного на торрентсру с регистрацией без смс. Я рисую сцены, изучаю IDE'шки, читаю матан по шейдерам, гуглю MSDN, и... весь этот труд выпиливаются в ничто.

«Лучший способ писать — это переписывать» (E. B. White)
Депреснячное лето заканчивается с мешками под глазами; начинается четвертый курс уже надоевшего мне универа. Первая шабашка находит меня и я начинаю верстать веб-сайт. Я быстро вкуриваю библиотечную книгу по фронту и начинаю вёрстку на HTML5, CSS3 и jQuery, предварительно потратив два дня трёпа на форумах с добрыми загадочными дядями выносящих судейство "интерпретатор vs ламер", в качестве ламера, ваш покорный слуга. Проект сдан, я вдохновленный символическими 500р за работу дохожу до точки невозврата в прогерской жизни. Я забиваю все свободные зимние праздники на изучение пэхапэ, при этом не читая ни документацию, ни книг об этом недоЯП. Вся эта вакханалия выливается в воплощение моей розовой мечты о вполне рабочем лично сделанном сайте. Однако, его посещаемость остаётся всего на уровне 30 уникальных месячных пользователей. Так приходит понимание: "Ты никогда не сможешь создавать прибыльные проекты в одиночку: нужны люди, деньги и время. По-возможности талант". Подбадриваю себя словами: "Когда малой хер не тугой".



Хочу воплотить синюю мечту о запиле своей собственной игры. Увы, бурление интернетов говорит о том, что Silverlight вскоре падёт. Я выбрасываю написанный говнокод и нахожу HTML5 Canvas. В это время есть выбор среди двух движков Game Maker и Construct 2. Я выбираю первый и афигеваю от блядосинтаксиса встроенного ЯП. Быстро удаляю, дабы не повредить раньше времени мозг, и начинаю фигачить на Construct 2. Проходит время и я достигаю лимита на бесплатные события и забрасываю проект чуть менее чем полностью.

В это самое время меня настигает момент выбора дипломного проекта.
«Любой код – это привнесение во Вселенную хаоса» (Хабра)
Бесконечные повторения, зазубривание, старые приёмы и книжные шаблоны. Неадекватные преподаватели и абсолютный безинтерес первых курсов остались где-то на разломках памяти. Только сейчас я увидел великий смысл этого. Из нашей небольшой группы ещё меньше окончили вуз, лишь единицы пошли по нелёгкой стезе программной разработки.

К этому времени я изучю хабраленту вдоль и поперёк, мне открывается новая для меня сторона разработки: JavaScript вне браузера, нереляционные БД, облачные технологии, что даже отдаленно не похоже на то, что яжпрограммировал всё это время в быдлоунивере. Как всегда, интересный проект портит ноосфера (почти через месяц начала запила дипломного проекта выходит его полный аналог) и внезапно возникшая работа в конторе.


Продолжение следует...