четверг, 26 сентября 2013 г.

Как улучшить навыки PHP-программирования


«Как улучшить мои навыки в PHP?» - актуальный в интернете вопрос. Его чаще задают новички, но и каждый опытный разработчик спрашивает себя о том же. В конце концов, стремление к самосовершенствованию заложено в человеческой природе. Это сложный вопрос и, если подумать, на него нет точного ответа. Тем не менее я попытаюсь дать обширный ответ, который, надеюсь, будет полезен не только новичкам, но и людям с некоторым опытом.





В книге “Bounce” Мэтью Сайда (Matthew Syed) говорится, что для достижения высокого уровня в любой дисциплине, нужно практиковать её 10 000 часов (что примерно равняется 10 годам). Я не думаю, что мастерство в программировании на PHP требует 10 лет практики. Очевидно практика должна быть целенаправленной, иначе она бесполезна.



Последнее предложение предыдущего параграфа содержит ключ к успеху. Оно не только о том, что вам нужно делать, но и о том как это делать.



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



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



Хотя в контексте этого поста - PHP, вопрос не привязан к конкретному языку программирования. Улучшить навыки в программировании на PHP, значит улучшить ваши универсальные навыки программирования. Их можно разбить на 3 области:
-разработка (стандарты кодирования, шаблоны проектирования, юнит тестирование, алгоритмы и т. д.)
-управление (жизненный цикл приложения, контроль версий, гибкость и т. д.)
-окружение (базы данных, операционные системы, сети, протоколы и т. д.)


Каждый человек нуждается в различных комбинациях этих навыков — зависит от того какова его конечная цель. Для разработчиков существуют различные руководящие должности, но в целом, все они либо технические (глава разработки, старший архитектор и т. п.), либо управляющие (менеджер разработки, технический директор и т. п.). Руководящие должности могут оплачиваться одинаково хорошо, так что это вопрос выбора между программированием и управлением.


Пожалуй, после этой немного затянувшейся инструкции, настало время ответа на вопрос. Чтобы улучшить ваш навык в PHP-программировании (или вообще в web-разработке) выберите пункт из нижеприведённого списка и попробуйте узнать о нём столько, сколько сможете. Вы можете не соблюдать предложенный порядок, но в итоге вам будет нужно изучить всё из этого списка.



Программирование на PHP
-
Основы PHP: переменные, циклы и функции
-
Массивы (http://uk1.php.net/manual/ru/book.array.php)
-
Работа с файловой системой (http://uk3.php.net/manual/ru/ref.filesystem.php)



Основы фронт-энда
- HTML
- CSS




Объектно-ориентированное программирование в PHP
-
Классы и объекты (http://php.net/manual/ru/language.oop5.php)
-
Исключения (http://www.php.net/manual/en/language.exceptions.php)
-
Пространства имён (http://www.php.net/manual/en/language.namespaces.php)



Основы баз данных
-
Основый SQL (select, insert, update, delete)
- PHP PDO (http://uk3.php.net/manual/en/class.pdo.php)




Фронт-энд
- JavaScript
- jQuery
-
Отзывчивый web-дизайн



PHP
- XML & DOM (http://uk3.php.net/manual/en/book.dom.php)
-
Регулярные выражения (http://www.regular-expressions.info/tutorial.html)
- SPL (http://uk3.php.net/manual/en/book.spl.php)
-
Магические методы (http://php.net/manual/en/language.oop5.magic.php)
- GD (http://uk3.php.net/manual/en/book.image.php)
- JSON (http://uk3.php.net/manual/en/book.json.php)

Базы данных
-
Проектирование баз данных (http://en.wikipedia.org/wiki/Database_design)
-
Индексация
-
Разработка (управление пользователями, резервное копирование)
-
Оптимизация SQL



Проектирование ПО
-
Шаблоны проектирования (“PHP Objects, Patterns and Practice”)
-
Алгоритмы и структуры данных (Introduction to Algorithms)
-
Юнит-тестирование (The Art of Unit Testing: with Examples in .NET)
- PHP
фреймворки (одного достаточно)
- UML




Безопасность веб-приложений
- MySQL
инъекции
- Межсайтовый скриптинг
(CSS)






Управление кодом
-
Контроль версий (SVN or GIT)
-
Ветвление (http://nvie.com/posts/a-successful-git-branching-model/)
-
Отслеживание багов (любое доступное ПО)
-
Стандарты кодирования (“Clean Code: A Handbook of Agile Software Craftsmanship”)



Линукс
-
Командная строка
- SSH
-
Установка и конфигурирование LAMP окружения
-
Установка расширений PHP



Apache веб-сервер
-
Виртуальные хосты
- MOD_Rewrite




Альтернативные хранилища
-
Кеширование: Memcached или Redis
- NoSQL: MongoDB
или CouchDB или Cassandra
-
Поисковые движки: SOLR или ElasticSearch






Сети
-
Модель OSI (http://en.wikipedia.org/wiki/OSI_model)
-
Протокол TCP/IP
-
Протокол HTTP
-
Работа со снифферами (tcpdump или wireshark)
- CURL (http://uk3.php.net/manual/en/book.curl.php)




Ведение разработки
- SCRUM (“Agile Project Management with Scrum”)
-
Ведение (“How to Lead: What the best leaders know, do and say”)
- Разработка через тестирование




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

Вольный перевод этой статьи

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

Отправить комментарий