Разработчик php обучение – Веб-разработчик: курсы по веб-разработке, обучение на WEB-разработчика с нуля | GeekBrains — образовательный портал | GeekBrains

Содержание

Обучение PHP, курс Backend разработчик на PHP

Технический директор E-Commerce проекта с бэкграундом разработки и технического обеспечения веб-приложений. В профессиональном программировании прошел долгий путь от Junior Developer до CTO.

Окончил факультет прикладной математики и физики МАИ (НИУ). Имеет преподавательский опыт в Московском Авиационном институте, а также на базе нескольких платформ дополнительного образования. Разработал различные обучающие курсы: от изучения языка PHP до построения масштабируемых систем и архитектур.

Навыки:
— Разработка Web-приложений
— Кризис-менеджмент
— Построение команд
— Linux-based системы
— PHP, Java, JS

Руководитель программы

Инженер-программист с более чем 6-летним опытом программирования.

Работал в крупных российских и заграничных компаниях. Являлся техническим руководителем и архитектором проекта для крупного банка.

Магистр по программе MSIT SE CMU Университета Иннополис. В настоящее время является разработчиком в Booking.com.

Преподаватель

Закончил факультет вычислительной математики и кибернетики МГУ им. М. В. Ломоносова

Работал также team lead / senior PHP developer в ГК «Urban Intel». Разработал с командой движок поверх Laravel для RAD (rapid application development) на базе мета-программирования и кодогенерации, успешно применял и расширял его уже почти 3 года.

Программирую более 18 лет, 10 лет в B2B-разработке, опыт с PHP 7+ лет, с Laravel 3+ лет.

Преподаватель

Опыт программирования: 10 лет, из них 6 лет коммерческой разработки.
Первые программы начал писать в 10 лет.
Работал в веб-студии LineApp в должности веб-разработчика, в банке Урал ФД в должности ведущего инженера-программиста, при этом решал очень разные задачи, включая продумывание и разработку архитектуры, администрирование серверов, разработку приложений, написание технической документации, разработку сложных SQL скриптов.
На данный момент работаю в интернациональной команде веб-разработчиков GS Software House.
Из последних проектов: https://yokl.ru/ — интернет-магазин с очень сложной системой ценообразования, https://aminos.ai/ — платформа для создания собственного чат-бота.
Основной стек:
PHP 5 & 7, Laravel 5, Vue 2, ECMAScript 2018 (JS), MySQL 5.7, Bootstrap 3 & 4, Semantic UI, jQuery.

Преподаватель

PHP-разработчик в компании в Inspiritum, занимается контейнеризацией сервисов, автоматизацией задач, фильтрацией мобильного трафика, подключением к международным операторам. Знаком с современными решениями и технологиями: docker, clickhouse, postgresql, redis, rabbitmq. Участвовал как в создании проектов с нуля, так и в реализации крупных проектов.

Ранее работал в GlobeXY и Drom.ru, создавал микросервисы, дорабатывал виджеты и логику на серверах, разрабатывал внутренние проекты компании в сотрудничестве с мобильным разработчиком.

Обучал студентов в качестве репетитора, преподавал высшую математику, MySQL, C++, C#. Окончил Национальный исследовательский Томский политехнический университет по специальности «Прикладная математика и информатика».

Заместитель начальника ИТ-отдела в компании «Профессиональный Партнёр»

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

Занимался PHP-разработкой в связке с PostgreSQL. Есть интересный опыт по обработке OpenData.

Одно из направлений профессиональной деятельности — офлайн- и онлайн-преподавание.

Преподаватель

Курс по основам PHP

*Данная скидка действительна при заказе и оплате очного и онлайн обучения только сегодня. Запишитесь прямо сейчас со скидкой!

  Дата Режим обучения Место обучения Преподаватель Скидка

*

 
   
  18.01.2020 —
01.02.2020
суббота утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Таганский»
metro.gif м.Пролетарская или м.Крестьянская застава
Группа почти укомплектована. Успейте записаться на свободные места!

Шуйков Сергей Юрьевич

 
  17.02.2020 —
