Карта развития веб-разработчика
Каждый уважающий себя разработчик должен знать:
Содержание
Карта развития Back-end разработчика:
- Алгоритмы
- Серверные языки программирования
- Паттерны программирования
- Принципы программирования
- Регулярные выражения
- SQL
- Проектирование баз данных
- Фреймворки
- Пакетный менеджер
- Устройство веб-серверов и способы взаимодействия
- Развертывание проектов
Карта развития Front-end разработчика:
- JavaScript
- Адаптивный/отзывчивый веб-дизайн
- JavaScript библиотеки
- Препроцессоры CSS
- Сборщик проектов
- Пакетный менеджер
- CSS фреймворки
- JavaScript фреймворки
- Одностраничное приложение
Каждый уважающий себя разработчик должен знать
Книги
Это — книги «на все времена». Лучшие в своем роде и важные для программистов любых направлений.
Жизнь:
- Цель. Процесс непрерывного совершенствования (Элия М. Гольдратт, Джеф Кокс)
- Идеальный программист. Как стать профессионалом разработки ПО (Роберт К. Мартин)
- Джоэл о программировании (Джоэл Х. Спольски)
- Джоэл и снова о программировании (Джоэл Х. Спольски)
Архитектура компьютера:
Программирование:
- Рефакторинг. Улучшение существующего кода (Мартин Фаулер)
- Структура и интерпретация компьютерных программ (Харольд Абельсон, Джеральд Джей Сассман)
- Алгоритмы. Вводный курс (Томас Х. Кормен)
- Совершенный код (Стив Макконнелл)
- Чистый код: создание, анализ и рефакторинг (Роберт Мартин)
Операционные системы:
- Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)
- Руководство администратора Linux (Эви Немет, Гарт Снайдер, Трент Р. Хейн)
Люди:
- Человеческий фактор. Успешные проекты и команды (Том ДеМарко, Тимоти Листер)
- Мифический человеко-месяц, или Как создаются программные системы (Хилл Чапел, Фредерик Брукс)
- Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов (Уильям Паундстоун)
Английский язык
Зачем - большинство лучших курсов, справочных и учебных материалов доступно именно на английском языке. Если возникают трудности, то со знанием английского языка выше шансы найти ответ во всемирной паутине. Также если хотите работать в крутой престижной кампании, то без английского никак.
- Полезные ресурсы:
- Duolingo
- Lingualeo
- Babadum
- Anki и карточки 4000 Essential English Words (all books) [en-en] M4R4M
- Techrocks очень много статей переведенных с английского
- English e-Reader адаптированные книги на английском
- British council очень много полезной и структурированной информации для изучения
- azz chants тренировка темпа и скорости речи, чтобы звучать более естественно
- ngoo Daily news статьи на английском с разбивкой по уровням
- ouGlish поиск произношения слова или короткой фразы в Youtube
Архитектура компьютера
Цель - познакомиться с концептуальной структурой вычислительных машин.
Linux, командная строка Bash
Цель - понять как работают операционные системы. Научиться базовому администрированию.
- Ресурсы:
- Курс: Bash: Основы командной строки (Hexlet)
- Статья: Искусство командной строки (статья)
- Книга: Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)
- Книга: Руководство администратора Linux (Эви Немет, Гарт Снайдер, Трент Р. Хейн)
- Книга: Advanced Programming in the UNIX Environment (Richard Stevens)
Структуры данных
Структуры данных — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Данные можно представить по-разному. В зависимости от того, что это за данные и что вы собираетесь с ними делать, одно представление подойдёт лучше других.
Рекомендуется ознакомиться с алгоритмами хотя бы на базововм уровне. Так как структуры данных реализованы с помощью алгоритмов, алгоритмы - с помощью структур данных.
HTML & CSS
- Усвоить понятия:
- Документации, курсы:
Объектно-ориентированное программирование
- Усвоить понятия:
- Книга:
Функциональное программирование
- Усвоить понятия:
- Статьи:
- Книга:
Системы управления версиями
- Усвоить понятия:
- Курс:
- Книга:
Протокол HTTP ↑
Цель - понять, как браузер взаимодействует с веб-сервером.
- Усвоить понятия:
- Статьи:
- Курс:
Тестирование ↑
- Виды тестов:
- Блочное тестирование (модульное, unit testing)
- Интеграционное тестирование
- Системное тестирование
- Изучить методологии:
- Разработка через тестирование (TDD)
- Разработка, основанная на функционировании (BDD)
- Статьи:
Безопасность сайтов ↑
- Уязвимости:
- Книга:
- Статья:
Тайм-менеджмент ↑
Тайм-менеджмент - технология организации времени и повышения эффективности его использования.
- Методы:
- Метод «Помидора»
- Метод Парето
- Метод «Альп»
- Матрица Эйзенхауэра
Можно использовать один или несколько методов или разработать свой метод. Главное, чтобы он был удобен и реально приносил пользу.
- Статьи:
Карта развития Back-end разработчика ↑
Алгоритмы ↑
- Познакомиться с алгоритмами:
- Сортировки
- Поиска в строке
- Обхода и поиска в структурах данных
- На графах
- Статьи:
- Книги:
- Ресурсы:
Серверные языки программирования ↑
Цель - освоить несколько серверных языков программирования.
Нельзя останавливаться на одном языке, так как у вас может появиться 'JAVA головного мозга' - неспособность думать за пределами своего языка программирования.
Лозунг: нужно программировать не на языке программирования, а используя его.
- Примеры серверных языков:
- PHP
- Python
- Ruby
- Статьи:
Паттерны программирования ↑
- Познакомиться cо слелующими типами паттернов:
- Порождающие шаблоны проектирования
- Структурные шаблоны проектирования
- Поведенческие шаблоны проектирования
- Статьи:
- Видео:
- Книга:
Принципы программирования ↑
- Познакомиться с принципами:
- DRY
- KISS
- YAGNI
- SOLID
- Статья:
Регулярные выражения ↑
- Усвоить понятия:
- Квантификация
- Жадность
- Группировка
- Статьи:
SQL ↑
- Усвоить понятия:
- DDL, DML, DQL
- Создание и удаление базы данных, таблицы
- Добавление, обновление и удаление записи
- Схема (SCHEMA)
- Представления (VIEWS)
- WHERE
- LIMIT, OFFSET
- ORDER BY
- GROUP BY
- JOIN
- Подзапросы
- Статьи:
- Курсы:
Проектирование баз данных
- Усвоить понятия:
- Нормализация
- Денормализация
- Связи
- Статьи:
Фреймворки
Для разных языков программирования существуют разные фреймворки, не нужно изучать всё сразу, необходимо взять несколько фреймворков за основу.
- PHP фреймворки:
- Python фреймворки:
- Ruby фреймворки:
- Статьи:
Пакетный менеджер
- Список пакетных менеджеров:
- Для PHP - composer
- Для Python - pip
- Для Ruby - bundler
- Для Javascript - Для Javascript - npm, yarn
- Статьи:
Устройство веб-серверов и способы взаимодействия
- Усвоить понятия:
- HTTP
- NGINX
- APACHE
- Треды
- Worker
- CGI
- FastCGI
- event Loop
- Статьи:
Развертывание проектов ↑
- Усвоить понятия:
- Деплой
- Миграции
- Релизы
- Еnvironment
- Непрерывная интеграция (CI)
- Статьи:
- Версионная миграция структуры базы данных: основные подходы (habrahabr)
- Нумерация версий ПО для новичков и не только (habrahabr)
- Automated git deployments from Bitbucket
- How to use Vagrant for local web development
- Vagrant для малышей, или как на Windows легко получить настроенный сервер для разработки веб-приложений
Карта развития Front-end разработчика
JavaScript ↑
- Познакомиться с такими понятиями как:
- Переменные
- Типы данных
- Функции
- Рекурсия
- Замыкания
- Область видимости
- Объекты
- События
- DOM
- Документации, книги:
Адаптивный/отзывчивый веб-дизайн
- Усвоить понятия:
- Адаптивный веб-дизайн
- Отзывчивый веб-дизайн
- Media queries
- Mobile first
- Graceful degradation
- RESS
- Статьи:
JavaScript библиотеки
Цель - познакомиться с наиболее популярными библиотеками JavaScript. Знать где и когда их применять.
Список библиотек:
- jQuery
- ReactJS
- Underscore - набор полезных функций
- Modernizr - обнаруживает HTML5 и CSS3 функции в браузере пользователя
- Babel - компилятор для написания JavaScript следующего поколения
- Three - 3D
- WOW - анимация при прокрутки страницы
- Moment - Работа с датой и временем
- Mocha - написание тестов Список наиболее популярных библиотек есть на Javascripting
Препроцессоры CSS
- Усвоить понятия:
- Переменные
- Миксины2
- Функции
- Импорт
- Минификация
- Список препроцессоров CSS:
- Статьи
Сборщик проектов
Сборщик проектов — небольшое приложение, которое используется для автоматизации скучных и рутинных задач, которые приходится постоянно выполнять в процессе разработки проекта. Такие задачи включают в себя, к примеру, запуск модульных тестов, конкатенацию файлов, минификацию, препроцессинг CSS.
- Сборщики проектов: link
- Статьи:
Пакетный менеджер
- Список пакетных менеджеров:
- Статьи: link
CSS фреймворки ↑
- Список фреймворков:
- Статьи:
JavaScript фреймворки ↑
Существуют разные фреймворки, не нужно изучать всё сразу, необходимо взять несколько фреймворков за основу.
- Список фреймворков:
- Angular
- Vue - создание интерактивных интерфейсов
- Backbone
- Ember
Одностраничное приложение ↑
Одностраничное приложение или SPA (single page application) - сайт или веб-приложение, использующий единственный HTML-документ как оболочку для всех веб-страниц и организующий взаимодействие с пользователем через динамически подгружаемые HTML, CSS, JavaScript, обычно посредством AJAX.
- Изучить:
- JavaScript фреймворки
- Роутинг
- Шаблонизатор
- API, например REST
- AJAX
- Статьи:
- Усвоить понятия: