Путь от моей первой строки кода до моего первого клиента

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

Это не то, что я себе представлял, когда окончил среднюю школу.

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

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

Что нужно узнать

Это горячо обсуждаемый вопрос среди влиятельных технических специалистов. Некоторые настаивают на изучении какой-то конкретной структуры. Некоторые настаивают на чтении конкретной книги. Большинство настаивает на том, чтобы вы купили их продукт, будь то онлайн-курс, учебное пособие или электронная книга. Разнообразие советов может устрашать.

Проще говоря, чтобы считать себя (очень младшим) разработчиком полного стека, все, что вам нужно, это основы:

  • HTML
  • CSS
  • Javascript
  • Внутренний язык
  • База данных

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

Сколько достаточно?

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

  1. В то время у меня не было работы, и я мог посвящать этому не менее 5–6 часов в день.
  2. Обучение не прекращается после того, как вы найдете работу. Он усиливается.

HTML

Я провел один день, посвященный HTML. Вот и все. Причина двоякая:

  1. HTML - это просто.
  2. Я понял, что HTML все равно будет задействован на последних этапах обучения.

CSS

Я провел 3 дня, экспериментируя с CSS и тем, как он применяется к различным элементам HTML.

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

Javascript

Я потратил около недели на изучение и практику основ Javascript. Важнейшие вещи, которые нужно понять, - это циклы, условия, функции, базовый синтаксис, как использовать консоль браузера, разделение между клиентом и сервером и как вы можете отправлять запросы на сервер (AJAX).

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

Внутренний язык

Моим первым серверным языком был PHP. Для вас это может быть все, что вы выберете, но я предлагаю вам выбрать один из основных, где есть много работы и много документации в Интернете. Некоторые популярные варианты - это PHP, Python и Ruby. В дальнейшем Node.js станет отличным выбором, но я не рекомендую его в качестве начального внутреннего языка. Это по двум причинам:

  1. Node.js использует синтаксис Javascript, поэтому вы не получите преимуществ от изучения второго языка.
  2. Он очень асинхронно ориентирован и может оказаться слишком сложной задачей для абсолютного новичка.

Как только вы выберете язык, начните снова с основ: синтаксиса, циклов, лучших практик. Сейчас хорошее время, чтобы уделить несколько дней тому, чтобы прочитать об общих передовых методах разработки программного обеспечения и объектно-ориентированном программировании. Попробуйте реализовать концепции, которые вы там изучаете, на выбранном вами внутреннем языке.

Затем установите связь между интерфейсом и серверной частью, создав приложение, в котором Javascript отправляет некоторые запросы в серверную часть, серверная часть отвечает, а Javascript обрабатывает ответ, манипулируя страницей, показывая возвращенные данные и т. Д.

Эта часть обучения заняла у меня около двух недель.

База данных

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

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

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

Я потратил около недели на этот последний этап.

Что вы можете сделать лучше меня

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

Хороший редактор кода - ваш друг

Мои первые строки кода были написаны в Блокноте. Мне казалось, что использование красивого редактора не имело особой ценности, кроме эстетики. Я был очень неправ.

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

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

Получите себе домен

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

Это важно по трем причинам:

  1. Вы узнаете основные сведения о том, как работают хостинговые компании и регистрация доменов.
  2. Вы узнаете, как использовать FTP и SSH для связи с удаленным сервером.
  3. Когда у вас появится первый клиент, вам понадобится способ показать им свою работу. Если у вас есть общедоступный домен, вы можете создать там тестовую среду для своего проекта и связать с ней своего клиента.

Что такое git

Я полностью пропустил эту часть во время начального периода обучения. Затем это застало меня врасплох на проекте, и мне пришлось провести несколько вечеров, борясь с ним.

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

Не игнорируйте мобильные устройства

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

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

В поисках работы

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

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

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

Продолжаем

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

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

Я напишу больше об обучении на работе и о подходящих проектах / клиентах для этого подхода в будущих статьях. Главный вывод на данный момент таков: слишком многие веб-разработчики хотят научиться плавать раньше, чем нырять в воду. Не будь одним из них. Наберитесь смелости, сделайте решительный шаг, и вы сможете удивить всех, в том числе и себя.