Окт.10.2014

Данная статья (Things Every Web Developer Should Know – Part 1) была переведена и немного немного изменена автором, так как некоторые моменты данной статьи были по мнению автора противоречивыми.

Итак, начнем с того что должен знать Junior разработчик. Для тех кто не знает, что означает Junior поясним, Junior  разработчик - это тот программист, который может эффективно решать задачи, но иногда необходимо ему указывать на недостатки, которые он время от времени совершает.

Общая осведомленность в программировании:

  1. Понимать “O нотацию”;

  2. Уметь работать с массивами;

  3. Знать различные структуры данных, кроме массивов (связанный список, стек, очередь и т.д.);

  4. Иметь возможность реализовать без промедления хотя бы один алгоритм сортировки данных;

ООП:

  1. Понимание основных принципов ООП (инкапсуляция, наследование, полиморфизм);

  2. Понимать разницу между интерфейсами и абстрактными классами;

  3. Должно быть общее понимание паттернов и для понимание для чего они нужны.

Архитектура:

  1. Понимание паттерна MVC;

  2. Понимание что такое ORM и ActiveRecord.

Сеть:

  1. Понимать что такое порт, протокол, сокет;

  2. Базовое понимание протокола IP;

  3. Понимать плюсы и минусы использования сессий и http cookies, умение правильно выбрать что использовать в различных ситуациях;

  4. Уметь настроить любой http сервер, например Apache или nginx;

  5. Уметь использовать Ajax запросы.

SQL:

  1. Понимание первых трех нормальных форм, и понимание для чего они нужны;

  2. Понимание индексов. Что такое полное сканирование таблицы и почему этого следует избегать;

  3. Уметь использовать различные типы JOIN-ов;

  4. Понимание для чего нужны внешние ключи.

HTML, CSS и шаблонизаторы:

  1. Понимание зачем нужны шаблонизаторы;

  2. Знание хотя бы одного шаблонизатора;

  3. Умение создавать валидную разметку документа;

  4. Знание основ HTML5;

  5. Знание основ CSS3.

Javascript:

  1. Знание основ JavaScript;

  2. Знание Jquery, Jquery UI.

Безопасность:

  1. Понимать почему нельзя хранить открытые пароли в базе данных;

  2. Знать как создать безопасный хеш пароля;

  3. Понимание OAuth;

  4. Знать как предотвратить различные SQL атаки;

  5. Знать как предотвратить XSS атаки.

Процесс разработки:

  1. Понимать общие принципы этапов разработки проектов;

  2. Понимание значимости технического задания;

  3. Понимание и умение использовать различные тесты;

  4. Умение использовать одну из многих систему контроля версий.

Оптимизация:

  1. Умение использовать одну из систем кеширования;

  2. Профилирование кода;

  3. Знание и умение использовать различные методы рефакторинга кода.

PHP:

  1. Знание самого PHP (синтаксис PHP, основные функции PHP, ООП в PHP, магические методы и т.д.);

  2. Знание хотя бы одного PHP-фреймворка.