Путь от моей первой строки кода до моего первого клиента
Еще в 2011 году я был выпускником университета с очень туманным взглядом в будущее. Сфера обучения, которую я выбрала в 18 лет, теперь казалась глупым выбором. Несмотря на то, что это был инженер, в моей стране он уволил меня с работы в офисе в одной из, может быть, дюжины телекоммуникационных компаний.
Это не то, что я себе представлял, когда окончил среднюю школу.
Однако мне посчастливилось познакомиться с программированием к этому времени. Я немного почитал и решил использовать огромное количество свободного времени, которое мне внезапно пришлось попробовать создать веб-сайт.
С этого момента прошел месяц до того момента, как я нашла своего первого клиента-фрилансера. Многим этот срок кажется неоправданно коротким. Прочтите, чтобы узнать, как мне это удалось, и почему вам не следует пытаться стать экспертом, прежде чем искать внештатную работу.
Что нужно узнать
Это горячо обсуждаемый вопрос среди влиятельных технических специалистов. Некоторые настаивают на изучении какой-то конкретной структуры. Некоторые настаивают на чтении конкретной книги. Большинство настаивает на том, чтобы вы купили их продукт, будь то онлайн-курс, учебное пособие или электронная книга. Разнообразие советов может устрашать.
Проще говоря, чтобы считать себя (очень младшим) разработчиком полного стека, все, что вам нужно, это основы:
- HTML
- CSS
- Javascript
- Внутренний язык
- База данных
Вот и все. В этой последовательности. Теперь вы можете изучать каждую из этих областей в течение многих лет и при этом не чувствовать, что достигли истинного уровня знаний. Если это так, вы можете спросить, как вообще можно получить работу в течение одного месяца после начала обучения? Выучив нужное количество каждого из них.
Сколько достаточно?
Я собираюсь точно сказать вам, сколько времени я потратил на каждый навык, прежде чем нашел работу, и на чем сосредоточиться в каждой области. Имейте в виду две вещи:
- В то время у меня не было работы, и я мог посвящать этому не менее 5–6 часов в день.
- Обучение не прекращается после того, как вы найдете работу. Он усиливается.
HTML
Я провел один день, посвященный HTML. Вот и все. Причина двоякая:
- HTML - это просто.
- Я понял, что HTML все равно будет задействован на последних этапах обучения.
CSS
Я провел 3 дня, экспериментируя с CSS и тем, как он применяется к различным элементам HTML.
Важнейшие вещи, которые нужно понять, - это различные типы позиционирования и выравнивания. Чисто эстетические аспекты, такие как цвет и шрифт, могут быть поглощены почти мгновенно. Более сложные варианты можно изучить, когда и если они вам понадобятся.
Javascript
Я потратил около недели на изучение и практику основ Javascript. Важнейшие вещи, которые нужно понять, - это циклы, условия, функции, базовый синтаксис, как использовать консоль браузера, разделение между клиентом и сервером и как вы можете отправлять запросы на сервер (AJAX).
Как только вы дойдете до последней части, пора сделать шаг назад и изучить основы серверного языка программирования.
Внутренний язык
Моим первым серверным языком был PHP. Для вас это может быть все, что вы выберете, но я предлагаю вам выбрать один из основных, где есть много работы и много документации в Интернете. Некоторые популярные варианты - это PHP, Python и Ruby. В дальнейшем Node.js станет отличным выбором, но я не рекомендую его в качестве начального внутреннего языка. Это по двум причинам:
- Node.js использует синтаксис Javascript, поэтому вы не получите преимуществ от изучения второго языка.
- Он очень асинхронно ориентирован и может оказаться слишком сложной задачей для абсолютного новичка.
Как только вы выберете язык, начните снова с основ: синтаксиса, циклов, лучших практик. Сейчас хорошее время, чтобы уделить несколько дней тому, чтобы прочитать об общих передовых методах разработки программного обеспечения и объектно-ориентированном программировании. Попробуйте реализовать концепции, которые вы там изучаете, на выбранном вами внутреннем языке.
Затем установите связь между интерфейсом и серверной частью, создав приложение, в котором Javascript отправляет некоторые запросы в серверную часть, серверная часть отвечает, а Javascript обрабатывает ответ, манипулируя страницей, показывая возвращенные данные и т. Д.
Эта часть обучения заняла у меня около двух недель.
База данных
Для хранения и извлечения данных вам понадобится база данных. Я выбрал MySQL как самую популярную базу данных в то время. Вы снова можете выбрать все, что хотите, но я предлагаю вам сделать это реляционной базой данных.
Вам необходимо изучить основы: типы данных, которые могут храниться в базе данных, чтение данных, запись данных, обновление записей и их удаление. Затем вам нужно понять, как использовать индексы и отношения между таблицами базы данных. Убедитесь, что вы понимаете концепцию объединений, но пока не нужно заходить слишком далеко в кроличью нору. Все это можно найти в любом стартовом руководстве.
Когда вы поймете основы базы данных, соедините все компоненты вместе: создайте небольшой веб-сайт с базой данных, где пользователь может зарегистрироваться, связаться с сервером, сохранить некоторые данные в базе данных и получить их позже. Неважно, что делает приложение. Важно собрать воедино все знания, которые вы уже накопили.
Я потратил около недели на этот последний этап.
Что вы можете сделать лучше меня
Прежде чем я продолжу объяснять, как я нашел работу, я хочу воспользоваться моментом, чтобы рассказать вам, что я бы сделал по-другому, если бы начинал все сначала. Новичку сложно понять, что важно, а что нет. Вот некоторые вещи, которые я тогда не считал важными, но они оказались важными.
Хороший редактор кода - ваш друг
Мои первые строки кода были написаны в Блокноте. Мне казалось, что использование красивого редактора не имело особой ценности, кроме эстетики. Я был очень неправ.
Хороший редактор обеспечивает правильные отступы прямо из коробки, что очень помогает при изучении циклов, условий и синтаксиса. Он предоставляет цветовую кодировку для выбранного вами языка и предупреждает о синтаксических ошибках. Обе эти функции имеют решающее значение для новичков, которые неизбежно совершают множество простых ошибок. Это поможет вам найти ошибки, а также понять различные типы данных, область действия переменных и т. Д.
Хороший редактор также предоставляет множество других преимуществ, но этого должно быть достаточно, чтобы убедить вас получить его как новичка. Есть много бесплатных. Sublime - хороший начальный выбор.
Получите себе домен
На большинстве машин настроить базовую среду разработки просто. Но вы также должны немедленно инвестировать в общественное достояние, где вы можете загружать свои работы.
Это важно по трем причинам:
- Вы узнаете основные сведения о том, как работают хостинговые компании и регистрация доменов.
- Вы узнаете, как использовать FTP и SSH для связи с удаленным сервером.
- Когда у вас появится первый клиент, вам понадобится способ показать им свою работу. Если у вас есть общедоступный домен, вы можете создать там тестовую среду для своего проекта и связать с ней своего клиента.
Что такое git
Я полностью пропустил эту часть во время начального периода обучения. Затем это застало меня врасплох на проекте, и мне пришлось провести несколько вечеров, борясь с ним.
Сделайте несколько основных шагов, чтобы избежать этой ошибки: создайте репозиторий git для своего тестового проекта, узнайте, как работают ветки, поймите запросы на вытягивание, слияние и выборку. Этого должно быть достаточно, чтобы вы начали.
Не игнорируйте мобильные устройства
Когда я только начинал, мобильные браузеры не были так распространены, как сегодня. Но тенденция уже была налицо, и мне было бы разумно уделить больше внимания отзывчивости в CSS.
Сегодня это важно вдвойне. Мобильный трафик составляет более половины всего веб-трафика, и все, что вы создаете, должно быть построено с учетом различных размеров экрана.
В поисках работы
Чтобы найти свою первую работу, я зарегистрировался на нескольких платформах для фрилансеров. В этот период я экспериментировал с разными подходами. Примерно через год я перешел в Upwork и оставался там надолго.
Я подал заявку на небольшую работу, на которую требовалось несколько часов работы, в основном внесение небольших изменений в существующие веб-сайты и исправление мелких проблем. Я полностью понимал, что обучение будет крутым, и я говорил об этом клиентам - в каждом заявлении о приеме на работу я писал, что мне потребуется несколько дней, чтобы выполнить работу.
Через пару дней и около десятка сообщений клиентам я получил свой первый платный проект. На его выполнение у меня ушло три дня, и я многому научился в процессе. Но величайший урок пришел после того, как это было сделано: все работало, но клиент отказался от проекта и отметил его как незавершенный в моем профиле. Почему? Потому что у меня не было возможности показать свои работы. Итак, повторяю: заранее настройте общественное достояние.
Продолжаем
Эта первоначальная потеря не смогла меня обескуражить, я продолжал настаивать, и вскоре у меня за плечами было несколько небольших проектов. Примерно через 20 дней моей карьеры я получил свой первый большой концерт: я должен был создать веб-сайт с доступной для поиска базой данных агентов по недвижимости по каждому району, насколько я помню. Все остальное, как говорится, уже история.
В следующие девять лет я много чего построил и оптимизировал в каждой итерации. Я расширил свои знания языков программирования и начал включать в свою работу множество фреймворков и библиотек. Я ни разу не пожалел, что начал именно так - с фундаментальными знаниями во всех областях разработки полного стека.
Я напишу больше об обучении на работе и о подходящих проектах / клиентах для этого подхода в будущих статьях. Главный вывод на данный момент таков: слишком многие веб-разработчики хотят научиться плавать раньше, чем нырять в воду. Не будь одним из них. Наберитесь смелости, сделайте решительный шаг, и вы сможете удивить всех, в том числе и себя.