Как увеличить мое “усовершенствованное” знание PHP далее? (быстро) [закрытый]

Я работал с PHP в течение многих лет и полученный очень хорошее схватывание языка, создали много усовершенствованных и not-so-advanced систем, которые работают очень хорошо.

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

Основной проблемой с этим является понятие неспособности изучить что-то, если Вы не знаете, что это существует. Например, мне потребовались несколько месяцев программирования для приобретения знаний о empty() функция, и я просто проверил бы использование длины строки strlen() проверять на пустые значения.

Я теперь вхожу в создание больших и больших систем, и я начал читать блоги как highscalability.com и был репликацией MySQL исследования и серверными данными для масштабирования. Я знаю, что структура Вашего кода очень важна, чтобы заставить полные системы работать.

После чтения недавнего блога о структуре reddit это сделало меня вопросом, если существует некоторый стандарт или "принятые системы" там.

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

Моя текущая структура является соединением между WordPress, Kohana и моим собственным знанием.

Путями я вижу как являющийся потенциально выгодным:

  • Прочитайте блоги
  • Прочитайте учебные руководства
  • Работа с кем-то еще
  • Прочитайте книгу

Каков был бы лучший способ (способы) "получить к следующему уровню" уровень того, чтобы быть очень хорошим разработчиком системы?

74
задан Kerry Jones 1 June 2010 в 08:43
поделиться

14 ответов

Каждый, кто хочет быть программистом PHP, всегда берет только первое слово и полностью игнорирует второе.

Хотя «программирование» НАМНОГО важнее, чем «PHP», чтобы быть профессионалом в области PHP, в первую очередь нужно быть программистом.

Итак, я бы проголосовал за последнее - чтение книг. Не на PHP, а на программирование в целом. Грэди Буча , Мартина Фаулера и даже старого Дональда Кнута .
Также было бы неплохо взглянуть на некоторые другие языки, например Java или Python. Не переключаться на них, а учиться у них.

115
ответ дан 24 November 2019 в 11:53
поделиться

Вот несколько мыслей:

  • Попробуйте разные вещи. Учите новый язык. Иногда в процессе изучения этого другого языка вы действительно улучшаете оба языка.

  • Участвуйте в проекте с открытым исходным кодом.

  • Высокая масштабируемость и PHP / MySQL не друзья. Сегодня есть технологии, которые созданы именно для этого. node.js и Redis, чтобы назвать пару.

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

  • [попробую добавить сюда, если я вспомню что-нибудь еще. Я только что проснулся с кофе: D]

11
ответ дан 24 November 2019 в 11:53
поделиться

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

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

0
ответ дан 24 November 2019 в 11:53
поделиться

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

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

С уважением.

2
ответ дан 24 November 2019 в 11:53
поделиться

Научитесь делать то, что вы уже знаете ... по-другому. Примеры:

  • на другом языке
  • на другой платформе
  • параллельно / распределены
  • через фреймворк (да, вы решили, что они «не для вас» - возможно, попробуйте другой, иногда они сильно отличаются друг от друга)
3
ответ дан 24 November 2019 в 11:53
поделиться

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

0
ответ дан 24 November 2019 в 11:53
поделиться

"моя собственная библиотека функций" == "[идиосинкратический и, вероятно, отстойный] фреймворк".

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

Не пишите свой собственный фреймворк. Пожалуйста.

-11
ответ дан 24 November 2019 в 11:53
поделиться

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

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

Я бы также порекомендовал посмотреть PHP-библиотеку Facebook. Они там занимаются интересными вещами.

3
ответ дан 24 November 2019 в 11:53
поделиться

Читайте чужой код. У вас уже есть своя библиотека, но вы можете получить некоторое просветление, читая исходные тексты других приложений. Затем спросите себя "почему". Станьте автором блога, а не читателем. Кроме того, больше внимания уделяйте программисту, а не языку. Скорее смотрите на решения, которые уже решают проблему, и пытайтесь повторить их с помощью собственных знаний. Удачи вам и побольше веселья!

1
ответ дан 24 November 2019 в 11:53
поделиться

