Два года и три месяца прошло с тех пор как я зарегистрировался на JavaRush и написал HelloWorld. Давно надо было отдать дань уважения замечательному ресурсу и написать эту статью, но стремительный ход жизни как-то не позволял. Но вот теперь "благодаря" известному вирусу есть время.
Мне было 33. Я был социальным работников в Латвии, и никакого отношения к IT не имел. Последний опыт общения с кодом был 15 лет назад. Однако, маленькая зарплата и карьерная бесперспективность заставляли меня искать альтернативу. Тут, как раз, многие мои знакомые попробовали себя в IT сфере. Причём ни у кого не было академического айтишного образования. Кто-то устроился, кто-то не очень. Но удачные примеры меня очень воодушевили, и я наконец решился.
В Риге одна всем известная консалтинговая компания раз в полгода организовывала серию бесплатных буткампов (интенсивных тренировочных курсов) с последующей возможностью (для успешно закончивших) получить практику и контракт. Некоторое время я потратил на раздумия насчёт того, какой курс выбрать. В итоге выбрал Java, поскольку именно этот буткамп давал наибольшее количество возможностей после окончания.
Мне удалось провести разведку и поговорить с участниками буткампов, включая тех, кто уже получил работу в компании. Разведданные были таковы: курс крайне интенсивен, приходить туда с нулевыми знаниями не имеет смысла, лучше вообще всё самому выучить ещё перед буткампом. Поэтому я уволился с работы (в ноябре 2017-го) за четыре месяца перед буткампом, засел дома на пособии и немногочисленных сбережениях, и начал интенсивно учиться.
Какова же была программа обучения? Ну, во-первых, разумеется, JavaRush — он был практическим крылом моего обучения. Теоретическим крылом был Head First Java (русский перевод, Java 5). И надо сказать, JavaRush и Head First Java прекрасно дополняли друг друга. Книга давала отличный обзор базовых возможностей языка. Причём подавался материал при помощи легко усваиваемой визуализации и ассоциаций (стакан с пультом — это реально замечательно). Знаю, что матёрые технари эту книгу недолюбливают именно за подобную форму подачи, но если вы пришли из гуманитарной сферы — это то, что надо.
Таким образом, моё учебное расписание выглядело так: с утра 3 часа теории по Head First Java, после обеда — 3 часа практических задач с JavaRush. 6 часов каждый день, включая субботу-воскресенье и все праздники. Очень интенсивно, даже возможно, слишком интенсивно, я себе таким режимом заработал определённые проблемы со здоровьем. Если у вас есть время и финансовый резерв, такой интенсив не рекомендовал бы. Но у меня этого не было, и провалить буткамп я не мог.
Так я занимался 4 месяца до начала буткампа, дошёл до 23 уровня в JavaRush с честным решением всех задач (а некоторые из них заставляли весьма попотеть) и закончил книгу с выполнением всех заданий. Было ещё пару недель до буткампа, можно было и дальше по уровням идти, но я решил освоить всякие смежные навыки, вроде git.
В начале марта 2018-го года начался буткамп. Интенсивность курсов тоже была высокая, но обнаружилось, что из всех тем я не имел дело только с двумя: написанием юнит-тестов и JavaFX. Ставка на жёсткое самообучение оправдалась. Обнаружилось, что я вроде как и не самый худший в группе. Кроме того, я решил проявить инициативу и кинуть питч для финального проекта. Собралась маленькая, но замечательная команда, благодаря которой было создано приложение для работы медсестёр (бекграунд социального работника давал о себе знать).
В общем, буткамп закончился хорошо, и я получил практику и даже имел возможность выбирать специализацию. Тут я совершил гнусное предательство и вместо хардкорной Java выбрал Salesforce.
Salesforce начинался как облачная CRM (Customer Relationship Management) система, которая давала довольно широкие возможности для кастомизации. Но спустя много лет — это уже мощная полноценная платформа, на которой можно делать почти всё что угодно, я видел множество проектов, который никакого отношения к CRM не имели. По сути, Salesforce сейчас — это облачная БД, к которой множеством способов можно прикрутить почти всё, что угодно.
Для бекэнда в Salesforce используется Apex — своего рода "Java для пенсионеров". Синтаксис Java нечувствительный к регистру, нет управляемой многопоточности, относительно небольшое количество встроенных классов, практически весь код крутится вокруг записи и извлечения из базы данных Salesforce. Но есть и свои сложности. Запуск Apex-кода происходит на стороне сервера, где теоретически любой юзер Saleforce может претендовать на всю мощность облака, и чтобы предотвратить монополизацию ресурсов, существует множество лимитов (governor limits). Эти лимиты накладывают отпечаток на все кастомизации Salesforce, включая Apex. Это приводит к тому, что порой Apex-код с точки зрения Java-разработчика выглядит странновато.
Кроме Apex, в SF существует три собственных фронтенд-фреймворка: Visualforce, Aura Components и совсем свежий Lightning Web Components. Первые мои задания после получения контракта в начале июля были связаны со вторым из них. Это было моё первое знакомство с JavaScript: языком, который я с трудом, но постепенно полюбил. Впрочем, я активно работал и с JavaScript, и с Apex, т.к. первое, что я узнал про Salesforce, это —
every marine is a rifleman в Salesforce мы все Full Stack.
Кроме того, как я уже упоминал, Salesforce — это целый мир: не просто какой-то отдельный язык. Кроме кода есть множство декларативных тулов — Process Builder, Flow Builder, Workflow Rules, Validation Rules и прочие. Мне это чрезвычайно нравится, т.к. означает, что одна задача имеет множество решений, и обычно оптимальное из них связано с возможностью избежать кода. Были случаи, когда некоторые разработчики не задумываясь писали стену кода, чтобы выполнить задачу, которая решалась отметкой двух чекбоксов в конфигурациях.
В общем, первые два месяца я интенсивно осваивал платформу, а потом получил контракт. Работать сразу пришлось только на английском, но с этим проблем не возникло, и я совершенно не пожалел, что учился на русском. Осваивать довольно сложные понятия мне было легче на родном языке. Первые три месяца контракта я психовал, но потом втянулся. Сдал пару Salesforce сертификаций — App Builder и Platform Developer 1.
Дальше всё вошло в колею: я ровно отработал полтора года в моей первой компании (спасибо ей огромное за это), затем через LinkedIn получил приглашение из Лондона, откуда я сейчас и пишу эту статью в наглухо запертой комнате, обложившись продуктами, дезинфекторами и самой ценной в наше время бумагой — туалетной. Моя новая компания работает с Vlocity, устанавливаемом на Salesforce управляемым пакетом: по сути, платформой на платформе. Vlocity даёт множество дополнительных тулов для кастомизации и создания пользовательских интерфейсов. В данный момент у меня всего 20-30 процентов работы связано с кодом, остальное — с этими самыми тулами. Но я в принципе очень доволен.
JavaRush я рекомендовал всем друзьям, которые интересовались возможностью переквалификации. Это абсолютно незаменимый инструмент (в русскоязычном сегменте уж точно). Некоторые задачи провоцируют пар из ушей, тратил на них 2-3 дня. Это очень хороший наруб экспы. Кстати, в работе встреча с подобными задачами была довольно редким событием.
В целом переквалификация в разработчика из социального работника потребовала интенсивных усилий, но чем-то вроде восхождения на Эверест это всё-таки не было. Мой совет: учитесь усердно, но не стоит перенапрягаться (можете поиметь проблем со здоровьем). 1-2 часа в день недостаточно, 6 много, 3-4, наверно, в самый раз. Если есть возможность уйти с работы — уходите. Совмещать работу с обучением для меня оказалось не вариантом после первых же попыток. Семья моя увольнению не была рада, но в моём случае риск себя оправдал. Если есть сбережения, их использование в такой ситуации можно расценивать как инвестицию в себя. Изучите все доступные крупные консалтинговые компании. В некризисные времена у них много проектов, им требуется много разработчиков, они готовы дать шанс новичкам, часто сами организуют обучение. И главное: им важно не твоё образование, а твой скилл. Если вы capable, из консалтинга вас никто не выгонит.
Ну вот, собственно, и всё: желаю вам удачи в ваших первых шагах в мире IT. Грызите все JavaRash задачи подряд, не филоньте, перескакивая в следующие темы. Практика здесь поставит вам мышление в нужное русло. Если это произойдёт, то поверьте: вы не пропадёте не только в Java, но и в любом другом языке или технологии.
Alex Yedamenko
23 уровень
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