Продвинутый PHP — это, скорее, продвинутая веб-разработка

Продвинутый PHP — это, скорее, продвинутая веб-разработка

Что такое продвинутый PHP, где он используется и что умеет? Беседуем с преподавателем курса Романом Кузаковым.

Написать сайт, для которого норма — 100000 посетителей в сутки? Не проблема. Разработать отказоустойчивое веб-приложение, которое никогда не падает? Пожалуйста! Для того, кто знает, что PHP — это не только запрос к серверу и база данных, такие задачи решаются с легкостью, которую предоставляет этот удивительный инструмент. Однако, как и на любом продвинутом уровне чего бы то ни было, здесь есть свои нюансы и тонкости. Именно о них мы и поговорим с нашим экспертом: преподавателем курса PHP продвинутый онлайн Романом Кузаковым.

КЛЮЧИ: PHP продвинутый, для опытных, курс, обучение, курсы php, научиться программированию, обучение php, как научиться программированию +с нуля, курсы php программирования

Расскажите немного о себе: как dы пришли в PHP-разработку? С чего начинали? Чем занимаетесь на данный момент?

Я начинал в 2007 году, когда еще был студентом НГТУ: учился на факультете автоматики и вычислительной техники, по специальности «Программное обеспечение». Естественно, одновременно с учебой мне очень хотелось зарабатывать. В качестве сферы деятельности я выбрал веб-разработку, как самое популярное направление: тогда и вакансий было очень много, да и по оплате труда предложения были интереснее, чем, например, у junior-ов на С++. Соответственно, я начал изучать PHP, как самый популярный язык веб-разработки: нашел литературу в Интернете, быстро освоил базовый синтаксис, так как база по программированию у меня была, начал искать работу на фрилансе. Первым заказом был сайт по готовой верстке для одного из ночных клубов. Потом для этого же заказчика я сделал и второй проект — интернет-магазин садовой и сельскохозяйственной техники «Каскад». Накапливался опыт, появилось желание учиться у профессионалов в области веб-разработки, и я начал искать официальную работу.

Устроился в маленькую веб-студию, куда меня приняли как специалиста, отвечающего за техническую часть, но с течением времени я начал заниматься и подбором технически грамотных людей. В результате дорос до технического директора, став штатным программистом. Проработав год, я понял, что веб-разработка мне все-таки много ближе: хотелось развиваться самому, а не только руководить процессом. Тогда я перешел в компанию ВсеМайки на должность веб-разработчика, а опыт работы в студии позволил стать руководителем веб-разработки. Это был первый самый настоящий highload-проект. Здесь я столкнулся не только с разработкой на PHP, но и с тем, что называется продвинутый PHP: настройка серверов, каких-то специфических интерпретаторов и так далее. И, соответственно, все «прелести» highload: больше 100 000 посетителей в сутки, каждый просматривает немало страниц, что сказывается на производительности. Все это требовало тонкой настройки и такого подхода к PHP, чтобы он смог обслуживать не только базы данных, но и такую нагрузку. Другими словами, я начал работать с тем, чего нет в учебниках для начинающих: как построить архитектуру сайта, если вы имеете дело с крупным проектом; как построить отказоустойчивое приложение с учетом высоких нагрузок и какие для этого потребуются инструменты — об этом в одном месте не пишут. Информацию собирал сам, по крупицам, литературы, специально описывающей этот предмет, тогда не было.

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

Сейчас я работаю в компании «Flamp», где занимаюсь разработкой API-Flamp и самого сайта flamp.ru

PHP входит в джентльменский набор любого уважающего себя веб-мастера. Однако, как правило, дело не идет дальше «отправить запрос серверу — получить ответ от сервера». И многие свято уверены, что на этом функции РНР и заканчиваются. Что такое современный PHP?

Действительно, изначально PHP был задуман как простой для освоения язык создания веб-страничек. Собственно, это отражено и в его названии — Personal Home Page. К тому же, задумывалось, что всем, кто хоть немного знаком с Си, будет легко освоить и РНР. В итоге, в Интернете появилось большое число персональных страниц с его использованием. Затем постепенно стали появляться и «движки», которые позволяли создавать страницы, сайты, порталы, интернет-магазины тем, кто программировать вообще не умел. Так что изначально фундамент у языка был легкий.

