Веб-разработчик. Легкий вход в профессию
Шрифт:
«Поисковая строка» – это быстрый доступ к справочникам и всемирной базе знаний, а не панацея от всех бед. Логика работы программы должна быть всегда в вашей голове!
Вот пример списка поисковых запросов, которые могут быть актуальны при разработке, например, «формы обратной связи» на сайте, функционал которой следующий: «пользователь может указать в форме: тему, текст сообщения и e-mail для связи с ним, затем, нажав кнопку “отправить”, данные отправлялись бы администратору сайта в админпанель и на его e-mail».
Пример списка поисковых запросов:
? Пример HTML-формы для отправки запроса на сервер.
? HTML
? Что такое POST-запрос.
? PHP обработка POST-запроса.
? PHP подключение к базе данных MySQL.
? PHP подготовка данных для вставки в БД.
? PHP пример вставки строки в таблицу MySQL.
? PHP отправка сообщения на E-Mail.
? PHP параметры функции mail .
? CSS для оформления блока «спасибо за сообщение».
Вы спросите: «Откуда же мне знать заранее, еще до написания программы и вообще не имея опыта, что искать в сети? Вот откуда на начальном этапе мне знать про какую-то там команду mail , чтобы искать про нее информацию?».
На самом деле все просто. Вам не нужно формулировать сразу весь список вопросов для поиска. Надо лишь сформулировать первый. Просто подумайте, с чего начинается ваша программа? С HTML-формы, куда пользователь будет вводить сообщение. Вот и поищите информацию о ней. Изучая найденный HTML-код, вы увидите в нём теги INPUT, изучите их, также найдя про них информацию. Затем подумайте, что должна делать форма? Верно, отправлять данные на сервер. Поищите информацию, как это сделать, отправить и принять данные. Вы встретите упоминания о POST-запросе – отлично, «погуглите» про него. И так дальше, шаг за шагом, по мере продвижения вашей работы.
Ваша программа готова! Таким образом, просто понимая, какую функцию должна выполнять программа, можно разбить ее алгоритм на последовательность действий, а затем «загуглить», как реализовать каждое из полученного списка. Конечно же найденные результаты требуют осмысления и могут нуждаться в доработке, но именно так реализуется подход «обучение во время работы».
6. Полный стек
Большинство программ на сегодняшний день подобны египетским пирамидам из миллиона кирпичиков друг на друге и без конструктивной целостности – они просто построены грубой силой и тысячами рабов.
Алан Кёртис Кэй
В мире «айти» есть разные профессии, одних только типов программистов насчитывается несколько десятков, и все в определенной степени являются специалистами – просто разными. Одни разрабатывают приложения для мобильных устройств, другие пишут программы для операционных систем семейства Linux, третьи работают с веб-технологиями. Для работы в каждом направлении, требуется уникальный перечень технологий, который программист должен знать. Это называется «стек» (т.е. список) технологий».
Бывают узкоспециализированные программисты, которые знают ограниченное количество технологий. Их преимущество в том, что они знают эти технологии в совершенстве, оттачивая мастерство годами. К недостаткам можно отнести то, что, ограничившись определенным, узким «стеком» программисту будет крайне сложно реализовать готовый «продукт», с нуля до конечного «релиза» (выхода в свет). Готовый продукт чаще всего требует гораздо большего набора технологий, чем владеет узкоспециализированный программист.
Программист, владеющий всем перечнем технологий в своей нише, называется «Разработчик Full-stack» (от англ. Full stack – полный стек, список). Его преимущества
У каждого программиста, занятого в своем направлении, стек технологий свой. Я являюсь веб-разработчиком, и мой стек технологий выглядит следующим образом: HTML, CSS, JavaScript, PHP, MySQL, основы администрирования веб-серверов на базе Linux (далее мы будем разбирать именно этот список). У разработчика мобильных приложений под iOS стек будет таким: Objective-C, Swift, JavaScript, Flutter. А вот для Android уже другой стек: Java, Kotlin, Jetpack Compose. У разработчика программ для операционной системы Windows: C#, WinForms, WPF, MS SQL.
Стек технологий может дополняться знаниями специализированных библиотек (расширяющих базовый язык программирования, например jQuery для JavaScript) и фреймворков (готовых наборов инструментов, например Laravel для PHP).
Как вы понимаете, программисты не взаимозаменяемы, и попросить веб-разработчика просто дописать какой-то функционал для программы, работающей на компьютере под управлением Windows, не получится. Безусловно, у всех программистов есть общая база знаний, основы устройства и работы вычислительной техники, компьютерных сетей и ряда прочих навыков, позволяющих им быстро ориентироваться в «рабочем окружении» того устройства, с которым они имеют дело. Тенденции последних лет сводятся к тому, что потребность в узкоспециализированном специалисте уступает место специалистам с более широким охватом технологий. Уровень такой специализации получил название DevOps (от англ. development & operations) – инженер, который владеет навыками и методологиями полного цикла разработки, настройки и развертывания программного обеспечения. Иными словами, работодатель (или заказчик), хочет получить за свои деньги больше опцией в одном лице нанимаемого им специалиста.
На рынке труда, будь то в найме или во фрилансе, пока еще ценится и достойнее оплачивается именно узкоспециализированный специалист. Так как к его услугам прибегают в основном для решения конкретных и при этом сложных задач, которые не может решить программист начального или среднего уровня. С другой стороны, такому специалисту бывает сложнее устроиться на работу, или получить заказ на фрилансе, именно по причине того, что ниша его – узкая.
Если узкоспециализированный специалист решит заняться своими проектами, то чаще всего они будут рассчитаны на профессиональную аудиторию, например на других разработчиков, которые смогут использовать его готовые наработки в своих уже полномасштабных проектах. Программист, имеющий в своем арсенале полный стек технологий, может разрабатывать продукт для конечного пользователя.
Какой именно путь выбрать – решать вам, я бы рекомендовал на начальной стадии освоить полный стек технологий выбранного направления (тех, что описываются в этой книге, стек веб-разработчика), затем углубиться в одну или две технологии, достигнув там мастерства профессионала, а затем постепенно, не торопясь, «подтягивать» остальные. Идеальный вариант – через несколько лет стать узкоспециализированным программистом по каждой технологии из всего стека. Таким образом вы будете профессионалом высшей категории в области веб-разработки (или иного, выбранного вами направления), «разработчиком full-stack», а затем, возможно, DevOps.