Ценность php разработчика
06 01 2017 admin Пока нет комментариевТема поста назревала давно — это и бесконечные, но не решенные топики на тостере о том, какими знаниями и умениями должен обладать веб-разработчик определенного уровня и необходимость обозначить для себя критерии качества профессионального php-программиста , вектор развития.
Попытаюсь привести область качеств некоего не идеального, но оптимального php-программиста в моем представлении.
Итак, он должен обладать следующим (список неполный, может обновляться):
- Хорошее знание синтаксиса языка и опыт практического применение его возможностей.
- Знание возможностей и опыт работы с общими необходимыми инструментами разработки (вспомогательный функционал, делающий процесс разработки приятнее и эффективнее)
- Git + сервисы хостинга (github, bitbucket)
- Менеджер зависимостей (composer + репозиторий packagist)
- Среда разработки (IDE)
- Vagrant
- Знание и опыт работы с технологиями и популярными библиотеками:
- Базы данных, субд (sql, mysql )
- Тестирование
- Кэширование
- Безопасность
- Знание и опыт использования лучших практик применения языка программирования (полезности от продолжительного опыта работы сообщества разработчиков)
- Стиль кода (применение стандартов PSR)
- Документирование
- Шаблоны проектирования (общие подходы, применимые к любому языку)
- Лучшие приемы работы с php. (Так называемые рецепты)
- Лучшие приемы работы с выбранным фреймворком.
- Умение находить наиболее эффективные способы при использовании языка (ведь задачи можно решить многими способами, главное — выбирать оптимальные).
- Скорость разработки.
- Навыки, связанные с конкретными задачами (зависящие от конкретного проекта)
- Знание архитектуры, api, опыт работы с фреймворками/cms.
Я попытался разбить знания и навыки на 5 категорий. Где-то они пересекаются и сложновато однозначно определить категорию.
На мой взгляд, навыки пятого пункта слабо суммируются, если вы хотите успешно решать конкретные задачи разработки, а не быть кладезем знаний. Чем изучать 10 фреймворков, наверное, лучше узнать основательно один, совершенствовать навыки работы с ним и решать с его помощью бизнес-задачи до тех пор, пока он актуален.
Изучение синтаксиса — самое простое и быстрое, а вот пункты 4 и 5 (лучшие практики работы с языком в целом и с фреймворками в частности) — практически бесконечные и как раз по этой причине, сложно представить, как можно поменять свой основной язык программирования, на котором работаешь, так как эти пункты придётся набирать с нуля.
Отдельно стоит сказать о стиле и архитектуре кода. На мой взгляд, именно это отличает профессионала от новичка. Если не брать в расчёт компании-лидеры it, которые создают новые технологии, то окажется, что 80% задач по силе решить и senior и junior-программисту, но разница будем в том, что в первом случае будет элегантная система с прозрачной архитектурой, которую будет просто сопровождать, а во-втором куча костылей, в которых через пару недель самому автору будет трудно разобраться..