Мало что можно сказать о работе с другими разработчиками. В частности, я знаю трех разработчиков, двух из которых я работаю ежедневно, и они поразили меня своими знаниями. Я спрашиваю их мнение обо всем, что я делаю, не потому, что я сомневаюсь в своих собственных идеях, а больше потому, что хочу услышать другие идеи, особенно от людей, которых я уважаю как разработчиков. Я узнаю от этих людей больше, чем от любых других средств.Если у вас нет доступа к другим старшим разработчикам, обязательно опубликуйте сообщения на SO или других форумах разработчиков и спросите мнение людей, спросите людей, как они подойдут к конкретному проекту / проблеме. Обычно вы не изучаете новые техники / методы / функции, если не видите, что они используются (как узнать, что искать, если вы не знаете, что они существуют?)

Кроме того, как уже говорилось, примите участие в приложении ОС . Зайдите в sourceforge и найдите проект, которому нужен разработчик. Или загрузите приложение и попробуйте написать для него плагин (я пишу плагин для банкомата Invision 3.0 и узнаю кое-что).

Надеюсь, это поможет.

2
ответ дан 24 November 2019 в 11:53
поделиться

Я предпочитаю собственную библиотеку функций вместо того, чтобы иметь фреймворк

Вы называете «библиотеку функций» и «фреймворк» отдельными концепциями (хорошо!), так почему бы не попробовать немного поднять ставку и превратить эту библиотеку функций в фреймворк? Имейте в виду, что это отличный способ учиться, но не лучший способ получить рыночные навыки;)

Это также отличный способ научиться неправильному , поэтому, прежде чем начать, вам нужно провести небольшое исследование.

Обязательные функции

