Пользователь
0,0
рейтинг
6 мая 2012 в 13:01

Разработка → Что должен знать начинающий PHP разработчик

PHP*

Такой вопрос мне достаточно часто задают, и я таки решился на него ответить.

Хотел было написать очередную статью о собеседованиях, но мне кажется формат себя изжил, так что читаем и мотаем на ус.

Фундамент


Соображать и использовать Google. Первое оценить сложно, для этого придумано много «дурацких» вопросов для собеседований. Второй пункт либо прививается в первые дни испытательного срока, либо разработчик владеет им изначально, иной вариант никто не рассматривает…

Общепознавательное



У меня есть вопрос для собеседования на общее развитие, что происходит после ввода domain.com/index.php и нажатия enter, вы должны рассказать следующее:
  • откуда и как браузер узнаёт IP адрес сервера
  • почему наш запрос будет обрабатывать apache
  • почему apache запустит PHP для обработки index.php
  • каким образом PHP обрабатывает скрипт index.php

Я таки опять возвращаюсь к собеседованиям, и манит меня прям

Из чего состоит HTTP запрос/ответ (да откройте же firebug или что у вас там установлено и посмотрите)
Установка связки Apache+PHP+MySQL — потренируйтесь, это ой как надо.
Таки немного о linux — о различиях файловых систем в сравнении с windows, о раздаче прав (chmod) и как выйти из vi без сохранения.

Пару-тройку дней потребуется на усвоение базовых знаний.

PHP


Основы основ — получение и обработка входящих параметров.

Отправляем форму:
<form action="index.php?a=12">
    <input type="hidden" name="b" value="6"/>
    <input type="submit" value="Calc!">
</form>


А вот и листинг index.php, и в результате работы скрипта мы увидим…:
function some_logic($a, $b = 24) {
    return ($a+$b)/$_REQUEST['b'];
}

$var1 = $_GET['a'];
echo some_logic($var1);


Работа с циклами, массивами и строками. И да, простенькое задание с собеседования (пора угомониться):
// переставьте буквы в словах в обратном порядке
$str = "Hello world!";


Работа с базой данных и с файлами. Для усвоения материала — вот вам задание: написать анонимную доску объявлений (с блек... аплоадом картинок)

Должны знать как работает механизм сессий — т.е. что происходит от момента вызова session_start, и каким боком это всё связано с cookies (помните я говорил о HTTP?).
Знать для чего служит include, require и какая между ними разница.
Разницу между echo и print не только знать, но и понимать.
Таки научиться работать с объектами, понимать разницу между абстрактным классом и интерфейсом.
Знать и использовать namespace.

Отдельно стоит упомянуть о гигиене кода — необходимо соблюдать стандарты кодирования, из множества существующих рекомендую стандарты кодирования Zend Framework'а

Чем больше опыта, тем лучше, но основы вы подтяните за неделю, ОПП потребует еще недельку.

SQL



Основы синтаксиса SQL. Немного вникнуть в MySQL и понимать различия между MyISAM и InnoDB.

Знать как работают LEFT/RIGHT/INNER JOIN'ы — наглядно в статье Visual Representation of SQL Joins (ссылка на картинку для ленивых — Visual_SQL_JOINS_orig.jpg O_o)

Уметь спроектировать базу данных для небольшого проекта. Вот вам требования к БД библиотеки:
В базе данных должна храниться следующуя информация:
  • Что за книги у нас есть в наличии
  • Авторы книг
  • Посетители библиотеки
  • Библиотекари


Позволяет выполнить следующие запросы:
  • Который вытащит всех авторов, которых читает посетитель «Иванов»
  • Который позволит узнать кто на данный момент читает книги более 3-х суток


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

Сосредоточенного изучения в течении недели вам хватит.

HTML и CSS


Сверстайте пару страниц, от и до (HTML должен быть валидным). Не слушайте, что это работа дизайнера/верстальщика/кого-то еще. Поверьте моему опыту — вам отдадут свёрстанную страницу, никто за вас не будет интегрировать HTML шаблон в вашу систему, так что знание HTML и CSS в обязательном порядке.
Забудьте о том, что Smarty создан для верстальщиков, и они вам будут готовые шаблоны отдавать — это сказки. О Smarty тоже забудьте, хотя нет — иметь представление что это такое конечно надо, а вот использовать — нет.

Должны понимать CSS следующего содержания:

#my p.sel:first-line, .main li li a:hover + span {
    color:#f00; /* Что это за цвет? Включи логику! */
}


Узнать что есть блочная модель, да как работает float. Что есть margin и padding.

Дней пять вам хватит для освоения базовых навыков верстальщика.

JavaScript


Знать: синтаксис, о том как работают события, понимать что такое замыкание, и как работает AJAX. Рекомендую прочитать учебник Ильи Кантора. Это немного, изучение данных вопросов у вас не займет больше недели.
Далее прочитайте первые шесть частей из моей серии «jQuery для начинающих» — это еще пару-тройку дней на усвоение материала.

Еще чуть-чуть напрягов


