Моя первая работа

habr.png

По юниорству не понимал шутку про «программирование — это как кататься на горящем велосипеде в аду», но очень быстро мне ее объяснили.

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

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

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

— Понимаешь, Серый, тут надо пахать. Вот как я! — Обдал он меня похмельным перегаром пополам с сигаретным дымом на перекуре. Я откуда такой опытный? Я пашу не переставая, код пишу, тестирую, верстаю. Отсюда эти все знания.

Я этот совет с собой всю карьеру тащил, серьёзно. Позже даже мем такой появился — пиши код, бл%@ть. А гуру через пять минут заснул в нашем общем кабинете напротив меня и захрапел. Спасали наушники, так как только-только начал болеть классикой полутяжелого рока.

Андрей великолепно оттенял загадочно-отстраненную, холодную, но весьма добрую где-то глубоко внутри, стриженную под Малыша из Карлсона блондиночку Аньку, которой я исподтишка любовался. Аня даже «доброе утро» говорила так, будто к камеру к смертникам-унтерменшам заходила в форме убер-фюрера SS по каким-то своим, палаческим надобностям. Но по факту была добрейшей души человеком. В общем, классическая женщина, хоть и программист — загадочная и непонятная как море.

Позже вышел с больничного еще один коллега. Худющий, позитивнейший, опытнейший из всех нас Витек. Его «Ииииииии! кто же это сделал?» сопровождалось крайне комедийной мимикой и обычно значила нахождение очередного [wtf?]. Вы не знаете что это такое? Просто запомните — это единица измерения сложности проекта, сюрпризности архитектуры и противоречивости требований. Ну нередко этот самый возглас в общем звучал. И мы его тоже иногда переняли.

А в особенности переняла надсмотрщица за этим зоопарком, наш менеджер и тестировщица в одном флаконе, Танечка. Самый позитивный персонаж в этой вселенной, по иному с нами рельзя было. Представляете качество тестирования проектов, если там на семь калек-разработчиков был один тестировщик — Таня? И представляете как ей же за прорвавшиеся через нее же баги напрямую полоскают мозги забугорные заказчики / начальство? Я поначалу не представлял. В общем, укротителем у нас была очень милая, вечно всем, даже вновь обнаруженным багом, довольная, улыбчивая даже в грозу Таня.

— А знаете как мы за поездом на который опоздали гнались? — весело, задорно, с улыбкой говорила она. — В пургу по гололеду.
И я представлял как такая же позитивная Таня с улыбочкой бежит навстречу летящему снегу за невидимым уже за три метра поездом и улыбаюсь. А Таня к тому моменту уже заканчивает:
 — Ну на такси мы поезд не догнали, а застряли на сутки, нас солдатики вытаскивали. Наржались. — Ну вот в этом-то как раз никто и не сомневался. — О, чуть с вами, говорунами, не забыла. Сережа, там баг есть.
Ну кто бы сомневался. Я, как самый неопытный и неаккуратный от нее это слышал чаще других.
 — Да, Таня, я им сейчас напишу, — обреченно вздохнул я.
Я старался, но мне были нужны ошибки на которых учиться. ie6 стал моим злейшим врагом. Тонкости this яваскрипта и отсутствие полиморфизма в статике php я запомнил навсегда. Необходимость индексации таблиц в меня вбил 38-часовый марафон над базой лихорадящего под растущей нагрузкой сайта. Так я учился аккуратности и вдумчивости.

Мы тогда все сидели на винде (не путать с винтом!), ругали Zend Studio за переезд на Eclipse, юзали всевозможные панели, PhpMyAdmin, Denwer и FTP (s). Какие-то ущербные баг-трекеры наполовину в Excell. Никаких CVS. Страшный SSH изредка.

Но я учился не только этому. Я учился предугадывать отмену самых идиотских требований заказчика. Я учился сцепив зубы делать закругленные углы на кнопочках, раз это так важно. Я узнал цену пикселя и оттенка от дизайнеров, я познал цену ошибок документации и ответственности за чужие баги в 3-rd party software и за выбрыки используемого на пределе возможностей или просто плохонького железа.

Я научился разбираться, лезть в самую суть, строить догадки, перепроверять их, докапываться до истинной причины, понимать.

Я наконец-то возненавидел Билла люто и оправданно — за всю линейку ie. Даже WinAPI не так меня бесил в период десктопной разработки. Я ненавидел и любил php — за его нелогичность и за то, что это был мой основной инструмент. Как можно не любить язык, на котором пишешь?