Есть определенные функции, которые есть почти во всех фреймворках, и для этого есть причина. Исследуйте их; выяснить , почему они присутствуют и каковы их варианты; выберите, какие реализации вы предпочитаете включить в свой фреймворк.

  • Объектно-ориентированный (это ключ к тому, почему вы должны написать фреймворк, а не просто использовать свою библиотеку функций)
  • Использование шаблонов (проверьте и начните спрашивать себя, почему так много фреймворков используют Контроллер приложений в отличие от Front Controller ... и существуют ли платформы, которые используют Контроллеры страниц ?
  • Базовая структура MVC
  • Чистые URL-адреса

Возможности платформ, отличных от PHP, которые вы хотите понять и подражать

Я понятия не имею, что вас интересует, поэтому остановлюсь на этом.

Опубликуйте!

Эта часть важна, потому что Натан прав : вашу работу должны видеть, оспаривать, критиковать и исправлять другие люди. Не оставляйте эту лампу под сосудом - ее нужно увидеть; поместите его в код Google или sourceforge или что-то в этом роде, и если люди будут беспокоиться о том, чтобы смотреть на это серьезно, вам нужно отнестись к этому серьезно; вам необходимо поддерживать модульные и регрессионные тесты; вам нужно использовать контроль версий; вам нужно хорошо его прокомментировать, с большим комментарием заголовка / * * / в верхней части каждого файла и полезными комментариями, генерирующими документы для каждого класса и его члена.

Резюме

Если вы сделаете все это, вы сможете узнать (на высоком уровне) о других платформах. Вы определенно можете получить «40 очков» как разработчик PHP. Вы можете узнать о модульном тестировании; о регрессионном тестировании. Вы можете научиться эффективно документировать.

Гарантированно, что ваш фреймворк получится «своеобразным и, вероятно, отстойным», но вы можете многому научиться, написав его. Просто имейте в виду, что фреймворк - это не продукт; это путешествие ... своего рода.

28
ответ дан 24 November 2019 в 11:53
поделиться

Возможно, вам стоит еще раз взглянуть на фреймворки. Я бы посоветовал взглянуть на Zend Framework, потому что это больше похоже на библиотеку компонентов, которые вы можете использовать по своему усмотрению, и на самом деле это не так. навязывайте жесткую структуру, которой вы должны следовать (как это делают некоторые другие фреймворки), хотя она предлагает (вполне разумный imho) макет проекта. Хорошей отправной точкой было бы Пережить глубокий конец .

Вещи, которые вы еще не упомянули, и которые могут оказаться полезными (особенно в крупных проектах):

3
ответ дан 24 November 2019 в 11:53
поделиться
  1. Изучите скрытые возможности PHP и предопределенные интерфейсы PHP
  2. Изучите разные языки. Изучайте языки, у которых более крутая кривая обучения, чем у PHP. Каждый раз, когда я указываю на преимущества других языков по сравнению с PHP, меня обвиняют в избиении PHP, в основном это люди, которые совершенно очевидно никогда не владели другим языком высокого уровня. Но я рискну. Я предлагаю Ruby, Python, Pearl и haXe (в качестве строго типизированного аналога). Как только вы это сделаете, попробуйте применить свои новые знания в PHP. Или просто откажитесь от PHP, если вы не хотите возвращаться (что, я думаю, не маловероятно).
  3. Научитесь справляться с критикой. Ваша реакция на пост Натана ясно показала, что вы пока не можете с этим справиться.Он абсолютно прав.
    • Глядя на мою первую PHP-среду, я должен сказать, что она была довольно хреновой. В то время я думал, что это здорово (и все еще лучше, чем много производственного кода, который я уже видел развернутым). Тем не менее, у него было много недостатков. Если вы не совсем гений, ваши первые фреймворки будут просто ужасно выглядеть, если вы оглянетесь на них несколько лет спустя (при условии, что вы эволюционируете).
    • Фактически, любая структура, которую вы создадите, со временем будет выглядеть хуже (при условии, что вы не перестанете развиваться). По этой причине вы можете использовать доступные фреймворки и больше сосредоточиться на разработке приложений. Если используемый вами фреймворк имеет ограничения, подумайте о том, чтобы внести свой вклад, а не писать еще один фреймворк PHP.
    • Момент времени для выбора написания собственных фреймворков (не только для развлечения / обучения, но и для производственного развертывания) - это когда ваши требования превосходят то, что предлагают другие фреймворки, а не когда вам просто не нравится идея работы с одним. Это распространенная ошибка, которую я совершил сам. Но теперь я могу сказать, что извлек из этого урок. Но если вы попросите совета (чего я, к сожалению, не сделал в то время), вы получите такие ответы.
    • Вы многому научитесь, работая с кодом, который написали не сами. Вы не только усваиваете концепции, продвигаемые другими фреймворками, над которыми много думали другие, но также учитесь быть продуктивным, гибким, способным работать в команде и выполнять свою работу (при этом добиваясь достаточно хороших результатов).
    • Я полагаю, вы не можете думать, что вы лучше, чем любая другая команда PHP-проекта с открытым исходным кодом, иначе вы бы спросили.Преодолейте упорную инстинктивную потребность изобретать колесо, которое есть у любого молодого разработчика, и вырастите, чтобы решать проблемы, которые еще никто не решал.
  4. Узнайте, в чем разница между библиотекой компонентов и фреймворком. Поскольку вы думаете, что можете заменить фреймворк «своей собственной библиотекой функций», вы, вероятно, не поняли, в чем смысл фреймворков. Взгляните на инверсию зависимостей , инверсию управления и внедрение зависимостей .
  5. Узнайте о дизайне программного обеспечения. Посмотрите на такие принципы объектно-ориентированного программирования, как SOLID и GRASP .
  6. Попробуйте разные парадигмы. АОП, функциональное программирование. Повысьте свои навыки объектно-ориентированного программирования с помощью языков с более сильной объектной ориентацией, таких как Ruby, Objective-C или Smalltalk.
  7. Посмотрите на PHP-фреймворки, такие как Flow3, Symfony, PHP igniter и CakePHP. Я уже указывал, почему я считаю, что вам следует это сделать.
  8. Как указано в другом моем комментарии, вам следует рассмотреть другие хранилища, кроме RDBM. SQL и ООП действительно несовместимы. Взгляните на OODBMS, различные уровни абстракции базы данных, хранилища ключей и значений, хранилища документов, такие как CouchDB и MongoDB, распространяет серверы кэширования как memcache и т. Д.
18
ответ дан 24 November 2019 в 11:53
поделиться

Подход смотреть на код других программистов - определенно хороший способ изучить «хорошие» или «плохие» практики. После прочтения другого кода у вас появляется "чувство" хорошего кода.

Я определенно рекомендую такие фреймворки, как Zend Framework, symfony, CakePHP или Agavi, потому что многие участники смотрят на этот код и постоянно развивают его в направлении «идеального» решения (которое, конечно, никогда не будет достигнуто ...);) Вы по-прежнему можете принять решение о разработке собственных классов вместо тех, которые предлагает фреймворк ...

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

Показ вашего кода другим и запрос конструктивного отзыва имеют тот же эффект. Вы никогда не узнаете, насколько вы хороши, пока не сравните свои навыки с другими. Всегда конструктивно. Это было бы естественным процессом при внесении вклада в платформу с открытым исходным кодом. ;)

1
ответ дан 24 November 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: