Путь разработчика. Часть 0х1. Частный случай

"Физика - это частный случай биологии" (Джон Касти)
Программирование - это частный случай поэзии: здесь так же важна читаемая структура, соблюдение правил синтаксиса и гармонии. Прежде чем делать публичные релизы надо сперва узнать своего пользователя, быть одновременно и переводчиком и историком, чтобы некто, из другой сферы IT, смог прочесть написанный ранее код. Сам программист учится в своём ремесле сочетать характеры писателя, изобретателя и испытателя. Код инлайнит несоединяемое: тысячи разработчиков сливаются в огромные мега-проекты, что невозможно представить, например, у художников, где каждый со свойственным только ему стилем облицовывает собственное полотно.
Реалии сегодняшнего дня проучиться несколько лет пониманию тонкостей одного языка, чтобы затем перейти на совершенно другой язык. Обучение JavaScript'у и HTML5-окружению становится для меня решающим в карьере, это происходит когда я получаю в одной крупной конторе работу над большим гнилым проектом. Но об этом я поведаю дальше, ниже по тексту...

У меня была задача в получении диплома, той самой книжечки, которую дают когда ты заканчиваешь универ. Чтобы это сделать, ещё надо было пройти три последних квеста:
* Закрыть сессию
* Пройти госэкзамен
* Защитить дипломный проект

Так начался снежный 2013 год. Уже подросший, со снятыми недавно брекетами, я пытаюсь в третий раз хоть как-то сдать "Параллельное программирование", что в итоге со всем этим стрессом оставляет во мне достаточный осадок, чтобы на всю жизнь возненавидеть C++, MPI, OpenMP и прочее.

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

Каждый выпускник технического вуза после учёбы хочет попасть на работу, где будет современный стек технологий. Вот только это могут позволить две категории контор:
1. Стартапы, которые навряд ли возьмут только ощетинившегося студента.
2. Достаточно крупные конторы, которым давно пора уходить от старой технологии в пользу приоритетной новой.

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

Мой типичный день в конторе описывается простым чек-листом:
  1. Взять major задачу в JIRA
  2. Несколько раз уточнить её
  3. Найти и внести коррективы в огромном солюшене
  4. Протестировать во всех браузерах
  5. Прибить баги грязными хаками
  6. Скомпилировать
  7. Перенести обновленные DLL на продакшн
  8. Дождаться обновления кэша
  9. Отправить тикет на тест
  10. ????????
  11. GOTO 1
Так должно продолжаться 8/24, 40/7, 11/12...
Ожидание/реальность
Трудно заниматься полезными вещами, когда нужно подвинуть кнопку, в десятый раз подкрутить валидацию, постоянно следить за временем в JIRA, крепко пообедать и поучаствовать в очередном митинге. На работу не остаётся времени. Настоящую работу делает Senior, то есть тот, кто всё ещё помнит зачем в коде "этот чертов Magic Number" и Middle, который умеет успешно обновится до следующей версии .NET, поломав менее 24% написанного говнокода. Пока я лишь джун, единственная мысль которого, по приходу на работу - это переписать весь этот пиздец с нуля.

Нельзя просто взять и добавить новый функционал в дырявый проект
Каждый будний день я хожу на работу в почти самый центр гордо вылепленного Питера, мимо тесно сжатых друг к другу низких домов с огромными окнами, под которыми красуются чистые дорогие иномарки, стоящие на полуразрушенном асфальте. Я схватываю на лету нетипичные для приезжего кадры: вот бодрая старушка с пирсингом рассекает дорогу на самокате; вот меня подрезает на дешёвом раритетном велосипеде миловидная фиолетоволосая девушка с большими и, наверное, дорогими наушниками; или как слушает Black Metal пожилой водитель троллейбуса... Именно такие моменты постепенно превращают меня в кого-то другого, кем бы я никогда не стал, оставшись сидеть в родной провинции.
// TODO: Удалить, нельзя, допиливать!
Я нутром чувствтвую, не смотря новости и прочий бред, что контора рушится и принимаю верное решение валить (Спустя полгода эта контора с эпической новостью рухнет на всю страну). Так начинается переходный этап в поисках лучшего места. Полуразрушенный офис в центре города меняется аутсорс-кабинкой. Я работаю неделю на дому, пока конторка перебирается в новый бизнес центр. Внезапно мне приходит интересное приглашение из неизвестной геймдев конторы. Я еду в метро в перду города, захожу в БЦ класса В+. Что-то мямлю охраннику, поднимаюсь на лифте, сажусь на диван, жду. Мне любезно приносят только что сваренный горячий кофе, я трачу 30 минут на собеседовании и иду обратно в свою комнатёнку.

Мне приходит оффер. Я меняю Lean на Scrum, платформу ASP.NET на платформу SmartTV и ограничиваю себя подписью в контракте. Чувак мне говорит: "Из геймдева будет очень сложной уйти". Сейчас я могу сказать, он чертовски прав! Геймдев - это путь в сторону, и чтобы передумать, придётся идти обратно, сократить дорогу не получится. Теперь в будничный день я из центра выезжаю на другой конец города, сопровождаемый массой тленно читающих какую-нибудь книгу или бездумно рубящихся в популярную мобильную игру обывателей.

Маленькая студия это большая проблема. Когда проектов становится слишком много, графики летят к черту. Иногда почти нет работы и сотрудники вынуждены брать неоплачиваемый отпуск. Все "верхние" ребята друг друга "нагибают", будь-то заказчик или сотрудник звеном повыше тебя. Гибкий график - это средство скрыть тот факт, что часто придётся задерживаться из-за постоянных срывов дедлайна. Единственная вещь, способная удержать человека в геймдеве - его личное стремление написать игру. Лучше - свою собственную.
"В области высоких технологий тот, кто владеет нижним уровнем рынка съедает того, кто владеет верхним" (Пол Грэм)
Игровая индустрия похожа на особый вид лотереи. Если задержишься, можешь потерять больше чем приобрёл. Но обилие молодых ребзей, которые удачно и не совсем совмещают учёбу и работу, доставляют радости больше, нежели пятничные поглощения пицуни и алкоголя в окружении брачных людей. Многих удерживает на работе дружный коллектив, где по пятницам совершенно нормально начать бухать со своим шефом, узнавая по ходу пьянки много чего интересного. В этом значимое отличие говнаря-инжиниера от манагера, который выглядит словно вылизанный винтик в белой рубашке, с основной задачей беспрекословно идти намеченным курсом, день за днём чекая статистику твоих работ.

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

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

Рабочее место: 2 монитора, 3 телевизора, 2 пульта, 3 мыши и флешка с билдом
Честно говоря, сам факт работы в игровой индустрии довольно захватывающий. Но суть не в этом, главное для меня остаётся выход первой игры - отдать дань тому маленькому мальчику, который конструировал собственные миры сидя в трамвае, автобусе и авто, непрерывно смотря в окно, а приходя домой, переплетал фантазии и реальность, уходя во сне в новый, магический мир грёз. И пусть выпущенная игра на самом деле полный "ацтой", но я верю, что именно благодаря играм мы все учимся, обретаем опыт и движемся вперёд, подготавливая себя к предстоящей за окном будущей жизни. Я надеюсь мой скептицизм к современным играм когда-нибудь улетучится, а на место сегодняшним казуальным развлечениям придут игры, в которых как и прежде, будут царить дух настоящих побед и неиллюзорных поражений. Может этого уже не случится, потому-что я теперь всё меньше смотрю на мир за окном...
"Вот ты наговнокодишь и тебе приятно работать с говном?" (V7T)
В какой-то момент начало было положено. Когда сообщают что компания планирует продаваться, становится не по себе, особенно, когда полугодом ранее ты, общаясь с Senior HR, смутно понимаешь это и нутром чувствуешь недоговорки, а то и на прямой вопрос следовует ответ: "Тебя это не касается". Именно что касается. Такими тупыми решениями маленькие конторы оставляют своих людей. По мне, отношение между людьми гораздо важнее чем приманка гринкартой и переездом в новый офис в центре. Даже если станет лучше, ты будешь помнить, как тебя могут поиметь. Когда компания нанимает множество дешёвых сейлзов и не нанимает годных прогеров - прикидывай продажу. Эти новые люди должны повысить стоимость конторы в глазах покупателя. Во-первых, из-за большего числа людей, контора будет тупо стоить дороже. Во-вторых, с бегающими по офису джунами, можно нахватать несколько новых заказиков, в случае неуспеха поглощения. Хитрая многоходовочка.

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