19.02.2020
ежедневно утро-день
10:00 — 17:10
«Таганский»
metro.gif м.Пролетарская или м.Крестьянская застава

Гревцов Валентин Валентинович

— 15%
 
  30.03.2020 —
01.04.2020
ежеднвно утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Таганский»
metro.gif
м.Пролетарская или м.Крестьянская застава

Шуйков Сергей Юрьевич

 
  07.04.2020 —
09.04.2020
ежедневно утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Белорусско-Савеловский»
metro.gif м.Белорусская или м.Савеловская

Тарасов Алексей Владимирович

 
  08.04.2020 —
10.04.2020
ежедневно утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Белорусско-Савеловский»
metro.gif м.Белорусская или м.Савеловская

Тарасов Алексей Владимирович

 
  12.04.2020 —
26.04.2020
воскресенье утро-день
10:00 — 17:10
«Белорусско-Савеловский»
metro.gif м.Белорусская или м.Савеловская

Тарасов Алексей Владимирович

 
  13.04.2020 —
15.04.2020
ежедневно утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Стилобат»
metro.gif м.Бауманская

Шуйков Сергей Юрьевич

 
  03.06.2020 —
05.06.2020
ежедневно утро-день
10:00 — 17:10
«Таганский»
metro.gif м.Пролетарская или м.Крестьянская застава

Гревцов Валентин Валентинович

— 15%
 
  12.07.2020 —
26.07.2020
воскресенье утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Белорусско-Савеловский»
metro.gif м.Белорусская или м.Савеловская

Тарасов Алексей Владимирович

 
  19.07.2020 —
02.08.2020
воскресенье утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Белорусско-Савеловский»
metro.gif м.Белорусская или м.Савеловская

Тарасов Алексей Владимирович

 
  19.07.2020 —
02.08.2020
воскресенье утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Стилобат»
metro.gif м.Бауманская

Шуйков Сергей Юрьевич

 
  27.07.2020 —
29.07.2020
ежедневно утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Стилобат»
metro.gif м.Бауманская

Шуйков Сергей Юрьевич

 
  06.09.2020 —
20.09.2020
воскресенье утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Стилобат»
metro.gif м.Бауманская

Шуйков Сергей Юрьевич

 
  09.11.2020 —
11.11.2020
ежедневно утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Стилобат»
metro.gif м.Бауманская

Шуйков Сергей Юрьевич

 
  21.11.2020 —
05.12.2020
суббота утро-день
10:00 — 17:10
Открытое обучение
  • Индивидуальные очные консультации преподавателей
  • Обучение по видеозаписям реальных занятий
  • Самостоятельный выбор темпа обучения
  • Визуальный контакт с преподавателем и одногруппниками
  • Оптимальное соотношение цены и качества

Подробнее

«Стилобат»
metro.gif м.Бауманская

Шуйков Сергей Юрьевич

 

Каков план личностного развития PHP программиста с нуля? — Хабр Q&A

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

Становимся профессиональными PHP разработчиками. Часть 1: Недостающее звено / Habr

Предлагаю вашему вниманию перевод статьи «Becoming PHP professional. Missing link».

Введение


Когда я читаю различные блоги, связанные с PHP, вопросы на Quora (англоязычный сервис вопрос-ответ, прим. переводчика), сообщества в Google+, газеты и журналы, я часто замечаю крайнюю поляризацию навыков программирования. Вопросы бывают или уровня «А как же мне подключиться к базе данных MySQL», или что-то из области «Как мне лучше распределить ресурсы моей почтовой системы для того, чтобы отправлять более одного миллиона писем в час без использования нового сервера?»

Лично я выделяю 4 четких уровня «славы» в PHP (применимо так же и для любого другого языка или профессии): новичок, среднячок, профессионал и элита.

Коротко обо всех уровнях


В PHP новички узнают о переменных, инклудах, о работе с html-формами. Они изучают простые логические конструкции; отправляют электронную почту, пользуясь при этом уроками-туториалами, а иногда даже затрагивают примеры, где используется объектно-ориентированное программирование, но даже понятия не имеют, что это вообще такое. Новички работают с WordPress (WP) и меняют несколько классов CSS. С этими знаниями они берутся за работу, но, к сожалению, не справляются с ней.

