Доброго времени суток, уважаемые читатели! Этот пост представляет собой историю небольшого, но как на мой взгляд наиболее примечательного, отрезка моей жизни. Собственно статья — путь от безработного к программисту.
Случилось это ранней осенью несколькими годами ранее. Я решил стать взрослее и найти себе работу. Самому искать было неохота и я решил прежде опросить всех знакомых. И знакомых их знакомых. Далее рекурсивно. Через несколько недель опросов, знакомый знакомого моего знакомого сообщил мне, что его сын работает на клиентской поддержке одного крупного банка; рассказав мне все, что знал сам, включая номер его сынишки, я принялся набирать и расспрашивать оного. Услышав огромные цифры заработной платы и подсчитав, когда я куплю долгожданный Mercedes Benz, я вприпрыжку отправился на собеседование. На собеседовании милая девушка с незапоминающимся парнем попросили заполнить анкету на адекватность, содержащую вопросы типа “столица Японии”, “в каком месяце 28 дней”, “2+2*2” и т.д. Пролистав результаты анкеты и удовлетворительно кивнув они пригласили на личную беседу. Рассказав о себе и ответив на их несложные вопросы мне был обещан звонок “завтра” и я бодро ускакал домой, считая еще незаработанные деньги. Но звонок не последовал ни через день, ни через 2, ни даже через месяц. Ну и ладно, не очень то и хотелось.
В один прекрасный день, на зимней сессии 4-го курса технологического университета, в считанные дни до нового года, раздался звонок и женский голос объяснил мне, что я прошел собеседование в банк на оператора клиентской поддержки. А позвонили мне так поздно, потому, что я попал в кадровый резерв. Долгая ночь размышлений и вот он, первый день обучения на долгожданной работе. Условия были таковы — неделя обучения, за ней месяц стажировки за символическую плату и после прохождения всех экзаменов тебя могут взять на договор подряда. Платить пообещали даже больше, чем сын знакомого по телефону, правда обещали большие трудности на этапе обучения. Ах вы студент? У нас есть возможность работать 5 дней в неделю с 17.00 до 1.00. Супер.
Неделя стажировки закончилась 31 декабря. Увидев проходной балл в решающей контрольной работе, я понял, что прошел ее. Далась она совсем нелегко, т.к. в банквоском деле я ни ухом ни рылом, а надо было не просто все это понять, а еще и быть готовым объяснить клиентам! А карта и счет это не одно и тоже? CVV, извините вы о чем? Международная платежная система при снятии денег в банкомате? Как все сложно! Еще и регистрация электронной почты, ведение блога и гугл документов — ниче ж себе, как много я узнал за какие-то 5 дней.
Впереди был январь каникул и пол февраля карантина, так что было достаточно времени пройти месяц стажировки и к началу второго полугодия четвертого курса выйти на полноценно оплачиваемую работу с 5 до 1. Новогодняя ночь пролетела незаметно, как и сумбур всех новогодних праздников и в первых числах января меня завели в чат клиентской поддержки, познакомили с моим будущим супервизором и оставили вникать во все тонкости обслуживания клиентов. Куча программных комплексов, каждый со своими нюансами работы, параллельные экзамены и контрольные работы, все это было поперву сложно, но привыкнуть можно ко всему, вот и я привык. В феврале, сдав контрольный экзамен меня допустили к моим первым диалогам с реальными клиентами, да простят они мне тот бред, что я им нес в первые недели своей работы! Время потекло быстро и на удивление терпимо, график был прост — первые ленты на 8-10 утра, учеба, кстати это не пустой звук, я реально учился, строчив несколько лент подряд конспекты про все азы автоматизации производственных процессов. Учеба заканчивалась в 2-3 часа пополудни и в зависимости от заданных предметов я шел или в библиотеку, готовясь к контрольным точкам, или ехал в то место, где можно было поспать. В 5 вечера начиналась самая ответственная часть дня — рабочая смена. 8 часов выслушивания всей правды жизни про причины просроченных кредитов и объясняя, какие бывают депозитные программы, почему деньги не туда ушли ну и конечно же почему я вместе с “моим банком” такие идиоты и все у нас неправильно, в 2 часа ночи я был дома. И так циклично. Сложно было первые 2 месяца, потом начался диплом и на учебу можно было ходить реже, да и клиентов я начал лучше чувствовать, пошел нормальный заработок и уверенность в работе. Но что-то все равно было не так. Я чувствовал, что не для этого я изучал ассемблер на 3-м курсе и продавал решения дифференциальных уравнений однокурсникам. Мне вдруг в один момент стало казаться, что я делаю тупую работу, которую может делать каждый и нет ничего особенного в том, что я понимаю, как работают международная платежная система с банками эквайерами.
Случайно узнав об открытой вакасии старшего смены мониторинга электронных операций, я с удовольствием покинул надоевший чат, спустя 8 месяцев работы в нем, и отправился на месяц стажировки в отдел занимающийся борьбой с электронным мошенничеством. Стажировала меня девушка по имени Т, на которой я и женился годом спустя. Она мне рассказывала все тонкости мониторинга электронных банковских операций, научила при помощи программных комплексов банка выявлять мошенничество и естественно предотвращать его. Наконец-то, это было то, что надо! Сложная аналитическая работа, расследование следов мошенничества по IP адресам, мониторинг скимминга, фарминга, дух захватывало! Работа была 2 через 2 в ночь, при этом у меня была команда, во главу которой я и был поставлен. Спустя 5 месяцев, когда я достиг, как мне казалось, неплохих успехов в мониторинге, я перестал напрягаться на работе, весь мониторинг сводился к проверке элементарных правил, заполнения отчетов и прочей рутине, которая уже изрядно достала. А как все начиналось!
Нежданно негаданно, защитив диплом на последнем 5-м курсе, я получил предложение от руководства по повышению до руководителя безопасности интернет банкинга, перевестись в день и работать, как белый человек. В обязанности входило руководство операторами, анализ мошенничества и изобретение новых правил мониторинга платежей в интернет банке. Анализ был довольно банальным — на тот момент мониторинг интернет банка только зарождался, так что достаточно было глазами из выборки платежей выявить общие черты и разработать алгоритм — “чтоб такого больше не было”. Как оказалось в процессе работы, мне пришлось не только разрабатывать алгоритмы мониторинга, но и общаться с программистами и уговаривать их на внедрение оных. После 2 месяцев увлекательнейшей и кропотливой работы, волей случая, я был уволен. Это было сильным ударом, т.к. еще ни разу за 1.5 года я не оказывался без работы, к тому же веселые студенческие годы были позади и в настоящий момент я жил со старшим смены мониторинга по имени Т.
Оказавшись дома, я открыл гугл и ушел в интернет на несколько дней искать работу по специальности, ведь я был инженер по автоматизации производственных процессов! Обзвонив добрый десяток вакансий по специальности, я понял, что жизнь это боль и на зарплату в 150$ как то не прикольно переходить после того, что было в банке. В конец отчаявшись, я вернулся к своему давнему фетишу — когда то, программируя на ассемблере, я мечтал стать программистом! Но я не полез в интернет в поисках вакансий программиста ассемблерщика, т.к. уже знал, что это гиблое дело. Надо было найти более популярный язык программирования. Гугл по запросу “самый популярный язык программирования” вернул “Java”, я не стал с ним ни спорить ни переспрашивать и с нетерпением принялся за изучение. Что там сложного то? Я ведь ассемблер в некоторой степени уже познал?
Итак, начнем, первым броском к лучшей жизни стали скачанные 2 книги, неких Брюса Эккеля и Хорстмана. Потратив на них с неделю я понял как же сильно я ошибался… Объекты? Полиморфизм? Что это вообще? С чего начинать? К чему идти? Потерпев полную неудачу в чтении, меня посетило прозрение, что если смотреть видео, то все будет понятнее, ведь в университете, на лекциях, все было понятно! Мой выбор пал на первый сайт от гугла — javabegin.ru, на нем некий Тимур Батыршиннов поместил 7 ознакомительных уроков по java, которые я с большим удовольствием и небольшим пониманием посмотрел и повторил. После них пошли параллельно 2 книги — Герберт Шилдт “Полное руководство Java” и Вязовик Н. А. “Программирование на Java”. После видео ситуация прояснилась и книги пошли намного понятнее. После нескольких глав я снова пересматривал эти же видео и открывал в них новые детали. В этом всем обучении был один существенный недостаток — было абсолютно непонятно, до какой степени надо учиться, чтобы знаний было достаточно для устройства на работу. Так продолжалось весь август, а в начале сентября я узнал, что моя спутница беременна и хорошо было бы позвать ее замуж.
Ни медля ни секунды, пройдясь по бабушкам, дедушкам и прочим неравнодушным родственникам, собрав нужную сумму и отыграв свадьбу я проснулся и понял, что у меня все еще нет ни работы ни достаточных навыков для устройства на хорошую работу, я решил подхватить воспаление легких и полежать месяц в больнице. Месяц прошел довольно продуктивно — я продолжал интенсивное обучение в больнице. Связка «видео + чтение + опять видео + выполнение простых задачек» на определенную тематику давала намного большее понимание, чем по отдельности. Поняв азы синтаксиса, абстрактных классов, наследования, полиморфизма и наконец установив SQL сервер, я выписался и направился на предыдущее место работы надеясь на понимание и прощение. На удивление на мою должность никого не нашли и новый руководитель был не против моего восстановления на прежней должности.
Восстановившись на прежней должности и пообещав приличную автоматизацию существующих алгоритмов мониторинга электронных операций интернет банка, я принялся за анализ, но не тот анализ, которым занимался ранее — выявил, нарисовал схему, придумал алгоритм, который покрывает текущую схему, — тут надо было получить несколько миллионную выборку платежей, найти среди них мошеннические из статистики, выявить общую схему и придумать алгоритм. В общем стало понятно, что select * мало и пришлось осваивать синтаксис SQL запросов. Спустя несколько месяцев, поняв как работают подзапросы, left join и увалив несколько раз тестовую базу данных, я напрочь забросил изучение программирования и почувствовал себя крепко стоящим на ногах — ведь я был не просто fraud менеджером, я еще и неплохо разбирался в SQL!
Одним днем все изменилось. В банке работает множество систем, проверяющих лояльность сотрудников к банку и одна из них — полиграфическое тестирование. Сходив туда я получил приговор — рекомендован к увольнению. Все мечты и чувство полной стабильности и уверенности в завтрашнем дне рухнули в один миг. Горечи добавляла беременная жена, которая была уже в декрете и созерцать которую мне приходилось каждый день в однокомнатной убогой квартирке, на аренду которой уходила добрая половина зарплаты. Переоценка всех ценностей и знаний прошла за пару вечеров и я вновь взялся за программирование. Зная, что вскоре буду уволен, процесс пошел намного интенсивнее.
Через n недель после проваленного тестирования, пройдя серьезный разговор с Высшим Начальником, я был оставлен под 100 честных слов до следующего тестирования, которые должно было произойти внезапно-непонятно когда. Узнав эту новость, я хотел было расслабиться, но внутреннее ощущение скользкой почвы под ногами было уже не обмануть.
Прошло несколько месяцев, вспомнив хорошо забытое старое и узнав много нового, я все еще не мог понять, что такое enterprise и куда нужно совать методы и классы. Появилось чувство, что понимаю неплохо, а как использовать и куда развиваться дальше, было абсолютно непонятно. Случайно наткнувшись в сети на вакансию “бесплатное обучение Java на конкурсной основе”, я понял, что это шанс, который выпадает раз в жизни. Некая компания L утверждала, что если пройти 3 тестовых задания, 5 месяцев бесплатного обучения, сдать экзамен, то лучшие студенты получат работу. Медлить было нельзя — первое тестовое задание — онлайн задачки на джаве были по плечу и заняли от силы час. Вскоре со мной связались и пригласили пройти письменный экзамен. На экзамене, не было ни гугла ни ctrl+space после каждой точки, дали пустые листки бумаги, 5 задач и 2 на подумать. С задачами были трудности, что такое псевдокод я тогда не знал и нагородил все, что знал, включая JFrame и прочую ересь. Повезло с двумя задачками на подумать, решение которых и сыграло на мой взгляд ключевое значение. Неделю прокусав ногти, я все-таки дождался звонка и приглашения на третье, личное интервью. Прискакав в припрыжку в офис, ответив на ряд общих вопросов и прочитав кусок документации на английском они пообещали перезвонить через 3 дня. Звонок последовал только через 3 недели, когда я уже и думать забыл об обучении и давно обиделся на них.
Звонок порадовал не сильно, так как курсы были 3 раза в неделю, начиная с 2 часов дня. Супер, а как же работа? Офисная крыса должна была сидеть на месте с 8 до 18. Выручило опять же Высшее Начальство, которому я поплакался в рубашку, как же сильно я хочу быть программистом и что мне очень это нужно. Дали добро, но с условием, что я буду вырабатывать все те же 8.30 часов. Проведя несложную арифметику, я осознал, что 3 раза в неделю мне надо приходить на работу в 6 утра, потом идти на четырех-часовые курсы, а после еще делать домашку. Объем домашки предполагался 4-8 часов, она должна была задаваться после каждого урока. Не испугавшись ни капли я замер в ожидании начала курсов.
Начались долгожданные курсы, первый подъем в 4.30 утра, работа, первая лекция по джаве от настоящего профессионала! Был хмурый вечер понедельника и домашку надо было сделать до среды, то есть до следующего занятия. На ее выполнение ушло часов 12 — по шесть часов каждый день по вечерам. Поспав 3 дня подряд по 4 часа я понял, что надо что-то менять, иначе можно просто умереть.
Решения были таковы — хочешь выжать из своего тела максимум, значит надо держать в тонусе весь организм. Хорошенько поразмыслив, смешав несколько методик продвинутых гуру (или просто шарлатанов) я пришел к следующей программе. Подъем в 4-5 утра, никакого завтрака, только несколько гранул пчелиной перги. Утром, когда организм спит, пихая желудок едой, организм тратит слишком много энергии на запуск самого желудка и всех пищеварительных систем. Перга же содержит все необходимые витамины на весь день и практически не требует затрат организма на переваривание — то есть легко усваивается. Чтобы хорошенько проснуться — обязателен контрастный душ, он помогает разбудить организм и дает заряд энергии на несколько часов. Далее стакан кипяченой воды каждый час — чтобы кровь всегда была разжиженной и сердцу было легче ее качать. Чем легче ее качать, тем лучше питается мозг и тем яснее мысль. Пообедать нужно плотно — как раз все пищеварительные системы функционируют на полную катушку, так что организм затратит минимальное количество энергии на переваривание. После работы был настоящий brainstorm для мозга на курсах, после — хороший ужин часов в 7-8 вечера и до 10-11 учеба. К 10-11 часам обычно мозги затуманены прилично и становится учиться почти невозможно, так как плохо соображается. Всегда было 2 варианта — либо пойти спать, что делать нельзя было, иначе не успеешь с домашкой, либо пойти на вечернюю пробежку — 2-3 км легкой трусцой и мысли сразу прояснялись. После — 2-3 часа учебы и в 1-2 ночи спать. В таком темпе можно выдержать 5 дней в неделю, но на выходных обязательно нужно расслабиться и желательно хоть на день вообще забыть о программировании. В пятницу хорошо помогал алкоголь, в субботу — спортзал. Обязательно нужно было доспать все, что недоспал в будние. Если этого не сделать, следующую неделю можно было просто не выдержать. Под “не выдержать” я имею ввиду либо существенно потерять производительность, либо забить на учебу. 2 недели втягивался в новый ритм, а после — чувствовал, что могу даже меньше спать, но проверять не стал.
4 месяца учебы пролетели, как фанера над Москвой. Потеряв 10 кг веса, накачав пресс от бега и нарастив очень сильную теоретическую базу, оказавших одним из первых в рейтинге студентов, я отправился на первое свое собеседование в компанию L. Техническое интервью я прошел успешно, на все вопросы про ООП было легко отвечать, а сортировка пузырьком не составила особого труда. Зато я успешно провалил второе — на английском. Сильно не расстроившись, я узнал, что у нас в банке, можно так же перейти в отдел программирования, тем более что некоторых программистов я уже знал, будучи менеджером.
Пройдя устное интервью, я получил свою первую работу. За спиной была неплохая теоретическая база по джаве и абсолютное незнание как это применить в реальном проекте.
С первого дня на проекте все пошло очень хорошо — на работу можно было приходить на 10-11 утра, а бесплатные фрукты и полдник обеспечили быстрое восстановление потраченных за полгода сил. С каждым днем, с каждой неделей я получал колоссальное количество опыта, которого так не хватало в период обучения — как собирается приложение, как оно взаимодействует с базой данных, откуда стартует, как деплоится и т.д. Обучение пошло гладко, эффективно и размеренно. А коллектив! Какой был коллектив! Все спокойные, размеренные, терпеливо отвечающие на тупые вопросы коллеги. Это было несравнимо с менеджерской суматохой. Ой ты не понимаешь? Так давай я тебе объясню! Супер.
За 9 месяцев работы, мы с моим коллегой внезапно поняли, что надо куда-то срочно двигаться, так как все было хорошо, кроме одного — не было разговорного английского. Совсем. Случайно наткнувшись на 2 вакансии middle & senior java developer мы отправились на собеседование. Меня, как претендующего на более простую вакансию, отмурыжили добрые 2 часа, а вот коллега обошелся 3-4 вопросами. Выйдя униженным и оскорбленным после 2-х часового интервью, я подумал, что в родном банке не так уж и плохо и неплохо бы набраться знаний и опыта еще пару лет, прежде, чем куда то собираться.
Нежданно негаданно через 2-3 дня нам обоим прислали офферы, что для меня было полнейшим шоком и через неделю раздумий мы покинули родные пенаты и отправились на новые испытания. На новом проекте, в новой компании, оказалось не то, что тяжело, а просто невероятно тяжело. Оказывается об улыбающемся русскоговорящем продукт менеджере, который был у нас в банке, можно было только мечтать! Ведь на этом проекте заказчик общался с программистами сам и лично раздавал задачи. Причем на английском.
Азы английского мы знали и могли читать, но на слух он воспринимался очень сложно. Не знаю, как он нас терпел, но первые 2-3 месяца мы понимали процентов 20 из того, что он сказал, а когда показывали реализацию, оказывалось, что еще меньше. Спасало то, что это стартап и не было ни дедлайнов ни продакшена. Спустя 4-5 месяцев, волею случая, большая часть команды нас покинула, в том числе и мой коллега, а меня гордо назначили тим лидом, да простят меня все настоящие тим лиды! Был уверен, что продержусь недолго, но получилось так, что уже полтора года исполняю эту обязанность. В данный момент процентов 30 времени занимает проектирование, 20 — администрирование (деплоем, CI и всей серверной частью полностью занимаюсь я), 20 — разборами задач с командой (мы косим под scrum и пытаемся делать planning митинги) и еще 30 на кодирование. Так же являюсь той самой прослойкой, которой раньше так не хватало между командой разработчиков и заказчиком.
Прошло уже полтора года в новой роли и два с половиной в роли программиста. Сейчас ожидаю поездку к бастиону Мировой Демократии, чтобы лично работать с заказчиком.
На данном этапе выделяю для себя несколько главных пунктов*, понимание и осознание которых, как мне кажется, даже важнее, чем знание того или иного языка программирования:
* — все субъективно и у каждого свой путь к успеху и свои принципы
Программист я или приспособленец? Вам, наверное, будет виднее, но одно знаю точно — я, человек, который любит свою работу и всегда идет к своей цели.
Случилось это ранней осенью несколькими годами ранее. Я решил стать взрослее и найти себе работу. Самому искать было неохота и я решил прежде опросить всех знакомых. И знакомых их знакомых. Далее рекурсивно. Через несколько недель опросов, знакомый знакомого моего знакомого сообщил мне, что его сын работает на клиентской поддержке одного крупного банка; рассказав мне все, что знал сам, включая номер его сынишки, я принялся набирать и расспрашивать оного. Услышав огромные цифры заработной платы и подсчитав, когда я куплю долгожданный Mercedes Benz, я вприпрыжку отправился на собеседование. На собеседовании милая девушка с незапоминающимся парнем попросили заполнить анкету на адекватность, содержащую вопросы типа “столица Японии”, “в каком месяце 28 дней”, “2+2*2” и т.д. Пролистав результаты анкеты и удовлетворительно кивнув они пригласили на личную беседу. Рассказав о себе и ответив на их несложные вопросы мне был обещан звонок “завтра” и я бодро ускакал домой, считая еще незаработанные деньги. Но звонок не последовал ни через день, ни через 2, ни даже через месяц. Ну и ладно, не очень то и хотелось.
В один прекрасный день, на зимней сессии 4-го курса технологического университета, в считанные дни до нового года, раздался звонок и женский голос объяснил мне, что я прошел собеседование в банк на оператора клиентской поддержки. А позвонили мне так поздно, потому, что я попал в кадровый резерв. Долгая ночь размышлений и вот он, первый день обучения на долгожданной работе. Условия были таковы — неделя обучения, за ней месяц стажировки за символическую плату и после прохождения всех экзаменов тебя могут взять на договор подряда. Платить пообещали даже больше, чем сын знакомого по телефону, правда обещали большие трудности на этапе обучения. Ах вы студент? У нас есть возможность работать 5 дней в неделю с 17.00 до 1.00. Супер.
Неделя стажировки закончилась 31 декабря. Увидев проходной балл в решающей контрольной работе, я понял, что прошел ее. Далась она совсем нелегко, т.к. в банквоском деле я ни ухом ни рылом, а надо было не просто все это понять, а еще и быть готовым объяснить клиентам! А карта и счет это не одно и тоже? CVV, извините вы о чем? Международная платежная система при снятии денег в банкомате? Как все сложно! Еще и регистрация электронной почты, ведение блога и гугл документов — ниче ж себе, как много я узнал за какие-то 5 дней.
Впереди был январь каникул и пол февраля карантина, так что было достаточно времени пройти месяц стажировки и к началу второго полугодия четвертого курса выйти на полноценно оплачиваемую работу с 5 до 1. Новогодняя ночь пролетела незаметно, как и сумбур всех новогодних праздников и в первых числах января меня завели в чат клиентской поддержки, познакомили с моим будущим супервизором и оставили вникать во все тонкости обслуживания клиентов. Куча программных комплексов, каждый со своими нюансами работы, параллельные экзамены и контрольные работы, все это было поперву сложно, но привыкнуть можно ко всему, вот и я привык. В феврале, сдав контрольный экзамен меня допустили к моим первым диалогам с реальными клиентами, да простят они мне тот бред, что я им нес в первые недели своей работы! Время потекло быстро и на удивление терпимо, график был прост — первые ленты на 8-10 утра, учеба, кстати это не пустой звук, я реально учился, строчив несколько лент подряд конспекты про все азы автоматизации производственных процессов. Учеба заканчивалась в 2-3 часа пополудни и в зависимости от заданных предметов я шел или в библиотеку, готовясь к контрольным точкам, или ехал в то место, где можно было поспать. В 5 вечера начиналась самая ответственная часть дня — рабочая смена. 8 часов выслушивания всей правды жизни про причины просроченных кредитов и объясняя, какие бывают депозитные программы, почему деньги не туда ушли ну и конечно же почему я вместе с “моим банком” такие идиоты и все у нас неправильно, в 2 часа ночи я был дома. И так циклично. Сложно было первые 2 месяца, потом начался диплом и на учебу можно было ходить реже, да и клиентов я начал лучше чувствовать, пошел нормальный заработок и уверенность в работе. Но что-то все равно было не так. Я чувствовал, что не для этого я изучал ассемблер на 3-м курсе и продавал решения дифференциальных уравнений однокурсникам. Мне вдруг в один момент стало казаться, что я делаю тупую работу, которую может делать каждый и нет ничего особенного в том, что я понимаю, как работают международная платежная система с банками эквайерами.
Случайно узнав об открытой вакасии старшего смены мониторинга электронных операций, я с удовольствием покинул надоевший чат, спустя 8 месяцев работы в нем, и отправился на месяц стажировки в отдел занимающийся борьбой с электронным мошенничеством. Стажировала меня девушка по имени Т, на которой я и женился годом спустя. Она мне рассказывала все тонкости мониторинга электронных банковских операций, научила при помощи программных комплексов банка выявлять мошенничество и естественно предотвращать его. Наконец-то, это было то, что надо! Сложная аналитическая работа, расследование следов мошенничества по IP адресам, мониторинг скимминга, фарминга, дух захватывало! Работа была 2 через 2 в ночь, при этом у меня была команда, во главу которой я и был поставлен. Спустя 5 месяцев, когда я достиг, как мне казалось, неплохих успехов в мониторинге, я перестал напрягаться на работе, весь мониторинг сводился к проверке элементарных правил, заполнения отчетов и прочей рутине, которая уже изрядно достала. А как все начиналось!
Нежданно негаданно, защитив диплом на последнем 5-м курсе, я получил предложение от руководства по повышению до руководителя безопасности интернет банкинга, перевестись в день и работать, как белый человек. В обязанности входило руководство операторами, анализ мошенничества и изобретение новых правил мониторинга платежей в интернет банке. Анализ был довольно банальным — на тот момент мониторинг интернет банка только зарождался, так что достаточно было глазами из выборки платежей выявить общие черты и разработать алгоритм — “чтоб такого больше не было”. Как оказалось в процессе работы, мне пришлось не только разрабатывать алгоритмы мониторинга, но и общаться с программистами и уговаривать их на внедрение оных. После 2 месяцев увлекательнейшей и кропотливой работы, волей случая, я был уволен. Это было сильным ударом, т.к. еще ни разу за 1.5 года я не оказывался без работы, к тому же веселые студенческие годы были позади и в настоящий момент я жил со старшим смены мониторинга по имени Т.
Оказавшись дома, я открыл гугл и ушел в интернет на несколько дней искать работу по специальности, ведь я был инженер по автоматизации производственных процессов! Обзвонив добрый десяток вакансий по специальности, я понял, что жизнь это боль и на зарплату в 150$ как то не прикольно переходить после того, что было в банке. В конец отчаявшись, я вернулся к своему давнему фетишу — когда то, программируя на ассемблере, я мечтал стать программистом! Но я не полез в интернет в поисках вакансий программиста ассемблерщика, т.к. уже знал, что это гиблое дело. Надо было найти более популярный язык программирования. Гугл по запросу “самый популярный язык программирования” вернул “Java”, я не стал с ним ни спорить ни переспрашивать и с нетерпением принялся за изучение. Что там сложного то? Я ведь ассемблер в некоторой степени уже познал?
Итак, начнем, первым броском к лучшей жизни стали скачанные 2 книги, неких Брюса Эккеля и Хорстмана. Потратив на них с неделю я понял как же сильно я ошибался… Объекты? Полиморфизм? Что это вообще? С чего начинать? К чему идти? Потерпев полную неудачу в чтении, меня посетило прозрение, что если смотреть видео, то все будет понятнее, ведь в университете, на лекциях, все было понятно! Мой выбор пал на первый сайт от гугла — javabegin.ru, на нем некий Тимур Батыршиннов поместил 7 ознакомительных уроков по java, которые я с большим удовольствием и небольшим пониманием посмотрел и повторил. После них пошли параллельно 2 книги — Герберт Шилдт “Полное руководство Java” и Вязовик Н. А. “Программирование на Java”. После видео ситуация прояснилась и книги пошли намного понятнее. После нескольких глав я снова пересматривал эти же видео и открывал в них новые детали. В этом всем обучении был один существенный недостаток — было абсолютно непонятно, до какой степени надо учиться, чтобы знаний было достаточно для устройства на работу. Так продолжалось весь август, а в начале сентября я узнал, что моя спутница беременна и хорошо было бы позвать ее замуж.
Ни медля ни секунды, пройдясь по бабушкам, дедушкам и прочим неравнодушным родственникам, собрав нужную сумму и отыграв свадьбу я проснулся и понял, что у меня все еще нет ни работы ни достаточных навыков для устройства на хорошую работу, я решил подхватить воспаление легких и полежать месяц в больнице. Месяц прошел довольно продуктивно — я продолжал интенсивное обучение в больнице. Связка «видео + чтение + опять видео + выполнение простых задачек» на определенную тематику давала намного большее понимание, чем по отдельности. Поняв азы синтаксиса, абстрактных классов, наследования, полиморфизма и наконец установив SQL сервер, я выписался и направился на предыдущее место работы надеясь на понимание и прощение. На удивление на мою должность никого не нашли и новый руководитель был не против моего восстановления на прежней должности.
Восстановившись на прежней должности и пообещав приличную автоматизацию существующих алгоритмов мониторинга электронных операций интернет банка, я принялся за анализ, но не тот анализ, которым занимался ранее — выявил, нарисовал схему, придумал алгоритм, который покрывает текущую схему, — тут надо было получить несколько миллионную выборку платежей, найти среди них мошеннические из статистики, выявить общую схему и придумать алгоритм. В общем стало понятно, что select * мало и пришлось осваивать синтаксис SQL запросов. Спустя несколько месяцев, поняв как работают подзапросы, left join и увалив несколько раз тестовую базу данных, я напрочь забросил изучение программирования и почувствовал себя крепко стоящим на ногах — ведь я был не просто fraud менеджером, я еще и неплохо разбирался в SQL!
Одним днем все изменилось. В банке работает множество систем, проверяющих лояльность сотрудников к банку и одна из них — полиграфическое тестирование. Сходив туда я получил приговор — рекомендован к увольнению. Все мечты и чувство полной стабильности и уверенности в завтрашнем дне рухнули в один миг. Горечи добавляла беременная жена, которая была уже в декрете и созерцать которую мне приходилось каждый день в однокомнатной убогой квартирке, на аренду которой уходила добрая половина зарплаты. Переоценка всех ценностей и знаний прошла за пару вечеров и я вновь взялся за программирование. Зная, что вскоре буду уволен, процесс пошел намного интенсивнее.
Через n недель после проваленного тестирования, пройдя серьезный разговор с Высшим Начальником, я был оставлен под 100 честных слов до следующего тестирования, которые должно было произойти внезапно-непонятно когда. Узнав эту новость, я хотел было расслабиться, но внутреннее ощущение скользкой почвы под ногами было уже не обмануть.
Прошло несколько месяцев, вспомнив хорошо забытое старое и узнав много нового, я все еще не мог понять, что такое enterprise и куда нужно совать методы и классы. Появилось чувство, что понимаю неплохо, а как использовать и куда развиваться дальше, было абсолютно непонятно. Случайно наткнувшись в сети на вакансию “бесплатное обучение Java на конкурсной основе”, я понял, что это шанс, который выпадает раз в жизни. Некая компания L утверждала, что если пройти 3 тестовых задания, 5 месяцев бесплатного обучения, сдать экзамен, то лучшие студенты получат работу. Медлить было нельзя — первое тестовое задание — онлайн задачки на джаве были по плечу и заняли от силы час. Вскоре со мной связались и пригласили пройти письменный экзамен. На экзамене, не было ни гугла ни ctrl+space после каждой точки, дали пустые листки бумаги, 5 задач и 2 на подумать. С задачами были трудности, что такое псевдокод я тогда не знал и нагородил все, что знал, включая JFrame и прочую ересь. Повезло с двумя задачками на подумать, решение которых и сыграло на мой взгляд ключевое значение. Неделю прокусав ногти, я все-таки дождался звонка и приглашения на третье, личное интервью. Прискакав в припрыжку в офис, ответив на ряд общих вопросов и прочитав кусок документации на английском они пообещали перезвонить через 3 дня. Звонок последовал только через 3 недели, когда я уже и думать забыл об обучении и давно обиделся на них.
Звонок порадовал не сильно, так как курсы были 3 раза в неделю, начиная с 2 часов дня. Супер, а как же работа? Офисная крыса должна была сидеть на месте с 8 до 18. Выручило опять же Высшее Начальство, которому я поплакался в рубашку, как же сильно я хочу быть программистом и что мне очень это нужно. Дали добро, но с условием, что я буду вырабатывать все те же 8.30 часов. Проведя несложную арифметику, я осознал, что 3 раза в неделю мне надо приходить на работу в 6 утра, потом идти на четырех-часовые курсы, а после еще делать домашку. Объем домашки предполагался 4-8 часов, она должна была задаваться после каждого урока. Не испугавшись ни капли я замер в ожидании начала курсов.
Начались долгожданные курсы, первый подъем в 4.30 утра, работа, первая лекция по джаве от настоящего профессионала! Был хмурый вечер понедельника и домашку надо было сделать до среды, то есть до следующего занятия. На ее выполнение ушло часов 12 — по шесть часов каждый день по вечерам. Поспав 3 дня подряд по 4 часа я понял, что надо что-то менять, иначе можно просто умереть.
Решения были таковы — хочешь выжать из своего тела максимум, значит надо держать в тонусе весь организм. Хорошенько поразмыслив, смешав несколько методик продвинутых гуру (или просто шарлатанов) я пришел к следующей программе. Подъем в 4-5 утра, никакого завтрака, только несколько гранул пчелиной перги. Утром, когда организм спит, пихая желудок едой, организм тратит слишком много энергии на запуск самого желудка и всех пищеварительных систем. Перга же содержит все необходимые витамины на весь день и практически не требует затрат организма на переваривание — то есть легко усваивается. Чтобы хорошенько проснуться — обязателен контрастный душ, он помогает разбудить организм и дает заряд энергии на несколько часов. Далее стакан кипяченой воды каждый час — чтобы кровь всегда была разжиженной и сердцу было легче ее качать. Чем легче ее качать, тем лучше питается мозг и тем яснее мысль. Пообедать нужно плотно — как раз все пищеварительные системы функционируют на полную катушку, так что организм затратит минимальное количество энергии на переваривание. После работы был настоящий brainstorm для мозга на курсах, после — хороший ужин часов в 7-8 вечера и до 10-11 учеба. К 10-11 часам обычно мозги затуманены прилично и становится учиться почти невозможно, так как плохо соображается. Всегда было 2 варианта — либо пойти спать, что делать нельзя было, иначе не успеешь с домашкой, либо пойти на вечернюю пробежку — 2-3 км легкой трусцой и мысли сразу прояснялись. После — 2-3 часа учебы и в 1-2 ночи спать. В таком темпе можно выдержать 5 дней в неделю, но на выходных обязательно нужно расслабиться и желательно хоть на день вообще забыть о программировании. В пятницу хорошо помогал алкоголь, в субботу — спортзал. Обязательно нужно было доспать все, что недоспал в будние. Если этого не сделать, следующую неделю можно было просто не выдержать. Под “не выдержать” я имею ввиду либо существенно потерять производительность, либо забить на учебу. 2 недели втягивался в новый ритм, а после — чувствовал, что могу даже меньше спать, но проверять не стал.
4 месяца учебы пролетели, как фанера над Москвой. Потеряв 10 кг веса, накачав пресс от бега и нарастив очень сильную теоретическую базу, оказавших одним из первых в рейтинге студентов, я отправился на первое свое собеседование в компанию L. Техническое интервью я прошел успешно, на все вопросы про ООП было легко отвечать, а сортировка пузырьком не составила особого труда. Зато я успешно провалил второе — на английском. Сильно не расстроившись, я узнал, что у нас в банке, можно так же перейти в отдел программирования, тем более что некоторых программистов я уже знал, будучи менеджером.
Пройдя устное интервью, я получил свою первую работу. За спиной была неплохая теоретическая база по джаве и абсолютное незнание как это применить в реальном проекте.
С первого дня на проекте все пошло очень хорошо — на работу можно было приходить на 10-11 утра, а бесплатные фрукты и полдник обеспечили быстрое восстановление потраченных за полгода сил. С каждым днем, с каждой неделей я получал колоссальное количество опыта, которого так не хватало в период обучения — как собирается приложение, как оно взаимодействует с базой данных, откуда стартует, как деплоится и т.д. Обучение пошло гладко, эффективно и размеренно. А коллектив! Какой был коллектив! Все спокойные, размеренные, терпеливо отвечающие на тупые вопросы коллеги. Это было несравнимо с менеджерской суматохой. Ой ты не понимаешь? Так давай я тебе объясню! Супер.
За 9 месяцев работы, мы с моим коллегой внезапно поняли, что надо куда-то срочно двигаться, так как все было хорошо, кроме одного — не было разговорного английского. Совсем. Случайно наткнувшись на 2 вакансии middle & senior java developer мы отправились на собеседование. Меня, как претендующего на более простую вакансию, отмурыжили добрые 2 часа, а вот коллега обошелся 3-4 вопросами. Выйдя униженным и оскорбленным после 2-х часового интервью, я подумал, что в родном банке не так уж и плохо и неплохо бы набраться знаний и опыта еще пару лет, прежде, чем куда то собираться.
Нежданно негаданно через 2-3 дня нам обоим прислали офферы, что для меня было полнейшим шоком и через неделю раздумий мы покинули родные пенаты и отправились на новые испытания. На новом проекте, в новой компании, оказалось не то, что тяжело, а просто невероятно тяжело. Оказывается об улыбающемся русскоговорящем продукт менеджере, который был у нас в банке, можно было только мечтать! Ведь на этом проекте заказчик общался с программистами сам и лично раздавал задачи. Причем на английском.
Азы английского мы знали и могли читать, но на слух он воспринимался очень сложно. Не знаю, как он нас терпел, но первые 2-3 месяца мы понимали процентов 20 из того, что он сказал, а когда показывали реализацию, оказывалось, что еще меньше. Спасало то, что это стартап и не было ни дедлайнов ни продакшена. Спустя 4-5 месяцев, волею случая, большая часть команды нас покинула, в том числе и мой коллега, а меня гордо назначили тим лидом, да простят меня все настоящие тим лиды! Был уверен, что продержусь недолго, но получилось так, что уже полтора года исполняю эту обязанность. В данный момент процентов 30 времени занимает проектирование, 20 — администрирование (деплоем, CI и всей серверной частью полностью занимаюсь я), 20 — разборами задач с командой (мы косим под scrum и пытаемся делать planning митинги) и еще 30 на кодирование. Так же являюсь той самой прослойкой, которой раньше так не хватало между командой разработчиков и заказчиком.
Прошло уже полтора года в новой роли и два с половиной в роли программиста. Сейчас ожидаю поездку к бастиону Мировой Демократии, чтобы лично работать с заказчиком.
На данном этапе выделяю для себя несколько главных пунктов*, понимание и осознание которых, как мне кажется, даже важнее, чем знание того или иного языка программирования:
- Движение вверх, не важно расширение ли это или углубление кругозора, человек должен отматывать свою жизнь на год назад и сравнивать, что изменилось с того момента до сейчас. Если ничего, то стоит обдумать почему. Как сказано в одной чудесной английской поговорке “Катящиеся камни не обрастают мхом”.
- Выход из зоны комфорта. На всем пути от джуниора до синьора должны быть постоянные трудности и вопросы. Как только стало комфортно и рутинно на n месяцев, надо уходить. Величина n у каждого своя, но чем ближе специалист к джуниору, тем меньше она должна быть.
- Если долго бить в одну точку в стене, то ее намного легче сломать, чем нанося удары в разные места. Так же и со знаниями — намного больше знания можно добыть в течение времени t в одной области знаний, чем в нескольких.
* — все субъективно и у каждого свой путь к успеху и свои принципы
Программист я или приспособленец? Вам, наверное, будет виднее, но одно знаю точно — я, человек, который любит свою работу и всегда идет к своей цели.