В каком направлении двигаться дальше, чтобы стать полноценным PHP разработчиком?
Здравствуйте.
Мне 19, с первого курса занимался программированием, в начале был C# и C++, недавно решил углубиться в веб.
Осилил HTML+CSS довольно быстро, после освоил принципы работы php+mysql, изучил javascript и jquery на базовом уровне, понял зачем нужен ajax. После попробовал установить себе популярные CMS (Joomla, Wordpress etc) и PHP-фреймворки (CodeIgniter, Yii) понял в чем отличие cms от фреймворков. Правда, ничего написать на этих фреймворках я не смог, решил изучить ООП в php5. Начал читать книгу Мэтта Занрстра - "Объекты, шаблоны и методики программирования".
После сотой страницы решил посмотреть, что требуется от PHP-кодеров на фрилансе. Расстроился, когда увидел, что бОльшая часть заказов связана с Wordpress-ом и другими популярными CMS. Начал гуглить и узнавать, как копаться и что-то менять в этих CMS-ках. В итоге понял, что всё упирается в знание их внутренних API.
Весь день я занимался последним, написал простейший плагин для wordpress (добавление определенной инфы и параметра через админку и отображение инфы в зависимости от этого пар-ра на странице через шорткод), совершенно забыв про книжку по ООП. Да и код в этом недоплагине был ужасен: я понял что не умею разделять логику от представления, и решил вспомнить недавно заброшенный мною Yii.
Начал читать мануалы по фреймворку и MVC в целом, но максимум чего достиг - понял как работает контроллер, модель и отображение, но понимание совсем не глубокое.
Теперь я понимаю, что после целого дня говнокода для wordpress, в котором были смешаны html, php и js - я не могу перестроить мозги на работу с более правильным подходом (mvc).
И я запутался. Дело в том, что корень моих частых "прыжков" то туда то сюда - желание достичь хорошего уровня, и что самое главное - иметь возможность фрилансить/работать удаленно (живу в глубинке) к окончанию университета (4 курс). Боюсь за оставшиеся 2 года своего обучения так и не стать более-менее нормальным разработчиком, который уже может делать определенные вещи и зарабатывать.
И этот страх приводит к тому, что у меня нет своей "рабочей программы", нет четкого понимания, в каком порядке и что мне изучить.
Извините за тонну текста, но я бы хотел попросить Вас, опытных разработчиков, подсказать мне хоть сколько-нибудь выстроенный "путь" - в каком порядке изучать то или иное, чтобы не стоять на одном месте, учитывая описанное мною выше? Заранее большое спасибо.
Больше всего шокирует желание прыгать с одного на другое, а потом удивляться почему ничего толком не понятно. И еще вопросы как изучать пхп неоднакратно задавались на ресурсе, почему не почитать ответы там.
Rikcon: И настраивать его час если мне надо поднять простой блог... и переписывать проект каждые 2 года патамушта видите ли вышла новая версия фреймворка... и всё равно опускаться на прямые запросы к БД если выборка тяжёлая....
Rikcon: согласен с вами, но чего не могу понять почему надо кастомный функционал катать на фреймворках а не на процедурах? Почему надо настраивать фреймворк, почему я должен увеличить потребление ресурсов минимум на 30% из-за объектов и вообще почему я должен всё рассматривать как объекты? Представление ладно, но почему я обязан разделять модель и контроллер?
Black Jack: полностью с вами согласен, пока не начал писать с нуля свои велосипеды, пусть кривые и дырявые, но все же гораздо лучше дающие понимане работы приложения.
Более вредного совета, чем отказаться от фреймворков (не для образования, а вообще), я не встречал. Автор вопроса: вы не попадете просто ни в одну компанию, которая выпускает хоть что-то стоящее, потому что ни одна компания не станет оплачивать ваше время на изобретение того, что уже изобретено.
Symphony и Zend Framework – на этих двух штуках собирается весь интерпрайз на PHP. Не будете знать хотя бы один из них – вряд ли устроитесь в какое-либо стоящее место. Список неполный, но одно из этих двух знать потребуется.
Нужно уметь искать максимально лаконичные и простые решения, а не определять 9000 классов, а потом ещё и инициализировать по 9000 объектов на каждый.
Любой фреймворк нужно изучить, прежде чем его использовать. И не факт, что это займёт меньше времени, чем написание своего велосипеда.
Также есть вероятность, что выбранный вами фреймворк или движок будет слишком тяжёлым для какого-то вашего конкретного проекта, чем написанный лично вами.
Боюсь за оставшиеся 2 года своего обучения так и не стать более-менее нормальным разработчиком, который уже может делать определенные вещи и зарабатывать.
Срочно: либо устраивайся на работу, либо фриланс. Твоя задача - получить опыт и няшное резюме. Не иди в web-студию, отупеешь. Оптимальный срок работы в компании И для программиста И для компании - 2 года.
Можете дать несколько уточнений. В чем принципиальное отличие Симфони от других фреймворков? Второй вопрос, что делать во фрилансе без опыта для получения опыта, по большей части фриланс это задачи для одного человека, где заказчику по большей части наплевать на красоту решения, его интересует только результат и в образовательном плане ценность этого крайне мала.
Симфони предлагает сервис-ориентированную архитектуру, что довольно круто для больших проектов + к тому отдельные компоненты можно легко использовать независимо. В принципе Симфони рекомендую для выработки стиля. Yii тоже крут, но для многокомпонентых систем подходит меньше. Для сайтов-визиток - вообще-говоря подойдет Silex.
Да, фриланс таков, но это не причина для вас писать каку)). Опыт просто так не возникает, нужно с чего-то начинать.
index0h: спасибо за ответ. Насчет фриланса - что стоит изучить конкретно сейчас, чтобы туда влиться? Предложенный вами фреймворк или CMS-ки? Если второе - как ставить для себя задачи? К примеру, я вижу заказ на фрилансе, который мне не по силам, - не берусь, но начинаю делать для себя. Такой вариант нормальный?
> Насчет фриланса - что стоит изучить конкретно сейчас, чтобы туда влиться?
Смотрите на биржах, что требуется.
> Предложенный вами фреймворк или CMS-ки?
О CMS стоит иметь представление, но прям "брать и сильно-сильно так учить" - не стоит. Тот же WP который самый популярный и все такое - во внутри, как бы так по мягче... ну в общем так писали лет 10 назад. 1С - НЕ смотрите.
> К примеру, я вижу заказ на фрилансе, который мне не по силам, - не берусь, но начинаю делать для себя. Такой вариант нормальный?
Только в случае, если эта задача не уникальная.
Пример 1: "есть таблица, нужно по ней сделать экспорт в xls" - разберитесь с API PHPExcel, такое вам может понадобиться.
Пример 2: "на страницу контакты добавить номера телефонов" - тут чего-то из разряда "скилы" вы для себя не почерпнете.
Всё просто. Перестраиваете свою схему жизни, выбрасывайте из головы всё, что мешает, и начинаете учиться. В этом вам помогут курсы, книги, вебинары и прочие ресурсы, которые буквально в секундной от Вас доступности.
Например, моя первая книга написана Кевином Янком, и она дала мне тот маленький багаж знаний, с которого я начал своё путешествие. Затем я двинулся в сторону HeadFirst, но мельком просмотрев содержание, я не стал уходить дальше первых глав - тратить 700 страниц на то, чтобы лишь в конце написать своё первое регулярное выражение? К сожалению, это был долгий путь. Вообще не читайте книги по PHP - всё есть в доках. (До этого я тоже работал в C# и даже в C++ Builder 6, и честно говоря, когда-то мне казалось, что последнее - неплохая штука. До тех пор, когда я закончил писать программы одногруппникам :D)
За месяц, ежедневно конспектируя и проходя практические курсы, я сверстал свой макет на CSS3, HTML5 и т.п. Потом перешел к пхп. Начать было трудно, я не мог браться за него так же свободно, как и за другие языки. Поэтому я вернулся к курсам, где по примерам "сворганил" свой простой магазин с корзиной, каталогом, заказами и админкой без каких-либо подсказок. И все это за 2 месяца тратя на это по 3,5 часа в день. Для общего плана советую равняться на вакансии и составлять план именно исходя из требований.
Может быть мой ответ покажется слишком избыточным и нудным, но мой тебе совет - к своей цели иди постепенно, маленькими шажками ;) Не мешай все в кучу, ты за эту жизнь ещё успеешь накодиться...
Роман, спасибо. Про путь из C++ и C# к вебу и написанию интернет-магазина - очень знакомо ;) Тоже писал на чистом php+mysql простейший интернет-магазин с товарами, категориями и корзиной. Потратил около месяца. Сейчас понимаю, что написал бы то же самое за вечер... прогресс есть, наверное его просто надо видеть и не пытаться прыгнуть выше головы, а подниматься наверх потихоньку.
Позволь поинтересоваться: чем занимаешься сейчас, до какого уровня дорос?
whatever73: Есть у нас один преподаватель, именно он дал мне точку опоры, а уже я стал двигать землю. Все остальные учили паскаль и делфи, у нас город небольшой, да и глубинкой не назовешь... Квалификация страдает. Вот то и пошел я в темный лес, стал исследовать, теперь выбрался и вроде даже карту составил :)
Прогресс это замечательно, лично мне чтобы научиться нужно сперва увидеть, как это делают другие. И смотря на свой старый код - о ужас. Классика.
Сейчас возникло желание взять книжку по JS, буду читать на досуге, у меня вообще не было книг по вебу - HTML и CSS вообще можно уместить на трех листах A4, а по PHP - мукулатура, пересказ документации и причем устаревшей (новых книг не видел вообще).
Не знаю какой у меня уровень, наверное нормальный, но было бы легче и эффективнее, если с кем-то можно было общаться и набираться у него опыта, ибо опыт для меня исходит из чего-то статичного - видео, и текст.. А у тебя как? Книга Мэтт Зандстра кстати, хорошая.
Роман: "ежедневно конспектируя и проходя практические курсы" - что именно конспектировали, если не секрет? И какие курсы использовали? Можно ли с Вами как-то "пересечься" в ПМ/скайп?
ritaux: Немного вы припозднились конечно. Под этим (конспектированием) я подразумевал курсы программирования, с очным присутствием. Может быть вы слышали про ШП или специалиста? Именно то. К сожалению, денег потратил немало, и сейчас уже бросил посещение. Не потому что этих курсов полно на трекерах - студенту нужны средства для их оплаты.
Конспекты лекций хранятся в тетради с красивым оформлением и форматированием текста. И такая информация неплохо вбивается в память. Если что, можете написать сюда admiralexo@gmail.com
Я могу дать тебе совет основываясь на своем личном опыте начинаний своей интересной истории.
1й, 2й курс - я пытался учиться в универе, местами старался местами халявил... 3й курс по семейным причинам я бросил, точнее перешел на заочку и в итоге попал в армию. До армейки я вообще не представлял себя в роли кодера или железакина, хотя учился на ВТ. В результате, после армии пришло осознание того, что надо учиться. Заинтересовали сайты. Ну для меня это реально стало интересно. Грузчиком я не хотел быть, продолжил учёбу на заочке, перебиваясь заработками различного харрактера и одновременно погружаясь в азы верстки.
Нормально началось всё изучаться, когда я знакомому сказал, что я учусь делать сайты и тот дал мне первый заказ. Естественно у меня не было ни практики, ни опыта, но я взялся. Мы составили с ним ТЗ. Досканально расписали план разработки и этапы сдачи отчетности. В результате, спустя месяца 2-3 я реализовал свой первый сайт на php+mysql + html + css. Он конечно не был идеальным, сейчас я откровенно скажу что это была кака***.
Но всё же, мораль всей басни такова - поставь задачу, определи для себя сроки, этапы и "пиши код". Опыт и качество кода само по себе не наработается. И чем выше и серьезнее цель, тем лучше результат. Удачи.
Самая лучшая программа развития PHP-разработчика отказаться от идеи стать PHP-разработчиком.
Посмотрите в сторону Python, Ruby, ASP.NET, Java и забудьте PHP как страшный ужастик. Не портите себе жизнь.
Вопрос не в том. PHP это куча низкопробного кода - слишком легко войти.
PHP это легкие деньги.
Но, если хотите не скурвиться, изучите альтернативные технологии.
Я люблю питон - попробуйте. И даже в PHP вы будете писать намного более качественный код. Просто поймете реальные недостатки PHP и попробуете, вам захочется, применить клевые штуки хороших ЯП.
:)
Александр Дуплий: Але гараж. Пора или раззуть глаза или закрыть уже рот. Ужастиком он был лет эдак 15 назад. Полагаю что с тех пор вы в него даже не заглядывали. Тем лучше. Динозавры. Для простых веб решений это ОДИН! из лучших языков. Хоть ручки тянутся и к руби.
Александр Дуплий: Ой, я приношу вам, Александр, свои оргомные извинения. Это моя невнимательность и 4inch экрана. Мое возмущение было адресовано Ivan Soshnikov Ivan Soshnikov. Еще раз простите.
Все просто.
Первым делом хочу сказать не слушай тех кто кричит, что обязательно нужно уметь писать под WP/Joomla и прочие говно-цмс. Вторым, на тех кто кричит, что не нужны фреймворки и сторонние библиотеки.
Раз взялся за ПХП - книгу ты выбрал верную, дочитывай её до конца, что не понятно перечитывай.. Потом мануал и практика. Сначала пиши свои велосипеды (для практики). Заведи аккаунт на github, выставляй все туда, не бойся критики и прислушивайся к ней. Когда более менее поймешь как строится структура приложения, как работают различные паттерны и т.д. Начинай разбираться в чужем коде. Выше уже писали, про написание велосипедов - это не верный подход, даже если ты не будешь работать веб-разработчиком, а просто хочешь написать свой проект. И вот почему.
- Любая библиотека / Фреймворк хорошо оттестирована профессионалами
- Использование сторонних разработок ускоряет время разработки (ты не будешь терять на разработку одного проекта по году, полтора)
- Легко внедрится в команду или найти команду в свой проект
Самый простой фреймворк для изучения новичку это Codeigniter или Laravel (4 ветка)
Спасибо. Глянул codeigniter - как-то и правда он проще и документация более подробная и понятная. Вопрос -- насколько сложно будет перейти на yii2/symphony, хорошо разобравшись в codeigniter?
Почему именно PHP? объясни мне!!! Есть же другие замечательные языки и технологии для веба, как Python,Ruby,ASP.NET MVC(ты же учил C#),JAva...А ты зациклился на самом ужасном..
Может быть кто-то, вместо того, чтобы писать что PHP ужасный язык, возьмёт и посмотрит код не г*вно-WP-плагинов, а нормальных библиотек и фреймворком с гитхаба? А ещё посмотрит PHP с версии 5.4 ?
PHP класный язык, чтобы копаться в Wordpress и делать всякие плюшки и полезности для Клиентов с фриланса.
PHP хорошо подходит для прототипирования и прочих задач, которые нужно сделать быстро.
Есть странные ребята, которые пытатся притащить в PHP всякое из других языков, так в нем появился и развиввается ООП.
Но вам-то это зачем, если знаете C#?
1) Изучайте ASP.NET MVC - там все четко, строго и объектно-ориентирвоанно.
2) Прокачивайте свои навыки бизнес-коммуникаций (деловое пиьмо, публичные выступления, презентации) - и сможете продавать свои знания и навыки Клиентам, большинству из которых плевать на стек и входящие в него технологии, есть лишь бизнес задача, которую надо решить.
3) Если захочется именно в PHP развиваться - напишите свой фреймворк, CMS на нем и продайте несколько проектов. После этого появится какое-то понимание дальнейших действий.
p.s. Пример: я недавно делал генератор XLS прайс-листа для сайта на Джумле. Никого особо не смутило, что Джумлу я не знаю, ни как пользователь, ни как разработчик (хотя, я, конечно, предупредил об этом). Главное - решение бизнес-задачи.
По поводу "притягивания в PHP новых фич" из других языков. Как по мне у PHP довольно низкий порог вхождения и это порождает 2 сущности: быдлокодеров и отличных программистов. Язык довольно гибкий, но в пределах Web. На нем трудно написать Desktop приложение, хотя и возможно(геморно).
Язык не лучший. Но он даёт возможность мыслить конструктивно не заморачиваясь над самим синтаксисом языка. Он до жути просто. Типов данных мало. Думать надо мало. Да... В нём нет хороших штук и со временем ты это начинаешь понимать. В моём последнем(текущем) проекте я всё больше стал убеждаться, что языку не хватает, например, коллекций, как конструкции языка. И я за пару ночей читания хабра и гугла сделал себе необходимые "коллекции". Просто классом... Эти коллекции немного похожи на Java и на C# 'ные. Но это в разы ускорило мою разработку. Потому что я сам понял ,что мне это необходимо. На самом деле я не знал про такие конструкции в Java и C#. Java'у я удачно про...е..проработал на работе не посещая университет.
Я думаю из-за простоты язык даёт подумать
Могу поделится своим опытом юниора. Закончил учебу на Software Enginner'a в Англии, но со 2ого курса решил не нужна мне эта Ява и Си, и ушёл полностью в веб, начал с азов HTML/CSS/PHP/MySQL, потом препод посоветовал начать фрилансить fiverr.com интересный сайт где много разных услуг и все за $5. Понабрался говно опыта и больше фрилансом пока не занимаюсь (как закончил универ и нашёл работу), ибо во время фриланса делал разную херню и кодить не научился. Очень много делал разного рода своих "проектов" на разных движках. Не могу сказать что это плохой опыт но всё же. Смотря на жизнь и как другие программисты развиваются, мне до сих пор кажется, что я делаю что-то не так.
Мне кажется, охлади свой пыл и запасить терпением. Просто распиши на бумаге, какие скиллы тебе нужны выучить за след 2 года. Выпиши основы и первоочередность.
Я бы посоветовал на свое херовом опыте, выучить или JS или PHP до мега крутого уровня и все вытекающие.
Если брать PHP к ниму взять MVC фрейворк CI не плох.
Если брать JS к ниму брать AngularJS или NodeJS+ExpressJs и делать веб аппки.
Ко всему конечно использовать git и взять foundation/bootstrap как css framework.
Тут нужен реальный опыт. Чтобы хорошо разрабатывать на Yii, надо с ним работать. Чтобы хорошо разбираться в CMS, надо решать поставленные задачи на этой CMS. А искусственновумученный опыт будет даже вреден в данной ситуации, потому что станет далек от настоящего программирования, и понадобиться переучиваться для выполнения реальных задач.
Я бы смотрел в сторону либо своих проектов, давая анализировать их куски кода на профильных форумах, чтобы люди подсказывали, почему можно сделать по другому и получше, либо в сторону устройства джуниором в какую-нибудь веб-студию, под началом более опытных коллег.
Вы определитесь чего хотите: денег или писать красиво и валидно? Эти направления не всегда совпадают. Если денег то это фриланс и главное что б работало. На том же Yii можно нагородить такого что за голову схватится любой кто увидит код. Работать в больших компаниях хотите? Тогда вам Симфони, Zend и типа того. Работать в hiload? Тогда в сторону БД уклон надо делать. Свои проекты? Тогда Руслан правильно сказал - пишите как хотите и воротить на ООП одному разработчику как-то странно.
Дмитрий: спасибо. Знаете, на 1 курсе хотелось именно второго и третьего (красиво писать, работать в крупных компаниях со сложными проектами). Неприятно понимать, но сейчас, поскольку живу в глубинке, хочется "обезопасить" себя знаниями, с которыми я мог бы зарабатывать на фрилансе. Что можете посоветовать, если идти именно по пути фриланса? Что изучать в каком порядке? И есть ли перспектива после 2-3 лет фриланса уйти в удаленную работу фултайм или не берут?
whatever73: ну смотрите крупная компания это переезд в большой город. Работа на крупную компанию удалённо (а сейчас таких возможностей всё больше) это как минимум регистрация Индивидуальным предпринимателем что бы вас не киданули по-крупному. Если хотите пойти по пути фриланса то надо изучать всё самое ПОПУЛЯРНОЕ - все CMS наиболее популярные, немножко бэкэнда что бы переносить сайт с хостинга на хостинг. Немного вёрстки что бы быть способным поправить что-то по заказу. Другой вопрос сколько можно так заработать? Наверное не очень много. Что бы заработать много надо стать профессионалом в чём-то одном.
Ну напроситесь к кому то в джуны. для фриланса рано вам. Вы просто поработайте месяцок второй с кем то в команде бесплатно (или даже вас попросят заплатить за обучение) и тогда уже на фриланс
Пройти обучение, две недели за бесплатно - куда ни шло.
Работать джуном за бесплатно - не уважать себя. Работая, ты решаешь чужие задачи, пусть даже самые простые. Труд должен оплачиваться.
Чем больше работы тем больше опыта, а вообще главное уметь читать мануалы и писать верные запросы в поисковике. И Не лениться ! Выбираешь сколько время потратить на программирование ? скорее всего это тогда не для тебя )
Нет, вопрос о том что "сколько времени тратить" не стоит. Занимаюсь, потому что есть увлеченность. Вопрос лишь в том, в какое конкретно русло эту увлеченность направить:)
Как я делал раньше. Просто смотрел задачи, выбирал интересные для себя, предлагал выполнить. И в процессе выполнения учился, искал решения. Потом начал работать с одними и те ми же людьми. Задачи пошли более сложные и интересные, нагрузка на мозг и обучение увеличивалась - рос опыт, знания, оплата.
Вывод, берись и делай! Я тоже пытался всё выучить, за всё хватался - это бесполезное занятие, т.к. без практики знания улетучиваются.
Как вариант в процессе изучения делать свой сайт-портфолио и там всё публиковать. Потом с этим сайтом-портфолио на фриланс, уже есть что показать. И брать проекты которые по силам, пусть даже не всё знаешь. В процессе научишься.
А фреймворки/нефреймворки - это не важно, главное опыт. Появится опыт, поймешь что тебе по-душе. И выберешь направление.
Когда знаешь куда двигаться, то нет необходимости хапать всё подряд.