Профессионалы – люди, которые уделили немалую часть своей жизни различным проектам. Они разрабатывали коммерческие приложения на большинстве, если не на всех, фрэймворках (“каркас” вашего приложения или проекта), они эффективно сочетали РНР и различные базы данных, они посещали конференции и даже выступали на них. Они знают шаблоны проектирования и могут с легкостью спроектировать целый проект в одиночку – от построения диаграм до запуска проекта, и уже давно не пишут процедурный код.

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

Но кто же такие «среднячки»?

Недостающее звено


Так как же новичок может стать профессионалом? Если человек не знает ничего, кроме азов, то как же он может повышать свой уровень и начать практиковаться в более сложных задачах? Это тот вопрос, который мне задавали очень много новичков. Первый шаг для того, чтобы стать профессионалом – стать чем то средним, т.н. «среднячком».

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

Забудьте «спагетти-код»


Большинство думает, что использование классов означает, что вы пишите объектно-ориентированный код, тогда как использование функций означает, что код – процедурный. Давайте соедим воедино распространенные мнения: процедурный код это тот, в котором вы не используете ни классы, ни объекты, а объектно-ориентированный код – с использование классов и объектов по максимуму.

Мой совет – полностью забыть о процедурном коде. Используйте ООП как можно чаще – пишите классы, применяйте инкапсуляцию, думайте реальными сущностями. Выигрыш процедурного кода в производительности над кодом, основаном на классах, выглядит ничтожно в сравнении с последующим использованием вашего проекта другими разработчиками. Часто встречаю фразу «Но ведь WordPress процедурный!». Честно говоря, и как бы это резко не звучало, но «разработчики» WP такие же PHP разработчики, как и люди с Instargam – фотографы. Но не стоит воспринимать это как то, что WP бесполезен – он идеален для блогов, простых вэб-сайтов и проектов-однодневок, на которые вы не хотите тратить много времени. Он идеально подходит для быстрого заработка или для людей, кто не настолько техничен, но использование WP никогда не сделает вас профессионалом в PHP – ведь WP это, по сути, длинный «спагетти код», который вряд ли научит вас правильным принципам проектирования.

Начните с малого. Обдумайте концепцию реального мира и попытайтесь возпроизвести ее испольюзуя ООП. Изучайте различные базовые туториалы и постепенно становитесь более опытными и продвинутыми. Работайте с ООП до тех пор, пока вы не разберетесь с классами в целом, перед тем как переходить к работе с фрэймворками и в недоумении смотреть на такие понятия, как «Model», «View» и «Controler» — это все слишком туманно без понимания ООП.

Анализируйте существующие проекты


Разбирайте уже существующий исходный код отовсюду, где его можно найти. Например, находите проекты на Github’e, установите их себе на компьютер и экспериментируйте с кодом. От файла к файлу, от строки к строке, и до тех пор, пока не поймете, что делает каждая строка в каждом файле.

Ищите такие проекты, которые хорошо раскомментированы и/или документированы, с хорошей структурой и до сих пор актуальны. Проекты, которые в последний раз обновлялись в 2008 году, вряд ли помогут вам разобраться с PHP версии 5.5 – вы можете упустить из виду новейшие и великолепнейшие функции, которые помогут вам выделяться среди других в этой области.

Научитесь настраивать свою среду разработки


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

Забудьте про ОС Windows для разработки. Если у вас установлена операционная система Windows — установите виртуальную машину с ОС Linux на ней. Причина такого решения это окончание строк, а также другие странные противоречия на большинстве серверов с Windows, так что лучше всего разрабатывать на той ОС, которая больше всего похожа на ту, на которой вы будете запускать свой проект.

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

Различные эксперементы с вашими настройками могут познакомить вас с различными серверами – используете ли вы Apache или Nginx, или же ни тот, ни другой, и предпочитаете AppServer.

Приучайтесь к хорошему тону


Когда вы пишете свой код, убедитесь, что вы хорошо закомментировали его при помощи блоков документации, и ваш код хорошо структурирован и хорошо выглядит. После того, как вы создали класс, проект или библиотеку, воспользуйтесь хорошо известными инструментами документации (PHPDocumentor, ApiGen) для выделение блоков документации и их улучшения.

Хорошая среда разработки стоит занимаемому ей пространству в золоте – использование одного кросс-платформенного редактора поможет вам быстро разобраться с новой средой разработки, и вы сможете сразу погрузиться в код, не тратя время на настройку горячих клавиш и тем оформления. Убедитесь, что у вас есть резервная копия конфигурационных файлов вашей среды разработки на облачном хранилище, например, Google Drive, Dropbox, для того, чтобы вы могли использовать его в любой момент времени. Одна из хороших сред разработки – это PHPStorm, или же если вы не можете себе это позволить или у вас нет открытых проектов, для которого вы можете попросить бесплатную лицензию, Netbeans – бесплатная альтернатива. Обе среды являются кросс-платформенными.

Чем раньше вы приучитесь к хорошему тону, тем раньше ваш код смогут читать «не напрягаясь» другие разработчики. Найдите свой стиль и придерживайтесь его – это поможет и вам, и другим. Старайтесь придерживаться стандартов PSR (PSR-0, PSR-1, PSR-2, PSR-3) настолько, насколько можно – на то они и стандарты. Большинство из нас использует их и любит, а они, в свою очередь, делают код читаемым и позволяют использовать для своих нужд.

Так же, для новчика хорошо подойдет такой ресурс, как PHP The Right Way – свежие подсказки для начинающих и не только – пользуйтесь ими для того, чтобы глубже понять основы ООП, безопасности, запуска проектов, писать код в соответствии стандартов, которые были упомянуты ранее и многое другое.

Пробуйте разные фрэймворки, выберите один


Длительное время PHP был языком с самым большим количеством фреймворков для него (JavaScript обошел PHP лишь недавно). Так или иначе, это говорит о непоследовательности нашего сообщества или же о популярности языка, но факт остается фактом: выбор фрэймворка – это сложная задача, особенно для начинающих.

Попробовав многие из них, я могу искренне посоветовать вам Phalcon для знакомства с фрэймворками, т.к. он надежный и качественный, по факту, написан на C и устанавливается как расширение PHP (поэтому он быстрее, чем все существующие на данный момент фрэймворки). Тем не менее, попробуйте различные фрэймворки – это действительно неообходимо.

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

Читайте литературу


Не стоит пренебрегать советами и подсказками других. Читайте столько, сколько можете – если вы будете это делать, то это не займет у вас столько времени, сколько вам кажется. Найдите хорошие блоги, читайте туториалы на sitepoint.com, обсуждайте вопросы и ответы на StackOverflow, зайдите на форумы sitepoint.com, оформите подписку на газеты, следите за хорошими источниками на Google+. Не стоит читать стандартные учебники по PHP – они устарели еще в тот момент, когда вышли – вместо этого, сфокусируйтесь на личных заметках и уроках, где есть полезный и современный код, который вы можете найти повсюду вы сети. Даже если вы наткнулись на тему, с которой уже знакомы, попытайтесь прочесть ее снова – часто вы сможете найти новую пищу для размышлений и разные подходы к одним и тем же вещам.

Нет работы? Придумайте!


Всегда есть чем заняться. Никогда не говорите фразу «У меня нет проекта для работы» или, что еще хуже, «Мне скучно, я устал». Если у вас нет проекта для работы – создайте его. Вам приходится использовать что-то ежедневно и оно вас расстраивает недостаточной функциональностью? Создайте альтернативное, но лучше! Нет идей для нового проекта? Создайте уже существующий – попробуйте переписать, например, Facebook, воссоздайте то, что вы уже видели.

Самое главное – никогда не останавливаться. Нельзя накопить 10000 часов, если вы не проводите их за делом! Продолжайте работать, интересуйтесь новым, постоянно занимайте себя чем-то. Создайте простую адресную книгу. Потом сделайте ее на другом фрэймворке. Затем попробуйте другую базу данных (перейдите с MariaDB на Mongo, например). Займите себя чем то!

Найдите друга/наставника


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

Заключение


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

Что должен знать «PHP Junior Developer без опыта работы»? / Habr

<update>

Прошло почти пять лет. Эта статья в значительной степени устарела, хоть конструктивные моменты типа «изучайте смежные области» едва ли когда утратят актуальность. Кадровый голод ощущается всё более явно и вносит больше конструктива в процесс найма начинающих разработчиков. Баланс смещается в сторону хороших знаний языка и инструментов от готовности к написанию кода «как-нибудь» но с первого дня.

Не забывайте, что всё это оценочные суждения какого-то анонимуса. У вас нет никаких гарантий, что я разработчик и понимаю, о чём говорю. Собственно, вы даже не можете гарантировать, что этот текст не набран каким-то ежом в уплату за съеденую котлету.

</update>

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

При написании этой статьи:

  • в той или иной мере был контакт с 20+ работодателями
  • выполнено 12 тестовых заданий
  • пройдено 8 собеседований с техническими специалистами
  • получил моральные травмы средней степени тяжести один начинающий PHP-разработчик


HTML, CSS, JavaScript

Вам может показаться, что знать эти вещи идеально PHP-програмисту не требуется, однако это не так. Валидная вёрстка, кроссбраузерность и прочие слова, которые пишут в вакансиях верстальщиков применяйте также и к себе. В общем-то это вполне логично, поскольку даже самый идеальный код на PHP не нужен никому, если он при этом генерирует неадекватный HTML.
В некоторых организация мне сразу говорили, что вакансия подразумевает именно разработчика PHP, есть отдельные верстальщики/скриптовики. Однако таких организаций было мало.
Самый показательный пример — одно из выполненых мной тестовых заданий. В нём соотношение строк PHP:JavaScript:HTML было примерно 20:50:30.
Фреймворки

Ваши знания PHP как такового интересуют весьма незначительную часть работодателей. Большинство компаний используют в разработке различные фреймворки, и хотят от кандидата того же. Если в пожеланиях к кандидату вы увидели «-знакомство с фреймворком х», то скорее всего это не пожелание, а требование.
В Новосибирске наиболее популярны (исходя из вакансий джуниоров) Yii, Symfony и Zend. Изредка мелькает CakePHP.
Лично мне освоить Yii на базовом уровне удалось за неделю спокойной работы. Что, впрочем, не значит, что вы не сможете разобраться в нём быстрее.
PHP — тоже програмирование

Со всеми вытекающими отсюда последствиями. А именно — без знания теории ваша квалификация крайне низка.
Порог вхождения в PHP невысок. Как следствие, все прочие програмисты смотрят на PHP-шников с презрением и неодобрением. Да и в общем-то есть за что.
Незнание основ теории может приводить к таким ужасным вещам, как генерация в коде миллиона объектов с последующим применением к ним пузырьковой сортировки. Это, конечно, гипербола, но суть её вы, наверное, уловили.
В общем настоятельно рекомендую вам прочитать пару-тройку книг по теории програмирования. Вряд ли вас спросят о подсчёте сложности алгоритма, но общие вопросы, некий начальный уровень програмиста, на собеседовании стараются выяснить.
Разработка включает в себя многое

Лично мне никогда не приходила в голову мысль, что стоит думать не только каком языке ты пишешь, но и чем ты пишешь. Очень желательно знать основные IDE, точнее их главные функции.
Для нормальной работе в команде необходим контроль версий.
Кроме того, в проектах принято проводить тестирование и как-то собщать об ошибках.
А ошибки бывают такие, что неплохо бы знать содержимое php.ini.
И конфиги nginx/apache.
И можно очень долго продолжать.
Готовьтесь к резкому расширению кругозора

При выполнении каждого второго тестового задания вам придётся с нуля осваивать что-то новое. NoSQL, AJAX, чьи-то API, JS библиотеки и прочие вещи, о которых вы в лучшем случае слышали пару раз в жизни, вам придётся экстренно изучать.
То что вам не знакомо вовсе не обязательно является чем-то сложным. Это ведь действительно задания для начинающего разработчика без опыта работы. А значит, несмотря на кажущуюся сложность, решение задачи вы быстро найдёте, уделив полчаса документации.
Не отказывайтесь от задания, если оно показалось вам слишком сложным. Просто почитайте статьи или учебники по этой теме, вы поймёте, что бояться нечего.
Тестовые задания могут быть неточны