Сейчас в ходу у разработчиков версия 5.4. В ней уже есть достаточно серьезные наработки по ООП, есть структуры данных, которые позаимствованы с более высокоуровневых языков, таких как С или Java, соответственно, и уровень разрабатываемых приложений более высокий. Современный PHP дает возможность использовать современные паттерны для организации сложных архитектур на более простом для работы и освоения языке.

Появились альтернативные варианты, «сборки» РНР. Самые яркие примеры — Фэйсбук и ВКонтакте, которые разработали собственный PHP-интерпретатор и таким образом написали свой PHP-движок. Кроме того, с ростом популярности языка стало появляться множество библиотек, которые позволяют работать, например, с так называемыми серверами очередей или серверами баз данных, которые раньше были доступны только на С, Java, Python. Это тоже дало немалый толчок для развития PHP и его потенциала. Сегодня уже актуальна 7-я версия.

Считается, что PHP — язык с достаточно низким порогом входа. Насколько требователен к знаниям, умениям и ответственности за свой код PHP «высокого» уровня? Прощает ли он мелкие огрехи или там «все серьезно»?

Можно сказать, что PHP — достаточно лояльный язык программирования в этом плане. Какой-то строгой типизации данных в нем нет до сих пор: мы можем не знать, какого типа значения в переменной, и работать с ними, как со строкой или целым числом. Это такая своеобразная фишка PHP. Порог входа довольно низкий: если человек работал с какими-то другими языками, то писать приложения можно чуть ли не на следующий день. Новичкам же, которые только столкнулись с программированием, потребуется некоторая база: что такое функции, операторы, переменные, как с этим работать, как обходить какие-то циклы и так далее. Освоив эту базу, уже можно переходить к PHP, С и другим языкам. (Кстати сказать, что на последнем выпущенном мной курсе мы сначала освоили/повторили эти азы, а уже потом перешли к разработке сайтов)

Сейчас мало что поменялось: PHP могут использовать как новички, не задействуя какие-то тонкие структуры (грубо говоря, воспользоваться возможностями, которые были в более старших версиях языка, используя современные методы), так и более продвинутые специалисты. Просто по мере изучения и углубления добавлять в свой код новые конструкции, понимая, как именно они могут упростить жизнь. Однако, даже не зная продвинутых конструкций, человек уже может писать какие-то веб-странички, потому что главное слово, которое было заложено в PHP, — «простота» — так и осталось актуальным. PHP подойдет и новичкам, и профессионалам, которые работают с ООП. Просто каждый будет использовать его на своем уровне, вот и все.

Что такое ПРОДВИНУТЫЙ PHP? Что он «умеет», для чего и где используется?

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

Выучить только PHP для разработки крупных приложений не достаточно, для них используется еще много других дополнительных сервисов — те же базы данных, веб-сервер, — которые еще надо тонко настраивать. В проекте с высокими нагрузками вполне может потребоваться выбрать, установить и настроить сервер отправки почты или иной сервис, который мы видим каждый раз, открывая какой-то большой сайт. Он и зарегистрирует нас, и позволит добавить товар в корзину, и так далее. В этом случае PHP будет участвовать в получении данных от пользователя, сохранит их в базу данных, отправит в очередь, где все это определенным образом сохранится. Так вот, подводя итог всему выше сказанному, продвинутый PHP — это, скорее, продвинутая веб-разработка.

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

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

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

Что должен знать и уметь продвинутый PHP-разработчик?

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

Он должен знать, как самостоятельно настроить веб-сервер Apache или Nginx, да и в целом настраивать сервер «с нуля», выбирать для него какие-то нужные приложения.

Он должен иметь навык коллективной разработки, а следовательно, иметь навыки работы с системами контроля версий, например, Git.

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

Как видите, весь этот спектр включает собственно PHP на 10-15%, и у специалиста в активе появляется просто огромный парк технологий, которые используются в создании сайта. В итоге, сложно говорить о продвинутом PHP. Это, скорее, действительно продвинутая веб-разработка.

А кому и зачем может потребоваться настолько углубленное знание PHP? Когда простого «вебмастеровского» уровня перестает хватать?

Настолько углубленное знание потребуется, в первую очередь, тем, кто претендует на должность team-lead’а, руководителя отдела веб-разработки, или сам хочет создать свой стартап, который предполагает наличие highload. Имея в запасе подобные знания и навыки, они смогут и самостоятельно разработать качественное приложение, которое потом могут поддерживать другие разработчики, и встать во главе этой группы. С другой стороны, они могут следить за работой какого-то большого сайта: мониторить его нагрузку и давать какие-то предложения по изменению его архитектуры, то есть работать архитектором системы.

Если говорить конкретно, то хороший веб-разработчик должен уметь настроить веб-сервер так, чтобы он мог разворачивать на нем какие-то сайты. Продвинутый веб-разработчик имеет в активе весь вышеописанный «парк технологий» и, в принципе, ему без разницы, на чем работать: на PHP, Python, Node.js или чем-то другом. Необходимые ему библиотеки для всех этих языков работают одинаково.

На курсе мы и будем рассматривать все эти технологии так, чтобы они заработали именно на PHP: установка библиотек, настройка сервисов и так далее. Однако, если заменить PHP на тот же Python, большой разницы не будет. Просто, если подходить к вопросу более прагматично, PHP целесообразнее изучать, чтобы быстрее найти работу: вакансий, где требуется именно PHP, много больше, чем у тех же Python, Node.js. Кроме того, сейчас очень много CMS на PHP, которые надо поддерживать и разрабатывать. За примерами далеко ходить не надо — всем известный Bitrix дает море вакансий.

На данный момент dы ведете Курс PHP продвинуты онлайн. О чем конкретно на нем пойдет речь? Что будут знать и уметь его слушатели к выпуску?

Число затрагиваемых тем весьма и весьма обширно, более подробно можно посмотреть на сайте Академии, там даже можно скачать полную программу, где все подробно расписано. Сначала мы просто повторим все азы, ту базу, с которой нужно начинать работать с PHP, заполним пробелы в плане синтаксиса. Одновременно с этим узнаем, с каким уровнем пришли слушатели, кто с чем работал. Если говорить о содержании, то вот некоторые темы, которые будут рассмотрены:

Системаконтроля версий Git.При этом упор будет делаться на работу с Git в команде и на его взаимодействии со сторонними сервисами.

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

Планировщик команд Cron. Здесь мы расскажем о том, как правильно ставить задачи по расписанию, и о том, что нужно информацию о запусках выводить в логи и потом их уже смотреть.

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

Сервер очередей Gearman, который позволяет отложенно выполнять обработки данных на PHP. Узнаем, как создавать обработчики и как контролировать их работоспособность. Создадим собственный Супервайзер — специальную утилиту, которая будет следить за тем, чтобы приложения не «падали» и автоматически перезапускать их, если нужно. Также расскажем, как их настраивать.

Полную программу, как я уже говорил, можно посмотреть на сайте Академии.

Какую базовую подготовку dы хотите видеть у вашего студента? Кому этот курс будет интересен в первую очередь?

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

Также пригодится курс и тем, кто знает, что такое PHP, работает на нем, но не представляет, что такое Unix-сервер, как он настраивается, какую роль выполняет при этом PHP. То есть тем, кто хочет развиваться, повышать свою квалификацию и перейти уже на уровень middle или даже senior.

Как я уже отметила, курс будет идти в формате онлайн. Повлияет ли это на его организацию? В частности, многих интересует вопрос практической части обучения: как она будет построена, не пострадает ли из-за отсутствия «прямого» доступа к преподавателю? И да, как будут проверяться домашние задания?

