5 советов, как перейти от продаж к разработке программного обеспечения

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

Автоматический выключатель. Креативный синоним слова «изоляция».

Это было 7 апреля 2020 года, когда Сингапур ввел автоматический выключатель, чтобы обуздать распространение вируса COVID-19 в пределах наших границ. В то время я работал не по найму консультантом по финансовым услугам, также более известным как страховой агент. Работа остановилась почти до полной остановки. Внезапно мне представилось изобилие времени. Мне только исполнилось 27 лет за несколько дней до изоляции, и мое сердце все еще было наполнено жгучим желанием стать лучше. Я отказался тратить все дополнительное время, которое я получил за бесконечные потоки Netflix.

Так совпало, что моя тетя прислала мне список полезных бесплатных онлайн-курсов, которые она получила от своей подруги (одно из редких сообщений, которые не были фальшивыми новостями о том, как питье теплой воды может предотвратить COVID-19). В списке мое внимание привлекло «Введение CS50 в компьютерные науки Гарвардского университета», и это дало мне начало новому путешествию.

Перенесемся в сегодняшний день: я прошел путь от страхового агента (моей специальностью в университете была химическая инженерия) до разработчика полного стека в одном из самых известных банков Азии. Если вы заинтересованы в том, чтобы начать карьеру в области разработки программного обеспечения в Сингапуре, прочитайте несколько советов о том, как я это сделал.

1. Запишитесь на курс, который даст вам прочную основу компьютерных наук.

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

Поэтому возникает вопрос: какой курс выбрать?

Когда вы начнете искать в Интернете курсы по программированию, есть вероятность, что вы столкнетесь с несколькими курсами с похожими названиями: «Узнайте, как создать веб-сайт с нуля за 24 часа, используя Python». Такие заголовки могут звучать броско, но, как любителю в этой области, эти курсы мало что сделают для продвижения вашего пути в разработке программного обеспечения.

Эти курсы могут быть полезны опытному программисту для быстрого изучения синтаксиса нового языка или понимания концепций нового фреймворка. В то время как для разработчика-любителя, на мой взгляд, эти курсы, как правило, учат создавать что-то, не зная, как это было создано.

Лично я бы порекомендовал Введение в компьютерные науки CS50 на edX. Этот курс полностью бесплатный и проводится в Интернете, что позволяет вам продвигаться в своем собственном темпе. Несмотря на то, что курс бесплатный, предоставленные материалы самого высокого качества. Я был потрясен в течение первых 30 секунд первой лекции, потому что я понял, что у них действительно была вступительная музыкальная тема и видео в начале каждой лекции (я обнаружил, что начинаю напевать во время последних нескольких лекций). Лектор также был очень интересным и четким в своем обучении.

Однако имейте в виду, что пройти этот курс не так-то просто. Всего 10 лекций, каждая продолжительностью от 1,5 до 2,5 часов. К каждой лекции обычно прилагается задание, помогающее закрепить концепции, изложенные в лекции. Вы можете рассчитывать потратить несколько часов на каждое задание. Не волнуйтесь, если вы постоянно застреваете или тратите абсурдное количество времени, это совершенно нормально. На самом деле, было бы ненормально, чтобы кто-то, не разбирающийся в компьютерных науках, с легкостью выполнял задания.

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

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

2. Специализация в определенной области разработки программного обеспечения

Если вы не планируете изучать информатику в течение 4 лет, маловероятно, что у вас будет достаточно времени, чтобы овладеть различными ее специализациями. Даже опытные разработчики вряд ли будут владеть всеми областями разработки программного обеспечения. Вот почему вам нужно выбрать один и вооружиться необходимыми навыками, чтобы работать в этой области.

Есть так много доступных полей, и я не смогу охватить их все, но вот краткий список наиболее распространенных, известных мне:

  1. Веб-разработчики
  2. Разработчики мобильных приложений
  3. Искусственный интеллект
  4. Машинное обучение
  5. Java-разработчик
  6. Python-разработчик
  7. Информационная безопасность

В каждом поле в этом списке их можно разделить на различные категории и подкатегории. Просто чтобы привести пример, веб-разработчиков можно разделить на разработчиков внешнего интерфейса, внутреннего интерфейса или разработчиков полного стека. Затем разработчиков внешнего интерфейса можно разделить на разработчиков ReactJS, Angular или VueJS.

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

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

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

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

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

3. Получить работу в рамках программы стажировок SGUnited

По счастливой случайности я наткнулся на программу NUS FinTechSG однажды, просматривая новости (я отчетливо помню, что пил пиво в баре, а мой друг был в туалете). Это был двухмесячный ускоренный курс, который помог мне получить знания во многих областях, о которых я очень хотел узнать. Без дальнейших церемоний я отправил онлайн-форму, и вскоре после этого меня зачислили в программу. Одной из лучших частей программы было то, что они помогли разослать наши резюме компаниям, заинтересованным в приеме на работу выпускников программы.

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

Для тех из вас, кто не знает об этой программе, которая была запущена правительством в 2020 году, это программа, которая стимулирует компании предоставлять неопытным сотрудникам возможность трудоустройства путем субсидирования 80–90% пособия на обучение (которое может возрасти). до $3800 в зависимости от различных критериев). На мой взгляд, это делает компании гораздо более склонными к найму разработчиков-любителей, поскольку они могут брать на себя минимальный риск с точки зрения выплачиваемой заработной платы, и разработчики-любители должны воспользоваться этой возможностью как можно скорее.

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

4. Постоянно улучшайте себя во время стажировки

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

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

Тем не менее, вы должны помнить, что вы конкурируете с выпускниками университетов в области компьютерных наук за работу в качестве разработчика программного обеспечения. На этих ранних этапах вашего путешествия нет места для перерывов. Вне работы я неукоснительно работал над своими личными проектами. Многие из этих проектов были для меня забавными и интересными (да, я гик, который находит разработку веб-сайтов и программ веселой и интересной). Например, я создал веб-сайт, на котором вы могли выбрать свои собственные выигрышные номера TOTO, и он сгенерировал страницу, которая во многом была похожа на страницу Singapore Pools для их выигрышного номера. Я помню, как делал это перед розыгрышем AngBao во время периода CNY, чтобы обмануть свою семью, заставив ее думать, что я выиграл главный приз в размере 9,6 миллионов долларов (ни одно из реальных чисел не совпало с моим билетом).

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

5. Подать заявку на постоянную работу в качестве разработчика

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

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

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

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

В-третьих, подавайте заявки на как можно больше вакансий. На данном этапе вы, вероятно, пишете код меньше года и не можете ожидать от работодателей полной уверенности в ваших способностях. Во многих случаях у вас может даже не быть возможности пройти их технические тесты. Даже если вы это сделаете, есть значительная вероятность того, что вы не будете работать так, как они будут довольны, и примете каждый технический тест или проект, который вам предоставляется, как возможность обучения. С каждым завершенным техническим тестом или проектом вы приобретаете больше навыков, которые помогут вам справиться со следующим. Лично я сбился со счета, но, по моим оценкам, я подал заявки на 50–70 вакансий, прежде чем занял свою текущую должность.

Что ж, это в значительной степени подводит итог действиям, которые я предпринял на пути к тому, чтобы стать разработчиком. Теперь пришло время для вас, удачи!