Как правило тестовые задания коротки и ясны. И всё же неточны. Я понятия не имею, чем это вызвано. Возможно составляют и проверяют задания разные люди.
В одном задании мне явно указали применить ООП, затем на собеседовании спросили, зачем я это сделал. В другом с точностью наоборот. В третьем попросили приложить описание на английском и затем спросили зачем я его приложил.
В общем некоторая часть ваших работ будет проверяться без оглядки на задание.
HR`ы нередко адекватны и профессиональны

Нередко — это 6 из 10. Будьте готовы к тому, что на остальные письма вам не ответят, тестовые задания не проверят, мы вам перезвоним.
Я уж не знаю, чем руководствуются эти люди. Серьёзно, HR, почему вы не можете потратить пять минут на человека, который потратил на вас день?
Если вы столкнётесь с такой проблемой, не ждите ответа. Звоните и пишите, спрашивайте почему про вас забыли.
Собеседование это огромный плюс

Общение с опытным разработчиком и просмотр вашего кода сильно продвигает вас в развитии. Даже если вам отказали в вакансии, вы всё равно получили ценный опыт.
После каждого собеседования обязательно пройдитесь дома по вопросам и уточните неясные вам моменты. Как правило эти вопросы относятся к базовым знаниям, без которых ваша работа будет как минимум некачественно. Что-то не знаете — обязательно разберитесь. Хотя бы потому, что подобный вопрос с большой вероятностью повторится.
Happy End

Вот собственно со всем этим и придётся столкнуться начинающему разработчику. При некоторой подготовке ваши будующие собеседования пройдут намного проще, чем мои.
Возможно пытливому читателю будет интересно, чем же закончились эти поиски работы?
Я понял, что для начинающего разработчика без опыта работы у меня слишком мало опыта, и устроился на вакансию с IT вообще никак не связанную. Через год планирую, поднабравшись знаний, снова начать поиски.

Стань PHP-программистом — освой прибыльную профессию!

  • 1Основы PHP

    Файлы как место для хранения информации

    Низкоуровневая работа с файлами

    Удобные функции для работы с файлами

    Создание простейшего блога с помощью файловой системы

    Ведение логов с помощью файлов

    Создание журнала посещения сайта

  • 2Куки и сессии

    Что такое куки

    Принцип работы кук

    Что такое сессии. Принцип работы сессий

    Пример простейшей авторизации на сайте и создания закрытых страничек

  • 3Работа с БД

    БД и СУБД. Реляционные базы данных

    Таблицы, строки, столбцы, первичный ключ

    Типы связей между таблицами

    Работа с утилитой PHPMyAdmin

    Основные SQL-операции

    Работа с БД из PHP, mysql и mysqli

    Пример использования БД

  • 4MVC

    Что такое архитектура программы и что такое хороший код

    Принцип разделения

    Модель-Вид-Контроллер

    Модульность разработки и уровни абстракции

    Рассматриваем MVC на примере создания новостной ленты

    Альтернативный синтаксис PHP

  • 5БД и архитектура

    Основы безопасности веб-сайтов

    Sql-инъекции, xss-атаки, способы защиты

    Нормальные формы. Правильное хранение информации в базе

    Многотабличные запросы

    Методика создания системы постраничной навигации

    Создание одной точки входа на сайт

  • 6Шаблонизация

    Удаление повторяющегося HTML-кода

    Основные проблемы подключения шаблонов обычными include-ами

    Универсальный и современный способ подключения шаблонов

  • 7Прикручивание вёрстки

    Практика

    Совмещение кода со свёрстанным макетом сайта

    Выделение сущности статических текстов на сайте

    Выделение неудобств процедурного подхода

  • 8Разбор проектов

    Разбор ошибок и хороших решений в финальных работах учеников

    Проблемы процедурного программирования

    Благословение на изучение ООП

  • 1Основы ООП

    Понятие класса и объекта

    ООП и философия, устройство мира

    Конструктор класса

    Наследование, инкапсуляция, полиморфизм

    Модификаторы доступа

    Статические методы и классы

  • 2Основы ООП 2

    Перегрузки

    Абстрактные методы

    Абстрактные классы

    Интерфейсы

    Создание генератора HTML-кода с помощью сущностей-объектов

  • 3Эволюция PHP: 5.3

    Пространства имён

    Статическое связывание

    Замыкания

  • 4Эволюция PHP: 5.4 — 7

    Короткий синтаксис

    Трейты

    Мелочи 5.5-5.6

    Обзор версии 7

  • 5ООП + MVC

    Переделываем проект, используя объектно-ориентированный подход

    Выделение базового контроллера

    Передача имён контроллера и действия через URL

    Автозагрузка классов

  • 6Драйвер БД и PDO

    Переводим модели в ООП

    Правильная расстановка модификаторов доступа

    Смысл использования PDO

    Основные конструкции и методы

    Создание класса для упрощения работы с базой данных

  • 7Идеальная модель

    Создание базовой модели: полностью убираем повторяющийся код

    Идеальная модель.

    Класс валидации. Карта и обработка

    Расширение моделей, имеющих уникальную обработку

  • 8Исключения и логи

    Назначение и общая схема

    Создание своих классов

    Error Log

    Стандартные возможности PHP

    Использование при исключениях

  • 1Авторизация на сайте

    Создание человекопонятных URL-адресов

    Тонкости настройки файла htaccess

    Пользователи: создание таблицы в БД, уникальные поля. Хеширование паролей

    Расстановка меток об авторизации: кука, сессия, запись в БД

    Анализ меток, вывод об авторизованности пользователя

  • 2Разделение прав доступа

    Системы разделения прав: иерархические и смежные привилегии

    Проверка прав совершения действия

  • 3Паттерны

    Назначение паттернов

    Singleton

    Observer

    Factory Method

    Strategy

    Facade

    Adapter

  • 4Паттерны PRO

    Dependency Injection

    Service Locator

    Inversion of Control

    Контейнеры объектов

    MVC

  • 5Паттерны и практика

    ActiveRecord

    Внедрение паттернов в проект

  • 6MySQL PRO

    Всё о JOIN

    Подзапросы и соотнесенные подзапросы

    Транзакции

    Хранимые процедуры и триггеры

    Индексы

  • 7Средства разработки

    Установка библиотек с использованием менеджера зависимостей composer

    Основные понятия GIT

    Работа с GIT из IDE

  • 8Обобщение

    Подведение итогов курса

    Зачем нужны фреймворки

    Фреймворки vs написание кода с нуля

  • Программирование на PHP

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

    В курсе мы будем изучать PHP с нуля, с самых-самых основ, с синтаксиса языка, понятия переменной и прочее, и после изучения уроков курса вы должны быть уже достаточно уверенным программистом на PHP, конечно же, при условии успешного изучения материалов курса. Уроки не будут представлять из себя «голую» теорию, я буду стараться максимально разбавлять их практическими рабочими примерами. Для того, чтобы закрепить изученный материал, в конце курса мы с вами создадим простейший динамичный сайт, использующий в своей работе базу данных и паттерн MVC.


    Все уроки курса:


    Количество уроков: 39

    Продолжительность курса: 15:45:20

    Автор: Андрей Кудлай

    Меня зовут Андрей Кудлай — один из авторов проекта webformyself и практикующий веб-разработчик. Имею хорошие навыки работы с HTML, CSS, jQuery, PHP, MySQL, Bootstrap, CakePHP, Yii2, WordPress, OpenCart. Являюсь автором нескольких курсов-бестселлеров издательства WebForMySelf.com

    Описание курса: Представляю вам новый онлайн курс по PHP программированию. Для кого предназначен этот курс? В первую очередь курс будет полезен тем, кто вообще не знаком с PHP, но желает изучить этот замечательный и популярный язык программирования


    Категории премиум

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *