Какой функционал необходимо сделать на yii2, чтобы работодателю было понятно, что я с ним знаком?
Работаю SEO-оптимизатором, эта сфера уже в конец достала, и последний год изучаю php, с планами перейти на back-end php программиста (разумеется, пока смотрю на вакансии уровня junior).
Во многих вакансиях требуют знания современных фреймворков, в основном Yii2. Вот уже какую неделю читаю руководства, кручу-верчу этот фреймворк и задумался, а собственно какой функционал нужно на нем реализовать, чтобы работодателю было понятно, что я с ним знаком?
И сразу для тех, кто напишет список функционала на пять страниц - вопрос - а оно нужно? Произведет впечатление? Например с сентября до марта писал свой велосипед, на примитивном уровне (мне тогда еще никто не сказал что всем нужно MVC), но с большим количеством функционала: помимо классической регистрации/постов/комментариев/лайков реализовал целую систему характеристик пользователя (уровень, здоровье, энергия, и т.д.), предметы которые можно было покупать/продавать/одевать.
Пол года с этим велосипедом провозился ииии... нафиг он никому не сдался. Вообще не смотрят и не заглядывают в то, что я там написал.
И тут возникает вопрос - а может и на Yii2 достаточно сделать какой-нибудь статичный сайт-визитку с парой страниц и этого будет достаточно? Все равно 90% работодателей не вникает в то, что там за сайты в портфолио и какой там реализован функционал.
Тут уже все зависит от того, насколько подкован работодатель.
Если у работодателя нет опыта, то все сведется к тому:
- Знаете? Покажите сайты которые делали. Хорошо, вы приняты.
Если работодатель подкован(с вами общается программист), то смотреть будут исходя из того, что ищет работодатель.
Возможно вас попросят показать кусок кода, или попросить доступ к проекту.
Если кратко, то в первую очередь я бы обратил внимание на:
1) Изменяли ли вы VEndor. Без шуток, но до сих пор встречаются такие люди.
2) Используете ли вы миграции.
3) используете ли вы хелперы языка на полную, а не пишите через $_GET['param'] и другие стандартные функции языка PHP.
... 4) тут еще много всякого, в том числе и красота кода, и полноценное использование MVC.
5) отдельно висят тесты. если человек овладел ими и пишет сначала тесты, то можно с уверенностью сказать, что по всем предыдущим пунктам он прошел.
Опять же, знание фреймворка сводится к тому, что вы знаете, в каком месте читать мануал по тому или иному пункту. И как пишутся основные вещи.
Писать надо не для того, чтобы показать кому то, чтобы заценили, а для того, чтобы познать фреймворк во всех тонкостях. Можно и за пол дня набросать через gii Ваш мега сайт с характеристиками и блэк джеком не вникая во внутренние механизмы и фишки.
Что касается "пол года писал то, что никому не нужно", привыкайте, в этом вся суть работы программиста.
Работодатель не будет смотреть весь функционал, что вы там на ваяете, мб обратит внимание на какие то интересные сложные моменты, показывающие Ваш скилл, но врядли. Код просят, чтобы посмотреть стиль оформления и наличие говнокода (лишние/не объявленные переменные например).
Можно и за пол дня набросать через gii Ваш мега сайт с характеристиками и блэк джеком не вникая во внутренние механизмы и фишки.
Ну да, ну да. За пол дня, когда одно только наполнение базы предметов занимает неделю. Один только функционал, который рассчитывает цену предмета, на основе её характеристик занимает день. Ага, за пол для вы все сделаете.
Вам с таким подходом браузерные MMORPG делать за выходные - разбогатеете.
Все верно, т.к. сегодня yii есть, а завтра его перестанут поддерживать и нужно будет писать на другом фреймворке.
Поэтому работодатели в первую очередь смотрят знание нативного php, умение находить решения, и общую адекватность человека.
Вопрос в том насколько сам работодатель с ним знаком?
Если проверять Ваши труды будет спец, то его устроит хорошо реализованный абстрактный модуль или widget размещенный на github. А если у Вашего труда лайки будут стоять - тем более отлично.
Если ЛПР там "как обычно", то стоит сделать красивую админку, можно взять шаблон LTEAdmin натыкать кучу анимированых графиков и т.д. "пыль в глаза".
Часто встречал студии (пока был уверен, что работа в студии это перспективно и денежно), которые работают как конвейер выпуская однотипные лендинги на wp и хотят иметь одного спеца по yii, потому что иногда спрашивают. Но так как у них нет спеца, что бы оценить степень владения fremework-ом, то критерии оценки могут быть весьма парадоксальными. Тут больше лицом торговать придется, чем навыки показывать или по php и ООП будут гонять. К слову php и ООП надо знать в любом случае.
достаточно мочь делать работу любую какую скажут.
т.е. комфортно себя ощущать при разработке, а не обливаться потом и кровью при "непонятной" задаче еще до её начала.
И это больше относится к самому языку естественно и кругозору, фреймворк лишь инструмент.
Проверять никто ничего не проверит, как проверять это? По документации гонять наизусть?
У тебя задача устроиться начинающим разработчиком PHP, а не знания фреймворка демонстрировать, хотя это, конечно же плюс, но, как по мне лучше знать хорошо сам язык, понимать его тонкости, узкие места, уметь писать понятный код, тесты к нему. Приведу реальный пример из моей жизни по требованию к кандидату на позицию PHP разработчика, текст оставил без изменений, возможно, будет полезно:
Ок, найди, пожалуйста, на github опенсорсный проект на php, выбери понравившийся issue (или несколько), выполни и отправляй мне ссылку на pull-request. Можно самому завести issue. Главное, чтобы задача была тебе интересна.
Критерии оценки:
- Влияние выбранной задачи
- Качество кода (корректность, производительность, элегантность)
- Читаемость кода и документация (грамотное программирование это плюс)
- Тестирование
- Ясная коммуникация в pull request, объясни как ты решил проблему, расскажи о возможных подводных камнях, и предоставь диалог с поддерживающим(и) проект если возможно.
Чем лучше выполненная задача покажет тебя как разработчика - тем лучше. Оптимально, если ты нацелишься на https://github.com/yiisoft/yii2/issues или на любой другой mvc фреймворк
лучше знать хорошо сам язык, понимать его тонкости, узкие места, уметь писать понятный код, тесты к нему.
Это все конечно так, но знание фреймворков - самый популярный вопрос на собеседованиях (в моей практике).
Соответственно почему бы не разобарться в том, что чаще всего спрашивают. К тому же, что такое хороший код можно понять только на примере этого самого хорошего кода, и изучение современных фреймворков этому способствует.
Согласен, если тебе проще изучать тонкости языка через изучения фреймворка, к тому же одного из популярнейших, значит это твой путь.
Кому-то проще изучить язык, читая толстые книги и воплощая упражнения на практике, кому-то через код ревью, кому-то через юнит тесты, а кто-то любит опен сорсные проекты ковырять.