На улице пахнуло осенью, лето втупило в свою чуть более грустную фазу, когда ветра становятся прохладнее, но вокруг ещё всё зелёное, облака в прозрачных небесах по-прежнему кучевые, белые. Зашёл в магазин, купил ништяков к пиву, вспомнил свою первую “серьёзную” работу. И как на радостях с первой зарплаты купил себе (о боже, боже!) пачку сушёных кальмаров. Такое робкое, потаённое счастье, первый шаг навстречу себе, первое законное поощрение. Ах, какой же я тогда был юный и зелёный, хотя и отвественный до чрезвычайности. Первой моей покупкой с зарплаты было – угадайте, что? Неее… Не-не-не-не-не! С первой своей зарплаты я купил микроволновку! Всё в дом, всё в семью, да. Сначала она стояла у родителей, а потом, когда я женился (на четвёртом, кажется, курсе), переехала с нами на отдельную квартиру. К слову, работает до сих пор, один раз только пришлось заменить прогоревшую боковую пластину. А почему сейчас вспомнилось? Бог его знает, что-то принесло осенним дыханием.

Кстати, писал тут на днях текстик перед собеседованием, о программировании. Не дописал, про многое не упомянул, но тем не менее решил выложить сейчас. В общем, под катом простыня простынь. Кому делать нечего али так интерес есть – велкам.

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

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

Насколько я помню, первыми моими компьютерами были ДВК, чьих порядковых номеров я уже не помню – суровые такие отечественные машинки с зелёненьким мигающим курсором. Что характерно, впрочем, на них уже были игрушки, поэтому скучать особенно не доводилось. Да, поначалу моё общение с электронным мозгом носило в основном игровой характер, впрочем…

Стоп, да, совсем забыл. Самыми первыми были даже не ДВК. Сначала были программируемые калькуляторы “Электроника”, в память которых можно было заносить последовательность разнообразных действий. Так вот, игры были даже там. Как сейчас помню нечто под названием “Морской бой”, где нужно было вести стрельбу вслепую по некому заданному квадранту, ориентируясь по расстоянию от всплеска до цели (точно не помню, но что-то в этом духе). А ещё там можно было выводить на экран сакраментальное слово “еггог”.

Затем был чуть более продвинутый вариант, похожее на печатную машинку с бегущей строкой устройство, на котором можно было уже, к примеру, вывести в цикле лаконичное “Алёша – дурак”, или немного потроллить братца на тему нежных отношений с иными из одноклассниц. Устройство было не наше, поэтому его скоро забрали.

И вот затем уже были институтские ДВК с монохромными экранчиками и неизменно серыми клавиатурами, на которых можно было играть в Lode Runner, тетрис и Garden (кажется). Тетрис был самой любимой игрой научных сотрудников всех степеней, однако мне он пока не подходил по возрасту. Lode Runner тоже был немного сложноват, а вот Gardern оказался в самую пору. Ещё на них можно было печатать тексты в мульти-эдите (если не ошибаюсь). В одном из моих детских дневников встречается документальное подтверждение этой их чудесной возможности, распечатанное на матричном принтере и аккуратно вкленное в пространство страницы.

Затем были великие (и ужасные) ЕС-18хх, расширившие границы моих горизонтов до Paratrooper’а и Koko, дальше и Zoom’a со множеством других досовских игрушек. С походом в институт всегда был связан своеобразный ритуал, действовавший как-то особенно умиротворяюще.

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

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

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

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

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

Так, попытка за попыткой, задание за заданием, я освоил базовые конструкции языка: объявления переменных, условные переходы, циклы, процедуры, структуры, операции вывода, работы с файлами, и понемногу учился их комбинировать.

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

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

Затем мой знакомый решил меня проверить и дал навскидку небольшую задачку, которую я потом с лёгкостью решил на пляже. А после сказал, что если мне так всё это интересно, то я могу пойти к ним на курсы в “Доме учителя”, так называемую “Школу юного программиста”.

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

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

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

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

Я очень гордился своим интерфейсом, пока… В один прекрасный момент не увидел у Максима такой же. Я долго не мог поверить, что Максим так быстро меня догнал, признаться, мне и до сих пор кажется, что он чего-то таки не договаривает, но сути дела это не меняет. Проигрывать гонку вооружений совершенно не хотелось. Участвовать в ней – тоже. Поэтому я предложил сотрудничество.

На там мы тогда и порешили. Так и завязалась дружба, которая продолжается и до сих пор. Затем было много чего интересного, о чём можно написать не одну и не две хороших истории: курс ассемблера, тотальное увлечение Дюком Нюкемом, нарастающее противостояние с завучем, битва технического меча и щита, выигранная завучем с переводом сражения на более привычное поле интриг и подковёрной борьбы (стравить нас с непосредственным преподавателем было простым и эффективным решением), и наш последний решительный ответный выпад с возвратом уплаченных, и не отработанных фактически денег. Ко времени завершения нашей битвы у меня на руках так и остался не законченным вирус, который должен был предотвращать любые поползновения относительности целостности охраняемого архивчика с наилюбимейшим дюком (what are we waiting for, Christmas?) Насколько же это непередаваемо офигенное чувство, когда в завершение рабочего дня ты видишь на добром десятке машин прогресс-бар своего приложения, старательно упаковывающего и маскирующего народное достояние, защищённого от недружелюбного проникновения паролем, семантически выражающим своё неодобрение сразу двум ключевым фигурам Школы, объединённым одинаковыми инициалами (наряду с общим пергидрольным фенотипом).

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

Были программы для BBS, в частности Duke Club и Big Game Club, написанные на одном движке, призванные в более удобнов виде выводить информацию об игроках, включающую номер телефона, имя, время созвона, во что играем, примечания (пожалуйтста, не хамите маме).

Была написанная на чистом ассемблере программа по выводу в удобном виде данных списка самих BBS. Сейчас я вспоминаю, что она умела и у меня волосы начинают шевелиться на голове. Она парсила файл, сортировала его, она умела рисовать окна, строки ввода, на лету перебивала таблицу символов для эмуляции эффекта волны (табличка с дополнительной информацией внизу была обрамлена такой колышащейся супер-мега-пупер-офигенски-крутой рамочкой). Сейчас мне подобное написать было бы, скорее всего, лень.

А тогда… Впрочем, все эти программы не снискали мне сколь-нибудь значительной славы. Разве что укрепили связи с грозой всех минских Дюкеров, другом ещё одного моего знакомого по ШЮП, Дестроером, позволив мне потягаться в результате за третье место в неофициальном минском дюковском рейтинге.

Был переломный судьбоносный момент с ломанием доктора веба с целью устранения мелких неудобств, которые служба поддержки самого веба сочла слишком незначительными. Тогда я настолько погрузился в отладку, что исписал половину здоровенной тетради адресами переходов, размерами параметров и прочей каббалистической крипто-символикой, и, кажется, был близок к решаещему озарению, как тут… Меня предательски увезли отдыхать в Крым (кажется, или Гомель – точно не помню). Стоит ли говорить, что по приезду я просто не смог разобраться в своих собственных записях, и завершить начатое у меня так и не получилось. Наверное, оно и к лучшему – всё же альтернативный путь принёс немало вкусных возможностей.

Следующим переломным моментом стало повсеместное распространение Windows, практически единомоментно обесценившее весь накопленный багаж знаний. Это было тяжело, действительно тяжело. Свыкнуться с мыслью, что всё, что ты успел сделать до этого теперь тупо придётся выкинуть. И мы ещё какое-то время пытались перетащить наще приложение на новую платформу, пролистывая нужные книги в магазинах, потому что компьютерная литература была нам не по карману, но энтузиазм наш иссяк. Помню только, что нужно было всего лишь написать “хук”, или что-то вроде того, чтобы защита наша к тому же стала наконец и полностью “прозрачной”, работающей без промежуточных незащищённых копий. К тому же на рынке вскоре появился Best Crypt, затем и PGP Disk, а также True Crypt со товарищи.

Да, пришлось начинать всё сначала. Читать подаренную как бы родителями, но конечно же братом, книгу Borland Pascal for Windows, разбираться в новой операционной системе, ваять на Delphi, переходить на C++, Borland C++ Builder, понимать SQL, корячится над COM, всё это уже на первых своих работах, постоянно убегая от ощущения, что поезд снова вот-вот уйдёт. Потом – веб-программирование, php и html, mySQL и умение пользоваться гуглом.

Потом – совершенно неожиданный переход на Java с одновременным погружением в Small Talk, корпоративные приложения, фреймворки, библиотеки, архитектуры, паттерны. Ох, ох. Однако, начиная с определённого момента, положение более мене стабилизировалось, да и в теле “некоторая гибкость образовалась”. Но постоянное беспокойтсво никуда не делось. Просто “на всякий случай” изучались другие языки, парадигмы, техники, что-то поверхностно, что-то более глубоко. Клозуры, функциональное программирование, Haskell, Groovy, Scheme, Erlang – не счесть числа всему.

Однако в этот момент, когда в местной локальной сети разгорелся конфликт между “Байнетовцами” и “Иркбайщиками” я, вмешавшись в конфликт, в три дня уже написал аналогичного байнетовскому бота, на основе которого потом и вовсе переделал весь Intranet Chat сервер.

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

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

Потом, правда, район угостила молния, и не смотря на все принятые защитные меры, сеть выгорела практически дотла, так и не восстановившись потом в полном объёме. Да и интернет стал всё быстрее, всё дешевле и стабильнее – локалки начали терять смысл.

К тому же, вскоре я уехал в Голландию. Надо сказать, что именно работа в Нидерландах подкосила мой профессиональный оптимизм. До этого момента я привычно считал, что это у нас, на Родине, раздолбайство и непрофессионализм, ТАМ – исключительно Высокие Стандарты. Однако выяснилось, что ТАМ исключительно так же, как и везде – ВСЕМ ПОХУЙ. Менеджеры трясутся о своей шкуре, решения принимаются по принципу “лишь бы жопа не болела”, огромные бюджеты легко и непринуждённо отправляются в небытие, правда, всё это с фанфарками, с танцульками, с тим билдингами – в общем, смотри Дилберта.

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

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

Внедрил скрам, видел первые результаты новой работы, был ими приятно удивлён. Мотивировал народ, иной раз до того, что люди по собственой инициативе оставались в ночную, только чтобы наш customer был happy *смайлик*. В общем, там мы совместными усилиями наладили очень бойкий такой процесс, всё у нас тикало как часы – и continious integration, и nightly builds, и интеграция между c++ и джавой, и оперативная коммуникация общая и внутри-командная. В общем, хорошо смазанный механизм, за исключением некоторых неизбежных трудностей, о которых стоит написать отдельно.

Одна беда – наша компания играла не на своём поле и, в конце концов, политики противобостоящей стороны забороли нашу инициативу. Кстати, здесь я увидел скрам во всей красе. Кастомер меняет требования, а ты такой – оба-на – возьмите, получите. Чужой злобный менеджер сокращает тебе сроки релиза, а ты всё равно выкатываешь приложение, потому что у тебя ДЕЙСТВИТЕЛЬНО каждую неделю есть более менее готовая версия. В общем, не смотря на все противодействующие силы мы-таки поставили своё приложение, получив огромное спасибо от пользователей. Тоже, впрочем, удивительный в своей дибильности случай – пользователи хотят, верхи не дают. Но семена посажены, и шанс, что они дадут свои всходы, всегда остаётся.

А потом, прознав о моих успехах, меня пригласили в наш “особый” проект. Особенность проекта заключалось в том, что я “как бы” должен был на нём исполнять роль менеджера, маскируясь под аджайл коуча. Другим немаловажным отличием стала, мнэ мнэ мнэ, некоторая размытость управленческой вертикали. То есть, на проекте собственник компании находился сразу в трёх ипостасях: собственно, собственника, менеджера и простого девелопера. Моей же задачей было ВНЕДРИТЬ АДЖАЙЛ!

Стоит ли говорить, что я попался. Впрочем, правильнее даже было бы сказать – попал. Задача не решаемая в принципе, своеобразный loose-loose situation. Дело в том, что в проекте был уже крепко устоявшийся протокол, замешанный на жёстком директивном управлении нашего Самого. Для внедрения же нового процесса требовалось, чтобы Сам изменил свои привычки, начал работать по-другому. Ну да, ну да. Хе-хе.

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

Последнее обновление 4 августа, 2011