Скажем так, будет закладываться твердая база, но еще более широкий круг вопросов будет отдан на самостоятельное изучение. Потому что хороший разработчик отличается от плохого своей способностью самостоятельно добывать нужную информацию. Это качество нужно прокачивать на ранней стадии. Если человек будет тупо записывать за преподавателем, а потом делать только то, чему его научили, не пытаясь самостоятельно выудить информацию по какому-либо сервису, то он и на работе будет сидеть и ждать, пока ему что-то расскажут. Поэтому мы, как и на основном курсе PHP онлайн, будем давать материалы, из которых можно будет почерпнуть информацию для самостоятельного изучения, и требования к самообучению будут много строже: человек уже должен понимать, зачем ему продвинутый курс; ему должен быть знаком как сам PHP, так и процесс разработки на нем, должно быть интересно копаться в настройках. Поэтому мы ожидаем, что вопросы должны появляться уже у самого ученика, а не у нас к ученику — «понятно-непонятно». Так что подсказки, где и как получить информацию, будут обязательно, а дальше сами.

Практическая часть основана на системе Git. Она неспроста идет одной из первых тем. На практике ученик будет самостоятельно дома разрабатывать какой-то программный код на PHP, используя сторонние библиотеки, нужные для обучения, а потом все свои наработки публиковать на GitHub, например. Там есть возможность посмотреть код и оценить, справился ли ученик с заданием.

Другой важный момент работы: потребуется своя Unix-подобная виртуальная машина, например на VirtualBox. Может использоваться и MacOS, и Ubuntu и какие-то redhat системы. На курсе мы придерживаемся системы Debian, по которой, в основном, и дается информация. В любом случае, у ученика будет возможность настраивать систему на своем собственном Unix-сервере, как если бы он работал на каком-нибудь удаленном хосте: слушатель будет пытаться его настроить и сконфигурировать, а на GitHub выкладывать логи ошибок, удачный «конфиг» или иной код.

В результате на руках у слушателя появится готовый проект, написанный с использованием выбранного фреймворка, к примеру, Yii. И главное здесь не сложность разработки. Мы будем требовать грамотного подхода к реализации архитектуры и построения, смотреть, какие библиотеки были использованы. Также будем смотреть на сам код: как проставлены комментарии, как названы функции и как они реализованы. Пусть это будет проект на 1000-5000 строк, но главное — профессионально написанный, с подобранными технологиями, с самостоятельно выстроенным окружением на сервере, с грамотно выбранным и примененным паттерном.

А какие пути развития есть у разработчика, имеющего в активе эти знания и навыки?

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

Что бы dы могли порекомендовать в качестве дальнейшей работы для окончивших курс?

Закончив наш курс, можно претендовать на middle-разработчика. На senior я бы рекомендовал пытаться выйти тем, кто уже имеет хороший технический и коммерческий бэкграунд, опыт в разработке каких-то коммерческих приложений. Закончив курс, такой разработчик уже будет знать, какие ошибки были допущены в проекте и будет знать, как бы он грамотно его реализовывал, применяя новые навыки.

Тем, кто совсем новичок, кто не работал в области веб-разработки, я бы рекомендовал идти на middle-разработчика, попробовать себя, посмотреть, как вообще разрабатываются веб-приложения, как происходит общение с заказчиком, постановка задач. Он сможет осмотреться и выбрать для себя направление. А, может быть, ему будет более интересен фриланс: там такого жесткого подразделения на junior, middle, senior нет. При этом можно накопить необходимый бэкграунд для дальнейшего роста, что очень важно: даже если у человека нет опыта, но есть хорошая база по PHP и знание широкого стека технологий, он может претендовать на средний уровень и включаться в проект под патронажем более опытного коллеги.

От себя нам остается напомнить, что Курс PHP продвинутый онлайн стартует уже 13 ctynz,hz. Поэтому если вы хотите узнать, что такое мир действительно продвинутой веб-разработки, и уверенно чувствовать себя на этом поприще, то смело оставляйте свои заявки или звоните нашему менеджеру на номер +7 (952) 922 55 53, а также пишите на почту Академии academ@suhorukov.com.

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

До встречи в нашей уютной онлайн аудитории! 

Подписка

Выберите рассылки, на которые вы хотите или не хотите быть подписанным.