Таке питання мені досить часто задають, і я таки зважився на нього відповісти.

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

Фундамент

Міркувати і використовувати Google. Перше оцінити складно, для цього придумано багато «дурних» питань для співбесід. Другий пункт або прищеплюється в перші дні випробувального терміну, або розробник володіє їм спочатку, інший варіант ніхто не розглядає…

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

У мене є питання для співбесіди на загальний розвиток, що відбувається після вводу http://domain.com/index.php та натиснувши enter, ви повинні розповісти наступне:

  • звідки і як браузер дізнається IP адреса сервера
  • чому наш запит буде обробляти apache
  • чому apache запустить PHP для обробки index.php
  • яким чином PHP обробляє скрипт index.php

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

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

Окремо варто згадати про гігієну коду — необхідно дотримуватися стандарти кодування, з безлічі існуючих рекомендую стандарти кодування Zend Framework’а, ну а ще краще ознайомитися з відповідними PSR

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

PHP

Основи основ — отримання і обробка вхідних параметрів.

Відправляємо форму:

Лістинг index.php:

Повинні знати, як працює механізм сесій – тобто що відбувається від моменту виклику session_start, і яким боком це все пов’язано з cookies (пам’ятайте я говорив про HTTP?).
Знати для чого служить include, require і яка між ними різниця.
Різницю між echo і print не тільки знати, а й розуміти.
Таки навчитися працювати з об’єктами, розуміти різницю між абстрактним класом і інтерфейсом.

Чим більше досвіду, тим краще, але ви основи підтягніть за тиждень, ОПП зажадає ще тиждень-другий.

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. Цей топік на хабре був звичайно ж заминусован, але я залишився при своїй думці, і лише злегка змінив терміни навчання, і так — описаний процес навчання має на увазі, що ви вже знайомі хоч трішки з програмуванням, хоча б на рівні університетської програми.