Каков план личностного развития PHP программиста с нуля?

Решил на 4-ом десятке связать свою жизнь с web, выбор пал на PHP (т.к. в этом сегменте всегда много вакансий и низкий порог входа в профессию).

В связи с этим, прошу опытных людей накидать план, дать ссылку, подсказать по каким этапам пойти, что изучать 1м, 2м 3м и т.д.

Чем подробнее для меня тем лучше.
  • Вопрос задан
  • 58935 просмотров
Решения вопроса 3
konst20
@konst20
Программист, преподаватель, немного электронщик
Есть опыт помощи таким начинающим.
реальный срок до запуска джуниора - полгода, никого не слушайте.

Важные моменты
веб-программирование на базе PHP - это стек технологий: PHP/SQL/CSS/HTML/JS + Linux хотя бы азы + знание важных инструментариев (FTP, Git/SVN, работа с БД)
чистый PHP плюс даже все перечисленное выше - не особо нужно и не интересно. Нужно знание конкретных платформ: фреймворков и/или CMS. (Почитайте вакансии на Хантиме по запросу PHP, обратите на это внимание). Навскидку самые востребованные (спорно конечно): Yii фреймворк, CMS Битрикс и Wordpress.

Как начать?
Смело на амбразуру!
1) Установите у себя рабочую среду LAMP/WAMP - Apache, PHP, MySQL. Для этого возьмите пакет Denwer или OpenServer, что больше понравится. Сделайте Hello World просто как HTML, потом на PHP, потом алертом на JS. Порадуйтесь.
Установите все редакторы кода. Кто там вам будет рекомендовать блокнот или notepad++ - не слушайте. Варианты: если машина мощная (4+ Гб памяти и пр.), берите редактор phpStorm (для php/html/css/js). Если не очень мощная - берите komodo edit. Для работы с БД инструмент встроен в Denwer/OpenServer, это phpMyAdmin
2) Идеально, если вы договоритесь сделать кому-нибудь сайт. Бесплатно или за небольшую плату. Если нет - сами себе поставьте задачу: сайт про котиков/про детей etc. Красивый сайт, с галереей, с эффектами, с материалами
Возьмите CMS Wordpress и попытайтесь сделать сайт у себя на компьтере. Настоящий сайт, во всей красе, как вы хотите. Правьте его, смотрите код, экспериментируйте. Сообщество огромное, вы найдете ответы на все свои вопросы
Потратьте чуть денег, купите себе домен и хостинг, залейте сайт на хостинг.
Порадуйтесь. Похвастайтесь.
3) Ищите в сети тестовые задачи и решайте их, изучайте материалы собеседований, вопросы - их много.
4) Зарегистрируйтесь на odesk.com под каким-то фейковым email, пройдите тесты по PHP, CSS, HTML, jQuery, Wordpress, а во время прохождения делайте скриншоты вопросов. Потом изучайте эти вопросы, ищите ответы, далеко не обязательно на все. Тесты вы, конечно, не пройдете, но вам нужны только вопросы.
5) Постоянно следите за вакансиями "PHP-программист", "веб-программист" на Хантиме, на hh.ru и подобных ресурсах.

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

Вот как раз на полгода.
После этого у вас появится масса информации, и дальше вы сами сориентируетесь.
Ответ написан
@nikita-b
Все это сильно зависит от того, что вы знаете сейчас. Английский знаете? Если нет, то это первое, что стоит изучить, хотя бы на уровне чтения.

0. Допустим если вы не знаете английский.
lingualeo.com
Русский сервис, где можно читать тексты и смотреть разные видео на английском. Очень удобен.
https://www.duolingo.com/
Похожий сервер, чуть проще. У него очень интересный принцип работы и замысел почитайте.

1. Допустим вы знаете/изучили английский. Нужны только самые основы вы их разовьете в процессе изучения онлайн-курсов. Что такое онлайн-курсы? Это сервисы, где вам через видео, книги, тесты предлагают знания. Университет онлайн.
Это очень хороший способ, потому что у них уже есть набор тем, которые вам требуется изучить.
Есть такой сервис на русском:
htmlacademy.ru
Я не пробовал, но в целом рекомендуют. Он не совсем бесплатный, но там 100 рублей в месяц. Это совсем мелочи.
Есть еще:
proglive.ru
Но он если честно слишком дорогой. Я смотрел там несколько вэбинаров и не был особо впечатлен. но может кто-то там учится подскажет. Может в интернете найдете информацию о нем.

Есть более продвинутые аналоги на английском:
www.codecademy.com
Бесплатный набор курсов по очень-очень большому спектру тем. Достаточно высокого качества.

Еще
https://teamtreehouse.com
https://teamtreehouse.com (Без моей реф. ссылки)
Этим я сейчас пользуюсь сам. Курсы более подробные и приятные. Хотя если, что-то знаете то могут показаться зануднее. Есть еженедельное шоу, где рассказывают о всяких новых технологиях и течениях. Часто появляются новые курсы. Можно задать вопросы на форуме. Он правда платный. Около 1000 рублей в месяц, но он того стоит.
https://www.udacity.com/
Еще один бесплатный аналог. Не пробовал.

2. Допустим вы прошли курсы по html,css, js, jquery, php. Я рекомендую уже с этого момента выполнять платные работы.
Есть много разных мест, где можно найти работу:
Русский: fl.ru
Английские: www.freelancer.com
https://www.odesk.com
В англоязычном секторе зарплаты намного приятнее. Для жителей регионов в особенности.
Вы можете брать дешевые проекты и предлагать низкую цену. Практика очень важна.

Впрочем можно и попробовать найти работу(Не фрилансером), но я считаю, что это сильно ограничит ваш прогресс на данном этапе.

3. Несмотря на то, что этот пункт идет третий он должен идти параллейно со вторым. А возможно и первым. Но в целом это все не обязательно, просто так вы повышаете свой уровень.
3.1 https://www.edx.org/course/mitx/mitx-6-00-1x-intro...
Это очень хороший курс от крутейшего в мире универа по теме IT. Сначала кажется, что легкий, а потом внезапно начинается ад. Пройдя его вы наверно будете знать больше, чем большая часть людей, которые заканчивают российские вузы)
Там правда Python, но знать его не надо, все объяснят.
Зато очень рекомендуется математика.
Для начинающих несмотря на название достаточно сложен.
3.2 https://www.class-central.com
Список курсов, которые проводят крупнешие университеты мира.
Вам нужно многое из того, что касается программирования, алгоритмов, математики.
Ищите, что вам интересно и вперед.
Я советую:
3.3 https://www.coursera.org/course/algs4partI
И вторую часть.
Там правда используется Java, но нужны только основы.
3.4 https://www.edx.org/course/linuxfoundationx/linuxf...
Курс по основам Linux. Не пробовал.
3.5 Математика. От простого к сложному:
https://www.coursera.org/course/algebra
https://www.coursera.org/course/precalculus
https://www.coursera.org/course/calcsing
https://www.coursera.org/course/calc1
https://www.coursera.org/course/sequence
Не все курсы проходят, так что надо искать аналоги. Там были и более сложные. Так же важны курсы по теории вероятности.

Что осталось за скобками? Придется изучить систему контроля версий. Я люблю Git. Вот хорошая книга:
cloud.github.com/downloads/GArik/progit/progit.ru.pdf
Совет: Не берите больше 3-4 курсов. Не справитесь. Хотя бы уж в начале не берите.

Если пройдете все это, поздравляю, вы стали программистом причем достаточно высокого уровня.
То есть подведем итоги. Вам надо:
1. html, css. Не надо в них углубляться. Просто основы.
2. js, jquery. Тоже на начальном этапе не углубляйтесь.
3. php и какой-нибудь фреймфорк. Symfony или Yii. И какая-нибудь база данных.
3.1. Узучение какой-нибудь CSS. Drupal например. Или Wordpress.
4. Система контроля версий. Git.
5. Математика.
6. Алгоритмы.
7. Computer Science в целом. Linux, шифрование, механика работы баз данных и серверов и т.д.
При этом по сути для трудоустройства хватит первых трех, что бы там кто не говорил.
Ответ написан
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
В общем, вот мой совет, после третьего пункта порядок можно брать уже любой, смотря что надо для решения задач, т.е. важна практика.

1. Начать надо с основ - html/css
2. Затем учить php + пару CMS (только хороших, я думаю это cms made simple, livestreet, wordpress)
3. Узнать про базы данных, начать с MySQL, перейти в noSQL базы данных (например mongo db)
4. Начать учить фрэймворки (Symfony2 и Yii)
5. Изучить серверные технологии (Apache + nginx, linux различные, работу с командной строкой, ssh и ftp на уровне настройки и поднятия этих протоколов, права доступа и прочие фишки, вроде sphinxsearch)
6. Узнать про кэширование и проникнуться этим, угореть по хайлоад
7. Изучить еще пару скриптовых языков и фреймворков (Rubу + Ruby on rails, python + django)
8. Угореть по IT security, penetration testing
9. Изучить еще больше фронтэнда - javascript + jquery, Angularjs, html5/css3;
10. Угореть по всяким системам контроля версий, git, jira

Сдать на ZCE и получить как можно больше международных сертификатов, на случай, если хотите мигрировать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
somenumboola
@somenumboola
Team Lead in B-online Solutions
Буду исходить из "дано" задачи "PHP программист" и из того что автор вопроса стремится заниматься сугубо back-end программированием. Заранее прошу прощения, я несколько увлекся
Итак:
1. Установка сервера (Open Server, Xampp, Denver), на начальном уровне. (просто из exe)
2. Общие принципы.
2.1. Типы данных.
2.2. Переменные.
2.2.1. Работа с переменными по ссылке.
2.2.2. Методы объявления и уничтожения переменных.
2.3. Управляющие конструкции (если знаком, то особенности синтаксиса в рамках языка).
2.3.1. Условия.
2.3.2. Циклы.
2.4. Конструкции вывода(print, print_r, echo).
2.5. Конструкции отладки и управления выполнением(var_dump,die,exit,break в циклах, пустой return;).
2.6. Пред определенные глобальные переменные($_GET,$_POST,$_REQUEST,$_SERVER), константы зарезервированные под модификаторы (static, function, const, $this)
2.7. Особенности версий 5.3, 5.4.
2.7.1. Анонимные функции.
2.7.2. Замыкания.
2.7.3. Особенности объявления массивов.
2.7.4. Пространства имен.
3. HTTP протокол.
3.1. Заголовки входящие.
3.2. Заголовки исходящие.
3.3. Процесс общения.
3.4. Метод php “header(…)” в контексте темы.
3.5. Глобальная переменная $_SERVER[] в контексте темы.
4. Установка сервера на среднем уровне (основы файла .htaccess и RewriteRule)
5. Процедурное программирование.
5.1. Математические методы.
5.2. Оперирование типами.
5.2.1. Методы оперирования массивами (array_values,array_keys,array_map и т.д.)
5.2.2. Методы оперирования строками (strlen,substr и т.д.).
6. ООП.
6.1. Классы.
6.1.1. Инкапсуляция(public,protected,private). Понимать разницу.
6.1.2. Наследование.
6.2. Интерфейсы.
6.2.1. Имплементация интерфейсов.
6.3. Абстрактные классы.
6.4. Полиморфизм.
6.5. Магические методы.
6.5.1. Базовые (__construct,__get,__set,__destruct)
6.5.2. Расширенные (__invoke,__serialize,__isset)
6.5.3. Разобраться когда стоит применять магические методы а когда это плохая практика.
7. Библиотека SPL, и расширение поведенческих возможностей классов за ее счет.
8. Базы данных.
8.1. SQL
8.2. Примитивный уровень общения с БД. (mysql_connect,mysql_close,mysql_query).
8.3. Средний уровень общения с БД(PDO и другие кастомные библиотеки).
8.4. Высокий уровень (ActiveRecord,DataAccessObject,ObjectRelationMapping).
8.5. NoSql БД на примере MongoBD (настоятельно рекомендуется, но не обязательно).
9. Фреймворки. На мой вигляд можно начать с Kohana. Сужу по уровню вхождения стажеров которых видел и отсутствию пространств имен с которыми по первах могут возникать проблемы.

И главное, Внимание! Личностные качества.
- Усидчивость.
- Владение Google при оттачивании темы или сложной задаче на уровне, когда поисковик видит в пользователе не то что DDOS а полноценный физический краш. тест.
- Не брезгливость. Умение заставить себя разбираться в гов… хм. Нелицеприятных дебрях.
- Збагойствие. Отсутствие паники при различных ошибках и не состыковках. Всегда остыть и попробовать снова, но по другому.
Ответ написан
AxisPod
@AxisPod
Самая главная ваша проблема в неумении пользоваться поисковиками, с этого и стоит начать. Ибо без этого умения выучиться не получится, вы всегда будете задавать подобные вопросы, тогда как на львиную долю ваших вопросов (в течении первых пары лет изучения/использования) уже есть.

Основная проблема еще в том, что даже сейчас получив ответ, получив ответ на следующий вопрос, нет гарантии, что вы получите ответы в дальнейшем.

И адекватных варианта реально 2: Репетиторство и Самостоятельный поиск.

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

P.S. Далеко не все обладают терпением, чтобы отвечать на одни и те же ответы постоянно.
Ответ написан
Мне кажется, что начинать изучение программирования с нуля с php - немного некорректно. Хотя у каждого своё мнение.
Первое и самое главное - Алгоритмы и структуры данных + Булева алгебра

habrahabr.ru/company/hexlet/blog/213959 - введение в логику

www.lektorium.tv/course/22823?id=22823 - алгоритмы и структуры данных

Хотя бы немного изучить С (отец языков пишущих :) ) и IT Essential.

А потом, через 8-10 месяцев такого изучения - со спокойным сердцем (если ещё захочется работать на PHP) можно учить php и идти в джуны.

По итогу:

1. IT Essential (Оcновы IT)
2. Алгоритмы и структуры данных
3. Булева алгебра
4. Основы структурного программирования на С.
5. Основы PHP
6. Поход в junior в компанию.


Примерно так.
Ответ написан
1. Голый (функциональный) PHP
2. Фреймворк простенький
3. ООП
4. Фреймворки посложнее
Высокооплачиваемый специалист готов! )
Ответ написан
@apasen

2. Фреймворк простенький
3. ООП


Может, с начало ООП, а потом фреймворк? Как изучать фреймворк не знаю ООП?
Ответ написан
mrTyler
@mrTyler
Frontend Developer
Главное - живой ум. Если не обладаете таковым, то можете просто верстать html+css+jquery, далее изучайте препроцессоры (stylus, less).

Уровень зарплат верстальщиков может быть сильно выше 50т.р в месяц, при условии знаний дополнительных технологий (git/svn, препроцессоры, шаблонизаторы (jade) и т.п.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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