Исходник статьи http://www.sitepoint.com/becoming-php-professional-missing-link/

Когда читаешь различные связанные с PHP блоги, обсждения вопросов, обсуждения в соц сетях,  новостные рассылки и журналы, то я часто замечаю разный уровень умений. Вопросы на уровне "Как я могу подключиться к MySQL?" или что-то в районе "Как мне наилучшим образом улучшить мою систему отправки сообщений для отсылки свыше миллиона емэилов в час без подключения дополнительного сервера?"
Лично я различаю 4 уровня PHP мастерства (так же применимо к любому языку или профессии): начинающий, средний уровень, профессионал и элита.

Крайности

В PHP, новички знают про переменные, включения файлов, обработку форм. Они учат простые логические конструкции. Они отправляют емэил с помощью обучающего урока, может быть даже косаются примеров объктно-ориентированного программирования без действительного их понимания. Они работают с Вордпресом и изменяют несколько CSS стилей. С этими знаниями они устраиваются на работу и, к сожалению, обычно увольняются.

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

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

Таким образом, для всех тех, кто среднего уровня.

Упущенные ссылки.

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

Что дальше по списку на пути изучения работы на PHP.

Отказ от спагетти кода

Многие люди думают что использование классов значит что ты пишешь объектно-ориентированный код, в то время как использование функций значит что ты пишешь в процедурном стиле. Так как это ложь, то ради этого аргумента, давайте определим широкое ванильное определение: процедурный код, это кодв котором вы просто не используете классы и объекты, и ООП код это код в котором вы используете классы и объекты на столько на сколько это возможно.

Мой совет это полностью отказаться от процедурного кода. Используйте объектно ориентированный стиль кодирования как можно больше - пишите классы, инкапсулируйте логику, думайте используя терминологию реального мира.  Выгода от производительности процедурного кода в отличие от кода основанного на классах становится для вас незначительной, если соотнести повторное использование которое обеспечивает ООП код и дальнейшую разработку продолжающую ваш проект. Главный аргумент против этого - "Вордпрес процедурный!". Откровенно говоря, и это может прозвучать сурово, "Вордпрес разработчики" не более PHP разработчики чем люди с Инстаграммом - фотографы. Пожалуйста не воспринимайте это в смысле ВП бесполезен - это отлично для блогов, простых веб-сайтов и однодневных проектов на которые вы не хотите тратить много времени. Это отлично для получения быстрых денег или для людей с техникой на вы, но написание ВП никогда не сделает из вас профессионального PHP разработчика - это пряжа из спагетти кода, которая может научить тебя не надлежащим принципам дизайна.

Начать просто. Подумайте о концепциях реального мира, и попробуйте представить их в виде ООП кода. Пройдите через несколько базовых уроков и медленно переходите к более сложному. Работайте над ООП кодом, пока вы не поймете классы в общем смысле до перехода на правильные фреймворки и запутанные термины типа "Модель", "Представление" и "Контроллер" - все эти туманные, абстрактные термины без основательного понимания ООП сначала.

Обсуждайте существующие проекты

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

Смотрите проекты, которые хорошо закомментированы и/или документированны, хорошо  структурированны, и поддерживаются. Проекты обновленные в 2008 году не сделают вас лучше, если вы вникаете в PHP 5.5 - вы скорее упустите последние и крутые новинки которые могут помочь вас выделиться в итак уже перенаселенной области.

Учитесь настраивать свое собственное PHP окружение

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

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

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

Экспериментирование со своими собственными инсталляциями так же позволит тебе познакомиться с различными серверными окружениями - использовать ли Апач и Nginx, или ничего из них и использовать Appserver, и так далее.

Испытывайте лучшие практики рано.


Когда пишете свой собственный код, убедитесь что вы комментируете много с docblocks стандартом комментирования, правильными отступами и аккуратной структурой. После проектирования класса, проекта или библиотеки, используйте известные инструменты для документирования(PHPDocumentor, ApiGen) для для извлечения комментариев и их улучшения.

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

Если использовать лучшие практики рано то это поможет оставаться неизменным и позволить другим людям читать твой код гораздо более бегло. Найли свой стиль и придерживайся его - это поможет как тебе так и другим. Попробуй следовать ПСР стандартам(PSR-0, PSR-1^ PSR-2^ PSR-3) на сколько это возможно - они называются стандартом не без причины. Большинство из нас любит и использует их, и они делают код каждого одинаково повторно используемым и читаемым.

Хорошим ресурсом для новичка с хорошими современными советами это "PHP the right way" - используй это чтобы познакомиться с лучшими современными практиками, основанными на ООП, безопасности, разработке, стандартов кодирования упомянутых ранее, и другое.

Попробуй разные фреймворки, выбери один


долгое время, PHP был языком со множеством фреймворков (JavaScript подоспел недавно). Стоит ли говорить о несогласованности нашего комьюнити или популярности нашего языка, я не могу сказать, но факт напоминает о том, что выбор фреймворка это сложная задача, особенно когда он только вышел.

Попробу большинство из них, я могу от всего сердца порекомендовать Фалькон как фреймворк с быстрым стартом, в купе с его прочностью и качеством, и факт что он построен на Си и устанавливается как PHP расширение( это позволяет работать ему быстрее, чем любому другому существующему фреймворку). Однако, попробовать другие фреймворки точно необходимо.

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

Чтение


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

Если не работы, то изобретите что-то

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

Что наиболее важно - так это никогда не останавливаться - не будет накопления тех 10000 часов если ты не работаешь! Продолжай работать, поддерживай свой интерес и вовлеченность. Напиши простую адресную книгу. Потом переделай ее на другом фреймворке. Потом переделай ее с другой базой данных( замени MariaDB на Mongo, например). Будь занятым.

Найди приятеля/ментора

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

Никогда не недооценивай силу партнерства - это причина по которой Доктор всегда с компаньеном!

Заключение

Когда ты сосредоточен на всех этих пунктах которые ты можешь собрать, когда ты осознаешь что ты хочешь и продолжишь это - ты на дороге стать PHP профессионалом. Поддерживай дисциплину, никогда не сдавайся (даже если другие сдались) и продолжай практиковаться.

Если у тебя есть любые полезные ресурсы ты поделись с нами как ты пересек  (или сейчас пересекаешь) Средний разрыв, дай нам знать в комментариях внизу.

Комментарии

Популярные сообщения из этого блога

kafka конспект однако

Дэвид Рок: Ваш мозг на работе - Разговоры в Гугле

Отслеживание Процесса загрузки с PHP и JavaScript