/ laravel

Что нужно знать о Laravel Junior developer?

Что должен знать junior laravel developer? Это очень тонкий вопрос, однозначного ответа на который нету. В основном, требования на эту должность зависит от компании. Однако, можно выделить базу, которой программист должен обладать, и обязательно способен реализовать самостоятельно. В этой статье я опишу подход, благодаря которому можно оценить знания программиста, и его готовность к работе на должности Laravel Junior Developer.

Как бы я проводил собеседование?

Побывав на многих собеседованиях, в основном, меня посещало чувство дежавю. Ведь, зачастую, меня засыпали однотипными, шаблонными вопросами из разряда "собеседование для чайников". Возникало такое чувство, что вопросы на собеседование подбирались из первой статьи на хабре, а не из личного опыта рекрутера.
Но, когда я буду "по ту сторону" собеседования, то мой подход будет отличаться от того, с которым столкнулся я.

Прежде всего, мне нужно оценить практические знания и умение решать проблемы доступными инструментами, сегодня же, это будет касаться только laravel. Очевидно, чтобы проверить практические умения, нужно позволить пришедшему на собеседование написать простой проект, от начала и до конца. И именно эта процедура покажет глубину знаний инструмента, и умение применять его в разработке.

Нужно проверить базовые знания фреймворка, верно? Потому, практическое задание должно быть одновременно простым, но охватывающим большинство базовых компонентов фреймворка. В дополнение, эта задача, по объему работы, должна решаться в течении одного дня.

Вот, по моему мнению, именно этими знаниями должен обладать laravel junior программист.

Задача

Задача программиста - создать проект, мини CRM, по управлению компаниями и её сотрудниками:

  • Должна быть реализована базовая авторизация
  • Применение сидеров (seeds) для создания первого пользователя с данными для входа (email - admin@local.in и паролем password)
  • Создать миграции для компаний: name, email, phone, website, logo (минимум 100х100 пикселей)
  • Создать миграции для сотрудников компании: first name, last name, company (используя внешний ключ для связи (foreign)), email, phone
  • Создать CRUD (Create, Read, Update, Delete) панели для Компаний и Сотрудников
  • Сохранять логотипы компаний в папке storage/app/public/companies, и сделать её доступной из папки public
  • Для создания CRUD-ов нужно применить Laravel resource маршруты
  • Для валидации использовать Request классы
  • Использовать встроенную пагинацию, с выводом 15 последних созданных элементов на страницу

А на что смотреть то?

Для проверки базовых знаний этого достаточно. Этот простой проект поможет определить качество знаний junior программиста, и увидеть его практические умения. Успешное прохождение такого теста поможет понять, что передо мной человек, который имеет знания:

  • MVC - Model View Controller
  • Аутентификация
  • CRUD и resource контроллеры
  • Eloquent и связи по внешнему ключу
  • Миграции и сидеры
  • Валидация запросов
  • Управление файлами
  • Пагинация

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

По итогу, это будет отличных тест на умение решать типичные задачи, и созданию простых проектов. А дальше, всё, что потребуется от такого кадра - это практика, практика, и практика. Набивая руку на новых проектах, каждый из которых, индивидуально, по капельке, будет прокачивать скилл программиста, делая его всё более ценной кадровой единицой.

Программирование - это креативная занятие. Люди пишут код по разному, некоторые пишут везде маршруты Route::get, Route::post, вместо того, чтобы использовать resource. Некоторые не валидируют запросы, не пользуется инструментами фреймворка, и костылит сам, некоторые не используют миграции, и т.д.
И вот именно такой вариант собеседования позволит на раннем этапе определить нужного вам человека по его коду. Дьявол кроется в деталях, потому, соблюдение всех стандартов, даже в таком простом проекте - многое говорит о профессиональных качествах программиста.

Дополнительная задача для продвинутого laravel junior программиста

Если в результате будет понятно, что это задача была слишком простой, то можно усложнить задачу:

  • Применить в проекте библиотеку Datatables.net - с, или без SSR (рендеринг на стороне сервера)
  • Использовать AdminLTE тему в качестве фронденда
  • Сделать email оповещения при добавлении нового сотрудника в компанию (используя Mailgun или Mailtrap)
  • Сделать мультиязычное приложение
  • Применить Unit-тесты (в базовом варианте)

Резюме

В этой статье я описал методику, по которой можно протестировать программиста на должность junior laravel developer. Это особенно будет полезно тем, кто изучает Laravel, и пока не понимает, достаточно ли знаний для трудоустройства в компанию. Если вы задавались вопросом что должен знать laravel php программист, то, эта статья должна быть вам полезна.
Если вы не почувствовали сложности этих задач, то, что вы здесь делаете? Вы готовы, удачи!