Як я змінив кар’єру, щоб стати інженером-програмістом за 11 місяців (і як ти теж можеш)

Перш ніж я вирішив перейти до інженерії програм, я був маркетологом у світі технологій. Я спробував чимало видів маркетингу - події, зв’язки з громадськістю, оптимізація пошукових систем, створення контенту, цифрова реклама, маркетинг електронною поштою - але так і не знайшов ідеального рішення.

Моєю останньою компанією був персональний фінансовий стартап із солідним визнанням бренду. Їх девізом було зміст - король . На відміну від більшості технологічних компаній, там було безліч редакторів та журналістів і лише декілька інженерів програмного забезпечення.

Через рік після мого початку, компанія вирішила змінити свою стратегію. Вмісту вже не вистачало. Цього року безліч нових стартапів із особистих фінансів запустили мобільні додатки, обіцяючи допомогти споживачам відстежувати їх фінанси, навчитися складати бюджети, ліквідувати борг за студентською позикою та консолідувати платежі за кредитними картками. Не бажаючи залишатися позаду, моя компанія почала проріджувати редакційну сторону бізнесу, швидко наймаючи людей, інженерів та дизайнерів.

Внутрішнє відчуття змусило мене тоді зрозуміти, що пора перемикати передачі. ⚙️

У цій статті я розповім про те, як я змінив кар’єру та став інженером-програмістом від початку до кінця. Тож давайте почнемо.

Крок 1: Дослідження захоплюючих програм

Я почав досліджувати захоплюючі класи з програмної інженерії. Мені сподобалось, що App Academy та Hack Reactor пропонують безкоштовні вступні заняття, щоб допомогти майбутнім студентам підготуватися до вступних іспитів. Я також чув позитивні речі про Хекбрайта і з тих пір зустрічав низку талановитих жінок, які відвідували їхню програму.

Зрештою, Hack Reactor підкорив мене тим, що запропонував строгий одномісячний курс Структурованої навчальної програми (SSP). Програма була розроблена для перетворення учасників від початківців до Hack Reactor Immersive ready.

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

Крок 2: Занурення в кодування

Коли я зосередив свою увагу на Hack Reactor, мені потрібно було підготуватися до SSP та вступного іспиту. Для цього я пройшов курс Udacity Intro to JavaScript разом з кількома іншими онлайн-курсами з JavaScript.

Між SSP та захоплюючою програмою Hack Reactor я провів чотири місяці, кодуючи до 6 днів на тиждень , 12+ годин на день . Я відточив свої навички вирішення проблем, поліпшив своє розуміння JavaScript, вивчив фронтенд-енд-енд-енд-фреймворк і навчався працювати разом з іншими інженерами.

Крок 3: Навчіться для пошуку роботи за допомогою онлайн-курсів

Наскільки інтенсивним був мій досвід у Hack Reactor, це був лише початок. У мене зростав список понять, з якими я боровся під час програми. На початку цього списку були алгоритми та структури даних.

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

Злом інтерв’ю з кодування розглядається як передостанній ресурс для вивчення алгоритмів. Однак це був не той ресурс, який я знайшов найбільш корисним особисто. Натомість ось такі ресурси я використовував для підготовки до технічних співбесід та на місцях:

  • CodePath - 8-тижневий курс, що охоплює всі найпоширеніші питання співбесіди від структур даних до дизайну системи
  • InterviewCake - посібник, який пояснює найпоширеніші закономірності, виявлені в алгоритмічному мисленні
  • LeetCode - нескінченні проблеми практики
  • Grokking інтерв’ю з проектуванням системи - пояснення компромісів, пов’язаних із загальними питаннями дизайну системи, наприклад, як створити Instagram

Крок 4: Отримайте поради досвідчених інженерів

Я звернувся до тонни старших інженерів з моєї мережі за порадою щодо пошуку роботи. Кожен був прихильний до свого часу і був радий побачити нові типи талантів, які з’являються в галузі. Ось декілька найбільш корисних порад:

  • Займіться ногою у двері: кожен інженер повинен десь починати. Багато інженерів потрапили у фірми, що працюють під торговими марками, після роботи над крихітними іменами без імен. Не хвилюйтеся, якщо відразу не знайдете ідеальну посадку.
  • Перепишіть своє резюме: якщо ви новий інженер, ваше резюме, швидше за все, написане таким чином, щоб зробити вас справді молодшими. Зосередьтеся на компромісах і технічних рішеннях, які ви прийняли, а не на тому, що реалізували.
  • Шукайте можливості наставництва: прагніть до команди із понад 30 інженерами, оскільки це навчить вас кращим практикам кодування та надасть можливості наставництва. В іншому випадку знайте, ким буде ваш менеджер, і переконайтеся, що вони здатні допомогти вам приймати технічні рішення (молодих менеджерів-інженерів часто відводять на роль з обмеженими людьми чи досвідом керівництва).
  • Робота над особистими проектами: це продемонструє ваш ентузіазм до інженерії під час пошуку роботи та дасть вам щось унікальне, про що можна поговорити на співбесідах.

Крок 5: Ігноруйте непотрібні поради рекрутерів та інших

Мій пошук роботи відбувся влітку 2018 року. Я навчився висловлювати багато доброзичливих, але безкорисних пропозицій. Вони надходили від вербувальників, колег-інженерів та стурбованих друзів. Ось деякі з них:

  • За останні кілька років ринок праці сповільнився для інженерів початкового рівня. Середні компанії наймають лише на вищі посади і заважають молодшим кандидатам.
  • Ринок не тільки перенасичений, але і якість випускників буткемпів знизилася за останні роки. Буде важко знайти роботу.
  • Ви сильний кандидат, але наша компанія не має ресурсів для наставництва. Будь ласка, залишайтесь на зв’язку, ми хотіли б ще раз взяти у вас інтерв’ю, коли у вас буде більше досвіду.
  • Успіхів у наймі на літо. Ви змагаєтесь зі всіма студентами інформатики, які проходять літню практику. Спробуйте ще восени, коли відкриється більше позицій.
  • Успіхів із наймом протягом осені. Наймання буде сповільнюватися в міру наближення компаній до Q4. Якщо цього літа ви не знайдете роботу, вам доведеться почекати до наступного року.
  • Спробуйте стати менеджером з продуктів або знайти стажування. Можливо, ви зможете зайнятися розробкою програмного забезпечення, коли будете готові.

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

Крок 6: Створіть план навчання

Після Hack Reactor я витратив багато часу на перегляд технічних концепцій, готуючись до технічних екранів та інтерв'ю. Ось мій приблизний план навчання:

  • Вивчення алгоритмів та структур даних.
  • Дизайн навчальної системи.
  • Зробіть хакатон (це не навчить вас найкращим інженерним практикам, але це веселий груповий досвід).
  • Створіть особисте портфоліо (або інший проект, про який ви можете поговорити).
  • Записуйте кожне запитання співбесіди з кожного екрану телефону та на місці. Перегляньте відповіді, яких ви не знаєте.
  • Практикуйтеся з іншими. Алгоритми веселіші, коли ви працюєте над ними в невеликій групі. (Прамп і CodePath були двома способами, якими я знайшов практичних партнерів).

Крок 7: Створіть присутність в Інтернеті

Спростіть рекрутерам вас знайти. Створіть надійні профілі із скріншотами проектів та посиланнями на GitHub на наступних сайтах. Не соромтеся натискати посилання, щоб переглянути мої приклади (або зв’язатися зі мною):

  • LinkedIn
  • Найнятий
  • AngelList
  • Особисте портфоліо
  • GitHub

Важливо показати потенційним роботодавцям якість вашої роботи. Фотографії, відео, посилання на живі проекти, добре задокументовані README та чисте кодування полегшують рекрутерам ризик на вас.

Крок 8: Пам'ятайте, це гра в цифри

Я часто чув приспів: "Це просто гра в цифри", який часто доводився від інженерів, кар'єрних тренерів та наставників. Зрештою, ось мої номери:

Мої заявки були в основному на вході, з деякими рефералами, деякими рекрутерами, які зв’язувались зі мною, та деякими інформаційними послугами від Hired або AngelList.

Знання цифр допомагає використовувати аналітичний підхід. Наприклад:

  • 26% моїх загальних програм (холодних, теплих, рефералів) перетворюються на початкові екрани телефону.
  • 51% екранів мого телефону перетворено на технічний екран або завдання
  • 28% моїх технологічних екранів та завдань перетворено на місце

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

Аналіз цифр дозволив мені відступити від випуску нових додатків. Натомість я витратив зайвий час на те, щоб усунути технічні недоліки, маючи на меті покращити коефіцієнт конверсії з технічного екрану на місце.

Крок 9: Освойте майданчик

Як тільки вам пощастить приземлитись на місці або на двох, вам ще багато чого доведеться опанувати. Особисто я знайшов більшість об'єктів надзвичайно виснажливими. Вони тривали десь від 2 до 6 годин і широко варіювались у розглянутих темах. Деякі компанії забули дати мені перерви.

Оскільки мене перевіряли на технічні знання, розмов було дуже мало, і я часто годинами засипався питаннями.

Одна компанія сказала мені, що вони не рухаються вперед зі мною, тому що я боровся із самим останнім питанням після годин успішних алгоритмів. Я все ще не впевнений, що вони дізналися з того самого останнього запитання, яке вони не могли зрозуміти з технічного екрану або за попередні кілька годин, але цей відгук урізав.

Теми, висвітлені під час моїх виїздів, включали:

  • Алгоритми
  • Дизайн системи
  • Створіть додаток, використовуючи API компанії
  • Запитання про глибину знань щодо моєї мови кодування (JavaScript)
  • Питання щодо глибини знань про HTML / CSS
  • Питання щодо глибини знань щодо інтерфейсних фреймворків
  • Питання щодо глибини знань про різні бази даних (SQL / noSQL)
  • Brainteasers (думаю, підготовка до СБ з середньої школи)
  • Клонуйте та поясніть проект X GitHub, який ви створили, які компроміси ви зробили і що ви робили б інакше в майбутньому
  • Проведіть нам 1-годинну презентацію на будь-яку вибрану вами тему (вважайте це червоним прапором , якщо тільки ваша робота не вимагає взаємодії з клієнтами чи викладання ваших ідей)

Різновид робив складним знати, що вивчати.

Після кожного технічного екрану та на місці я записав детальний список усіх питань, які мені задавали в кожному інтерв'ю. Це стало моїм навчальним посібником для майбутніх майданчиків.

Коли я пропускав запитання, я намагався розглядати це як можливість навчання.

Крок 10: Принесіть закуски

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

У перших місцях я поступово погіршував відповіді на запитання, оскільки рівень цукру в крові падав. Не дивно - це не призвело до пропозиції.

У третьому, вони призначили мене з 10 до 14 години без обідньої перерви, тому я спеціально попросив його. Це працювало - як би - доти, поки менеджер з найму не пішов за мною до місця обіду, готуючи мені швидкий вогонь на 50+ питань JavaScript. Він проігнорував мої (неодноразові) прохання про швидку розумову перерву. Ще одне заборону.

Нарешті, я знайшов життєздатне рішення - приносити великий зелений смузі до кожного інтерв’ю. Це було набагато краще, ніж спроба прокрасти арахісові M&S в рот у туалеті (крім того, мене зазвичай проводжали до ванни, і це насправді не було варіантом).

Крок 11: Уточнюйте відповіді на поведінкові запитання та уникайте вигорання

Де ви бачите себе через 5 років?

