Содержание

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

Кто только не мечтает работать в IT — выучил любой язык программирования — и вперед. Но сегодня мы расскажем о крутой специализации, которая требует серьезной подготовки — php-разработчик.

Что такое PHP?

Аббревиатура происходит от английского — Hypertext Preprocessor. Это скриптовый язык, с помощью которого пишут сценарии web-приложений. Возник 1995 году, главной задачей была генерация страниц на html. Вобрал в себя многое из Perl. Язык интерпретируемый, это значит что для его работы не нужна компиляция, результат выполнения видно сразу после выполнения. Порог вхождения в язык низкий, но это не значит что не обладая знаниями в математики, алгоритмики можно быстро стать успешным программистом

Требования IT-компаний к PHP-разработчикам разных уровней: Junior, Middle, Senior

Junior

И все же можно начать с изучения CMS — это система управления контентом, как правило набор готовых модулей для выполнения определенных задач. Есть CMS предназначенные для управления товарами и заказами (prestashop, Magento), для блогов (WordPress), новостных сайтов (DLE) и т.д.

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

В Artjoker такая должность называется CMS developer.

Что вы должны знать и уметь:

  • опыт разработки под одну из популярных cms (wordpress, modx, opencart, magento или другие)
  • понимание принципов OOP/MVC — на начальном этапе необходимо лишь понимание этих принципов, но в дальнейшем рост без практического применения невозможен
  • знание PHP и MySQL
  • базовые знания Git

Middle

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

  • Опыт разработки на Laravel5 — 1 год
  • Опыт разработки на php — 3 года
  • Знание и применение MVC
  • Обязательный опыт работы с: php7, mysql, git
  • Понимание работы с: Сomposer, Middlewares, ServiceProviders, Eloquent, Relationships, Observer pattern
  • Опыт написания REST api, Unit-tests
  • Продвинутые знания HTML, CSS, JavaScript
  • Базовые знания VueJS или React, Angular
  • Английский pre-intermediate
  • Хороший уровень self-management

Senior

Как вы заметили уровень программиста отличается не только профильными скиллами, но и общим сеньорити в принятии решений (умением быстро среагировать на проблему,

artjoker.ua

Php developer задачи и обязаности php программиста

PHP был создан как Personal Home Page Tools — инструмент для создания персональных веб-страниц. Это скриптовый язык общего назначения, который широко используется для разработки веб-приложений. В течение многих лет PHP является одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов. На нем написаны такие сайты, как Facebook, ВКонтакте, Yahoo. Главные достоинства языка РНР – это практичность, простота и безопасность.

Основные задачи, возлагаемые на PHP программиста — создание сайтов, web-приложений, и интеграция их с внутренними системами бизнеса. Конечными продуктами разработки являются интернет-магазины, порталы, корпоративные сайты, системы онлайн-обучения, бронирования, форумы, социальные сети и многое другое.

Если вы решили стать PHP разработчиком, начните свое обучение с:

  • изучения основ синтаксиса SQL, чтобы уметь проектировать базу данных для небольшого проекта;
  • видеокурса по HTML и CSS, который необходим для самостоятельной верстки страницы;
  • также рекомендуем выучить синтаксис JavaScript – таким образом вы поймете, как работают события, что такое замыкание и каким образом устроен AJAX
  • после этого переходите к PHP – на ITVDN это курсы PHP Starter и PHP Essential
  • затем изучите PHP фреймворк YII2

Все эти знания возможно получить самостоятельно, с помощью видеокурсов. На ITVDN вы сможете приступить к обучению в удобное для вас время.

Требования к PHP разработчику:

  • Знание языка программирования PHP
  • Работа с базами данных SQL/MySQL
  • Знание основ верстки HTML, CSS
  • Хорошее понимание JavaScript (Ajax, jQuery)
  • Знание основных принципов ООП
  • Английский язык на уровне чтения технической литературы
  • Знание систем контроля версий (SVN/Git)
  • Опыт работы с фреймворками (YII2)
  • Умение анализировать, учить, осваивать и применять новые технологии

PHP разработчик может занимать такие должности:

Junior/Middle/Senior PHP Developer
PHP Developer
Backend Developer
WEB Developer (PHP)
PHP Team Lead
Full Stack/PHP Developer

itvdn.com

Как можно стать PHP программистом — какие навыки нужны в данной профессии?

От автора: всем привет! Сегодня я хочу рассказать об одной из немногих профессий, где наличие диплома о вышке не является решающим фактором при поступлении на работу — о профессии PHP программист. Как можно стать PHP программистом, не заканчивая университет? Проще простого! В данной статье будет перечислен весь перечень навыков, которые вам необходимо будет обрести, чтобы стать профессионалом своего дела.

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

Кто такой PHP программист, и чем он занимается?

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

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

Для тех, кого интересует вопрос, как стать PHP программистом, сразу хочу отметить — не путайте верстальщика HTML и программиста PHP, это абсолютно разные профессии! Первый выполняет функции верстальщика — создает внешний облик будущего сайта, а второй — работает над «телом» и «душой», оживляя сайт и заставляя его взаимодействовать с посетителями.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

Навыки, которыми вам необходимо овладеть

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

Ядро. Я надеюсь, не нужно объяснять, что если хочешь стать PHP программистом, то PHP — это то, что нужно знать, как свои 5 пальцев. Что касается версии, с которой следует начать, то рекомендую не ниже PHP 5.0 (не думаю, что вам попадется вакансия, где придется работать на версии ниже этой).

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

Обязательно изучите реализацию ООП — основная масса CMS и фреймворков написаны с использованием данной парадигмы. Не лишним будет почитать про шаблоны проектирования, особенно про MVC.

Хранилище данных. Сомневаюсь, что, зная один PHP, у вас выйдет найти хорошую работу. Практически все вакансии требуют от программистов умения работать с хранилищами данных. Ничего против других СУБД не имею, но лично от себя рекомендую остановить свой выбор на MySQL, так как именно он фигурирует в массе вакансий.

HTML + CSS. Если вы решили стать PHP программистом с нуля, но, как и с чего начать, не решили, то советую вам получить базовые знания по HTML и CSS, ведь язык PHP связан с генерацией страничек HTML и CSS стилями.

JavaScript. Может показаться, что этот клиентский язык программирования уж никак не может понадобиться PHP программисту, но рынок труда решил иначе. После ознакомления с синтаксисом языка JavaScript, рекомендую сразу же перейти к изучению фреймворков, например, JQuery или ExtJS.

ОС. Так как большинство хостинговых серверов, написанных на PHP, работают под эгидой Linux или Unix, то, соответственно, лучше ознакомиться с данными ОС. Мой вам совет — установите на своем рабочем компьютере Linux (лично я пользуюсь Linux Ubuntu). На сегодня в этом дистрибутиве установка и настройка LAMР сделана так, что не вызовет у вас никаких трудностей. Далее рекомендую поработать с командной строкой.

Веб-сервер. Легче всего начать с Apache, ведь на данный момент — это самый распространенный веб-сервер. Но особо углубленно изучать его тонкую настройку нет смысла, так как лучшим по производительности будет дуэт Ngix + PHP-fpm.

Если вы будете работать в режиме фрилансера, то рекомендую поучиться работать в Photoshop и поглубже изучить HTML + CSS, ведь вам придется самим делать кроссбраузерную верстку. Так как большая часть заказов, скорее всего, будет подразумевать исправление и добавление функционала распространенных CMS, рекомендую уделить внимание изучению WordPress, Drupal, Joomla, DLE или Bitrix.

Где получить образование PHP программиста?

Конечно, практически во всех технических вузах есть специальности, связанные с IT, но в 99%, чтобы стать профессионалом своего дела, вам не хватит этих знаний и придется постоянно подучиваться.

Беда в том, что в мире программирования все настолько быстро меняется, что институты просто не успевают совершенствовать программу обучения и преподавать актуальную информацию. Поэтому, даже если у вас есть диплом о высшем образовании по специальности программист, не стоит на этом останавливаться.

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

Где искать работу?

Если вы начали изучение PHP программирование с нуля, то не надейтесь, что вас возьмут в крупную компанию и сразу же дадут сложный высокооплачиваемый проект. Для начала найдите IT компанию, которая готова выращивать специалистов. Как правило, сначала вам придется браться за любую работу, которую вам дадут, и со временем вы сможете рассчитывать на сложные и интересные проекты.

Прекрасным местом трудоустройства может стать IT-контора. Здесь вам гарантирован карьерный рост и неплохая зарплата. Став уверенным в себе профессионалом, вы сможете даже рискнуть и попробовать устроиться в Яндекс, Лабораторию Касперского или другую гигантскую компанию. Если же вы не хотите коротать свои будни в офисах, можете работать фрилансером, выполняя временные заказы.

Напоследок хочу добавить, что обучение PHP программированию — процесс достаточно длительный и трудоемкий. Если у вас не получится сразу понять, что к чему, не стоит бросать дело на полпути, ведь только преодолевая трудности вы сможете насладиться результатом.

Друзья, если вам понравилась моя статья и вы хотите узнать еще больше о самых популярных интернет-профессиях, то подписывайтесь на этот блог и следите за его обновлениями. До новых встреч!

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

Программирование на языке PHP

Изучите PHP с нуля!

Смотреть

webformyself.com

Что должен знать «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 вообще никак не связанную. Через год планирую, поднабравшись знаний, снова начать поиски.

habr.com

Становимся профессиональными 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 разработчиком. Помните о дисциплине, никогда не сдавайтесь (даже если окружающие сдались) и практикуйтесь.

habr.com

Знания Junior php разработчика? — Toster.ru

что должен знать идеальный джуниор (мое личное мнение):

— Сетевой стэк. Нужно иметь хотя бы базовое представление о том как с сервером общаются. Ну то есть не нужно лезть в дебри, но понимать что такое HTTP или чем TCP от UDP отличается — нужно. В целом это пара часов чтения википедии.
— GIT или любая другая распределенная VCS. Базовые навыки, что бы хотя бы понимал что есть git revert или git rebase, что такое фичабрэнчи и примерное представление как это работает и зачем надо.
— Базовые основы unix. Ну то есть что бы не пугаться таких вещей как ssh хотя бы.
— PHP. Без этого никуда. Он должен понимать что такое слабая динамическая типизация (не заучивать табличку кастов типов, а понимать плюсы и минусы, такая же история с приоритетами операторов — не заучивать а знать как избегать проблем с чтением кода)
— Понимать что код чаще читают чем пишут, а потому не экономить 5 минут на написании кода, а писать так, чтобы сэкономить 30 минут человеку, разбирающемуся в куске кода.
— Знать базовые вещи в плане безопасности. XSS и как защищаться, SQL инъекции и как защищаться, CSRF, MITM. Понимать что такое NDA, что данные пользователей — секретная информация. Как хэшировать пароли (не md5 а password_hash) и почему это важно.
— Знать SQL. Глубоких знаний не требуется, нужно лишь понимание того, что такое нормальная форма, желательно разобраться с вопросом денормализации данных. Идеально иметь хотя бы базовые представления о том как работать с NoSQL решениями.
— Процедурное программирование: почему глобальные переменные порождают сложность, что такое состояние, как можно использовать классы для изоляции состояния и т.д. Инкапсуляция. Инварианты, пост/пред условия, сохранение целостности…
— Разделение ответственности. Это один из важнейших принципов, и упрощать все это до «mvc фреймворк» слегка неправильно. Вы должны понимать что от чего отделяете и главное зачем.
— Автоматические тесты. Джуниор должен знать что это такое и иметь хотя бы минимальный опыт их написания. Должен понимать разницу между юнит и интеграционными тестами. Быть знакомым с пирамидой тестирования.
— Уметь решать стандартные задачи не задавая слишком много вопросов. Например регистрацию пользователя по email-у вы должны написать, или авторизацию через соц сети, или комментарии, или новостную ленту.
— Уметь дебажить. xdebug, blackfire и тд.

В целом где-то за годик весь этот список можно влегкую покрыть с нуля.

p.s. Я в списке специально не указывал ООП, поскольку всеравно первые пару лет у разработчиков выходит процедурщина на классах. Это не плохо, но того что в моем списке более чем должно хватать для решения стандартных задач. Но термины вроде «инкапсуляция/полиморфизм/наследование» требуются в обязательном порядке подавляющем количеством интервьюверов, а стало быть знать это надо. Единственное что — рекомендую в свободное время глубже погрузиться в этот вопрос а не тупо заучивать формулировки.

Так же вещи вроде docker джуниорам знать не обязательно просто потому, что их врядли допустят сходу к управлению инфраструктурой. А так пару неделек на изучение и вперед.

toster.ru

Вершина, но не предел, или как стать Senior Developer

К концу статьи у вас будет список из лучших ресурсов и поэтапно расписанный путь к такой должности, как Senior Developer.

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

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

  1. Мы не хотим прожить жизнь с клеймом «некомпетентный сотрудник».
  2. Мы хотим, чтобы нас уважали коллеги.
  3. Мы хотим чувствовать себя умными и совершенными.
  4. Мы хотим быть ценными в своей отрасли.

Чтобы достичь вышеизложенных целей, нельзя просто почивать на лаврах, ожидая, что все само придет. Особенно в мире программирования, который постоянно совершенствуется, меняется, а объемы информации раздуваются с колоссальной скоростью. Поскольку все больше и больше разработчиков выходят из колледжей и буткампов, нам нужно регулярно оттачивать свои навыки.

Нет, будучи полиглотом, который знает 10 разных языков программирования и создал свою собственную версию Jarvis, вы не станете старшим разработчиком. Дело в том, что Senior Developer – это тот, кто обладает приличным багажом знаний, оказывает положительное влияние на младших сотрудников и в целом улучшает показатели эффективности своей компании. Вы можете знать все о функциональном программировании, но если при этом нет навыков продуктивного общения с командой, или ваши знания не представляют фактической ценности для конечного потребителя, вы не старший разработчик.

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

Потратьте некоторое время на изучение основных тем и следуйте приведенным ниже ресурсам. Если вы в состоянии активно совершенствовать представленные навыки, то быстро займете лидирующие позиции в своей отрасли. Разумеется, всегда найдутся  люди с большим опытом, чем ваш, но это не мешает продолжать работать над собой, накапливать знания и различные навыки, чтобы избавиться от конкуренции за рабочее место. С таким подходом вы обязательно получите должность Senior Developer.

Главное правило – не стоять на месте. Не нужно зацикливаться на чем-то одном: расширяйте спектр возможностей, изучайте языки, СУБД, IDE, фреймворки, знакомьтесь с принципиально новыми подходами в области программирования, ведь кто знает, чем будут заниматься те же специалисты по машинному обучению через 5 лет? Все меняется, и нужно осваивать умения, позволяющие быстро адаптироваться в новых условиях.

1. Технические навыки

Старшие разработчики используют очень много «Почему» в понимании технологий:

  • Почему есть эта проблема?
  • Почему существует структура?
  • Почему следует использовать именно такое решение?

Как программист, вы должны обладать хорошим представлением обо всех инструментах и идеях, которые могут принести пользу жизненному циклу разработки, а также выбрать инструменты, имеющие наибольший вес в рамках конкретного проекта. Senior Developer всегда задается вопросом: «Что и как можно изменить, чтобы сделать продукт лучше?»

Они также понимают, как соединяются и взаимодействуют все элементы. Чтобы начать думать, как старший разработчик, необходимо освоить эффективную обработку информации, известную как mind mapping. Данный инструмент позволит быстро устанавливать связи между идеями и технологиями, а значит, перенесет обучение на новый уровень.

Хороший пример mind mapping для JavaScript-программистов:

Для тех, кто действительно пишет на языке JavaScript, будет полезен этот курс. Он представляет уже разложенную по полочкам информацию, что и является оптимальным способом освоить большой объем нового материала за короткий промежуток времени. Построив правильную интеллект-карту, вы сможете сосредоточить ресурсы компании на том, что имеет наибольшее значение. Охватывайте все аспекты, а не некоторые из них.

 

Если ваша специальность никак не связана с компьютерами, начните с изучения структур данных, алгоритмов и других основ. Зачем? Хоть технологии и меняются, базис остается прежним. Новичкам подойдет книга «Алгоритмы. Вводный курс». Хорошим вариантом для тех, кто знает основы, станет книга «Алгоритмические трюки для программистов», а вот профессионалы обязательно оценят «Алгоритмы. Построение и анализ».

Не обходите стороной и подкасты вроде Software Engineering Daily: они позволят вам оставаться в курсе текущих проблем и будущих перспектив всей отрасли.

2. Командные навыки

Данный аспект часто упускается из виду. Как вы работаете со своей командой? Относитесь ли вы к категории дерзких и упрямых, или же проявляете внимательность, охотно сотрудничаете и всячески поощряете членов команды? Senior Developer никому ничего не доказывает. Ему и не нужно: он сразу пишет чистый упрощенный код, а не такой, который  будет выглядеть демонстративным, но совершенно нечитабельным в глазах других программистов. Старший разработчик готов помогать другим и отвечать на все вопросы.

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

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

3. Навыки клиента/пользователя

Могут ли клиенты или пользователи быть вами услышаны? Когда они что-то предлагают, вы понимаете, с какими проблемами они сталкиваются? Старший разработчик – это также внимательный слушатель, который может предложить дельные советы по решению проблем. Senior Developer отлично справляется с формированием отношений. Он понимает, что обе стороны, – и  клиент, и разработчик, – выигрывают от продуктивного взаимодействия. Прочитайте «Психологию влияния» для улучшения этого навыка.

Наконец, вы должны уметь объяснить сложные концепции программирования даже далекому от сферы IT человеку. Развивайте этот навык, наблюдая, как известные инструкторы разбирают сложные темы.

4. Навыки роста

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

Senior Developer не скажет «О, я ненавижу эту библиотеку!». Большинство людей говорят это лишь потому, что не понимают чего-то до конца. Например, не говорите: «Я ненавижу jQuery. Только плохие разработчики все еще используют jQuery». Старший разработчик скажет, что «jQuery сыграл важную роль в развитии Интернета и популярности JavaScript», и он будет прав, ведь действительно разобрался в данном вопросе.

5. Навыки собеседований

Старшие программисты на то и старшие, что могут общаться и продавать свои услуги другим. Вы можете видеть потребности своего работодателя и внушить уверенность в том, что являетесь тем, кто ему нужен. Senior Developer должен уметь принять на себя роль ведущего в проекте, а потому подача на собеседовании решает все. У американского эксперта Рамита Сетхи есть отличная статья, которая даст хороший старт. Помогут и другие полезные материалы по трудоустройству.

6. Навыки сообщества

Старшие разработчики вносят огромный вклад в сообщество программистов. Это могут быть и технические переговоры, и выступления, и написание статей. Senior Developer активно обменивается информацией с представителями отрасли. Такие люди не закрываются в ящике только своего рабочего пространства: они выходят и общаются с людьми в других кругах, что позволяет им расширять горизонты. Это похоже на путешествие: чем больше культур вы встречаете, тем больше сходств и различий между людьми вы видите и просто начинаете ценить эту непохожесть.

Развивайте эти навыки, но помните: вам должно нравиться то, что вы делаете. Если вы не находите интересным каждый день изучать информатику и разработку программного обеспечения, вы никогда не станете старшим разработчиком, потому что у вас не будет искреннего стремления совершенствоваться. Если вы когда-либо читали книгу «Хватит мечтать, займись делом!», то понимаете, что страсть к работе должна быть чрезмерной.

Но порой настоящая страсть приходит лишь после того, как вы овладели навыком, а для этого много работали, стремясь стать опытным специалистом в своей отрасли. Поэтому обязательно начните, и, возможно, выбранный вами путь приведет к такой заветной и почитаемой должности, как Senior Developer. Дерзайте!

proglib.io