Я работал с PHP в течение многих лет и полученный очень хорошее схватывание языка, создали много усовершенствованных и not-so-advanced систем, которые работают очень хорошо.
Проблема, с которой я сталкиваюсь, состоит в том, что я только изучаю, когда я нахожу потребность в чем-то, что я не изучил прежде. Это заставляет меня искать решения и другой код, который решает проблему, и таким образом, я узнаю о новой функции или структуре, которую я не видел прежде. Это таким образом, что я изучил многие свои лучшие методы (такие как учащиеся классы, произведенные Amazon, Google или другими крупнейшими компаниями).
Основной проблемой с этим является понятие неспособности изучить что-то, если Вы не знаете, что это существует. Например, мне потребовались несколько месяцев программирования для приобретения знаний о empty()
функция, и я просто проверил бы использование длины строки strlen()
проверять на пустые значения.
Я теперь вхожу в создание больших и больших систем, и я начал читать блоги как highscalability.com и был репликацией MySQL исследования и серверными данными для масштабирования. Я знаю, что структура Вашего кода очень важна, чтобы заставить полные системы работать.
После чтения недавнего блога о структуре reddit это сделало меня вопросом, если существует некоторый стандарт или "принятые системы" там.
Я изучил платформы (я использовал Kohana, о котором я сожалел, но решил, что платформы PHP не были для меня), и я предпочитаю свою собственную библиотеку функций вместо того, чтобы иметь платформу.
Моя текущая структура является соединением между WordPress, Kohana и моим собственным знанием.
Путями я вижу как являющийся потенциально выгодным:
Каков был бы лучший способ (способы) "получить к следующему уровню" уровень того, чтобы быть очень хорошим разработчиком системы?
Каждый, кто хочет быть программистом PHP, всегда берет только первое слово и полностью игнорирует второе.
Хотя «программирование» НАМНОГО важнее, чем «PHP», чтобы быть профессионалом в области PHP, в первую очередь нужно быть программистом.
Итак, я бы проголосовал за последнее - чтение книг. Не на PHP, а на программирование в целом. Грэди Буча , Мартина Фаулера и даже старого Дональда Кнута .
Также было бы неплохо взглянуть на некоторые другие языки, например Java или Python. Не переключаться на них, а учиться у них.
Вот несколько мыслей:
Попробуйте разные вещи. Учите новый язык. Иногда в процессе изучения этого другого языка вы действительно улучшаете оба языка.
Участвуйте в проекте с открытым исходным кодом.
Высокая масштабируемость и PHP / MySQL не друзья. Сегодня есть технологии, которые созданы именно для этого. node.js и Redis, чтобы назвать пару.
Ответьте на вопросы в SO. Проблемы других людей могут заставить вас мыслить нестандартно, и вы улучшаете процесс помощи, а также делаете что-то хорошее по отношению к кому-то.
[попробую добавить сюда, если я вспомню что-нибудь еще. Я только что проснулся с кофе: D]
Вы должны работать с примерами, работать с ними, когда вы их расширяете, так вы научитесь расширять примеры, делая их более функциональными и предоставляя больше возможностей.
Хотя, хорошо бы создать что-то, что вы уже изучили в PHP. Чтобы больше практиковаться, вам следует создать что-то вроде системы бронирования и т.д. Рано или поздно, изучая PHP, вы сможете расширить свои знания, что приведет к тому, что ваша разработка станет намного лучше.
Лучшее, что вы можете сделать, - это купить книгу по эффективным алгоритмам . В жизни каждого студента, изучающего информатику, приходит время, чтобы изучить их. Проблемы, которые здесь обсуждаются / решаются, представляют собой абстракции практически любой реальной проблемы, с которой вы когда-либо столкнетесь.
Кроме того, чтение блогов о том, как это делали другие, прекрасно, поскольку это помогает вам понять, как на практике использовать (и, возможно, даже реализовать) принципы эффективных алгоритмов.
С уважением.
Научитесь делать то, что вы уже знаете ... по-другому. Примеры:
Вы можете спросить свою компанию, могут ли они оплатить вам сертификационный экзамен Zend PHP. Подготовка к этому экзамену обяжет вас хорошо знать PHP и тренироваться, читая большое количество документации, учебное руководство Zend, а также тренируясь с пробными экзаменами. Это очень эффективный способ улучшения, и он неплохо выглядит в резюме.
"моя собственная библиотека функций" == "[идиосинкратический и, вероятно, отстойный] фреймворк".
Я рекомендую изучить Symfony, потому что разработчики, похоже, последовательно стремятся сделать все в соответствии с "лучшими" практиками... но вы, вероятно, можете многому научиться у любого из популярных фреймворков.
Не пишите свой собственный фреймворк. Пожалуйста.
Я бы присоединился к доскам обсуждений и попытался бы решать проблемы других людей. Иногда возникают довольно сложные вопросы, которые заставляют вас провести некоторое исследование. Если вы не можете ответить, вы можете подождать кого-нибудь, кто сможет, и тогда чему-нибудь научитесь.
Что касается фреймворков, учитесь у них. Я тоже использую свой собственный, так как большинство фреймворков могут быть довольно медленными. Хотя достаточно быстро для большинства веб-сайтов.
Я бы также порекомендовал посмотреть PHP-библиотеку Facebook. Они там занимаются интересными вещами.
Читайте чужой код. У вас уже есть своя библиотека, но вы можете получить некоторое просветление, читая исходные тексты других приложений. Затем спросите себя "почему". Станьте автором блога, а не читателем. Кроме того, больше внимания уделяйте программисту, а не языку. Скорее смотрите на решения, которые уже решают проблему, и пытайтесь повторить их с помощью собственных знаний. Удачи вам и побольше веселья!
Мало что можно сказать о работе с другими разработчиками. В частности, я знаю трех разработчиков, двух из которых я работаю ежедневно, и они поразили меня своими знаниями. Я спрашиваю их мнение обо всем, что я делаю, не потому, что я сомневаюсь в своих собственных идеях, а больше потому, что хочу услышать другие идеи, особенно от людей, которых я уважаю как разработчиков. Я узнаю от этих людей больше, чем от любых других средств.Если у вас нет доступа к другим старшим разработчикам, обязательно опубликуйте сообщения на SO или других форумах разработчиков и спросите мнение людей, спросите людей, как они подойдут к конкретному проекту / проблеме. Обычно вы не изучаете новые техники / методы / функции, если не видите, что они используются (как узнать, что искать, если вы не знаете, что они существуют?)
Кроме того, как уже говорилось, примите участие в приложении ОС . Зайдите в sourceforge и найдите проект, которому нужен разработчик. Или загрузите приложение и попробуйте написать для него плагин (я пишу плагин для банкомата Invision 3.0 и узнаю кое-что).
Надеюсь, это поможет.
Я предпочитаю собственную библиотеку функций вместо того, чтобы иметь фреймворк
Вы называете «библиотеку функций» и «фреймворк» отдельными концепциями (хорошо!), так почему бы не попробовать немного поднять ставку и превратить эту библиотеку функций в фреймворк? Имейте в виду, что это отличный способ учиться, но не лучший способ получить рыночные навыки;)
Это также отличный способ научиться неправильному , поэтому, прежде чем начать, вам нужно провести небольшое исследование.
Есть определенные функции, которые есть почти во всех фреймворках, и для этого есть причина. Исследуйте их; выяснить , почему они присутствуют и каковы их варианты; выберите, какие реализации вы предпочитаете включить в свой фреймворк.
включения
модулей в классы ? Я понятия не имею, что вас интересует, поэтому остановлюсь на этом.
Эта часть важна, потому что Натан прав : вашу работу должны видеть, оспаривать, критиковать и исправлять другие люди. Не оставляйте эту лампу под сосудом - ее нужно увидеть; поместите его в код Google или sourceforge или что-то в этом роде, и если люди будут беспокоиться о том, чтобы смотреть на это серьезно, вам нужно отнестись к этому серьезно; вам необходимо поддерживать модульные и регрессионные тесты; вам нужно использовать контроль версий; вам нужно хорошо его прокомментировать, с большим комментарием заголовка / * * /
в верхней части каждого файла и полезными комментариями, генерирующими документы для каждого класса и его члена.
Если вы сделаете все это, вы сможете узнать (на высоком уровне) о других платформах. Вы определенно можете получить «40 очков» как разработчик PHP. Вы можете узнать о модульном тестировании; о регрессионном тестировании. Вы можете научиться эффективно документировать.
Гарантированно, что ваш фреймворк получится «своеобразным и, вероятно, отстойным», но вы можете многому научиться, написав его. Просто имейте в виду, что фреймворк - это не продукт; это путешествие ... своего рода.
Возможно, вам стоит еще раз взглянуть на фреймворки. Я бы посоветовал взглянуть на Zend Framework, потому что это больше похоже на библиотеку компонентов, которые вы можете использовать по своему усмотрению, и на самом деле это не так. навязывайте жесткую структуру, которой вы должны следовать (как это делают некоторые другие фреймворки), хотя она предлагает (вполне разумный imho) макет проекта. Хорошей отправной точкой было бы Пережить глубокий конец .
Вещи, которые вы еще не упомянули, и которые могут оказаться полезными (особенно в крупных проектах):
Подход смотреть на код других программистов - определенно хороший способ изучить «хорошие» или «плохие» практики. После прочтения другого кода у вас появляется "чувство" хорошего кода.
Я определенно рекомендую такие фреймворки, как Zend Framework, symfony, CakePHP или Agavi, потому что многие участники смотрят на этот код и постоянно развивают его в направлении «идеального» решения (которое, конечно, никогда не будет достигнуто ...);) Вы по-прежнему можете принять решение о разработке собственных классов вместо тех, которые предлагает фреймворк ...
Имея такой большой опыт работы с PHP, вы могли бы подумать о внесении своего вклада в фреймворк с открытым исходным кодом. Обсуждения с другими разработчиками помогут вам быстрее развиваться.
Показ вашего кода другим и запрос конструктивного отзыва имеют тот же эффект. Вы никогда не узнаете, насколько вы хороши, пока не сравните свои навыки с другими. Всегда конструктивно. Это было бы естественным процессом при внесении вклада в платформу с открытым исходным кодом. ;)