...

вторник, 22 сентября 2015 г.

Как я стал программистом. Путь от питерского бездомного до Senior Developer-а за 6 лет

Всем привет! Меня зовут Андрей, я работаю в отделе разработки продуктов Veeam Software.

В этом году исполняется 6 лет с того дня, как я «пришел» в программирование. К слову, случилось это стихийно, и на момент написания своего первого кода, у меня за плечами не было ни профильного образования, ни малейшего опыта. Сегодня же, я создаю продукт, признанный и уважаемый во всем мире.

Сегодня я хочу рассказать свою историю.
Итак, начну с момента, когда мне исполнился 21 год, я уволился из рядов доблестной российской армии и оказался на серых и холодных улицах Санкт-Петербурга. Осень, отсутствие жилья и денег активировали все клетки головного мозга для ответа на вопрос: «Что делать?».

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

Охранник книжного склада (я же в культурной столице) — это та самая профессия, которая могла обеспечить все эти пункты. Через череду невероятных событий, совпадений и неудач я устраиваюсь на работу в офис одной очень известной в городе розничной сети по продаже книг, где находился и склад хранения.

Я стал там жить и работать: душ, компьютер секретаря, целый склад книг и три стула для сна. Так пролетели 5-6 месяцев. Я уже хорошо освоил на тот момент Visual Basic for Application и T-SQL и начал писать различные макросы автоматизации работы с Excel для секретаря. Я познакомился с ребятами из IT отдела, они мне выделили изолированную «песочницу» на виртуальной машине, куда я поставил Visual Studio и начал изучать уже более взрослые языки: C++ и C#. Не забывал я и о художественной литературе: за это время я успел существенно расширить свой кругозор в этой области. Благодаря этому, девушки из отдела персонала предложили мне устроиться продавцом-консультантом. Я согласился и стал работать днем продавцом на пл. Восстания, а ночью — охранником офиса. В таком режиме я проработал еще полгода, у меня появилась возможность снять жилье. В то же время, управляющая магазином предложила мне стать старшим продавцом. Я уволился из охранников и стал работать ночью в магазине. Должность ночного старшего продавца предполагает очень много рутинной работы по заполнению всяких файлов, отчетов, составления графиков рабочего времени.

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

С коллегой на работе в том самом книжном магазине (я слева).

В магазине были некоторые отделы, где я откровенно не знал ассортимент и не мог найти нужную покупателю книгу. Поисковый терминал честно говорил, что книга есть в магазине, но на каком стеллаже и полке — было неизвестно. Я взялся за решение этой проблемы. В моем распоряжении были несколько древних, уже списанных ТСД (терминал сбора данных) и компьютер, который я стал использовать как сервер. Так я начал писать свое первое клиент-серверное приложение. Уже через месяц я смог продемонстрировать работу программы на одном из отделов магазина, чем вызвал интерес у руководства. Мне предложили продолжить развивать свое приложение уже по-взрослому: составить план проекта с целями, сроками и бюджетом. Так я стал руководителем проекта «Адресное хранение». За все это время я набил миллион шишек и изобрел множество велосипедов, но это был бесценный опыт и я смог запустить свой проект в крупных магазинах сети.

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

Начал искать новую работу. Был на многих собеседованиях, где-то не нравился я, где-то не нравилось мне, но однажды на HH.ru наткнулся на вакансию в компании Veeam: требованиям я соответствовал. Я начал читать о компании, чем занимается и т.п. И понял, что совершенно не понимаю, о чем идет речь. Фраза «резервное копирование виртуальных машин и мониторинг виртуальных сред» повергла меня в шок. Но я отлично помнил выражение: «Программист — это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали». Значит, пора стать настоящим программистом. Я решил, во что бы то ни стало, работать в Veeam. В последствии выяснилось, что компания Veeam предоставляет решения, без которых просто не мыслима работа крупных компаний, гос. учреждений, банков и т.п.

Меня пригласили на интервью. От огромного желания получить работу, я заикался и делал глупые ошибки, но в меня поверили и взяли в команду UI. Видимо, меня спасли те самые «горящие глаза», о которых было написано в требованиях к вакансии.

Первые две недели работы я сидел с широко открытыми глазами: такого огромного и непонятного количества кода я не видел никогда. Своих коллег я воспринимал магами: они говорили и делали непонятные слова и вещи.


Это я в процессе работы.

«Сейчас я тебе все объясню», — сказал мне мой Team Lead, его рассказ был очень интересным и совершенно непонятным. Постепенно, день за днем, слова моих коллег стали приобретать смысл, я уже заканчивал свой первый «визард». На первых порах весь свой код я писал, используя широко известную практику «копипаста», Ctrl+C — Ctrl+V – 1я стадия программиста. Затем — «прозрение»: начинаешь использовать везде, где нужно, а чаще, где совершенно ненужно — «Software design patterns» — это очень опасная 2я стадия программиста: наступает, так называемый «паттерн головного мозга». Если остаться на второй стадии, то твой код будет понятен только тебе и только на момент написания, а коллегами ты будешь проклят. Как раз из второй стадии выдернула меня моя команда, вот тут я понял по-настоящему, что значит командная разработка. «Так писать не нужно» — это не аргумент, поэтому через шутки и примеры мне буквально на пальцах объяснили, где правильно, а где нет использовать сложные конструкции и шаблоны. Итак, через «грабли», «велосипеды» и помощь коллег наступает 3-я стадия: «код нужно писать так, чтобы он был понятен более одного дня не только автору, но и людям, которые работают с тобой».

Но, внезапно, оказывается, что код, который ты пишешь, должен делать ровно то, что от него ожидают пользователи. Наступает время знакомства с отделом «QA», т.е. с тестировщиками. Эти ребята просто «профи»: продукт знают «от и до», по логам могут найти самые неочевидные баги и дать им полное и понятное описание, но и не пропустят смещение на пиксель кнопки. Мы любим QA так, как могут любить разработчики тестировщиков :).

А если серьезно, то за три года работы в компании я еще ни разу не видел, чтобы разработчик и тестеровщик не нашли общий язык. Спорим часто, но ведь только так рождается истина. В описании компании обещали дружный коллектив, есть подозрение, что не соврали :).

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

В ноябре прошлого года мы выпускали очередную версию программы. Для меня это стало важным моментом, во многом определившим дальнейшую мою судьбу. Все начиналось так:
— Андрюх, прикрути в трей иконку для Endpoint (наш новый продукт для ноутбуков и настольных ПК).
— А, ОК, сегодня сделаю.
Закончилось полноценным Modern UI приложением с анимацией, графиком, автоматическим обновлением, уведомлениями и многим другим, через несколько месяцев.

Пришлось, конечно, попотеть, но все получилось. Меня отметили, и вот, я уже Senior Developer. И теперь уже ко мне на собеседования приходят разработчики, и теперь я сам ищу среди них те самые «горящие глаза», которые несколько лет назад увидели во мне самом.

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

Наш продукт растет и завоевывает признание все большего количества пользователей (что безмерно тешит мое самолюбие). На фоне этого развивается и компания в целом. Скоро планируется открытие нового офиса Veeam в Праге. Мне предложили переехать, я подумал (да-да, я не сразу стал паковать чемоданы) и согласился. Теперь вместе с другими девелоперами команды (и матерыми программерами, и новичками) планируем переезд, освоение новой локации, познание чешского пива, ну и, самое главное, новых интересных задач!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Комментариев нет:

Отправить комментарий