Понимание шаблона MVC. Знакомство с каким-нить фреймворком (Zend Framework, Symfony, Yii, и т.д.). Можно пройти Quick Start от Zend Framework'а.
Научиться работать с БД посредством PDO. Знать что есть SQL-инъекция.
Познакомиться с какой-нить современной системой контроля версий (да хоть с SVN)

И на что я могу расчитывать?


Месяц изучения, и вы уже сможете претендовать на должность Junior PHP разработчик. Ответ на меркантильный вопрос смотрите на DOU

P.S. Есть чем дополнить — пишите комментарии, увидели ошибку — лучше в личку
Антон Шевчук @AntonShevchuk
карма
490,9
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (152)

  • +44
    Зачем этот пост?
    • +7
      Для помощи начинающим PHP разработчикам в составлении плана своего обучения и расстановки приоритетов

      P.S. Я так боролся с желанием написать комментарий в стиле «зачем этот комментарий»
      • +1
        Извините, конечно, но пост действительно ни о чем. Не изложено никакого действительного материала, а даны лишь направления развития — причем эти пути можно встретить в любом учебнике по PHP. Некоторые моменты в статье довольно спорны, например, цепочка событий в «Общепознавательном» — получается, вы отфутболите разработчика, предпочитающего nginx+php-fpm. Половина статьи вообще вызывает вопросы — зачем писать про HTML/CSS и Javascript в посте про PHP? Писать про MVC в статье для начинающих и не объяснить, что это и зачем нужно?
        Ей-богу, лучше бы еще раз поведали про тонкости и хаки, чем выдавать это публике.
        • +1
          Да, это именно направления для изучения, не более. И да, Junior PHP разработчик должен знать HTML/CSS/JS на указанном уровне.
          А насчет nginx — редкий Junior с ним работает.
          • +6
            Но у вас и направления-то неверны! Только раздел «Фундамент» — тут я полностью «за». И возможно, где-то в нижеследующем я не прав, потому как не знаю требований к Junior-разработчикам, но вы же сами просили критику :-) Итак, разберем по полочкам:
            1. «Общепознавательное». Описанная цепочка событий верна только для связки Apache+mod_php. В случае с фронтендом на nginx, lighttp или прочих серверах — неверно. В случае использования другой связки для обработки скриптов (nginx+php-fpm) — неверно
              " немного о linux — о различиях" — о каких различиях, в дистрибутивах или что? «как выйти из vi без сохранения» — не все обязаны пользоваться vi. Есть nano, emacs и куча прочих консольных редакторов. Есть графические оболочки — gedit, Kate, KDevelop, Eclipse и другие. Под Windows вообще мало кто пользуется vi.
            2. «PHP». «Работа с циклами, массивами и строками. И да, простенькое задание с собеседования» — вам не кажется, что это задание после первого предложения введет людей в заблуждение: казалось бы, над делать это в цикле, но правильный ответ — функция strrev?
              Вообще, раздел довольно спорный. Изложено то, о чем начинающий разработчик узнает почти сразу же и что есть в любой книжке, но не изложены по-настоящему дельные вещи. Хотя бы простой совет «Научитесь экранироваться при помощи htmlspecialchars/htmlentities».
            3. «SQL». Без комментариев, все опять-таки очень спорно. «Переделать БД» — зачем давать неправильные посылки к проектированию базы сначала, и потом говорить «переделать»?
            4. «HTML и CSS». «HTML должен быть валидным» — бред, валидность HMTL на самом деле не так и нужна, действительно важна лишь кроссбраузерность.
              Smarty вы зря ругаете, вполне нормальный шаблонизатор. А насчет применимости и скорости работы шаблонизаторов уже сломано немало копий — в некоторых случаях использовать вредно, в некоторых полезно.
            5. «JavaScript» — без комментариев.
            6. «Еще чуть-чуть напрягов». Самая непонятная часть для того, кто первый раз видит PHP (на Хабре вообще есть такие?)

            Про сроки в каждом пункте я мягко промолчу. Про то, что отдельно изучать каждый пункт просто нельзя — тоже. Да и про то, что ничего не описано и статья есть по сути нагромождение терминов — опять-таки ничего не скажу.
            • +1
              Про то, что отдельно изучать каждый пункт просто нельзя — тоже.

              Не, ну про SQL вполне можно в отрыве от всего читать. Вообще читать про РСУБД/ООСУБД полезно. Даже просто для освежевания в памяти.
              • +3
                > Значение слова «освежевать»

                > Ударение: освежева́ть
                > сов. перех.
                > Очистить от шкуры и выпотрошить убитое животное.

                Простите, что вы там с памятью предлагаете делать? :)
                • +3
                  Ну вы же меня поняли! Просто работаю в воскресенье, вот, подсознание и выплескивает наружу потаенные желания :)
        • 0
          Если у разработчика уже есть предпочтения, то ему эта статья ни к чему :)
      • +1
        SQL за неделю это сильно.
        • +1
          На самом деле за неделю можно прочесть 'Изучаем SQL' из цикла O'Reilly.
          Но я не уверен, что много Junior`ов сможет с первого раза впитать и освоить эту информацию. Да даже если и сможет до нормального понимания РСУБД будет достаточно далеко — куча ньюансов ведь.
      • 0
        Лучше написать о принципах программирования, а не о конкретном языке.
        А тут сборная солянка, скрестили все что можно.
        Начинающий подставьте_свой_язык разработчик должен понимать конструкции языка и для чего они нужны.
        А все остальное это уже в зависимости от того, что он этим языком хочет добиться.
  • –3
    А вот и план обучения! Как раз собрался взять дополнительную квалификацию «PHP-программист».
  • +13
    Месяц изучения, и вы уже сможете претендовать на должность Junior PHP разработчик.

    Человеку несведущему в программировании вы делаете медвежью услугу
    • –7
      Обнадеживаю месяцем обучения? Согласен, учиться придется постоянно, такое оно программирование
      • +7
        Конечно мало. Это очень мало даже для junior'а
        • +2
          Если обучение совмещать с желанием учиться, то иногда и месяца много — у меня в отделе работал человек, которого брали за «соображалку», основы знал с трудом, через три недели он уже работал в коммерческом проекте, и заказчик от его работы писал кипятком. Это конечно, скорее исключение, но всё же — без желания стать профессионалом, вы им никогда не станете, ни через месяц, ни через год.
          • +2
            Проблема в том, что заказчик видит формочки и html странички. Я сейчас переписываю проект, от которого тоже писали кипятком. Но внутри там такое, чего бы врагу не пожелал. Как-будто человек учился программированию по ресурсу govnocode ру.
            • –2
              У нас налажен процесс code-review, так что с кодом все ок :)
            • +2
              проект на питоне, что-ли?:)
              • +3
                Нет, не на питоне. Py здесь не Python, а ru. На питоне такого аццкого треша пока не видел.
                Плохо смотрел видимо :)
      • –1
        Джуниор — это тот, кто сможет наговнокодить сложный сайт(ну, допустим, какую-нибудь кривую непроизводительную вариацию хабра), а не просто знает азы.
        Ваши представления о джуниорах слишком приниженны.
        • +1
          Разве перечисленных знаний для этого не хватит?
          • 0
            Хватит, но не первым же проектом без опыта программирования, обратите внимание на пост, к которому мой предыдущий ответ, там говорится про месяц.
            • 0
              Ну, как я понял, месяц предлагается не только книжки читать, а какие-то проектики (проектик) делать, закреплять теоретические знания на практике.
              • 0
                Я про это и говорю. Ладно бы еще написал «полгода» или «год».
                • 0
                  Я имел в виду в течении этого месяца делать. Скажем доску объявлений писать по мере изучения.

                  Полгода-год, это, по-моему, очень завышенный срок (при 40 часов в неделю), за это время можно не только говнокодить научиться :)
        • +4
          Я вам не зная и половины вышеописанного смогу наговнокодить на любом языке с книжкой под рукой.
          • 0
            Согласен. Поэтому вас примут на джуниора с большей вероятностью, чем человека, заучившего книгу, но без практики.
    • 0
      Ну да, можно поступить в университет на программиста, отучиться пять лет и найти высокооплачиваемую работу программистом.
      А можно не умея программировать, но прочитав пару статей про пехапе и апач начать говнокодить старшим помощником младшего программиста на четверть ставки, и за пять лет стать сениором-разработчиком.
      Каждому своё :)
      • +4
        Печаль нашего образования, но после ВУЗа, идёт второй абзац из вашего комментария
        • +2
          И слава богу, что в наших ВУЗах не учат «программировать на PHP» :D
          Или уже учат?
          • 0
            В итмо учат.
            • +1
              Пропал калабуховский дом
          • 0
            Учат. Даже php-фреймворк в рамках учебного курса изучали (CodeIgniter). Про sql-инъекции не рассказали, к сожалению.
            А в школе учили верстать простенькие странички на голом html.

            Я не скажу, что в рамках занятий показывали какие-то впечатляющие и простые фокусы (вроде взлома капчи или бота-пересмешника на цепях Маркова) — просто методично дали основы (пусть и устаревшие на год-два). Кому понравилось, тот продолжил и изучил сам.
        • 0
          Ну, некоторые люди в вузах учатся. А те, которые не учатся, и по окончании вуза склонны пинать балду.
          • 0
            ИМХО, в ВУЗах количество людей которые учатся — всегда определенный процент, только вот студентов сейчас приходит в разы меньше (я про Харьков), за что хочется передать пламенный привет 90-м
      • 0
        Вы серьезно думаете, что в вузе, даже в оч хорошем и на айти факультете, учат программировать? Смешно!?
        • 0
          Ага. Как раз думаю поступать, а то везде вышку требуют.
        • +2
          Нет, не учат конечно. Студентов запирают после лекций в аудиториях с ручными медведями, пока преподаватели уезжают пить vodka и обсуждать очередной rasspele-and-otkat. Вместо лекций о Java студенты слушают трёхлетний курс патриотического воспитания и проходят обучение на военной кафедре, где их обучают разбирать автомат Калашникова и играть на балалайке.
        • +1
          Учат, проблема в том, что люди которые обладают практическими знаниями в программировании просто валят из ВУЗов. Второй момент — это программы — они должны обновляться чуть ли не каждый год, но кто это будет делать?
        • 0
          К счастью, кое-где ещё учат.
          • 0
            И где же? Учусь в Политехе на фтк — уровень близкий к 0. В Итмо тоже самое. Где?
  • +13
    >> О Smarty тоже забудьте, хотя нет — иметь представление что это такое конечно надо, а вот использовать — нет.

    ЛОЛШТО?

    По статье — не понятно к чему все это, вы настолько в общих чертах все описали, что аудитория на которую была нацелена данная статья явно не поймет, что вы ей хотели преподнести.
    • –4
      O Smarty и ему подобным — думаю тут можно долго холиварить, не о том статья.

      По вашему замечанию — да согласен, всё в общих чертах, но именно так и задумывалось. Подобное изложение опробовано в жизни, и имеет свои плоды ;)
      • +1
        Насколько «плоды» успешно осознали поверхностность своих знаний и начали изучать умные и толстые книжки по… SQL допустим?

        Ведь того что описано в статье хватит лишь на курс молодого бойца на стероидах, но не более. С такого базиса сложно будет двигаться дальше — не хватит фундамента.
        • –3
          По Dojo Toolkit, к примеру…

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

          Я согласен, что данная «программа обучения» слишком далека от идеала, но она наиболее приближена к боевым условиям, в отличии от университетских. И куда лучше когда она есть, чем когда ее нет.
    • 0
      те кому нужно, всё прекрасно поняли…

      начал с написания БД для публичного дома
  • +7
    Мне кажется вы вводите в заблуждение молодых и неопытных…
    • –5
      Ну хоть чуточку аргументов…
      • +4
        А, пожалуйста!

        Про PHP ничего не скажу, тут все понятно — Google в руки и вперед. Все правильно. В итоге куча говнокода при взгляде на который будет хотеться лишь одного — плакать.
        HTML: очень слабая подготовка, тут рядом есть посты про замечательный интерфейс OS\2 и то что веб это нагромождение хаков. Неподготовленная психика «ребенка» который знает что такое идеальная блочная модель (вспоминаем про хаки и забываем про идеалы), будет очень долго приходить в себя после неудачных попыток интеграции более менее сложной верстки.
        SQL: а здесь совсем опасно, человек который изучит тот набор что вы описали будет считать что ему все по плечу, а чем такое заканчивается мы все прекрасно понимаем. Нужен строгий контроль, либо больше теории и практики.

        Не хватит месяца на то чтобы стать Junior.
        Ну это конечно мое ИМХО. Развейте мои сомнения?
        • –2
          Месяца хватит, чтобы стать Junior разработчиком (мой опыт мне говорит о данном факте), хотя возможно мы вкладываем разные вещи в данное понятие.

          Junior разработчик — разработчик, которому время от времени нужна помощь, и постоянный контроль (это к пункту о PHP и SQL).

          Насчет верстки — я делаю предположение, что верстка у нас адекватная, так что познаний хаков не потребуется от разработчика, лишь простая интеграция шаблонов
          • –1
            Скажите, а какой у вас уровень Junior, Intermid или Senior?
          • +5
            Я солидарен с вашим определением Junior. Разница в ожидании двух вещей: требуемой степени контроля и желаемого качества работы.

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

            Про вёрстку: как верстальщик с 4-ех летним опытом front-end разработки в режиме non-stop скажу одно — адекватной верстки не бывает. Или у вас нет сроков… Любая сложная верстка, особенно с замахом на вебдваноль и «это ваше юзабилите» будет иметь места где черт ногу сломит. Пускай там не будет «хаков», я говорю про сложные для понимания неопытному человеку.
            Я не беру в расчет простые сайты-визитки, там верстать то нечего.

            P.S. Изучив примерно такой набор который вы описали можно стать Junior. Но минимум — 6 месяцев, плюс pet-project, желательно open-source — для того чтобы ткнули носом. И огромное количество практики конечно же, только не в стиле «Сверстайте пару страниц».
            • 0
              Хорошо без контроля, как правило, не выходит. Что для него хорошо, для проекта смерть. Те, кто осознают, что они делают и почему, уже, как правило, не Junior.
  • +14
    >>понимать разницу между абстрактным классом и интерфейсом.
    >>понимать CSS следующего содержания

    Архитектор-верстальщик? Так вот он какой — многорукий шива…
    • –8
      Познание абстрактного класса и интерфейса доступно лишь архитектору О_о
      Читать CSS может лишь верстальщик О_о

      Так вот он какой, лучше не буду продолжать.
      • +5
        а потом ещё спрашивают от почему столько шуток именно про php-кодеров?!
        Вам ставят минусы, потому что ваш пост это даже не поверхность айсберга, это школьный курс по ознакомлению с веб-технологиями, типа: ля-ля-ля, есть html, вот есть SQL можно такой запросик забабахать. А ещё можно вот так массивчик обработать.
        Есть большая разница между тем, кто хочет стать разработчиком и стал разработчиком (а не говнокодером) и заключается она в 2х вещах:
        1) Фундаментальные знания. И в первую очередь — общая теория работы web: от протоколов, до веб-сервисов. ООП, системы баз данных (а не только язык SQL), проектирование систем и архитектурные подходы (десяток базовых шаблонов от слоев и MVC до репозитория и синглтона). И язык программирования, пусть хоть php на глубоком уровне.Тестирование. Если вдумчиво, с проработкой прочитать хотя бы по 1-2 книги на каждый из пунктов, то новичку понадобиться больше года. В домашних условиях это ещё дольше.

        2) Практические знания. Исключительно после получения базовых, фундаментальных знаний. Иначе срок обучения увеличивается кратно. Личный пример — встречал людей по работе. по 2 года опыта, а они джунеоры джунеорами. И знания исключительно на уровне «как красным молотком забивать красные гвозди». Немного поговорив выяснил, что одна за корочкой в универ ходила, второй вообще 3х месячные курсы прошёл и ему повезло попасть в набор джунеоров.

        • 0
          Ваши суждения очень похожи на размышления одного из моих преподавателей, они конечно имеют смысл, и я даже с ними согласен, но в жизни всё по другому, человек выходя из университета (нет не в конце обучения, курсе на третьем) делает обход всех компаний где висят вакансии о junior разработчиках; от собеседования к собеседованию набирается знаний и опыта, и в итоге в 10-ую компанию он таки проходит собеседование.

          Насчет личных примеров, тут крайностей много, не стоит их рубашку на всех примерять.
      • +2
        Понимать css должен любой программист связанный с web. Писать может верстальщик, а понимать все.
    • –5
      Интересные люди плюсуют данный комментарий, что они забыли в web разработке?
    • +2
      По этому комментарию я угадал что вы .NET-чик.
  • –7
    О, привет!
    Я c jQuery на твоём сайте знакомился!
    Спасибо! )
  • –6
    Такой бы пост по Ruby!
    • +11
      Не надо.
  • 0
    Такой бы пост про iOS-разработку! :)
    • 0
      Такой бы пост еще и про Java :)
      • +12
        Да вроде мы поняли принцип таких постов про %langname%:

        1. Берем Google
        2. Набираем «как сделать то-то на %langname%»
        3. Вы Junior разработчик на %langname%
        PROFIT!!!
        • +1
          далеко не все так просто!
          • +13
            1. Берем Google
            2. Набираем «как сделать то-то на %langname%»
            3. Вы Junior разработчик на %langname%
            4.…
            5.PROFIT!!!

            Теперь просто!
        • 0
          :-))
  • +1
    > Соображать и использовать Google.

    Не самый лучший совет, учитывая соотношение говнокод: торт в сети.
    • –1
      использовать Google != копипаст
      • +3
        Тогда предварительно надо научиться отличать изюм от мух, что без хорошей практики на строгом языке невозможно.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    >>> SQL

    Эти вопросы (из части SQL) достаточно стандартны для всех собеседований и, откровенно говоря, лишние в общем случае. Поясню, что я имею ввиду. В современном мире использование SQL Junior-ом — это прямой путь к большим проблемам. Гораздо проще и удобнее использовать одну из ORM, где человек может вообще не писать SQL-код и не знать синтаксиса SQL. Это обезопасит проект и от ошибок типа дублирования данных, и от проблем безопасности (sql-injection), и от неэффективных запросов. Если возможностей ORM не хватает — наверняка стоит привлекать человека, хорошо разбирающегося в этой области, а не собеседуемого на знание JOIN-ов.

    Кроме того, не стоит забывать, что на реляционной модели свет клином не сошелся.
    • 0
      Для того, чтобы использовать туже Doctrine надо понимать, что же она делает, иначе человек даже не сможет отдебажить свой код, и фейлов это может сулить куда как больше.

      А вот использование PDO вполне так защитит код от инъекций, если использовать с умом конечно
  • +1
    «Дней пять вам хватит для освоения базовых навыков верстальщика.» — простите, но это бред.
    • +1
      Смотря что вкладывать в «базу»:
      • Знать HTML теги
      • Читать CSS
      • +1
        Лучше было так и написать, т.к. после этого и складывается впечатление, что верстальщик — это человек, который знает пару тегов и применяет пару стилей. А вообще само понятие верстальщик — мне не нравится еще больше, потому как сейчас работа с javascript — это неотъемлемая часть, поэтому более подходит front-end разработчик.
        • 0
          Так речь-то идёт о бэкенде, просто иногда приходится и в html/css/js лезть.
          • +1
            и jQuery тоже в посте для бэкенда упоминается, да.
            • 0
              Частая задача при разработке в целом бэкенда запилить какой-то плагин jquery на фронтенд, чтоб он данные полученные показывал. Вёрстка страницы есть готовая, задача стоит не сломать её новой функциональностью.
  • +7
    Статья вредный советов. Вы путаете понятие junior php и вебмастер.
    • 0
      А в чём же разница?
      • +3
        Вебмастер — этот и дизайнер и front-end разработчик и программист в одном лице, но, по сути, ничем из перечисленного не владеет на должном уровне. Простой пример: Вася установил Joomla и нашел бесплатный шаблон, да еще он «уверенный» пользователь dreamweaver и photoshop. Вот это вебмастер.
        • –2
          Еще стоит добавить — знание каких-либо CMS, желателен навык работы с phpMyAdmin.
          Я ничего не перепутал, просто markoffko считает иначе, вот и хотел выяснить в чем же разница
      • 0
        В том что junior php должен работать только с php кодом в основном и знания ему нужны совершенно другие нежели приведенные в статье. Ваш слишком общий и поверхностный и подойдет разве что людям которые идут на вакансии типа «Обязанности: программирование на AJAX и PHP».
        • +2
          ИМХО — знать лишь PHP — это как-тот ограничено, даже для junior разработчика
  • –6
    > Что должен знать начинающий PHP разработчик

    Лучше выберите другой язык, прочитайте по нему нормальную книжку от o'reilly и не видитесь на такие статьи.
  • +8
    > и как выйти из vi без сохранения

    Oh please!
  • +3
    про три самых главных слова забыли
    cs304203.userapi.com/v304203498/b4/ympJ4NthFv8.jpg
  • +6
    * откуда и как мы узнаем IP адрес домена — не домена, а сервера, не мы (нам он не нужен, человек может подумать что ты просишь в коде узнавать этот IP), а браузер. Лучше спросить КУДА и ПОЧЕМУ пойдет запрос
    * почему должен запуститься apache — он не должен запуститься, он уже должен быть запущен. При этом это не обязательно Apache
    * почему apache запустит PHP для обработки index.php — опять же, зависит от настроек, это может быть совсем не PHP и не index.php :)

    Меня не возьмут!
    • –1
      Спасибо, за комментарий, исправлю
  • +4
    Вообще пост годный. Потому что он не обсуждает позицию software engineer или web-developer. Он обсуждает php-разработчика. Это что-то вроде 1С-программиста, насколько я понимаю.
    И пока над в одних студиях берут на Junior и обучают SQL за пяток дней, всё с моей зарплатой будет хорошо.

    PS: Да, закидайте меня камнями, но я считаю, что программист просто не имеет права зацикливаться на одном языке. Потому что это застой мозга. Даже если вы ни одной строчки в жизни на шарпе не напишите его изучение все равно даст свои плоды в плне расширения сознания.
    • 0
      Сейчас придет толпа .NET-чиков и закидают тебя камнями!
      И меня тоже :)
  • 0
    >Установка связки Apache+PHP+MySQL — потренируйтесь, это ой как надо.

    Разве это не задача администратора? Это далеко не первой важности знания.
    • 0
      Не совсем. Рразработчик должен уметь настроить своё окружение и представлять как оно работает.
      Но это может быть и не LAMP.
      • 0
        Ну я же и сказал — не первой важности)
        Когда я занимался фрилансом — я это делал достаточно часто, но после того, как устроился на работу, я забыл, что это такое :)
    • 0
      На сервере — да. Локально на машине разработчика — зачастую нет.
  • 0
    кстати, чем отличается абстрактный класс от интерфейса знать нужно, а что такое namepsace и trait?
    И еще, почему в топике ничего не сказано про качество оформления/написания кода? Такому нужно учить с детства.
    • 0
      Спасибо, добавлю
  • –6
    А потом вам дадут документ «Правило оформление кода в команде ХУ»… навешают checkstyle с pmd и зачем вы так доскально изучили венгерскую натацию.
    Потом значит протащим его по всем паттернам, обязательно особеннсоти использования having и group.
    Ой да кого там, сразу и любимое OOP в js.
    Чего еще осталось?
    АААА… где я вас спрашиваю xUnit?
    И сдобрим это всё agile!!!
    И возможно вам предложат место валантера в крохотной компании «Рога копыта».

    Я законченный PHP-ник, и уже не помню про различия и особенности MyISAM и InnoDB. Но зато знаю как заставить гребучий ffmpeg конвертнуть видосики для всяких мобилко девайсов.

    ИМХО из подборочки полезного примерно 2%, остальное… не обязательное к изучению.
  • +2
    Выжимка
    linux
    понимать разницу между абстрактным классом и интерфейсом.
    Знать как работают LEFT/RIGHT/INNER JOIN'ы
    Smarty
    как работают события, понимать что такое замыкание, и как работает AJAX.
    jQuery
    системой контроля версий
    Понимание шаблона MVC.
    Zend Framework, Symfony, Yii, и т.д.


    Месяц изучения, и вы уже сможете претендовать на должность Junior PHP разработчик.

    Чё???
    • +1
      Поддерживаю. На изучение и ковыряние того же зенда может уйти не один месяц.
    • +1
      Не поймите меня не правильно. Статья мне понравилась и всё описанное в ней правильно кроме этой строки:
      Месяц изучения, и вы уже сможете претендовать на должность Junior PHP разработчик.
      • 0
        Я подозреваю, что автор статьи сам начинал немного не так. А потому не представляет, насколько это нереальная задача — ну, тем способом, который он предлагает. Либо в его фирме требования такие, что этот божий страх реально называется джуниором. /kidding mode on:/ Кстати, паттернов что-то маловато! Как можно работать джуниором, не зная паттерна Singleton?
        • 0
          Ну а какие специфичные для php и даже web вообще разработки знания опущены? Вон даже про фреймворки и VCS упомянуто, неиспользование которых считается отличительной чертой пехепешников. Верстать с нуля макеты джуниору не понадобится, даже если вёрсткой занимаются не «выделенные» верстальщики, писать хранимые процедуры тоже, как и что-то сложное для клиент-сайда. Разве что тестирование с PHPUnit я бы упомянул ещё. Остальное чисто привыкание к новому синтаксису, изучение библиотек и т. п.
    • 0
      Может я конечно и оптимист, но месяц «реального» изучения вполне может хватить. «Реального» — это когда ты целый день сидишь за компом/книгой, а не два часа после обеда. Да, для этого потребуется нифигасебе мотивация, но говорить что это невозможно, или результат будет паршивый — я бы так однозначно не стал.

      Мне пришлось в один прекрасный момент за пару дней изучить JavaScript + prototype.js от «про alert знаю» до «этот объект будет моделью того-то» — так что мотивация дело такое.
      • 0
        — «этот объект будет моделью того-то»

        Если вы программировали на других языках и понимали принципы ООП, то изучить синтаксис и прочитать туториал по фреймворку можно было бы и за один день…
        Странное сравнение.
        • 0
          Привел как аргумент, что месяц — это не так уж и мало
    • 0
      А по-моему достаточно для джуниора. Я куда меньше знал, когда перешёл с VB/VC++/MSSQL на PHP/MySQL. Сейчас, конечно, времена изменились, но всё же…
  • +6
    Как бывший PHP-разработчик призываю начинающего PHP-разработчика сначала внимательно изучить другие технологии веб-программирования.
    • 0
      php простейший и для начала отличный. Вот когда что то получится, можно и другие технологии.
      • +1
        Простота php скорее вредна и обманчива. Из-за особенностей дизайна и большого количества примеров дилетантского кода, php может привить нехорошие привычки, которые потом помешают в освоении других языков.
      • +1
        PHP простейший? Ничего подобного. Как всякая система, развивающаяся хаотично, он во многом сложнее аналогов, над которыми думали умные люди.
      • 0
        Не сказал бы, уж лучше Python или Ruby, а то и Java/C#. Вот когда с ними разберёшься, тогда можно и PHP. Если брать PHP как первый язык, то там слишком много «магии» с одной стороны (интеграция с веб-серверами, embeded синтаксис), а с другой — нелогичности, обусловленной историческими причинами.
        • 0
          Мне кажется, в качестве первого языка лучше что-то сугубо процедурное — бейсик или паскаль (да, даже в 2012 году). Потом — Си (не плюсы), а потом уже можно и ООП — питон, яваскрипт, руби.
          Конечно, речь идёт об обычном бейсике. С ужасом вспоминаю VB6 с его конструкциями типа RaiseEvent. Брр
          • 0
            Тогда уж функциональное — если без переменных научился код писать, то с переменными уж точно сможешь :) И, имхо, ООП проще понимать чем чисто процедурное.

            А вот Бэйсик классический плохому может научить, одни goto чего стоят…
            • 0
              Мне кажется, для начинающего понятнее концепция «сделай это, потом то и вот это», чем «чтобы получить такой результат, примени вот такую формулу». Функциональное программирование очень уж абстрактно.
              А goto сам по себе не так уж плох. Просто надо следить, чтоб новичок не привыкал всё подряд через него делать :)
    • 0
      Так сразу бы ссылки на другие технологии. Было бы круто!
      • +1
        Ruby (Rails, Sinatra), Python (Django, Flask), Scala (Play, Lift). Можно еще попробовать Clojure.
    • 0
      Совсем начинающий разработчик, начинающий осваивать PHP как первый язык, до этого места не дочитает. :-)
  • 0
    почему наш запрос будет обрабатывать apache

    Какой правильный ответ?
    color:#f00; /* Что это за цвет? Включи логику! */

    Логика здесь ни при чём. Сокращение 6 знаков -> 3 знака — это невозможно понять, это нужно запомнить. Я бы на месте новичка подумал, что это сокращение от #F00000, а не от #FF0000.
    • +1
      Правильный ответ: «А я глубоко не уверен, что его будет обрабатывать именно Apache».
      • –1
        Я огорчу, далеко не каждый пришедший на собеседование знает порт, который обычно слушает web-server, не говоря уже про ответы — «у меня там denwer»
        • 0
          Меня Вы этим не огорчите, web server пишется без дефиса, что входит в состав Denwer — понятия не имею, к сожалению. И, мне кажется, я только обратил Ваше внимание на то, что не стоит нажимать на Apache в статье: есть масса альтернатив. У юных читателей может сложиться ошибочное суждение, что Apache — это синоним словосочетания «веб-сервер». Ну, так же, как в приведенном Вами примере Denwer, наверное. :-)
          • –1
            Замечание понятно, только я придерживаюсь мнения, что не стоит сразу рассказывать про все web server'а, и нюансы их работы
            • +2
              А я придерживаюсь мнения, что надо сразу начинать с ввода определений, а не показывать на примерах, примерами и ограничиваясь. Этому меня научили в школе и в вузе на первом курсе.
        • 0
          Так всё-таки, какой должен быть правильный ответ на вопрос «ПОЧЕМУ наш запрос будет обрабатывать apache»?
          • +1
            Потому что зачастую именно он слушает 80-й порт :)
            • +1
              Моя первая мысль была «потому что админ — лентяй» :)
          • +1
            «Потому что ваш системный администратор поленился поставить туда nginx — поэтому запрос обработает Apache»
        • 0
          А есть смысл приглашать таких на собеседование на должность веб-разработчика?
    • +3
      Три канала — RGB, по Red максимальное значение — WTF?
      • –1
        Один цвет определяет байтом, а не полубайтом. Байт описывается двумя шестнадцатиричными символами. F — это максимальное значение для полубайта. Преобразование XXYYZZ -> XYZ неочевидно и неинтуитивно. Это нужно выучить, логика тут не поможет.
        • +1
          Не знаю, не видел людей которых бы данный вопрос поставил в тупик, да и сам впервые ввстретив сокращенную запись воспринял ее как нужно
        • 0
          Я уже забыл о такой нотации, но увидев её как-то сразу сообразил, что это красный. Именно по логике «RGB, а по R максимальное значение», запнулся на секунду вспоминая только как R на русский переводится :)
  • +1
    Я бы подумал, что надо мной стебутся.
  • 0
    То есть, по-Вашему, php может быть первым языком программирования?
  • +2
    Больше похоже на инструкцию «как за месяц устроиться на работу PHP разработчиком», чем «как стать PHP разработчиком» в принципе.
    • 0
      > «как за месяц устроиться на работу PHP разработчиком»
      …в конкретную контору.
      • 0
        … в конкретный отдел
  • +2
    function some_logic($a, $b = 24) {
        return ($a+$b)/$_REQUEST['b'];
    }
    
    $var1 = $_GET['a'];
    echo some_logic($var1);

    После такого, примерно, на 50% падает вероятность, что вы не пройдете собеседование (я про отсутствие функции intval или floatval, если уж в примере скрипта идёт «калькулятор»).
    Сверстайте пару страниц, от и до (HTML должен быть валидным).

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

    Мне кажется в современном мире — я ничего подобного не должен понимать, ибо есть яндекс или гугл)
  • 0
    На мой взгляд, слишком сложно для начинающего разработчика. Человек, который четко и уверенно ответит на все вопросы из топика, явно не начинающий.
  • +1
    почему наш запрос будет обрабатывать apache


    Мне тоже интересно. Почему? Вполне вероятно, что и не будет. А если и будет, то вовсе не апач.
  • 0
    Мракобесие какое-то!
  • 0
    > почему наш запрос будет обрабатывать apache?
    Действительно, ведь на сервере может быть nginx или вообще вебсервер, написанный на Go.

    > Из чего состоит HTTP запрос/ответ (да откройте же firebug...)
    Зачем устанавливать Firefox?
    Если у вас Chrome: Developer Tools -> Network (F5)
    Прекрасно видны заголовки запросов/ответов.
    А если совсем все плохо и установлен IE, заголовки можно лицезреть на сайте web-sniffer.net/

    > и как выйти из vi без сохранения.
    Тогда уж стоит упомянуть консоль как таковую. И умение поставить нужную программу.
    Кстати, не обязательно пользоваться монстром vi или vim, есть более простые инструменты, особенно, если вы не программируете прямо из консоли: ee (aka easyedit), nano (всегда нужно использовать nano -w, чтобы не рвал строки) и mcedit (или F3 в mc, в нем всегда нужно завершать файл новой строкой, т.к. он не ставит символ переноса строки, в отличие от ee).
  • +1
    > Соображать и использовать Google. Первое оценить сложно, для этого придумано много «дурацких» вопросов для собеседований.
    Да, вы правы. Причем количество «дурацких» вопросов растет с каждой такой статьей.

    > Таки немного о linux — о различиях файловой системы от windows
    Файловая система от windows отличается тем, что первая — это файловая система, а вторая — операционная.

    После таких собеседований остается только одно сказать: спасибо, больше мне никогда не звоните.
  • +1
    Хотел было написать очередную статью о собеседованиях, но мне кажется формат себя изжил.

    Кажется, пора действительно остановиться.
  • +1
    358 раз этот пост добавили в избранное, а рейтинг поста -29. Как-то это противоречиво. Конструктива-то в комментах мало. Между тем, дельные советы на старте очень многих бы новичков повернули в нужном направлении.
  • 0
    Последнее время при собеседовании, понимаешь что даже вот ЭТОТ набор, после двух лет программирования на PHP, соискатель не знает, но уже хочет 70К+.

    про то что 95% программистов не могут настроить веб сервер под себя я вообще молчу.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.