PHP-разработчик - что он умеет?

Это не совсем статья, скорее вызов на диалог. Задумался я тут на досуге о статусе PHP-разработчика, о его способностях… Что должен уметь и чем владеть профессиональный PHP-разработчик? Список может быть бесконечным, я понимаю, но что-то основное всё равно хотелось бы выделить. На мой взгляд, это должно быть следующее:

  • Владение какой-либо средой разработки ( Eclipse PDT ).
  • Ведение документации проектов ( PHPDocumentor ).
  • Знание модели M-V-C.
  • Составление и чтение UML-диаграмм.
  • Владение технологиями шаблонов ( Smarty, Native шаблоны ).
  • Естественно, знание одной (лучше нескольких) из SQL БД. К примеру, MySQL: индексы, триггеры, внешние ключи и проч… Ну и грамотное составление схем данных, нормализация вплоть до 5 НФ (быть знакомым с технологией, но применять по уму).
  • Владение системами контроля версий ( SVN ).
  • Все принципы ООП, которые реализованы в PHP5. Понятное дело, что их не так много, но и этого достаточно для грамотного программирования. Продуманная объектная модель - ключ к масштабируемости, а это, в свою очередь, залог успеха всего предприятия.
  • Регулярные выражения. Без комментариев.
  • Профилирование кода.
  • Unit Testing.
  • XHTML, CSS, JS, HTTP-протокол, асинхронные запросы (спасибо, Sam).

Что ещё я забыл? Прошу Вас, напишите своё мнение и, если не жалко, приведите ссылки на литературу или статьи, которые смогли бы помочь остальным читателям в достижении Дзена. =)

Комментариев: 17

  1. Sam пишет:

    5 НФ :) Посмешили :)

  2. huze пишет:

    А что смешного в 5 форме?

  3. huze пишет:

    Лучше бы подсказали, что ещё я забыл.

    • Профилирование кода.
    • Unit Testing.
  4. Sam пишет:

    Нормализация выше третьей часто чревата. Не говоря уже о пятой. Кстати, реальный пример пятой формы найти довольно трудно.

  5. huze пишет:

    Чревата чем, простите? Я прекрасно отдаю себе отчёт в том, что 5 (да и 4 и БКНФ) сложны для восприятия человеком, да и объём кода для манипуляции такой БД растёт, не говоря уже о почти всегда возникающих издержках производительности. Но это не значит, что программист не должен знать эти технологии; как минимум, ознакомлен с ними он должен быть.

    Мой выбор - 3 НФ, она наиболее оптимальна, на мой взгляд. Может, у Вас есть ещё какие-то замечания по поводу списка?

  6. Sam пишет:

    Есть.
    >Владение какой-либо средой разработки ( Eclipse ).

    Странно, что указана Eclipse, а не PDT.

    Ну и забыли:
    XHTML, CSS, JS, HTTP-протокол, асинхронные запросы.

  7. huze пишет:

    На самом деле, я хотел написать Eclipse PDT, но 3 часа ночи я этот момент упустил. =)

    XHTML, CSS, JS, HTTP-протокол, асинхронные запросы.
    Ну, это я не указал как само собой разумеющееся. =) Действительно, каждый PHP-разработчик должен уметь думать на этих языках/технологиях.

  8. Sam пишет:

    > Владение одним из шаблонизаторов ( Smarty ).

    Тут указать бы ещё Native-шаблоны.

  9. huze пишет:

    Вот по поводу Native-шаблонов у меня очень ёмкое предубеждение. Не считаю их серьёзным инструментом, которым должен владеть PHP-разработчик. Ознакомлен и предостережён быть должен.

  10. Sam пишет:

    Какое предубеждение? Они очень удобны и быстры, хотя требуют немного самодисциплины. Но если программист знаком, с MVC, то легко справится.

  11. huze пишет:

    Ну, может быть…

  12. Dead Krolik пишет:

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

  13. magic пишет:

    Как ZCE, я бы добавил :) :
    1) понимание Unix архитектуры и основные навыки администрирования Unix-веб серверов.
    2) понимание XML и навыки работы с DOM, SimpleXML, SAX, SOAP, XML-RPC.
    3) создание безопасного кода, понимание Code Injection, SQL Injection, XSS, Http Request Forgery и т.д. и как от них можно защититься.

  14. Павел Воронин пишет:

    Спасибо за дополнение. Могли бы Вы на своём блоге указать источник, откуда скопировали это пост?

  15. magic пишет:

    да пожалуйста )
    Только я не скопировал пост, а взял его за основу и расширил. Давно хотел сформулироать эти требования для себя :)

  16. Павел Воронин пишет:

    Спасибо большое. =)

  17. Jeurey пишет:

    Самое главное - забыли… Самое главное для php-программиста - это умение думать.

    Все привыкли, что пых - простой язык для простой веб-страницы… А ведь на VDS 128RAM/400MHz/10MBps можно 20к страниц в минуту граббить…

    Да и ООП существует не для того, чтобы его знать, а для того, чтобы его применять… Самый яркий пример Copy+Past vs OOP+XML-service.map =)