Попасть на работу в мировую контору чрезвычайно сложно. Обычно, стеклянные офисы таких контор находятся рядом с хреном города, с близлежащим фитнесом. Заходя внутрь, тебя ожидают молодые охранники чтобы дать бейдж. Ты заходишь и ждёшь. Ждёшь достаточно, чтобы появилось желание вернуться назад. Возможно, это часть интервью, но дальше всегда будет что-то невероятно тупое. В основном тупыми будут вопросы, задачи и само интервью в целом. Да и вообще тупо искать уверенного в Linux-пользователя, знакомого с Bash и Python, в совершенстве владеющим Angular, умеющего быстро разобраться в неизвестной ему NoSQL базе данных и написать REST на NodeJS. Всё за 60 минут. Интересно было бы пообщаться с таким труъ Full Stack программером с мозгом математика. После сабезы я понимаю, что никакой я ни программист, ни бэкэндщик, ни фронтэндщик, ни знающий английского, простой обычный разработчик, чудом потерявшийся в окружении огромных плазменных панелей, окруженный от мира чудоковатыми гиками и нердами. Чувство антисоциопатии и сжатых сроков нахлынули на меня.
"Приходи пораньше, отсыпайся пока никто не видит и уходи пораньше." (Коллега)
Мне стукнуло 23.
Я проснулся взрослым человеком с осознанием того, что всё запланированное не сможет стать реализованным. Единственный верный путь в такой ситуации убрать всё лишнее и оставить лишь самое необходимое; то чем ещё пользуешься и чем планируешь пользоваться ближайшее время. Я начал с каталога игр и удалил с десяток тайлов, которые решительно хотел пройти прежде. Затем в корзину пошли программы которые не успели выделить меня - всякие музыкальные секвенсоры и различные редакторы, на обучение которых у меня так и не нашлось времени. Я как никогда понимал, что жизнь следует схватить за гриву и отрубить на бегу всё то, что меня держит, найти наконец нечто, что меня ждёт. У меня не было кредитов, ипотеки и постоянной девушки. Меня ничего не держало. Вернее держало. Я врос в этот город, меня держали проекты на работе и самые лучшие девушки России, на которых иногда оставалось незначительное время.

Рабочее место спустя год. Недочитанная книга по высшей математике не сдвинулась с места.
Каждый вечер я возвращался на Ваську, каждый вечер там меня ждали новые люди. В один момент я прошел мимо человека одетого огромным бутером и остановился в раздумьях. Повертев головы в разные стороны я понял почему. Понял, насколько нелепо и обидно видеть как служат технологии, математика, биология, химия на идеи маркетинга...
"Какой в этом толк, когда твой программист плачет?" (Nonename)
Проект закончился, меня переключили на iOS-разработку. Опять C#, Unity3D (который я пытался изучать, будучи на 3-ем курсе) и совершенно новый для меня облачный бэкэнд. Прошло менее месяца, я остался в проекте один на один заканчивать приложение полуторагодовалой давность с отсутствием документации, как в старые-добрые времена. В Xcode у меня не было никакого опыта, да и тестового устройства к тому же не оказалось. Нельзя что-либо писать имея лишь эмулятор. Когда тестовое устройство появилось я прифигел, сколько всего надо сделать. Так я понял, что хороший специалист всегда имеет при себе новые девайсы и последние версии ОСей. И дома имеет тот же набор программ что и на работе. 
"Когда я начинал это писать, только Бог и я понимали, что я делаю. Сейчас остался только Бог" (Кто-то из интернета)
Хочу свободы, хочу жить в собственной квартире, хочу на байке добираться на работу за полчаса. Но у меня нет желания горбатится десять лет ради этого. Всё что у меня есть – только я сам и это мгновение что отделяет меня от моего будущего. 

Благодаря другу, который работает в стартапе, решаю поехать в Москву. Хотя меня очень сильно влечёт поработать в большой конторе, лучше снова в центре Питера, несмотря на уговоры коллег и друзей я оставляю всё и чуточку больше, и прихожу на работу в шаговой доступности от Красного Октября.