Сами технологии, используемые в программировании, можно разделить на две большие группы: серверные, и клиентские.
Причем, если ранее, на заре зарождения web, ожидалось, что основную нагрузку на себя возьмет серверная часть, т.к. сервера будут мощнее компьютеров пользователей. Оказалось же, что компьютеры пользователей по характеристикам ничем не отличаются от серверов. Поэтому нагрузка решений между сервером и клиентом распределена примерно поровну.
Так же и в рынке IT, выделяется 2 направления: FrontEnd (или клиентская) и BackEnd (или серверная). И 3 группы технологий (для backend, для frondend и общий).
FrontEnd:
По сути, в понятие FrontEnd входит всего три технологии: HTML, CSS и JavaScript. Но перечень знаний и умений frontend-разработчика значительно шире. Это:
Умение разрабатывать разные типы верстки: табличная и блочная. Резиновая и фиксированная верстка.
Гибкая блочная верстка
Адаптивная или мультимедийная верстка.
Знать и уметь пользоваться такими форматами данных, как JSON (основной формат) и XML.
Селекторы: классы, идентификаторы, тэги, вложения, атрибуты и фильтры.
Bootstrap 3, API Bootstrap – использование библиотек для адаптивной (или мультимедийной) верстки.
Использование в коде архитектурных шаблонов MVC (модель-вид-контроллер), HMVC (иерархические модель-вид-контроллер), MV-VM (модель-вид-пользователь-вид-модель) и MVW (модель-вид-что-то еще).
Библиотека запросов jQuery. jQuery позволяет сделать из любого селектора объект.
Фрэймворки Angular, React.
CoffeeScript
Less: переменные, миксины или функции, расширения, импорт, вложенность, соединение в одно свойство несколько свойств.
Системы сборки FrontEnd-а. Gulp, grunt, webpack.
HTML5 и API HTML5: видео и аудио, холст, перетаскивание, работа с файлами, геолокация (в том числе работа с GOOGLE и YANDEX-картами), web-хранилища, взаимодейтсвие с сервером. Вспомогательный инструментарий.
Основы SEO.
Schema.org, генератор schema.org микроформат данных, микроданные.
BackEnd
Linux-подобные операционные системы. Знать, уметь с ними работать, настраивать и администрировать.
Языки программирования.
PHP +
Java +
Python +
Perl -
Ruby -
Asp.net -
СУБД (это ПО предназначенное для работы с базами данных):
MySQL (PHPMyAdmin)
NoSQL, SQL-lite
Oracle
MS-SQL
Один, лучше 2-3 фрэймворка. Для PHP – это Laravel, YII, ZendFramework Symfony. На сегодняшний день лучшим PHP фрэймворком является Laravel. Для Python - это Flex и Django.
Системы управления контентом CMS: Drupal и 1Cбитрикс MoDex, Joomla, WordPress, Magenta, OpenCart.
Менеджер зависимостей. Для PHP - Composer. Для Python - pip.
Web-интерфейсы для серверных решений: PHPMyAdmin, Webmin, cloud, media-center.
Передача потоковых данных между браузерами, с помощью проекта с открытым исходным кодом WebRTC.
Платежные системы. Подключение платежных систем.
Парсинг. Библиотеки и классы для парсинга внешних страниц. CURL. Имитация действий пользователя.
Умение делать тесты, профилировать, дебагировать приложение.
Умение делать аудит, анализ и консультирование проектируемых и уже существующих сайтов. Ajile-технологии разработки проектов. Умение разрабатывать проекты без технического задания.
Основы хакинга. PHP-include (вставка исполняемых хакерских php-скриптов на взломанном сайте/сервере, бывает локальный и удаленный), SQL-injection (вставка исполняемого sql-кода в строку запроса, url), XSS (это вставка html/JavaScript/VBScript-кода в сгенерированные сервером страницы; пассивный — срабатывает только при передаче пользователю сформированной хакером ссылке; aктивный — непосредственная вставка html-кода в сгенерированную страницу).
Инструментарий
IDE:NetBeans, PHPShtorm, WebShtorm, – или любая другая интегрированная среда разработки.
OpenServer – Локальный сервер (Содержит встроенные технологии:PHP, Apache, MySQL и системы управления MySQL).
Git – система контроля версий. Кроме git сущестуют и другие системы контроля версий, такие как Mercurial, SVN, Subversion. github.com использует git, bitbucket.org – git и mercurial. Основной и наиболее востребованной системой контроля версий является GIT.
Composer – локальный менеджер зависимостей.
Firefox, Chrome – Браузер.
Firebug – Отладчик кода на стороне клиента
FireFTP – или любой другой FTP-клиент.
Node.js – программная платформа
Npm — менеджер зависимостей для Node
Фрэймворк Laravel
***
Frontend и backend программисты постоянно сталкиваются с новыми технологиями, которые приходится изучать.
На что в первую очередь следует обрадить внимание:
Возможности технологии. Для чего и в каких случаях рационально использовать данную технологию.
Особенности синтаксиса.
Документация.
Платформенная настройка. Установка, обновление и удаление неоходимых инструментов.
Hello World. Если вы разобрались как вывести hello world на изучаемой технологии, значит вы уже изучили половину этой технологии. На изучение оставшихся, хотя бы 30%, могут уйти годы практики.
Работа с выводом (шаблонами)
Базы данных, хранение данных
Регистрация авторизация
Обработка изображений
Формы, обработка данных из форм.
Безопасность и защита отдельных страниц.
События
Клиент-сервер
Чтобы упростить изучение новых технологий, можно отметить, что существует только один программный язык: язык логики, все вышеперечисленные технологии являются частными случаями. В ходе развития IT что-то может появляться новое, что-то устаревает. Сами потребности отсеивают ненужное технологическое нагромождения и приводят к новому. Нужно быть вовлеченным в разработку, чтобы остановить свой выбор на правильных технологиях, которые действительно упрощают решение задач.
Важно, для самообразования использовать не только Интернет, а задействовать как можно больше органов восприятия (ведение конспекта, схематизация, пересказ и т.д.).