Одне із запитань, яке мене бентежило в інтерв’ю, було: "Де ти бачиш себе через 5 років?" Чесно кажучи, я досі не знаю.

Існує трек менеджера та окремий вкладник.

Є безліч інженерних кар’єрних шляхів, які я досі не до кінця розумію - веб, мобільні пристрої, надійність сайту та DevOps, якщо назвати декілька.

Тоді є back-end, front-end і full-stack. Іноді межі між цими ролями чіткі, іноді вони розмиті. Під час пошуку я дізнався, що, хоча я не знаю, яким шляхом піду, є певні завдання, які мені подобаються більше і менше, ніж інші.

Я не люблю грати з пікселями на веб-сайті, але цікаво розробляти для мобільних пристроїв. Проектувати архітектуру та налаштовувати базу даних трохи втомливо, але мені подобається брати великі обсяги даних, маніпулювати ними або перетворювати їх на цікаву візуалізацію.

Тож хто знає, де я опинюсь. Поки що я спробую зробити те, що весело та захоплююче.

Деякі загальні думки

Проблеми з кодуванням - це можливість навчання

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

Спочатку я сприймав неповні завдання кодування як ознаку власної нездатності - кілька днів я замислювався, чи не вирізали мене на посаду інженера. Але вони стали веселими, коли я змінив своє мислення і почав думати про те, що я дізнався від кожного.

Наприклад, один з них дав мені глибше розуміння асинхронних викликів API, а інший допоміг мені усвідомити важливість вирішення крайніх випадків та повідомлень про помилки. Один навчив мене, як налагоджувати Ruby on Rails.

Приймайте відхилення поступово

Те саме стосувалося кожного технічного екрану та об'єкта. Спочатку відмови приживали і підживлювали мою невпевненість. Потім відмови стали нормальними. Я дізнався набагато більше, коли зміг відкинути свою невпевненість у собі і зацікавитись, чому я можу навчитися від кожного інженера, знаходячи час, щоб поговорити зі мною.

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

Знайдіть наставника

Мені пощастило мати наставника зірок протягом усього процесу співбесіди. Протягом трьох місяців мій наставник щотижня дзвонив і писав по електронній пошті, щоб запитати, як просувається пошук роботи та з якими блокаторами я стикаюся.

Я чув, як багато колег-інженерів кажуть, що наставник звучить приємно, але вони не були впевнені, які питання задавати. Іноді ми говорили про тактику, наприклад, про те, скільки заявок надсилати, як писати ефективний коміт Git або про те, як вийти за межі кодування. В інших випадках вона просто нагадувала мені, що, незважаючи на (багато) відхилень, я ставав сильнішим інженером і, отже, наближався до пошуку компанії, про яку мрію щодня.

Наставник може змусити вас підзвітно ставитись до своїх цілей, допомагати вам відчувати вигорання та підключати вас до потрібних ресурсів для глибшого навчання. Я вдячний, що у мене був адвокат протягом всього процесу пошуку роботи, і я з нетерпінням чекаю, що зможу заплатити за нього в якості нового інженера!

Висновок

Деякі дні змінити кар’єру було набагато важче, ніж я очікував. Мій наставник, безсумнівно, може засвідчити, що є багато днів, коли я не був впевнений, що зможу це зробити.

Щоб стати інженером, потрібно було багато суєти. Це означало охопити та розширити мою професійну мережу, почуватись комфортно з тим фактом, що попереду мене величезна крива навчання, і ігнорувати всіх недомовлених. Це означало пошук потрібних Інтернет-ресурсів, які відповідали б моєму стилю навчання. Це означало заспокоєння тієї частини мого мозку, яка сказала мені, що я не здатний, і натомість зосередитись на отриманні нових знань. Щодня я працював над новим проектом, вивчав новий алгоритм або відповідав на запитання в інтерв’ю, я ставав кращим інженером.

Чи була варта боротьба? Абсолютно.

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