Читая различные блоги, связанные с PHP, вопросы Quora, сообщества Google+, информационные бюллетени и журналы, я часто замечаю крайнюю поляризацию навыков. Вопросы либо на «Как мне подключиться к базе данных MySQL?» уровень или что-то в диапазоне «Как мне лучше масштабировать мою почтовую систему, чтобы отправлять более миллиона писем в час, не вводя новый сервер?»
Я лично различаю 4 различных уровня мастерства PHP (вероятно, применимых к любому языку / профессии): начинающий, средний, профессиональный и элитный .
Крайности
В PHP новички узнают о переменных , включая обработку форм . Они изучают простые логические конструкции . Они отправляют электронное письмо с помощью учебного пособия, возможно, даже затрагивают пример объектно-ориентированного программирования, даже не понимая его. Они работают с WordPress и модифицируют пару CSS-классов. Обладая этими знаниями, они претендуют на работу и, к сожалению, обычно терпят неудачу.
Профессионалы — это те, кто посвятил свою жизнь многим проектам. Они развернули коммерческие приложения в большинстве, если не во всех средах, они эффективно использовали разные базы данных с PHP, посещали и / или разговаривали на конференциях. Они изучили шаблоны проектирования и могут легко спроектировать целый проект от диаграмм до исполнения. Они оставили процессуальный кодекс далеко позади.
Элитные программисты — это профессионалы, которые затрачивают более 10000 часов на оттачивание своего мастерства. Они дополняют свои установки PHP расширениями, которые они написали сами, они находят ошибки, просто просматривая исходные файлы, они очень дотошно относятся к своему макету кода. Они отвергают все, кроме самых сложных проектов, и находят альтернативные и творческие способы решения проблем, о которых люди даже не подозревали. Они написали несколько хорошо принятых книг о языке, выступили на десятках конференций, возможно, даже сделали свою собственную ветку PHP или очень успешную платформу или две.
Так во всем этом, кто промежуточные?
Недостающая ссылка
Как добраться от новичка до профессионала и дальше? Если кто-то не знает ничего кроме основ, как они могут улучшить свое мастерство настолько, чтобы оставить позади плохие практики и начать практиковать более продвинутые подходы? Это вопрос, который мне часто задают новички. Чтобы стать профессионалом, нужно сначала стать промежуточным.
Далее следует список того, что нужно пройти на пути к беглости PHP.
Оставьте код спагетти
Многие думают, что использование классов означает, что вы пишете объектно-ориентированный код, а использование функций означает, что вы пишете процедурный код. Хотя это неверно , ради этого аргумента давайте предположим широко распространенное ванильное определение: процедурный код — это код, в котором вы просто не используете классы и объекты, а код ООП — это код, в котором вы используете столько же классов и объектов, сколько возможно.
Мой совет — полностью отказаться от процессуального кодекса. В максимально возможной степени используйте объектно-ориентированный стиль кодирования — пишите классы, инкапсулируйте логику, продумывайте терминологию реального мира. Выигрыш в производительности процедурного кода над кодом на основе классов незначителен по сравнению с возможностью повторного использования, которую надлежащий код ООП дает вам и будущим разработчикам, унаследовавшим ваш проект. Общий аргумент против этого: «Но WordPress процедурный!» Честно говоря, и это может показаться резким, «разработчики WordPress» не более PHP-разработчики, чем люди с Instagram — фотографы. Пожалуйста, не принимайте это, чтобы означать, что WP бесполезен — он отлично подходит для блогов, простых веб-сайтов и однодневных проектов, на которые вы не хотите тратить слишком много времени. Он отлично подходит для быстрого приобретения денег или для тех, кто не слишком техничен, но освоение WP никогда не сделает вас профессиональным PHP-разработчиком — это пряжа спагетти-кода, которая не научит вас правильным принципам дизайна.
Начните с малого. Подумайте о концепции реального мира и попытайтесь представить ее в коде ООП. Проработайте некоторые основные учебные пособия и постепенно продвигайтесь вперед. Работайте над кодом ООП, пока не поймете классы в целом, прежде чем переходить к надлежащим структурам и вводить в заблуждение такие термины, как «Модель», «Представление» и «Контроллер» — все это туманные, абстрактные термины, не имеющие прочной основы в ООП.
Рассечь существующие проекты
Погрузитесь в существующий исходный код, где бы вы его не нашли. Например, посмотрите проекты PHP на Github , клонируйте их, разверните их локально на своем компьютере и попробуйте поиграться с кодом. Идите файл за файлом, строка за строкой, пока не поймете, что делает каждый.
Ищите проекты, которые хорошо прокомментированы и / или документированы, хорошо структурированы и еще живы. Проекты, которые в последний раз обновлялись в 2008 году, не принесут вам большой пользы, если вы перейдете на PHP 5.5 — вам, вероятно, не хватит последних и лучших функций, которые могут выделить вас в уже перенаселенном поле.
Научитесь настраивать свою собственную среду PHP
Возможность настроить собственную среду — бесценный навык. Он не только позволяет вам настроить ваши настройки, но также знакомит вас с созданием расширений из исходного кода.
Откажитесь от Windows для разработки — если ваш основной рабочий стол — Windows, установите программное обеспечение для виртуализации и запустите виртуальную машину Linux — нечувствительность к регистру Windows, ее окончание строк и все другие странности, несовместимые с большинством серверных сред, просто вызывают проблемы, поэтому Лучше всего разрабатывать систему, которая больше всего напоминает среду, в которой вы в конечном итоге будете запускаться.
Виртуальные машины также помогают вам экспериментировать — если что-то пойдет не так, вы можете просто стереть это и начать все сначала или сделать откат. Вы можете буквально экспериментировать столько, сколько хотите, не боясь ничего испортить. Овладение инструментами важно, но иметь хороший верстак тоже.
Эксперименты с вашими собственными настройками также позволят вам ознакомиться с различными серверами там — использовать ли Apache из Nginx, использовать ни один из них и использовать Appserver и так далее.
Применяйте лучшие практики рано
При написании собственного кода убедитесь, что вы интенсивно комментируете с помощью docblocks , делайте красивые отступы и аккуратно структурируйте. После того, как вы построите класс, проект или библиотеку, используйте хорошо известные инструменты документации ( PHPDocumentor , ApiGen ), чтобы извлечь докблоки и улучшить их.
Хорошая среда разработки стоит золотого размера на диске — привыкание к одному многоплатформенному редактору поможет вам быстро приступить к работе при настройке новой среды, поэтому вы сможете мгновенно погрузиться в код, не тратя время на настройку сочетаний клавиш и темы. Обязательно создайте резервные копии файлов конфигурации IDE в облачной службе, такой как Google Drive, чтобы они всегда были готовы к импорту, даже если вам необходимо выполнить новую установку. Хорошей IDE является PHPStorm , или если вы не можете себе этого позволить или у вас нет проектов с открытым исходным кодом, с помощью которых можно запросить бесплатную лицензию, Netbeans является бесплатной альтернативой. Оба мультиплатформенны.
Раннее привыкание к лучшим практикам помогает вам оставаться последовательным и позволяет другим людям читать ваш код гораздо более свободно. Найдите свой стиль и придерживайтесь его — вы поможете и себе, и другим. Постарайтесь как можно точнее следовать стандартам PSR ( PSR-0 , PSR-1, PSR-2 , PSR-3 ) — они называются стандартами по определенной причине. Большинство из нас используют и любят их, и они делают код каждого из нас одинаково пригодным для повторного использования и чтения.
Хороший ресурс для начинающих, который дает свежие советы, — это правильный путь PHP — используйте его для ознакомления с последними лучшими практиками, основами ООП, безопасности, развертывания, стандартами кодирования, которые я упоминал выше, и многим другим.
Попробуйте разные рамки, выберите один
Долгое время PHP был языком с большинством фреймворков (JavaScript пришел на смену недавно). Я не могу сказать, говорит ли это о непоследовательности нашего сообщества или популярности нашего языка, но факт остается фактом, что выбор структуры — это непростая задача, особенно при первом запуске.
Перепробовав большинство из них, я могу искренне рекомендовать Phalcon в качестве инфраструктуры перехода из-за его надежности и качества, а также из-за того, что он встроен в C и установлен как расширение PHP (таким образом, он быстрее, чем любая существующая среда в настоящее время). Тем не менее, пробовать разные рамки абсолютно необходимо.
Когда вы их опробуете, вы каждый раз узнаете о новом подходе к общей проблеме. У каждого фреймворка есть свои причуды, которые вам нравятся, и недостатки, которые вы ненавидите, но самое главное, вы узнаете о мышлении других (особенно разработчиков фреймворка). Вы увидите новые способы использования и подходы, и очень хорошее упражнение — перестроить один из ваших примеров проектов в максимально возможном количестве сред. Это поможет вам эффективно оценить эффективность конкретной среды: скорость ее разработки и ее производительность.
Читать
Не стоит недооценивать советы и подсказки других. Прочитайте как можно больше — если вы продолжите в том же духе, это займет не так много времени, как вы думаете. Найдите хорошие блоги для чтения, прочитайте учебники на этом сайте, просмотрите вопросы и ответы в StackOverflow , посетите форумы SitePoint , подпишитесь на рассылку новостей, следите за хорошими источниками в Google+ . Избегайте базовых учебников по PHP — они устарели сразу после публикации — вместо этого сосредоточьтесь на отдельных фрагментах и руководствах по полезному обновленному коду, который можно найти в Интернете. Даже если вы уже затронули эту тему, попробуйте прочитать ее — вы часто обнаружите, что чему-то новому можно научиться, читая чужую точку зрения на то же самое.
Если нет работы, придумай
Всегда есть чем заняться. Никогда не ловите себя, говоря: «У меня нет проекта» или, что еще хуже, «мне скучно». Если у вас нет активного проекта для работы — создайте его. Вы ежедневно используете инструмент, который расстраивает вас отсутствием функциональности? Создайте лучшую альтернативу! У вас нет идей для новых продуктов? Воспроизведите существующие — попробуйте восстановить базовый Facebook , воссоздайте то, что вы уже знаете, существует только для практики.
Самое главное, чтобы никогда не останавливаться — нет 10000 часов, если вы не тратите время! Продолжай работать, будь заинтересован и заинтересован. Сделать простое приложение адресной книги. Затем перестройте его в другую структуру. Затем перестройте его с другой базой данных (например, замените MariaDB на Mongo). Будь занят!
Найти приятеля / наставника
Проще учиться, когда есть кто-то, с кем можно это сделать. Найдите приятеля, который разделяет вашу страсть. Может быть, вы один из немногих счастливчиков с партнером, который разделяет ваши отвратительные интересы. Может быть, вы учитесь в школе или университете и у вас есть сверстники, которые тоже хотели бы начать и нуждаются в общении в этих приключениях. Вы даже можете найти наставника и получить квалифицированное руководство.
Никогда не стоит недооценивать силу компаньона — есть причина, у Доктора всегда есть такая!
Вывод
Когда вы сосредотачиваетесь на всех этих записях с максимально возможной волей, когда понимаете, что это то, что вы хотите, и продолжаете в том же духе — вы на пути к тому, чтобы стать профессионалом PHP. Поддерживайте дисциплину, никогда не сдавайтесь (даже если это делают окружающие) и продолжайте практиковать.
Если у вас есть какие-либо полезные ресурсы, которыми вы хотели бы поделиться с нами о том, как вы преодолели (или в настоящее время преодолеваете) промежуточный разрыв, сообщите нам об этом в комментариях ниже!