А еще я познал весь страх, всю боль и ненависть бескомпромиссного кровавого аутсорса с забугорным посредником.

Вы знаете что такое аутсорс? Знатоки английского вам скажут, что это переводится как «код наружу», что может означать в том числе и выдачу исходного кода продукта компании — заказчику. Плюньте им в рожу, ничего они не знают. Аутсорс — это когда всем пофиг.

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

У нас был только один заказчик, мы даже якобы были его дочерней компанией, а потому позволяли вылазить на голову. Потому что… [барабанная дробь]… владельцам дочерней компании-исполнителя (нашей) вааще на все глубоко пофиг пока платят бабки. В техпроцесс они были вовлечены чуть менее чем нисколько и вся их роль сводилась к снятии маржи с нашей зп.

И, как следствие, программистам пофиг на качество — поскорее выдать проект на гора — косо, криво, лишь бы живо. Под давлением чужого менеджмента, при недостаточном тестировании, в состоянии перманентного цейтнота, и при полном попустительстве родного менеджмента.

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

Принципиальная ущербность системы: невозможность писать хоть сколько нибудь хороший код. Написать что-то хорошо получается только случайно. Зачем так жить?

Просто приходить на работу с 8 до 17 за зарплату? Ну кое-кто работал и так, к примеру Аня. Она оказалась интереснейшим человеком, увлеченной туристкой, велосипедисткой, знала кучу интересных людей, исходила пешком весь Крым и пол-Алтая, а в Байкале и Белом море мыла колеса своего велика. Южный берег Крыма знала лучше чем содержимое своих кухонных шкафчиков.
 — Аня, подскажи плиз что за место в Крыму — Чердак?
 — Серый, завал с работой, давай потом.
 — Творишь?
Но она отморозилась, что было очень очень странно. Поскольку единственным способом добиться от Аньки проявления чуточки интереса и дружелюбия — было расспросить ее о местах, в которых она побывала.
 — Уже нет, разве что в духовке. — Соврала она несколько часов спустя. — Слава богу.
 — Не любишь кодинг? — с сомнением спросил я. Как это можно не любить?
 — Люблю, но только в рабочее время.
 — А вне рабочего времени что нравится?
 — Не кодить.
Но вот работала она даже не то чтобы неувлеченно или просто за зарплату — нет, она болела своими проектами и остро переживала ошибки и неудачные решения. Но не хотела учить ничего нового и не любила кодинг по-настоящему. Я даже представить не могу как можно работать в этой профессии без любви к ней.

Ведь даже табуретку собирать без любви грустно. А вы попробуйте полюбить табуретку, если она на костылях и с рулём от велосипеда. Думаете преувеличиваю? Да скорее преуменьшаю и недоговариваю, аналогии всегда лживы. Ох знали бы вы насколько криво сделаны сайты, программы, иногда даже оборудование, которым вы пользуетесь каждый день.

Мы с Аней какое-то время работали над парными проектами, там сдружились немного. Парные? Ну это когда из-за сео приходится делать зеркала, но разные. SEO? Потом.
Так что что Аня любит, а чтот нет я чуть знаю. Кататься и поездки — любит. А кодить может, но нет, не любит.

«Качек» Витя — все по классике, кличка за субтильность — он же «кто же это сделал», был единственным настоящим программистом среди нас. Очень внимательный и предупредительный с клиентом, он выдавал на-гора самый качественный код и лучшую верстку. Он писал какой-то жутковатый фреймворк на PEAR-классах и лучше всех разбирался в Линуксе. Гуру. К тому же в свободное от работы время делал сайты какой-то канадской конторе и нам иногда подработку подкидывал. Так я учился рапид-разработке после работы и матерному английскому при спорах с заказчиком — витиной конторой-посредником из Канады. С нашим официальным голландским полуначальством спорить получалось не особо.

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

На всякий случай нас начали дрючить тимбилдингом, корпоративным духом и прочими модными методологиями. Андрюха аж слюной заходился в верноподданейших изречениях, иногда на застольях. Мы теперь по утрам скрамились — становились кружком и со всеми делились что именно вчера не сделал и почему. И что не сделаю сегодня. Скажите — секта? Не, аджайл, во всей своей красе.

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

© Habrahabr.ru