18+
реклама
18+
Бургер менюБургер меню

Роман Чернышов – Веб-разработчик. Легкий вход в профессию (страница 6)

18

Имея базовое понимания, как устроен язык программирования (об этом поговорим в следующих главах), будь то язык гипертекстовой разметки HTML или скриптовый язык общего назначения PHP, все остальное можно найти в «сети»: как справочник по командам, с описанием каждой команды и в частности искомой вами, так и множество примеров готовых блоков кода для решения конкретной задачи, написанных другими программистами (причем в нескольких вариантах).

Например, можете задать поисковый запрос: «php как округлить число» и тут же получить ответ, с примерами: «для округления чисел в php, есть функция round». Или задать такой поисковый запрос: «css как сделать подчеркивание у текста», и сразу выяснить ответ с примерами: «задайте свойство для элемента text-decoration: underline». Можно сформулировать и поискать решение по более сложному вопросу.

Удивительно, но среди желающих начать свой путь в «айти» много тех, кого останавливает страх перед большим объемом информации, который якобы необходимо знать наизусть. Это конечно неплохо, однако практически невозможно (особенно для новичка). Нет, друзья, гуглят все и постоянно. Я пишу код, и при этом история моего поиска в браузере пополняется десятками запросов, каждый день! Хотя с кодом я работаю большую часть жизни.

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

Однако есть важный нюанс! Когда речь идет о поиске решения, не подразумевается, что это решение должно быть готовым, что называется, «под ключ». Совершенно нет! Программу вы пишете условно с нуля и каждую строку кода внимательно обдумываете, а к «всемирной паутине» обращаетесь именно за информацией по части команд или примеров готовых блоков кода. Они лишь могут являться частью проекта. Еще раз – «только команды и блоки кода». Разумеется, глупо было бы говорить о программисте, который вместо разработки проекта и написания кода постоянно ищет аналогичное решение уже кем-то реализованное. Нет, ни в коем случае!

«Поисковая строка» – это быстрый доступ к справочникам и всемирной базе знаний, а не панацея от всех бед. Логика работы программы должна быть всегда в вашей голове!

Вот пример списка поисковых запросов, которые могут быть актуальны при разработке, например, «формы обратной связи» на сайте, функционал которой следующий: «пользователь может указать в форме: тему, текст сообщения и e-mail для связи с ним, затем, нажав кнопку “отправить”, данные отправлялись бы администратору сайта в админпанель и на его e-mail».

Пример списка поисковых запросов:

● Пример HTML-формы для отправки запроса на сервер.

● HTML тег INPUT и его параметры.

● Что такое 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 – полный стек, список). Его преимущества очевидны: возможность решать максимум поставленных перед ним задач самому, реализовывать проекты, требующие всего перечня технологий. А к недостаткам можно отнести то, что как правило «разработчик 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.