GitHub - zualex/devmap: Карта развития веб-разработчика
source link: https://github.com/zualex/devmap
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Карта развития веб-разработчика
Содержание
Каждый уважающий себя разработчик должен знать ↑
Книги ↑
Это — книги «на все времена». Лучшие в своем роде и важные для программистов любых направлений.
-
Жизнь:
-
Архитектура компьютера:
-
Программирование:
-
Операционные системы:
-
Люди:
Английский язык ↑
Зачем - большинство лучших курсов, справочных и учебных материалов доступно именно на английском языке. Если возникают трудности, то со знанием английского языка выше шансы найти ответ во всемирной паутине. Также если хотите работать в крутой престижной кампании, то без английского никак.
- Полезные ресурсы:
- Duolingo
- Lingualeo
- Babadum
- Anki и карточки 4000 Essential English Words (all books) [en-en] M4R4M
- Techrocks очень много статей переведенных с английского
- English e-Reader адаптированные книги на английском
- British council очень много полезной и структурированной информации для изучения
- Jazz chants тренировка темпа и скорости речи, чтобы звучать более естественно
- Engoo Daily news статьи на английском с разбивкой по уровням
- YouGlish поиск произношения слова или короткой фразы в Youtube
Архитектура компьютера ↑
Цель - познакомиться с концептуальной структурой вычислительных машин.
Linux, командная строка Bash ↑
Цель - понять как работают операционные системы. Научиться базовому администрированию.
- Ресурсы:
- Курс: Bash: Основы командной строки (Hexlet)
- Статья: Искусство командной строки (статья)
- Книга: Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)
- Книга: Руководство администратора Linux (Эви Немет, Гарт Снайдер, Трент Р. Хейн)
- Книга: Advanced Programming in the UNIX Environment (Richard Stevens)
Структуры данных ↑
Структуры данных — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Данные можно представить по-разному. В зависимости от того, что это за данные и что вы собираетесь с ними делать, одно представление подойдёт лучше других.
Рекомендуется ознакомиться с алгоритмами хотя бы на базововм уровне. Так как структуры данных реализованы с помощью алгоритмов, алгоритмы - с помощью структур данных.
-
Понимание:
- Списки
- Хеш-таблица
- Стек
- Очередь
- Граф
- Связный список
- Деревья
- Двоичное дерево поиска
-
Статьи:
-
Книги:
HTML & CSS ↑
-
Усвоить понятия:
- Верстка
- HTML 5
- Разметка
- Семантика
- Cтили
- Cелекторы
- Анимация
-
Документации, курсы:
Объектно-ориентированное программирование ↑
-
Усвоить понятия:
- Класс
- Объект
- Абстракция данных
- Инкапсуляция
- Наследование
- Полиморфизм
-
Книга:
Функциональное программирование ↑
-
Усвоить понятия:
- Абстракция данных
- Функция высшего порядка
- Чистые функции
- Рекурсия
- Замыкания
- Неизменяемый объект
-
Статьи:
-
Книга:
Системы управления версиями ↑
-
Усвоить понятия:
- Ветвления
- Слияние
- Конфликты и их разрешение
- Версии проекта, теги
- Базовые принципы разработки ПО в VCS
- Ежедневный цикл работы
-
Курс:
-
Книга:
Протокол HTTP ↑
Цель - понять, как браузер взаимодействует с веб-сервером.
-
Усвоить понятия:
- User-agent
- DNS
- Отличия HTTP 2.0 от версий 1.x
- Тело HTTP-запроса
- Передача данных
- Отправка форм
- Transfer-Encoding
- Перенаправления
- Базовая аутентификация
- Cookies
-
Статьи:
-
Курс:
Тестирование ↑
-
Виды тестов:
- Блочное тестирование (модульное, unit testing)
- Интеграционное тестирование
- Системное тестирование
-
Изучить методологии:
- Разработка через тестирование (TDD)
- разработка, основанная на функционировании (BDD)
-
Статьи:
Безопасность сайтов ↑
-
Уязвимости:
- SQL-инъекция
- Межсайтовый скриптинг или XSS
- Демонстрация ошибок пользователю
- Доступность данных о характеристиках системы пользователю
- Инъекция через загрузку файлов
- E-mail-инъекция
- Кража сессии
-
Книга:
-
Статья:
Тайм-менеджмент ↑
Тайм-менеджмент - технология организации времени и повышения эффективности его использования.
Методы:
- Метод «Помидора»
- Метод Парето
- Метод «Альп»
- Матрица Эйзенхауэра
Можно использовать один или несколько методов или разработать свой метод. Главное, чтобы он был удобен и реально приносил пользу.
- Статьи:
Карта развития 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 фреймворки:
-
Статьи:
Пакетный менеджер ↑
-
Список пакетных менеджеров:
-
Статьи:
Устройство веб-серверов и способы взаимодействия ↑
-
Усвоить понятия:
- 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 ↑
-
Усвоить понятия:
- Переменные
- Миксины
- Функции
- Импорт
- Минификация
-
Список препроцессоров CSS:
-
Статьи:
Сборщик проектов ↑
Сборщик проектов — небольшое приложение, которое используется для автоматизации скучных и рутинных задач, которые приходится постоянно выполнять в процессе разработки проекта. Такие задачи включают в себя, к примеру, запуск модульных тестов, конкатенацию файлов, минификацию, препроцессинг CSS.
-
Сборщики проектов:
-
Статьи:
Пакетный менеджер ↑
-
Список пакетных менеджеров:
-
Статьи:
CSS фреймворки ↑
-
Список фреймворков:
-
Статьи:
JavaScript фреймворки ↑
Существуют разные фреймворки, не нужно изучать всё сразу, необходимо взять несколько фреймворков за основу.
Список фреймворков:
Одностраничное приложение ↑
Одностраничное приложение или SPA (single page application) - сайт или веб-приложение, использующий единственный HTML-документ как оболочку для всех веб-страниц и организующий взаимодействие с пользователем через динамически подгружаемые HTML, CSS, JavaScript, обычно посредством AJAX.
-
Изучить:
- JavaScript фреймворки
- Роутинг
- Шаблонизатор
- API, например REST
- AJAX
-
Статьи:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK