Хабрахабр

[Из песочницы] Разработчиком на удаленке – c нуля до героя

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

Джуны на удаленке не нужны

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

И эта история про то, как я дошел до такой жизни. И так, меня зовут Сергей, я enterprise-разработчик, я живу в городе Уссурийск (Приморский край, 200к население, +7 часов с Москвой), у меня нет профильного образования, и я ни дня не работал в офисе разработчиком.

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

После университета

Изначально я планировал работать в игорной сфере, поэтому после школы пошел на «Социально-культурный сервис и туризм», однако на 2 курсе вышел закон РФ о запрете игорной деятельности. Хотя я живу в Приморском крае, где должны были к 2012 году построить казино, все сроки сорвали, и фактически к моменту моего выпуска ничего не было. Точнее были подпольные казино, но это были те места, где тебе бы точно не хотелось работать.

Это все заняло примерно полтора года. Как итог, я устроился сначала в оптовую компанию по продаже риса, потом ушел оттуда на монтажника подключения интернета, а потом уже в поддержку в 1С-Франчайзи. Как говорится, в руках красный диплом универа, и все двери перед тобой открыты.

Техническая поддержка

Все это время я просматривал что-то более подходящее, и в один день на «Моем Круге» увидел вакансию в ночную техническую поддержку. Я прикинул, что с учетом моего часового пояса, 7 утра по Владивостоку, это 0-00 по Москве, я смогу работать в ночную смену фактически днем. Я откликнулся, прособеседовался и устроился на работу.

Я еще со школы увлекался сайтостроением и делал различные сайты для своей команды по дотке и местного игрового клуба. Естественно, просто так левого человека не возьмут в поддержку. У меня фактически был уровень такого хорошего веб-мастера с английским языком, плюс опыт поддержки из 1С. Плюс из-за моего образования, у меня был достаточно хороший английский язык, что позволило мне также оказывать поддержку клиентам из Австралии, Новой Зеландии и США.

Движение дальше

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

Поэтому я начал изучать программирование с него. Это был 2014 год, везде кричали, что php-отстой, что python – это будущее и прочее (Как я был наивен и глуп!). Как я это сделал:

Книги дались достаточно сложно, ибо читать их было крайне скучно, тем не менее, они дали очень хорошую базу. 1) Скачал книги Марк Лутца «Изучаем Python», «Программируем на Python». Важно понимать, не только «Как», но и «Зачем» и «Почему». Если у вас есть выбор, начать быстро или прочитать какую-то фундаментальную книгу по программированию, то я настоятельно рекомендую начать со второго, чтобы получать необходимую базу.

В частности было интересно увидеть, как определенные люди оставляют комментарии, в частности их огромное количество. После книг я решил немного поиграться и начал писать различные парсеры для игровых порталов (Brablay/GoodGame) с целью сбора статистики по определенным темам.

Прочитал книгу по Django (Если честно не особо её понял – информация давалась слишком быстро и слишком «вакумно»). 2) Потом я решил сделать что-то более значимое и собрать статейный портал на Python. Поэтому посмотрел пару вступительных роликов по Django от ITVDN и обратился к официальной документации.

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

Я стал смотреть, что еще можно придумать на Python. 3) Через год мне наскучило разрабатывать проекты на Django. Начиная от книги по Devops, заканчивая компьютерным зрением и машинным обучением. Я, наверное, прочитал все книги по Python, что были на сайте Ozon. Эти темы не особо меня вдохновили (я не видел прикладного значения в моих масштабах, что я могу использовать прямо здесь и сейчас), но эти термины из какой-то неведомой магии и «скайнета», превратились в обычные формулы и прикладные библиотеки.

Если честно достаточно интересный опыт, когда ты понимаешь, как работает другая технология, на что она опирается, какие несет в себе сложности, и как она решает «сложные задачи» из твоего стека. 4) В итоге, я решил немного поднять свой уровень компьютерной грамотности и начал читать книги по C/C++/Java/Компьютерным сетям/PostgreSQL/TDD и Корпоративным паттернам.

Отдельно можно отметить книгу по Spring, которая показала, насколько корпоративное приложение сложнее, чем «easy-going» проекта на Django.

Тестирование и Автоматическое тестирование

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

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

Естественно, это автоматизация тестирования на селениуме с дерганием тестов через jenkins при релизах новых билдов.

В компании был большой пул различных курсов по тестированию, поэтому с ними можно было узнать много крутых фишек, о которых ты вообще раньше не задумывался из сферы тест-дизайна. Отдельно понравилась тема тест-дизайна. Это крутые штуки из работы QA-Инженера, о котором многие разработчики даже не задумываются. Например, проектирование минимального числа тест-кейсов, чтобы покрыть наиболее количество вариантов системы с помощью pairwise (http://www.pairwise.org/) генераторов.

Переход в разработку

Через полтора года в отделе тестирования, я получил договоренности, что если я предоставлю рабочий прототип на php-стеке, я получу возможность пройти стажировку в отделе разработки.
Один месяц у меня ушел на книги по PHP. После Python и Java освоить PHP оказалось достаточно легко, хотя время от времени и появлялись вопросы «А почему тут так нельзя».

Внезапно оказалось, что Symfony – это своего рода гибрид Django и Spring, поэтому каких-либо проблем с пониманием вообще не возникло. И три месяца я потратил на АПИ-сервис на Symfony (веб-морда, личный кабинет, бизнес-логика, почтовые уведомления, пдф-генератор, парсинг сложных json-структур и прочее).

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

Первые месяцы в качестве разработчика

Мне предоставили ментора, который фактически ревьювил мой код и подсказывал, почему нужно делать так, а не иначе. Иногда созвоны длились по полтора-два часа, когда детально разбирался код по шаре и давались рекомендации, как его улучшить. Фактически получалось так, что я давал решения в нужные сроки с нужной логикой, но за счет того, что у меня не было опыта корпоративной разработки, они получались слишком запутанными и усложненными. Плюс время от времени появлялись вопросы по работе Redis/RabbitMQ/Elastic итд. Но все же главная работа велась в сфере, чтобы упросить код и сделать его тестируемым (когда пишешь код для себя, даже не задумываешься, что другие люди не смогут его читать). Как итог, за 4 месяца мой код подтянулся по стилю до корпоративных стандартов.

Опыт работы в команде сложно чем-то заменит. Реально, когда пишешь код сам, даже не задумываешься о том, как его будут понимать другие люди, и правильно ли излагать свои мысли таким образом.

Общий стаж, чтобы получить работу разработчика на удаленке с нуля – 4 года, 9 месяцев.

Как итог об удаленной работе с нуля:

  • Вероятность получить работу разработчиком на удаленке, пройдя какой-то курс и почитав какой-то туториал – стремится к нулю.
  • Вероятность справиться даже с работой джуна на удаленке без опыта коммерческой разработки, либо каких-то собственных проектов – стремится к нулю.
  • Вероятность того, что без каких-либо рекомендаций, компания будет тратить на вас время, чтобы чему-то научить – стремится к нулю.
  • Вероятность того, что прочитав какие-то книжки, и устроившись на удаленку, вы будете получать какие-то «большие деньги» — стремится к нулю.
  • Принять решение в начале своей карьеры, чтобы отказаться от офиса и искать удаленку – большая глупость.
  • Отказываться от других айти-работ, так как вы хотите быть только разработчиком на удаленке с самого начала своей карьеры и никак иначе – большая глупость.
Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть