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

    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 а полноценный физический краш. тест.
    - Не брезгливость. Умение заставить себя разбираться в гов… хм. Нелицеприятных дебрях.
    - Збагойствие. Отсутствие паники при различных ошибках и не состыковках. Всегда остыть и попробовать снова, но по другому.
    Ответ написан
    5 комментариев
  • Каков план личностного развития PHP программиста с нуля?

    @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, шифрование, механика работы баз данных и серверов и т.д.
    При этом по сути для трудоустройства хватит первых трех, что бы там кто не говорил.
    Ответ написан
    7 комментариев
  • Каков план личностного развития PHP программиста с нуля?

    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, вы будете очарованы его возможностями.

    Вот как раз на полгода.
    После этого у вас появится масса информации, и дальше вы сами сориентируетесь.
    Ответ написан
    11 комментариев