@tosha_lol_daaa

Знания Junior php разработчика?

Например мои знания сейчас:
  • написал велосипед (mvc) (если кому-то интересно - могу показать конечно);
  • 3 месяца работаю с laravel 5.2;
  • имел дело с lumen;
  • умею адаптивно верстать(materialize);
  • jquery & ajax (начал знакомится совместно с Laravel, сейчас проблем с этим нету);
  • немного Node & redis & socket (Тот же Laravel);
  • Ну и немного(совсем капельку): symfony 3;
  • паттерны (синглтон, фабрику умею применять, остальное - теория).


Я пытался что-то вынести в общую "кашу", что есть в вакансиях:
Cms, фреймы, паттерны, ооп, mvc, адаптивно верстать, Jquery(как минимум, иногда react, angular), работать в фш и т.п.

Так вот, вопрос:
Что вообще должен знать Junior php?

Не могу никак вынести что-то в одно.
Спасибо.
  • Вопрос задан
  • 24226 просмотров
Пригласить эксперта
Ответы на вопрос 8
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
что должен знать идеальный джуниор (мое личное мнение):

- Сетевой стэк. Нужно иметь хотя бы базовое представление о том как с сервером общаются. Ну то есть не нужно лезть в дебри, но понимать что такое HTTP или чем TCP от UDP отличается - нужно. В целом это пара часов чтения википедии.
- GIT или любая другая распределенная VCS. Базовые навыки, что бы хотя бы понимал что есть git revert или git rebase, что такое фичабрэнчи и примерное представление как это работает и зачем надо.
- Базовые основы unix. Ну то есть что бы не пугаться таких вещей как ssh хотя бы.
- PHP. Без этого никуда. Он должен понимать что такое слабая динамическая типизация (не заучивать табличку кастов типов, а понимать плюсы и минусы, такая же история с приоритетами операторов - не заучивать а знать как избегать проблем с чтением кода)
- Понимать что код чаще читают чем пишут, а потому не экономить 5 минут на написании кода, а писать так, чтобы сэкономить 30 минут человеку, разбирающемуся в куске кода.
- Знать базовые вещи в плане безопасности. XSS и как защищаться, SQL инъекции и как защищаться, CSRF, MITM. Понимать что такое NDA, что данные пользователей - секретная информация. Как хэшировать пароли (не md5 а password_hash) и почему это важно.
- Знать SQL. Глубоких знаний не требуется, нужно лишь понимание того, что такое нормальная форма, желательно разобраться с вопросом денормализации данных. Идеально иметь хотя бы базовые представления о том как работать с NoSQL решениями.
- Процедурное программирование: почему глобальные переменные порождают сложность, что такое состояние, как можно использовать классы для изоляции состояния и т.д. Инкапсуляция. Инварианты, пост/пред условия, сохранение целостности...
- Разделение ответственности. Это один из важнейших принципов, и упрощать все это до "mvc фреймворк" слегка неправильно. Вы должны понимать что от чего отделяете и главное зачем.
- Автоматические тесты. Джуниор должен знать что это такое и иметь хотя бы минимальный опыт их написания. Должен понимать разницу между юнит и интеграционными тестами. Быть знакомым с пирамидой тестирования.
- Уметь решать стандартные задачи не задавая слишком много вопросов. Например регистрацию пользователя по email-у вы должны написать, или авторизацию через соц сети, или комментарии, или новостную ленту.
- Уметь дебажить. xdebug, blackfire и тд.

В целом где-то за годик весь этот список можно влегкую покрыть с нуля.

p.s. Я в списке специально не указывал ООП, поскольку всеравно первые пару лет у разработчиков выходит процедурщина на классах. Это не плохо, но того что в моем списке более чем должно хватать для решения стандартных задач. Но термины вроде "инкапсуляция/полиморфизм/наследование" требуются в обязательном порядке подавляющем количеством интервьюверов, а стало быть знать это надо. Единственное что - рекомендую в свободное время глубже погрузиться в этот вопрос а не тупо заучивать формулировки.

Так же вещи вроде docker джуниорам знать не обязательно просто потому, что их врядли допустят сходу к управлению инфраструктурой. А так пару неделек на изучение и вперед.
Ответ написан
@entermix
Пункт номер ноль

Разработчик должен соображать и уметь использовать Google. Первое оценить крайне сложно, для этого придумано много «дурацких» вопросов для собеседований. Второй пункт прививается в первые дни испытательного срока. Плюсом будет аккаунт на stackoverflow.com.

anton.shevchuk.name/php/required-skills-for-junior...

https://dou.ua/forums/topic/14427/
ru.stackoverflow.com/questions/581042/%D0%A7%D1%82...
Ответ написан
@FoxInSox
Гуглить и не бояться говнокодить.
Ответ написан
Комментировать
@Alzasr
Твой уровень знаний, если ты все честно описал, достаточен для джуниора и мб даже больше. Как я понял, ты хорошо обучаешься. Можешь легко идти на вакансии джуниоров, а через полгода-год стать мидлом. Если ты живешь в Ижевске, обращайся, готов тебя взять, правда после общения с HR, к себе в отдел.
Ответ написан
Комментировать
sabramovskikh
@sabramovskikh
Вы уже достаточно знаете для джуна
Ответ написан
@Fractalzombie
Software Engineer
Ну посмотрев код на гитхабе, скажу, что в части ООП вам еще много чего предстоит понять. Особенно как делегировать полномочия и что это такое вообще.
Понять суть абстракций, не просто выучить, а понять где, зачем и почему, что бы не дублировать. Где располагать классы сервисов, утилс и т.п.
Ну и самое важное, это паттерны в этом случае, придется тоже понять зачем и почему.
Ответ написан
@zzzmaikzzz
Junior-web
HTTP + TCP + IP + SQL + PSR-0, PSR-1 и PSR-2 + Библиотека PHP (SPL) + XDebug + Composer + PEAR + PDO + Безопасность + Хэширование паролей + Фильтрация данных + PHPUnit + Selenium + Кэширование + и т.д.
Ответ написан
feycot
@feycot
Чтобы проверить/закрепить знания на практике можно участвовать в реальных проектах, опенсорсе, делать тестовые задания. Например тестовые можно взять отсюда https://github.com/Hexlet/ru-test-assignments

Что касается знаний - есть так называемая "база", или общие фундаментальные знания
* Операционные системы и сети. Хотя бы общие вещи. Как работать с линуксом, выполнения команд, чтение логов, несложное администрирование. Понимать, что происходит, Когда вводишь google.ru в адресную строку
* Тестирование. Это в принципе легко делается, тем более в ларавеле. Как тестировать
* Теория множеств, базы данных. Умение писать простые запросы
* Гит, мастхев
* Управление конфигурацией, типа Ansible, мб даже Terraform (хотя бы иметь представление, что это). Знать, что такое деплоить.
* Собственно уметь писать код, хотя бы по ТЗ, хотя бы круды. Ну и тестировать его
* Структуры данных, хотя бы в общих чертах (но это идет в алгоритмах)
Можете провериться еще по чек-лист вот этому https://guides.hexlet.io/ru/check-list-of-engineer...
Если что-то не знаете - рекомендую изучать.
Базово верстку, тк она всегда пригодится.
Ну и этих знаний достаточно, чтобы быть уверенным джуном.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы