Коротко: для junior backend на PHP нужны уверенный язык, базы данных, Git, основы архитектуры и системного администрирования и хотя бы один фреймворк.

Чтобы претендовать на позицию junior backend developer на PHP, нужен понятный набор: уверенное владение языком, базы данных, Git, основы архитектуры и системного администрирования плюс хотя бы один фреймворк. Ниже — разбор по пунктам: что в 2023 году спрашивают рекрутеры у джунов и что я добавил бы от себя.

Что значит «уверенно владеть PHP»?

PHP 7–8 — очевидно, сам язык разработки, и владеть им нужно уверенно. Что считать «уверенным» — у каждого рекрутера своё, но я бы сформулировал так: знать самые ходовые конструкции и функции. Для ориентира — топ-100 самых используемых функций PHP по данным bestofphp.com:

Rank      Function Frequency      Average     
1 file_exists 62.80% 13
2 str_replace 58.20% 33
3 implode 57.31% 35
4 count 56.42% 61
5 dirname 56.38% 13
6 substr 55.84% 53
7 sprintf 55.26% 80
8 strpos 55.07% 24
9 array_merge 54.80% 35
10 in_array 51.39% 33
11 explode 51.35% 26
12 strlen 50.97% 35
13 is_array 50.73% 46
14 array_key_exists 49.54% 28
15 array_keys 49.27% 16
16 preg_match 46.52% 28
17 file_get_contents 46.48% 8
18 is_file 44.43% 6
19 array_values 42.81% 7
20 file_put_contents 42.46% 4
21 trim 41.57% 25
22 method_exists 41.49% 8
23 defined 40.87% 19
24 is_string 40.76% 20
25 function_exists 40.29% 20
26 array_map 39.33% 12
27 preg_replace 39.02% 17
28 strtolower 38.94% 19
29 is_dir 38.67% 6
30 strtr 38.01% 5
31 call_user_func 37.01% 4
32 strrpos 36.70% 4
33 call_user_func_array 36.43% 3
34 array_flip 35.89% 2
35 fwrite 35.89% 4
36 rtrim 35.69% 6
37 filter_var 35.65% 2
38 ini_get 35.15% 5
39 json_decode 34.76% 7
40 array_filter 34.76% 7
41 realpath 34.15% 4
42 header 34.07% 7
43 class_exists 34.03% 12
44 json_encode 33.49% 9
45 trigger_error 32.95% 5
46 get_class 32.95% 13
47 spl_autoload_register 32.10% 1
48 unlink 30.43% 5
49 headers_sent 29.78% 1
50 is_object 29.31% 11
51 mkdir 29.20% 2
52 array_shift 28.69% 6
53 spl_autoload_unregister 28.54% 1
54 apcu_fetch 28.23% 0
55 array_pop 28.11% 5
56 stream_resolve_include_path 27.84% 0
57 is_int 27.65% 5
58 apcu_add 27.57% 0
59 getcwd 27.49% 1
60 strtoupper 27.42% 6
61 is_numeric 26.95% 9
62 array_unique 26.91% 4
63 ltrim 26.60% 4
64 basename 26.57% 4
65 str_repeat 26.26% 7
66 fopen 25.91% 6
67 array_slice 24.94% 3
68 getenv 24.94% 4
69 var_export 24.71% 3
70 preg_match_all 24.67% 3
71 is_callable 24.48% 4
72 reset 24.44% 4
73 preg_split 24.40% 3
74 fclose 24.36% 5
75 array_unshift 24.25% 3
76 gettype 24.21% 4
77 end 23.90% 3
78 array_search 23.82% 3
79 max 23.78% 5
80 extension_loaded 23.59% 3
81 is_bool 23.55% 2
82 version_compare 22.82% 3
83 preg_quote 22.78% 3
84 time 22.70% 9
85 ucfirst 22.66% 4
86 ksort 22.66% 2
87 preg_replace_callback 22.54% 3
88 md5 22.51% 4
89 array_reverse 22.47% 2
90 array_diff 22.12% 2
91 is_readable 22.00% 1
92 microtime 21.96% 4
93 copy 21.81% 1
94 parse_url 21.81% 2
95 is_null 21.50% 17
96 base64_encode 21.42% 3
97 current 21.38% 2
98 is_resource 21.08% 3
99 serialize 20.77% 4
100 key 20.57% 2

Базы данных

Следующий пункт в требованиях — MySQL, и это логично: с базами данных уметь работать обязательно. Нужно составлять CRUD-запросы, делать выборки с JOIN, понимать, что такое индексы и как их использовать (хотя бы поверхностно).

Фронтенд для бэкендера

Многие рекрутеры ждут базового владения JS, jQuery, HTML, CSS. Да, фронтовые технологии спрашивают и у бэкендеров — обычно по логике «если фронт заболел или ушёл в отпуск, а на проде что-то заполыхало, бэкендер должен суметь починить». В целом там ничего сложного.

Работа с API

Часто хотят опыт работы с API — и тут тоже ничего сложного, информации в интернете предостаточно. Фактически нужно уметь читать документацию к чужому API, отправлять curl/Guzzle-запросы и обрабатывать JSON-ответы. И всё.

Git — это must have

Вот здесь я полностью согласен с рекрутерами: Git — обязательное требование для всех без исключения. Нужно чётко понимать ветки, теги, что такое rebase, как работать с мерж-реквестами и делать это аккуратно. Без этого в современной разработке делать нечего — отработайте до автоматизма, как «отче наш».

Архитектура: MVC, SOLID и компания

Стоит иметь представление, что такое MVC, SOLID, DRY, KISS, GRASP, YAGNI. Темы несложные — достаточно почитать и понимать их смысл.

Системное администрирование по минимуму

Если вы в состоянии залить проект на хостинг и запустить его — для джуна этого достаточно. С большой вероятностью слова SSL, HTTPS, SFTP, DNS, bash, nginx, Apache не должны быть для вас пустым звуком.

Фреймворки

Знание фреймворка многие ставят преимуществом, но я бы уже сейчас считал это must have. Из основных — Symfony, Laravel, Yii2 (перечислены в порядке личного предпочтения).

Что добавлю от себя

Пара навыков, которые считаю почти обязательными для разработчика:

  • Linux — лучше всего работать в нём постоянно; на худой конец подойдёт macOS, но точно не Windows — с ней будет больно.
  • Docker — понимание принципов нужно уже сейчас, его эра наступила.

А дальше — развиваться на опыте: своём, коллег и сообщества. Если хотите быстрее пройти путь от джуна и не распыляться — разберём ваш план на консультации.