Aloha! Продолжаю говорить о том, как стать Full-Stack разработчиком. В прошлой статье я уже поведал о первом этапе. О том, как стать Front-End разработчиком. Сегодня коснусь второго этапа. Он связан с программированием логики веб-сайтов. Другими словами, в этом посте вы найдете дорожную карту, которая поможет вам стать Back-End разработчиком.

Предварительные знания

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

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

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

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

  • Тактовая частота
  • Количество ядер
  • North Bridge
  • Виртуализация
  • Процессы
  • Службы
  • Видеокарта
  • Звуковая карта
  • Материнская карта
  • HDD
  • SSD
  • БП
  • ИБП
  • Интернет и как он устроен
  • Модем
  • Модуляция
  • Демодуляция
  • ADSL
  • FTTB
  • WiFi
  • GPRS
  • 3G
  • 4G
  • LAN
  • Торрент
  • Принципы работы сети
  • Сетевые протоколы
  • Методы шифрования

Окей, двигаемся дальше. После ознакомления с базовыми знаниями устройства компьютеров и их сетей перейдем непосредственно к языкам программирования серверных сценариев.

PHP

Пожалуй, самый популярный язык серверного программирования – это PHP. Почти все широко распространенные CMS написаны с помощью PHP. WordPress, кстати, тоже. Любой нормальный хостинг имеет веб-сервер, на котором установлен интерпретатор PHP. Для запуска сценария не требуется никаких танцев с бубном – все работает из коробки. Достаточно загрузить скрипт на сервер и просто обратиться к нему.

Книги

  • Дмитрий Котеров, Игорь Симдянов. PHP 7
  • Сейед Тахагхогхи. Руководство по MySQL (книга не относится напрямую к PHP, но умение правильно работать с базами данных пригодится при изучении языка)

Фреймворки

  • Laravel
  • Yii
  • Kohana
  • Phalcon
  • CodeIgniter
  • Symfony

Касательно PHP, есть такая прелестная штука, как репозиторий пакетов для Composer. Это сборник библиотек, где можно найти практически любое решение для задач проекта.

CMS

  • DLE
  • Drupal
  • Joomla
  • WordPress
  • vBulletin
  • inVision
  • Power Board
  • ModX
  • Open Cart
  • Magento
  • LiveStreet
  • Social Engine
  • PrestShop
  • phpBB

Дополнительно

  • Кэширование байт-кода
  • Memcached
  • Sphinx
  • RabbitMQ для работы с AMQP
  • Дебаггер XHProf

Задачи

  • Изучить материал (теория + практика)
  • Изучить популярные CMS
  • Изучить фреймворки и кейсы их применения
  • Изучить способы кэширования
  • Научиться пользоваться XHProf
  • Научиться работать с репозиторием пакетов

Python

Давно хотел начать писать сайты на Python, но все как-то руки не доходили. Это многоцелевой язык программирования, который много где используется. Начиная от сложных математических расчетов и заканчивая программированием искусственного интеллекта. В чистом виде Python мало пригоден для создания веб-сайтов. Необходимо использовать один из фреймворков. Django самый популярный.

Фреймворки

  • Django
  • Flask
  • Web2PY
  • CherryPY

Книги

  • Swaroop Chitlur, Владимир Смоляр. Укус Питона
  • Зед Шоу. Лёгкий способ выучить Python

Сайты

Аналогично PHP, для Python есть репозиторий пакетов – pyp.

Задачи

  • Изучить материал (теория + практика)
  • Изучить фреймворки и кейсы их применения
  • Освоить Django и сделать на нем несколько веб-сайтов
  • Научиться работать с репозиторием пакетов

JavaScript

Так, стоп. JavaScript же мы рассматривали в предыдущей статье, когда говорили о Front-End разработке. Да, это не ошибка. JavaScript можно использовать и для программирования серверов. Но с одной оговоркой. Нам понадобится программная платформа Node.js.

Если вы добрались до этой строки, я подозреваю, что тема Front-End вами уже изучена. Соответственно, с JavaScript вы успели хорошо познакомиться и владеете им на приличном уровне. Все, что нужно сделать – это заняться изучением Node.js.

Сайты

Дополнительно необходимо понять и изучить асинхронное программирование. Это важная тема, без которой сложно себе представить серверное программирование на JavaScript.

Фреймворки

  • Express

В случае использования Node.js стоит познакомиться с СУБД MongoDB. Именно этот тип баз данных обычно используется в связке с серверным JavaScript.

Для Node.js есть пакетный менеджер NPM. Позволяет использовать библиотеки сторонних разработчиков.

Задачи

  • Изучить материал (теория + практика)
  • Изучить асинхронное программирование
  • Изучить фреймворк Express и кейсы его применения
  • Научиться работать с MongoDB
  • Научиться работать с NPM

Что должен уметь Back-End разработчик

С языками закончили. Теперь перейдем к списку того, что вы должны уметь как Back-End разработчик после окончания обучения. Это самый минимум. Не важно, какой язык программирования был выбран, все приведенное ниже нужно знать и/или уметь делать.

  • Работа с СУБД MySQL
  • Основы синтаксиса SQL (SELECT, UPDATE, DELETE, INSERT, JOIN, GROUP BY, ORDER BY, LIMIT)
  • Экспорт и импорт баз данных
  • Индексы MySQL
  • Синтаксис и команды серверных языков программирования, базовые функции
  • Типы данных
  • Принципы создания сайтов
  • Создание своего блога с нуля
  • Создание регистрации и авторизации на сайте
  • Пользовательские профили и возможность их редактировать самому пользователю
  • Создание административной панели для владельца сайта для управления ресурсом, просмотра и
  • редактирования зарегистрированных пользователей, публикация информации и т.д.
  • Создание пагинации
  • Работа с timestamp
  • Подключение кассы для приема платежей на сайте, например, Robokassa
  • Работа с API Вконтакте
  • Работа с cURL
  • Работа с .htaccess, особенно с mod_rewrite
  • AJAX
  • Паттерны проектирования
  • MVC и HMVC
  • Понимание и работа с Memcached
  • Работа с файлами
  • Работа с изображениями, GD
  • Файловые замки
  • CRONTAB
  • Cloudfare, HTTPS
  • JSON
  • XML
  • Защита от XSS атак
  • Защита от SQL-инъекций
  • Защита от CSRF атак
  • Защита от “дурака”
  • xDebug и бэктрейсы для дебага
  • Регулярные выражения
  • Библиотека xCRUD
  • Redis
  • Работа с Composer
  • Работа с ORM, например, RedBeanPHP
  • Парсинг сайтов с помощью PHP Simple HTML DOM Parser
  • PDO
  • Работа с PHAR архивами

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

Заключение

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

Интересных и высокооплачиваемых проектов!

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: