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

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

При написании этой статьи:
  • в той или иной мере был контакт с 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 вообще никак не связанную. Через год планирую, поднабравшись знаний, снова начать поиски.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 199
  • +19
    устроился на вакансию с IT вообще никак не связанную. Через год планирую, поднабравшись знаний, снова начать поиски.

    Имхо лучше ужаться по деньгам, посидеть без работы и догнать знания в режиме интенсива. Иначе есть вероятность прогореть за год.
    • +25
      и устроился на вакансию с IT вообще никак не связанную. Через год планирую, поднабравшись знаний, снова начать поиски.

      Имхо через год выглядеть продажником, решившим сменить профессию, ещё хуже, чем джуниором без опыта.
      • +16
        Лучше ужаться по деньгам и поработать таки где-нибудь джуниором. Так опыт реальной работы год это гораздо ценнее, нежели чем год набираться каких-то абстрактных знаний.
        • +8
          Я был согласен на любую зарплату. Даже на 10000, был прецедент. Однако звёзды встали таким образом, что ни одна компания, ищущая джуниоров в период конец марта-начало мая меня не приняла, из чего делаю совершенно логичный вывод — мне не хватает знаний.
          • НЛО прилетело и опубликовало эту надпись здесь
            • +4
              Поправка, после получения опыта сразу переходите в компании. В компаниях вы получаете один из самых ценных опытов: Работа в команде. Это очень важный навык, которым владеют очень немногие.
              • +1
                Это мое личное мнение никак не связанное с мнением комментатора выше.
                • +2
                  Ну во фрилансе вы тоже не обязательно один в поле. Сейчас, например, я работаю в команде из 7 человек, постоянно приходится переписываться то с клиентом, то с главным девелопером, то другим девелопером, то с новым девелопером которому отдали часть моей работы, даже с дизайнером.

                  Плюс, все из разных стран — клиент и дизайнер из США, главный девелопер из Сербии, другой девелопер из Молдавии, новый девелопер из Гонконга. Так что какой-никакой, но тоже опыт.
                  • 0
                    Вы до этого работали в компании, или после вуза сразу с фриланса начали?
                    • +1
                      Это может прозвучать странно, но я не учился в вузе.
                      После колледжа немного поработал, а потом фриланс.
                      • 0
                        Даже так, круто! Но все же после первый опыт командной работы получили на своем первом месте?
                        Я к чему все это — я лично не представляю как бы в первый раз сходу начал бы с фриланса :)
                        • 0
                          А в чём проблема сходу начать с фриланса?
                          • 0
                            Очень много проблем. Начиная с того, как поймать заказ, когда вокруг полно таких же фрилансеров и к тому же занимающиеся этим фултайм жмакая каждую минуту F5, заканчивая таким банальным вопросом, как «сколько взять?». Или один я такой?
                            • +1
                              Ну эти вопросы работой в компании вряд ли решатся — в компании ловить заказ не надо, да и с «сколько взять» могут возникнуть проблемы, если вы на зарплате.

                              Универсального ответа на вопрос, как поймать заказ вряд ли есть. Просто откликайтесь на заказы с нормальным cover letter'ом, кто-нибудь да ответит.
                              Ещё, по-моему, не стоит зацикливаться на отосланных бидах. Увидел понравившийся, отправил и забыл. Увидел ещё, ещё отправил и забыл. Сидеть и думать, как там ваш бид, смысла особо нет. Как и не отправлять новый, руководствуясь тем, что уже отправил 30 на которые никто не ответил. Если вам ответят на старый бид, но вы будете уже заняты, то вообще не проблема написать, что мол извините, но я уже занят.
                              • +1
                                А чем не прокачка скилла. Сколько взять — вопрос часто нужный не только во фрилансе. Вернее, часто возникает вопрос «сколько дать, чтобы не переплатить, но и чтобы получить решение задачи». Умея решать этот вопрос со стороны исполнителя, будет легче ориентироваться и со стороны заказчика.
                  • +6
                    $20/час — многовато для junior'a без опыта.

                    На месте соискателя я бы дальше пытался устроиться — крупные компании берут на стажировку, можно и технологию сменить если будет желание.
                    И главное вас сейчас возьмут не за знание конкретной технологии, а за умение думать и быстро разбираться в новых технологиях(я бы так сделал).
                    • +1
                      А тут специфика php — нужны дешёвые кодеры… Вот Java, .Net, c/c++ — предпочитают брать джунов со знанием языка и умением думать и быстро разбираться. Но языки сложнее и требуют большей теоретической подготовки, да.
                      • 0
                        Можно подробнее?
                        Чем отличается Java от PHP в плане программирования?
                        Кроме строгой типизации и обязательности исключений?
                        Это довольно разные инструменты для разных задач.

                        Например в Web имея 100 файликов с информацией проще их достать на PHP и отдать по JSON. Тут с типами данных в файлах как то паралельно, если задача взять и отдать (какой нибудь array с ключами)

                        А вот на стороне клиента получить HasMap в Java и провести нужный анализ, GUI и т.д. — это уже другая задача.
                        • 0
                          Да много чем отличается. То что php проглотит — в java может просто не компилироваться.
                          Разница в подходе, разница в пороге вхождения, разница в задачах.
                          Вот простенькую страничку можно и разумно напилить на php, а вот веб-бекэнд — уже стоит задуматься о java или любом другом, более приспособленном к высокой сложности систем, языке.
                          Можно, конечно, возразить, что есть и на php крупные проекты — действительно есть, но цена поддержки и разработки таких систем для php возрастает быстрее, чем на других языках (VK и FaceBook уже свои диалекты языка запилили).
                          • 0
                            я просил примеры не связанные со строгой типизацией ) (наличием компилятора и т.д.)
                            • 0
                              Ну так задайте вопрос подробнее: на общий вопрос — общий ответ. ;-)
                              • 0
                                Я считаю что программирование отличается только строгой типизацией и неопределенным поведением при некоторых неопределенных операциях.
                                Всё.

                                Хотел услышать от вас что не так с PHP

                                А порог вхождения один и тот же.
                                • +1
                                  • Меньше стандартов,
                                  • Быстрее виден результат,
                                  • Требуется меньше теории

                                  == порог вхождения один и тот же?

                                  Вопрос один меня мучает — вы на какой языке программируете-то?
                                  • 0
                                    Список за последний месяц:
                                    AVR asm
                                    AVR C
                                    C++ (до 11)
                                    java
                                    php
                                    js (JQuery)
                                    Bash (shell)
                                    Основной PHP(серверная часть)+Java(Клиент)
                                    • 0
                                      Т.е. с Java на бэкэнде вы не работаете? Чисто j2se? В то время когда php — это бекэнд с кучей надстроек (фреймворков) и стандартов? Тогда ваше мнение понятно.

                                      Впрочем с равным порогом вхождения я всё равно не согласен.
                                      • +1
                                        Есть одно но.
                                        Я не работаю программистом :)
                                        Осенью буду искать вакансии джуниоров)
                                      • +1
                                        Уж простите, может я и заложник шаблонов, но такой набор языков, да в течении месяца, да не являясь программистом, да, как следует из комментария ниже, уйдя в возрасте 17 лет «на первую попавшуюся любую»… интересно посмотреть на ваш код. Либо степень программирования на каждом языке заключается в «подпатчивании в пару местах», либо жуткий фарш.

                                        Даже просто зная несколько языков (я о лингвистике) тяжело в короткий промежуток времени переключаться с одного на другой и на третий в произвольном порядке. Да и программирование, плюс ко всему, «Вам не шахматы — тут думать надо».
                                        • 0
                                          за один день очень сложно даже на 2х писать
                                          в разные дни на разных — пофиг.

                                          Нарисовал себе UML диаграмки, в тетради набросал алгоритмы/автоматы, и пиши себе потихоньку.

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

                                          Получается что то в этом роде
                                          habrastorage.org/files/643/fb5/4ac/643fb54ac9444b7896a646e2544ae2dc.png

                                          • +1
                                            У меня как-то был очень интересный период, когда занимался разработкой сразу двух проектов. Точнее разработкой одного (c++, python) и поддержкой другого (php, js). Не сказать что было сильно сложно, но то function забудешь написать, то доллар перед переменной поставить. Спасибо IDE что не дают так легко это сделать.
                                            • 0
                                              Я и хочу поменять работу, так как я один, а проектов уже за 6ть переросло + новые создаются.
                                              Бросить всё и кодить тихо в углу :)
                                              • 0
                                                Тут главное практика) 3-4 языка в день постепенно могут придти в норму. У меня бывает частенько что-то вида php-sql-js-bash-[java или lua]. Раньше вместо java был python.
                                              • 0
                                                я не работаю в команде, по этому не могу не знать что такое «хороший код».

                                                Тут, видимо, опечатка закралась. По логике вещей, если не работаете в команде, то "не могу не знать что такое «хороший код»"
                                                • 0
                                                  вы правы
                                                  • +1
                                                    А если в команде никто не знает? Или даже если и знает, то не хочет? Наличие команды еще ничего не дает. Есть масса литературы, статей и т.д. Есть митапы, конференции и прочее. Сейчас как мне кажется все эти дешевые отговорки вообще смысла не имеют.
                                                    • 0
                                                      Как был пример выше
                                                      Оцените ваш код от 0 до 10……
                                                      Мы узнали что мы можем назвать любое число от 0 до 10

                                                      Я знаю что местами он хороший, местами плохой. Доказывать это не вижу смысла.
                                                      Когда приходится поддерживать плохой код переписывается.
                                                      Есть конечно плохой код, который живет уже 8 лет. Но живет себе спокойно и ни кому не мешает.

                                                      Что такое рефакторинг и т.д. и как делать хорошо я знаю.
                                                      Хотите взять на работу — открою код.
                                                      • 0
                                                        del
                                                        • 0
                                                          «что такое хороший код»
                                    • +1
                                      Немного не согласен, java и php языки разные, в этом нет сомнения и спору, но вот в пороге вхождения это явно миф. Нет конечно «hello word» написать на php, предварительно скачав денвер быстрее, это да, но все остальное. Я помню как я метался в студенчестве от языка к языку, ядро знаний набитое на паскале уже было заточено под строгую типизацию, да я даже тогда заранее динамических размеров массив не знал как создать. Потом все это ООП, базы данных, кодировки, стринг билдеры, не строго типизированные переменные (php) и прочее просто нарастало вокруг того базиса который у меня был. Я бы не сказал, что начав писать когда на java после php я внезапно увидел что тут все НАСТОЛЬКО сложно и пошел спать, нет все было не так. Да конечно сложности есть, но они не уникальны, чем изучение тонкостей java отличается от тонкостей php + потом yii + потом zend + потом drupal + потом wordpress? Да ничем, везде есть над чем голову поломать.

                                      P.S.: Знавал я одну конторку в которой писали порталы на java. Ну как на java, ребята знали чисто пару тегов jstl, использовали простейшие переменные, простейшие циклы, если я не ошибаюсь они даже массивов не использовали и все логические операции делали на js на клиентской стороне. Но при этом они всем гордо заявляли о том что они не какие то php`шники, а крутые java девелоперы.

                                      P.S.: Лично я считаю что если человек не дурак то он выучит любой язык не особо напрягаясь.
                                      • 0
                                        Это не миф, хотя и согласен с тем, что порог вхождения в java тоже не самый высокий (вот hex-коды… это да :)

                                        Знаете, что означает на самом деле «порог вхождения»? Он состоит из нескольких компонент:
                                        — насколько легко/быстро можно увидеть результат (тут скрипты всегда в выигрыше),
                                        — сколько отвлечённых знаний нужно, чтобы понять язык. Для php список поменьше будет.

                                        Не надо сравнивать java vs php + yii + zend + drupal + wordpress. Тогда логичнее сравнить с java + spring + spring-security + j2ee + куча прочих фреймворков и стадартов + magnolia + куча прочих cms.

                                        PS ну вы же сами прекрасно видите, что это не работа на java. А понты есть везде. Их можно легко игнорировать/опустить (по вкусу).

                                        PS выучит или поймёт? Я вот lisp в своё время выучил, но не понял… Толку? Только нелюбовь к функциональщине возникла.
                                        • 0
                                          А можно конкретнее что вы не поняли в LISP?
                                          Я понял бы, если речь шла про какой нибудь пролог для нейронных сетей.
                                          А тут перебор, в чистом виде синтаксис и алгоритмистика. Или я ошибаюсь?
                                          • 0
                                            Я не понял не что-то в lisp, я не понял сам язык — цели, задачи, смысл… Пролог не изучали (начиная с нашего набора предмет, который включал его изучение упразднили), а сам к нему не полез из-за его ограничений по памяти.
                                          • +1
                                            Я не так давно натолкнулся на вопрос на тостере, о том какой язык лучше выбрать в начале, и я там тоже понаписал кучу примеров доказывающих, что нет разницы, но другой человек написал очень лаконичный ответ, который я не смог сформулировать, но он точно выражал мои мысли. Программирование это не знание языка, это образ мышления, умение решать определенные задачи и писать алгоритмы. А язык это всего лишь инструмент.

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

                                            Про отвлеченные знания поясните, что вы имеете ввиду, я немного не понял.

                                            Ну здесь я согласен, что у java тоже не только java есть, но согласитесь, что архитектура технологий внутри языка тоже требует изучения и не поверю если вы скажите, что решения на java черт ногу сломит, а на php вчерашний филолог все поймет за 5 минут (разумеется я предполагаю, что изучение того же drupal это изучение api и прочей начинки, а не накликать сайт за 5 минут)

                                            Да согласен, но ведь они разрабатывали на java, да не так как это должно быть, но это был ее стек технологий.

                                            Ну тут тоже немного не ясно, чем понимание php сложнее чем понимание java? Java это же не какой нибудь Prolog где реально другой подход.
                                            • 0
                                              Н. Вирт
                                              Программы = Алгоритмы + Структуры данных
                                              • 0
                                                1. А разница с какого языка начинать — есть ;)
                                                А вот подсказать с какого лучше — это надо крепко подумать, но однозначно не php/js — слишком низкий порог вхождения. Первый язык надолго закладывает свою парадигму в голову и начать мыслить в других парадигмах требует осознанного усилия.

                                                2. Полторы минут компиляции (спасибо Kaspersky, без него 40 секунд) и 2 минуты на запуск сервера… Это очень быстро? А результаты бывают и хуже. Всё зависит от конкретного юзкейса. Для чистого php перезапуск не требуется, так что сразу можно посылать запрос.

                                                3. В php можно не догадываясь о ООП писать, есть и другие теоретические области знания, которые очень важны в java, но могут игнорироваться в php не превращая программирование в быдлокодинг. Впрочем тут больше от задачи зависит.

                                                4. Зато вчерашний филолог быстрее сможет внести небольшую правку в php, нежели в java.

                                                5. Нет, они разрабатывали jsp/jstl. Это не полная java.

                                                6. А в php уже выпилили процедурную парадигму? Или в Java её запилили? Ну и не помню я, чтобы говорил, что «понимание php сложнее чем понимание java»
                                                • 0
                                                  Нет разницы на каком языке практиковать написание алгоритмов. Но да, каждый должен попробовать пописать на Си.
                                                  • 0
                                                    Написание алгоритмов можно и на псевдоязыке практиковать… А вот программировать придётся на реальном.
                                                    • 0
                                                      Есть еще вопрос мотивации. То есть если вы будете описывать алгоритмы блок схемами, на псевдокоде, словом, не видя реального результата… Это не так весело. Так что отрабатывать написания алгоритмов лучше с возможностью быстренько проверить работоспособность сего, иначе станет скучно и снизится желание этим заниматься дальше.
                                                  • 0
                                                    1. Мне все же кажется это субъективно, тем более что начало это начало, вы там не ОС пишете, простенькие алгоритмы которые почти везде одинаково пишутся.

                                                    2. Опять же субъективно, помню ту кучу вопросов и проблем для решения которые у меня были на старте, 2-3 минуты на запуск приложения это сущие пустяки на этом фоне.

                                                    3. Не поверите но на Java тоже можно писать не догадываясь о ООП, создайте всего один класс, представите, что методы это функции, свойства это переменные, конструктор просто тело программы, о наследовании тоже можно не знать)

                                                    4. Аргументируете (напомню мы в этом пункте обсуждаем не просто hello word, а код целых фреймворков и cms)?

                                                    5. Не полная, но ведь java.

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

                                                    Вообще как не крути не понимая я жалоб на тяжелые пороги вхождения в контексте php, java, c++. Вот у ассемблера тяжелый порог, я как то день убил на то что бы просто текст с клавы в переменную загнать, а вы говорите 2 минуты на компиляцию))
                                                    • 0
                                                      В ассемблере не столько тяжелый порог вхождения, сколько отсутствие наработанных инструментов и библиотек, которые есть в языках высокого уровня.
                                                      • 0
                                                        Не спорю, но для меня было очень тяжело, то что ты пишешь тестовый пример, а он не работает, пишешь второй он тоже не работает, гуглишь ошибку, исправляешь по совету с форума, оно опять не работает. То есть я еще в самом начале изучения, вообще о языке ничего не знаю, а передо мной уже стоит задача о дебаге нерабочего кода.
                                                        • +1
                                                          У меня assembler (x86) был 10 лет назад
                                                          дебажить ассемблер — одно удовольствие
                                                          Что ты написал, то и дебажишь :)

                                                          Знания минимальные
                                                          смотришь что в регистрах, смотришь что в стеке.
                                                          Как кубики собирать :)
                                                          • 0
                                                            На сколько я помню там разные регистры под разные задачи, и когда на старте тебе выдают портянку кода и говорят вот смотрите тут все просто, это на самом деле не просто. Ты же вообще не понимаешь что там происходит. Для меня это выглядело как рисуем кружок и опа рисуем сову)
                                                            • 0
                                                              неа
                                                              Они и называются РОН (Регистры общего назначения)
                                                              А вот вызов API как с любым апи
                                                              регистры — переменные функции, остальное ты сам кладешь в стек, чтобы вытащить потом нужные тебе данные.
                                                              • 0
                                                                Ну возможно, это было реально давно и я могу все сейчас перепутать)
                                                      • 0
                                                        Я сначала изучил Visual Basic
                                                        Потом assembler
                                                        Почему у вас возникли сложности?
                                                        Используем api bios или os — 16h? и 21h(dos) соответственно.
                                                        Причем на разные подсистемы у bios разные прерывания.
                                                        Закинули что и куда нужно, вызвали int 21h, забрали результат.
                                                        • 0
                                                          Это было 7 лет назад, если честно я уже не помню, что конкретно там я не так использовал, но общий смысл моих проблем с assembler я выразил в коменте вышею
                                                        • +1
                                                          1. Разница есть — язык прививает мышление и привычки. JS и PHP плохи тем, что они очень не требовательны к оформлению => не формируется понятие о code-style на начальном этапе вообще никак.

                                                          2. Сравните 2-3 минуты на запуск приложения у новичка и 3-4 минуты на запуск у разработчика, ага? Кстати, для того, чтобы получить полторы минуты компиляции я не слабо так переработал мавен-проект — на момент применения изменений, несмотря на добавление двух дополнительных операций в процесс сборки мне удалось снизить время сборки на 30%. С тех пор добавилось несколько компонент и время сборки снова выросло (а ещё сменилась версия каспера и время сборки резко увеличилось).

                                                          3. Нет, не догадываясь невозможно — как минимум один класс создать придётся. Конечно можно всячески нарушать и игнорировать принципы ООП, но вот public class будет маячить перед глазами всё равно.

                                                          4. Легко — мой отец (электрик) ковырялся с друпалом — скачал какой-то пробный модуль, он не завёлся — он его поковырял, основываясь на инфе нарытой в интернете и заставил работать (несколько строк кода изменил). С Java сможете аналогичный пример привести?

                                                          5. Разработкой на java это называть уже нельзя.

                                                          6. А вы привели доказательство обратного? Ещё раз повторюсь — в зависимости от задачи на java требуются различные дополнительные теоретические знания, тот же ООП — всегда, для php просто нет такого спектра задач! А имеющиеся зачастую требуют меньшего объёма теоретических знаний (ибо условно-обязательных стандартов меньше).

                                                          Ну это вы сами лопухнулись. У нас были по ассемблеру лабы на 2ом курсе — я в hiew (ну не подружился я с masm) лабы склепал за час (там тоже была обработка клавиатуры, ввод-вывод и ещё что-то). А на приведение в порядок скрипта сборки я убил 3 дня ;-) После этого удалось сборку версий запихнуть в teamcity (ещё за полтора дня).
                                                • +2
                                                  Последние версии самого PHP и некоторых фреймворков очень много позаимствовали именно из Java и его экосистемы. Собственно, емнип, PHP единственный популярный скриптовый язык, идущий в направлении энтерпрайза, а не RAD — почти статическая типизация нескаляров, контроль видимости членов классов, интерфейсы, абстрактные классы и т. п. — при этом сохраняя присущую изначально гибкость.
                                              • 0
                                                Под PHP есть две категории джунов. CMS-разработка, тут да. А есть еще нормальная backend-разработка, где уже нужно знать язык нормально, иметь базу хоть какую-то… Словом, не сказал бы багаж необходимых знаний для JAVA-джуниора сильно отличается от PHP-джуниора. Во всяком случае далеко не для каждой вакансии.
                                                • 0
                                                  Что такое CMS разработка?
                                                  Что такое «знать язык»? Его API, библиотеки?
                                                  Правило простое. Есть сомнения что делаешь много работы — лезь в API.
                                                  нет в API, ищи библиотеку.
                                                  Много переборов в циклах — лезь в API, они написаны например на «С»
                                                  А дальше вопрос проектирования системы.
                                                  А всякие каллейбл и итерейбл это не знания языка, это больше знания проектирования.
                                                  • 0
                                                    CMS-разработка — массовая разработка на каких wordpress/joomla и т.д.
                                                    Пожалуй не знать язык, а уметь им пользоваться. API можно всегда подсмотреть, заучивать названия функций или какие аргументы и в каком порядке передавать я лично смысла не особо вижу, голову можно забить более полезными вещами.

                                                    Мне кажется вы сильно упрощаете эти правила. Они в большинстве случаев либо не работают, либо люди до него не дошли.

                                                    callable/iterable это больше относится к незнанию средств языка, но в контексте вопроса незнание оного не так страшно. К вопросам проектирования скорее относятся самые базовые принципы, которые вообще не привязаны к языку программирования. Например сильная/слабая связанность системы и какое это отношение имеет к MVC, SOLID и как слабая связанность помогает улучшить масштабируемость систем, когда лучше применять сильное связывание и т.д.
                                                    • +1
                                                      Про слабую связанность могу сказать сразу.
                                                      О ней можно почитать, но ты не поймешь нахрена она нужна, пока тебе не попадется огромный проект, а он может попасться только на работе, на которую тебя не берут, пока ты не узнаешь что такое слабая связанность. :)
                                                      • 0
                                                        Почему все думают что опыта можно набраться только работая за деньги? Есть Opensource проекты, где тебе и бесплатный code-review будет если проект интересный, и в резюме плюсик. Можно в конечном счете присоединиться к какому-нибудь проектику небольшому и делать pull-реквесты.
                                                        • 0
                                                          А кушать тоже код? o_0
                                                          • 0
                                                            После работы, пару часов в день. Так же вполне нормально держать где-нибудь на такой вот переломный момент парочку (лучше 5-6) зарплат, что бы не умереть с голоду.
                                                            • 0
                                                              и за 5-6 месяцев по 2 часа в день вы станете хорошим программистом? И получите много опыта? Странно это.
                                                              • 0
                                                                по 2 часа в день не уходя с основной работы, и по сколько можно живя на эти отложенные ЗП. Пол года активной разработки (за деньги или нет) вполне достаточно что бы дорасти до джуниора. А если повезет с проектом, будут знакомые и т.д. можно и быстрее. Но это не исключает необходимости иметь какой-то базы.
                                                      • 0
                                                        Есть забавный факт
                                                        Никогда не слышал про SOLID, но знаю и стараюсь соблюдать все принципы SOLID, не подозревая о том, что это SOLID...)
                                                        • 0
                                                          Да, такое частенько случается. Да и если и знают, если просто спросить «Знаешь о принципе подстановки Барбары Лисков»? и человек в ступоре довольно часто.
                                                          • 0
                                                            Это так же с предметом «Стандартизация и спецификация» (как то так)
                                                            Мы проходили то, что «все гайки сделаны по стандарту, по этому есть стандартные ключи»
                                                            Для любого Советского ребенка это само собой разумеющееся было и подумать об обратном в голову не приходило.

                                                            Такая же фигня с принципом Парето.
                                                            9 из 10 моих знакомых знают правило 20/80, 3 из 10 вывели его сами в процессе взросления/получения опыта
                                                            А то что это именно ОН — знают человека 1-2.
                                            • +1
                                              odesk, elance, да хоть на форумах по программированию можно заказы собирать, тогда можно и изучать что-то и некоторую сумму зарабатывать.
                                              • +5
                                                Я был согласен на любую зарплату. Даже на 10000, был прецедент.

                                                Недавно помню статья попадалась, что вилка зарплат подразумевает в том числе и нижнюю границу, то есть меньше определенной суммы вас тоже на работу не возьмут, т.к. просите «подозрительно мало».
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                • 0
                                                  нет
                                                  Если человеку нужны деньги, пусть работает кем хочет
                                                  Я в свое время так же искал работу.
                                                  Знал в свои 17 (без вышки) целую линейку языков начиная от ассемблера и заканчивая C++, имел несколько программ.
                                                  Работу программистом не нашел в то время.
                                                  Пошел «на первую попавшуюся любую»
                                                  В этом году праздную 10 лет в своей отрасли. 8 из которых руковожу своими отделами. Была своя организация.
                                                  У человека довольно не плохо получается систематизировать знания. Ему это поможет в любой сфере.
                                                  А продажи это хорошо. Периодически такие топорные HRы попадаются, что нужно себя продать, а потом уже говорить о проф навыках.
                                                  Впервые за 10 лет подумываю кардинально сменить род деятельности и уйти наконец в программисты.
                                                  Из опыта программирования имею несколько построенных систем проверенных временем, кучу обученных людей (и программированию в том числе), имею представление о workflow по созданию проекта с 2х сторон (заказчик/исполнитель). Подрабатывал сингл разработчиком и разработчиком в команде.

                                                  А с таким предвзятым отношением про «продажника» и как он будет выглядеть — жить нельзя. Для этого и дают тестовые задания.
                                                  Ну а если еще к работе подходить «ему 25 лет, а знает он на 23», то это уже и в какие ворота не лезет.
                                              • –1
                                                Серьёзно, HR, почему вы не можете потратить пять минут на человка, который потратил на вас день?

                                                Отрасль РНР-Джуниор — это океан и есть подозрение что выбрать 1 кандидата из океана задача не проста не только для соискателя но и для того кто ищет!

                                                Я могу порекомендовать такой маневр:
                                                — Не лезьте в общие вещи, типа РНР могу все! Определитесь что конкретно вы можете/хотите делать!
                                                — Выбрать движок/фреймворк, который и учите.

                                                То есть, пока вы сосредоточились на узкой специализации, вы себе делаете круг общения из людей которые здесь варятся и их не много, поэтому вы знаете друг друга в аватару (в случае общего РНР — вы один из тысячи и ваше общение будет всегда с новыми людьми и вы для всех новый).
                                                Следующий момент, так как круг узкий то в этом кругу плавают и свои компании с которыми вы познакомитесь даже не ищя их, они вас сами найдут!
                                                Для вас проще хорошо выучить один фреймворк, чем кучу CMS/фрейморков, где вы будете «так себе».
                                                Кстати, чем меньше специалистов по узкой отрасли тем больше у них зарплаты!

                                                Вообщем я веду к тому что чем уже круг, тем вам проще найти работу!
                                                • +3
                                                  Абсолютно с вами согласен. Так и планирую поступить.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                    • +2
                                                      Я бы не отказался, но не попадалось. На стажировку берут в основном тестировщиков/
                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                • +4
                                                  … результатом двухмесячного поиска…

                                                  • в той или иной мере был контакт с 20+ работодателями
                                                  • выполнено 12 тестовых заданий
                                                  • пройдено 8 собеседований с техническими специалистами


                                                  печаль, может стоит усердно поработать над собой?

                                                  Через год планирую

                                                  начинайте работать над собой сейчас
                                                  • +2
                                                    Так я и не переставал. Прекрасно понимаю, что хоть по чайной ложке в день, но надо. Через год планирую искать заново, а не начинать повышать скилы.
                                                    • +6
                                                      А приведите семпл выполненного задания (с текстом задания). Вот интересно было бы оценить (хоть я и не php… точнее бывший php и современных реалий не знаю, но code-style, алгоритмы и js/html оценить вполне могу).
                                                      • +1
                                                        Не надо через год. Продолжайте непрерывно искать, параллельно развиваясь.
                                                    • 0
                                                      Лучший способ что-то выучить — сделать стартап © Неизвестный говнокодер
                                                      • –2
                                                        Паша или Марк, вот в чем вопрос.
                                                      • 0
                                                        Скажите, а как работодатели реагируют на то, что человек 30 левела претендует на замещение вакансии джуниора? Из-за возраста проблем не возникало?
                                                        • 0
                                                          Возраст не так важен, как опыт. И мало вероятно, что опытный специалист(если 30 лвл подходит в эту категорию) захочет получать меньше, чем предлагает рынок.

                                                          А так, подумайте сами: платить 500$ уже опытному человеку или новичку.
                                                          • 0
                                                            У нас есть компании которые джуниорам платят и по 150-200, зато берут всех кого только могут.
                                                            • 0
                                                              Ну не знаю даже. (о возрасте)
                                                              Мне 20, работаю в небольшой конторе на несколько команд, был у меня один человек, которому было ~40 и скорость его прокачки была значительно ниже, чем у ребят, которые моложе.
                                                              Да и было заметно, что взрослому мужику не очень нравилось, что мелочь всякая ему показывала/указывала и т.д.
                                                              В итоге дядя продержался пару месяцев.
                                                              Хотя люди разные бывают, это да.
                                                            • +1
                                                              Сам удивляюсь, но нет, не возникало. По крайней мере не озвучивалось.
                                                            • 0
                                                              Извините, может пропустил этот момент, но как долго Вы кодите на php+…?

                                                              Прежде, чем пошел на позицию .NET Junior, пару лет ушло на книги/кодинг/фреймворки/тех. английски и чуть-чуть фриланса. Без этого просто не представляю, как можно работать.
                                                              • +5
                                                                Значит вы просто плохо схватываете или изучали вещи без интереса.
                                                                • 0
                                                                  Хотел сказать другое. Как раз на интересе и изучался язык и прочее, и поэтому за то время многое успел пощупать. Поэтому, когда случайно нашлась вакансия, пройти собеседование было не сложно. Т.е. наличие такого опыта добавляет шансов на успешное прохождение.
                                                              • +15
                                                                Главное что должен знать джуниор — знать куда идти работать. Идти в компании где от джуниора хотят больших знаний — бред, они сразу дают сигнал, что не собираются вас учить. Идти нужно туда, где будут учить, плевать даже на меньшую зарплату, сами вы будете и год и пять учиться, потому что будете узнавать отовсюду по немного, но из-за нехватки структурности знания будут вымываться через месяц.

                                                                Самое главное требование от джуниора — уметь доводить дело до конца и поевать сколько у него знаний, ТС отложил на год, то что нельзя откладывать даже на завтра. Печаль.
                                                                • +4
                                                                  Могу посоветовать автору (и другим начинающим разработчикам) одну методику, которую когда-то применял сам. Нужно зарегистрироваться на нескольких форумах программистов и начать отлавливать разные темы с просьбами помочь. Эти задачи — то, с чем сталкиваются такие же начинающие разработчики. Надо стараться решать их и смотреть, какие решения предлагают другие. Это поможет расширить «горизонты» и набить руку.

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

                                                                  Удачи в трудоустройстве.
                                                                  • +3
                                                                    Ваши знания PHP как такового интересуют весьма незначительную часть работодателей

                                                                    Я не был ни на одном собеседовании, но, по моему, это вообще несерьёзный подход.

                                                                    При наличии базиса программист всегда сможет разобраться не только в новомодном фреймворке, но и в другом языке — если нужно. А так выходит «специалист по программированию в MS Excel», который теряется при виде Libre Office Calc.
                                                                    • 0
                                                                      По моему опыту фреймворки изучать сложнее чем языки. И джуниор плохо знающий php, но хорошо знающий фреймворк, для вебстудии выгодней сермяжного программиста. Потому что важно скорость, а не качество. Как и почти везде тащем-то.
                                                                      • +5
                                                                        джуниор плохо знающий php, но хорошо знающий фреймворк

                                                                        Опять же, я не специалист, но звучит как бред — «джуниор плохо знающий алфавит, но хорошо знающий русский язык».
                                                                        • +1
                                                                          Если бы ходил на собеседования в аутсорс контору, то бредом бы это не казалось. В аутсорсе ты используешь только базовые конструкции языка и кучу фреймворков со своим синтаксисом, конфигами и никому не нужной сложностью, за которой ты и сути не видишь.
                                                                          • 0
                                                                            Ну и нафига так работать?
                                                                            • +3
                                                                              Ты имеешь в виду контору или программиста?
                                                                              Если контору, то она получает деньги от заказчиков. Суть не в том, чтобы выполнить задачу заказчика, а в том, чтобы получить от него деньги. Для этого нанимаются крутые менеджеры проектов, которые способны продать лед эскимосам по цене за баррель нефти. Это просто бизнес.
                                                                              Если программиста, то джуниору надо получить свою первую работу и первый опыт. Не каждый сразу находит работу своей мечты и т.д. Приходится заниматься и такими вещами.
                                                                              • 0
                                                                                Не каждый сразу находит работу своей мечты и т.д. Приходится заниматься и такими вещами.

                                                                                Ну да, ну да.

                                                                                Сталлоне тоже с порно начинал =)
                                                                                • +1
                                                                                  Ну ведь получил же он потом роль Рокки и на Неудержимых собирает. Впрочем беседы о кино лучше оставить для КГ.
                                                                                  • +2
                                                                                    Более того, он написал Рокки, и не отдавал никому, пока его не взяли на главную роль!

                                                                                    Как мы сегодня знаем — всё сделал верно. А мог бы и дальше выполнять однообразные рутинные операции.
                                                                          • 0
                                                                            Это не бред, а использование копипастовых конструкций из документации. Такое возможно, особенно учитывая типичность задач. При этом не обязательно понимать как это работает, главное знать куда вставлять свой код.
                                                                            • +2
                                                                              Это не таких людей нежно называют «говнокодерами»?
                                                                              • +2
                                                                                Да, именно таких, но сейчас железо стоит дешевле работника, так что говнокод простителен, например, есть два Drupal разработчика, один может все написать кодом, а другой может сделать тот же функционал но накликивая мышкой в админке, в первом случае все будет в два-три раза быстрее работать, а во втором будет в два-три раза быстрее сделано. На мелких проектах почему-то всегда выбирают второй вариант.

                                                                                Кстати знал одного «разработчика» который с легкостью писал запросы бд в цикле, но при этом при сравнении специально приводил типы данных обуславливая тем что так быстрее выполняется.
                                                                                • 0
                                                                                  > На мелких проектах почему-то всегда выбирают второй вариант.

                                                                                  Почему почему-то? По конкретной причине — в два-три раза быстрее работающее (но не особо заметные на глаз) погоды не сделает, особенно, если скорость не критична, а в два-три раза быстрее (и дешевле) сделано — это ощутимо.

                                                                                  Если говорить о каких-то мелких и некритичных проектах на заказ, то там часто заказчику дико не интересно, что написано, как написано, отвечает ли написанное высокому званию разработчика — ему надо в срок и чтобы работало сейчас, а не после 3ёх переписываний и чтобы было идеально.
                                                                                  • 0
                                                                                    Я нормально к этому отношусь, просто по идее этот же принцип должен работать и для проектов по-больше, но некоторые заказчики которые уже наученные опытом с быстрой разработкой теперь выбирают первый вариант. Хотя мне сейчас интересны способы как выкрутится когда заказчик хочет быстро, а ты хочешь сделать хорошо =). Если найду вариант то поделюсь.
                                                                                    • +1
                                                                                      Хотя мне сейчас интересны способы как выкрутится когда заказчик хочет быстро, а ты хочешь сделать хорошо


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

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

                                                                                      Вспоминается случай, когда кто-то хотел заняться рефакторингом одноразового баш скрипта, «на всякий случай».
                                                                                  • +1
                                                                                    «Говнокод» — это, прежде всего, не медленно работающий код, а не читаемый другими (а то и собой) код.
                                                                        • +4
                                                                          Сейчас в отдел ищем Junior PHP Developer. За последний месяц пассивного поиска провели 20+ собеседований, вот собственно результат.
                                                                          Напишите функцию, которая выводит содержимое массива, учитывая что значением может быть вложенный массив:
                                                                          — Смогли написать правильно цикл 6 человек
                                                                          — Смогли использовальзовать рекурсию из них 4 человека
                                                                          При использовании паттерна MVC, где мы впервые «встречается» с запросом:
                                                                          — В контроллере сказало 8 человек
                                                                          — В модели (!) сказало 4 человека
                                                                          — Один человек сказал в Базе Данных (тогда я реально выпал)
                                                                          В резюме вы указали, что знание JavaScript у Вас на уровне х (от 5 до 7 в 10-ти бальной), как получить ноду по id:
                                                                          — document.getElementById вспомнило 3 человека
                                                                          — document.querySelector 1 человек
                                                                          — jQuery 6 человек

                                                                          До вопросов связанных с Framework'ами ни одного из претендентов не удалось довести, они валились на знаниях БД (обычный SELECT с GROUP BY не смогли написать, либо даже не смогли построить правильно две таблицы), знаниях ООП (7 человек не знали как определить конструктор).

                                                                          В общем сейчас очень сложно найти хоть одного нормального Junior'а либо даже Trainee. Это как-то очень печально.
                                                                          • +1
                                                                            Укажите, какие требования вы предъявляете для Junior? Тогда будет проще вникать в ваш контекст.
                                                                            • +1
                                                                              — Знания/опыт работы с PHP5+, MySQL5+
                                                                              — Базовые знания в HTML
                                                                              — Понимание принципов ООП
                                                                              Будет плюсом:
                                                                              — Понимание паттерна MVC
                                                                              — Знание основ JavaScript
                                                                              — Любой опыт в MVC-фреймворке (ZF, ZF2, Symfony2, etc)

                                                                              Ну примерно так. Если человек не знает то, что написано в «будет плюсом», его доучивают.
                                                                            • +3
                                                                              1. Рекурсия — хорошо понимать что это такое… но не в любом ведь случае применимо, или вы не рассматривали её как безусловный плюс?
                                                                              2. А что такое запрос применительно к модели MVC?
                                                                              3. Печально (особенно предпочтение jQuery при такой банальной задаче).
                                                                              4. БД… Кхм… а вот это для джуна не самое страшное — вполне можно в процессе научить. Плохо это только если это выпускник/студент старших курсов IT-специальности.
                                                                              5. ООП — тоже что и БД. Кстати, а какой версии PHP конструктор нужен был (да-да, я отстал от жизни и помню ещё PHP без ООП… ну так не мой хлеб:)
                                                                              • 0
                                                                                1. Если человек идет на PHP разработчика (не CMS разработчика), то ему желательно знать, что такое есть.
                                                                                2. Ну если брать HTTP сервер, то HTTP запрос (в данном случае берется абстрактный такой себе сервер, в котором минуется слой инициализации, роутинга, и т.д.)
                                                                                3. Согласен, если у большинства людей забрать jQuery, они не смогут даже цикл по массиву написать
                                                                                4. Ну если бы он шел на CMS Developer'а, то да. Но тут знания нужны хоть какие-то.
                                                                                5. PHP5+ то-есть __construct, ну если бы он сказал бы с именем класса, то тоже было бы неплохо.
                                                                                • +1
                                                                                  2. Кхм… а модель тут при чём? Это уже практическое применение модели (знание которого может быть плюсом, но к вопросу прямого отношения не имеет). Ну и запрос запросу рознь — если контроллер находится на вебсервере, а вью — в браузере, то запрос — действие вью, а если и контроллер в браузере — то тогда запрашивает контроллер… Зависит ведь от архитектуры приложения. Уверены что корректно так спрашивать знание MVC?
                                                                                  3. вы про for (var i....) или array.forEach(function)? И знание какого приоритетней? :) Впрочем незнание js, но знание jQuery по меньшей мере странно… Это скорее не знание, получается, а скилл/рефлекс… В общем умение пользоваться без понимания… А в программирование это чревато проблемами. :(

                                                                                  • 0
                                                                                    2) при том что это один из вариантов. Если мы допускаем что слой инициализации мы пропускаем, то запрос сначала должен дойти до контроллера. Слой представления мы имеем в любом случае, если у нас API то это представление в виде JSON/XML… Этот вопрос более чем корректен, ибо из него выплывает непонимание зачем нужен контроллер, модель и т.д. Вообще это основы, человек должен понимать как работает приложение хотя бы на упрощенном уровне. Он должен понимать что есть запрос, он куда-то передается, с ним что-то делается, формируется ответ… И что так при любой реализации серверной части, будь у вас просто index.php или демон на ReactPHP.

                                                                                    3) если человек не в состоянии написать простой for in цикл, то грусть.
                                                                                    • –1
                                                                                      2. Если мы говорим о веб-приложении, то MVC у нас может присутствовать на различных архитектурных уровнях и без их уточнения даже спец не сможет уверенно сказать, а что же его спросили таким вопросом. Ну если он не привык именно к таким вопросам и под ними не подразумевается конкретная часть модели. Вы рассматриваете исключительно тот вариант, когда контроллер == бэкенд, представление — отдаваемый контент, а я не могу не рассматривать и случай, когда сервер выступает моделью, а представление и контроллер — в браузере. Есть и ещё варианты. И составные варианты так же присутствуют.

                                                                                      3. for in слишком спецефично js-ный. Мало программирующим на этом языке не всегда легко о нём вспомнить (хоть он и корректней для массивов). Так что не совсем грусть, хотя да, это важный момент.
                                                                                      • 0
                                                                                        2. О том MVC мы говорим? Model-View-Controller?
                                                                                        Controller — обрабатывает запрос от пользователя, и этим самым производит связь между пользователем и системой.
                                                                                        Model — репрезентация данных, например полученных из БД, ну и может манипулировать этими данными
                                                                                        View — отображение данных (то что мы отдаем обратно клиенту) в HTML, Json, Plain text, etc

                                                                                        Вот в принципе классический MVC.
                                                                                        • 0
                                                                                          Начнем с того что MVC это паттерн (или набор паттернов, которые используются вместе)
                                                                                          Если вы все паттерны используете «как написано в книге», то тут явно ваш просчет.
                                                                                          Видет кучу реализаций MVC
                                                                                          MVC как паттерн
                                                                                          Java MVC (еще может называться MVCv2)
                                                                                          .NET MVC
                                                                                          Yii шный MVC очень сильно отличается. Там с моделью вообще какой то бардак.
                                                                                          • 0
                                                                                            Я об этом. А вы о MVC применительно к вебу с бекэндом на php.
                                                                                            • 0
                                                                                              Ну тогда запрос идет от юзера :)
                                                                                            • 0
                                                                                              Классический MVC:
                                                                                              Модель — данные (не репрезентация) и методы их обработки (не связанные с представлением)
                                                                                              Вью — представление данных и интерфейс пользователя
                                                                                              Контроллер — обеспечивает взаимодействие, реакцию (изменение состояния и/или информирование о нём) модели на события интерфейса.
                                                                                            • 0
                                                                                              2. Человек идет на собес PHP-джуниора, а следовательно на вакансию backend разработчика. Если у него спрашивают про запрос, то это 99,9% что http-запрос который должен обработать сервер. Более того, у вас сервер никогда не будет моделью, он будет хранилищем данных. Модель же включает в себя несколько больше. Да и на том же сервере, как бы мы с высоты фронтэнда себе это не представляли, всеравно будет контроллер, который будет обрабатывать ваш запрос, модель и представление (JSON/XML).

                                                                                              Главная проблема новичков, они не понимают как работает сервер. То есть что происходит до вызова контроллера. Люди не понимают различий между обычными HTTP запросами и AJAX запросами (фактически их нет, но люди этого не понимают) и отсюда появляется океан тупых вопросов.

                                                                                              3. for in есть в python, ruby, d, c#… да много где. Это одна из основных конструкций языка. Это как не знать if/else.

                                                                                              p.s. Вы либо тролите, либо не понимаете предмета разговора.
                                                                                              • 0
                                                                                                2. Сервер в рамках MVC представления вполне может выполнять роль модели. Всё зависит от архитектуры. ;-) И вы проморгали фразу «И составные варианты так же присутствуют»
                                                                                                А запрос… нет, запрос к серверу, http-запрос, запрос браузера,… прочие варианты с уточняющими словами — да, формализуют что за запрос имеется в виду. Но если человека спрашивают MVC и говорят «где запрос» — вот это троллинг. Потому что в самой MVC запросов нет — там другие термины.

                                                                                                А новички должны понимать как работает сервер? Вот прям до миллиметра? Ну и потом — всё зависит от того, чего вы хотите от нуба — если нужно, чтобы он сразу начал приносить прибыль — это одни требования, если вырастить себе нужного спеца — совсем другие требования.

                                                                                                3. for in отсутствует в c, c++, pascal, delphi, java, много-где-ещё. Простите, но получать ключ в форич-подобном цикле меня не прёт. Предпочитаю, чтобы у меня была возможность выбирать, что же я хочу получать в переменную. Коллекции в Java способствуют таким желаниям.

                                                                                                PS у нас просто разные взгляды на некоторые моменты, которые не дают вам понять меня ;-)
                                                                                                • 0
                                                                                                  Откуда вы взяли 99.9%? А запрос в базу данных (да-да-да, все та же терминология) к бэкенду не относится?
                                                                                                  А Вы попытались выяснить, что имел в виду тот единственный человек, который ответил про БД на вопрос про запросы?
                                                                                                  Капец, слов нет.
                                                                                                  • 0
                                                                                                    Запрос в базу не подходит в контексте. Если бы собеседуемый человек на самом деле перепутал HTTP запрос и запрос в базу (что на самом деле в контексте вопроса довольно странно), то его можно быстро поправить. Суть все же не в том что бы проверить знает или не знает, а умеет ли человек думать и делать какие-то предположения и выводы. Даже если выводы эти ошибочные, всегда интересно узнать как человек к ним пришел и поправить в случае чего.
                                                                                                    • 0
                                                                                                      Как раз http-запрос не подходит в контексте, поскольку до уровня MVC он вообще не доходит как правило, преобразуясь в параметры вызова методов контроллера. А вот SQL-запросы частенько формируются в контроллере или модели, явно или посредством ORM.
                                                                                                  • 0
                                                                                                    Не соглашусь с вами про незнание работы сервера.

                                                                                                    Вы хотите услышать сервер.

                                                                                                    Тоже самое, если я скажу «жучка», то вы должны сказать «Собака»

                                                                                                    У джуниоров нет этих рефлексов, они ни с кем не обсуждали эти вещи.
                                                                                                    Зачастую они о них знают, но не понимают что вы от них хотите.

                                                                                                    Скажите иностранцу «Juchka», он в скольки случаях ответит «Dog»?
                                                                                                    И вы правда считаете что он ничего не знает от «Собаках»?
                                                                                                    • 0
                                                                                                      Я не хочу услышать «сервер», я хочу услышать что человек понимает что такое архитектура «клиент-сервер» и как они взаимодействуют между собой. Если человек не может ответить на этот вопрос, я бы попробовал подвести его намеками к правильному ответу, заодно посмотреть как человек рассуждает.

                                                                                                      Джуниор это все же не нулевой разработчик, он должен знать основы. У него может не быть опыта работы, но осознание того чем придется заниматься и как — по хорошему хоть в каком-то виде должны быть. То что человек сходу скорее всего не сможет грамотно сформулировать свои мысли — это нормально, понимание важнее знаний.
                                                                                                      • 0
                                                                                                        Может стоить задать вопрос вот так?:

                                                                                                        «я хочу услышать что человек понимает что такое архитектура «клиент-сервер» и как они взаимодействуют между собой.»

                                                                                                        Будет больше толку?
                                                                                                        Я вот как раз об этом и говорю.
                                                                                                        • 0
                                                                                                          Может быть вы понимаете разницу между вопросами джуниорам на собеседованиях и комментариями на хабре? Суть в том что если человек не знает в какой букве в абривиатуре MVC идет обработка запросов пользователя, то значит он не знает что такое MVC. В такой ситуации скорее всего я повернул бы дискуссию в то русло, при котором можно было бы путем логических умозаключений придти к верному вопросу и судить уже по тому, как рассуждает человек. На основе этих рассуждений уже можно строить какие-то выводы.
                                                                                                          • 0
                                                                                                            Ездил на собеседования. Разницу вижу.

                                                                                                            Задают «вопрос в лоб» без объяснений. Можно было просто тест сделать.

                                                                                                            Если вы правда пытаетесь дойти до цели, то вам большой и жирный плюс.
                                                                                                            • 0
                                                                                                              По моей практике:
                                                                                                              1 из 5 собеседующих интересуется моими рассуждениями, остальным нужен ответ и быстро. Ну т.е. или заучивай наизусть — или «не знаешь».
                                                                                                              Хотя может что-то изменилось за 3 года?..
                                                                                                              • 0
                                                                                                                Да, тут все очень зависит от собеседующего. На месте кандидата-джуниора, я бы посоветовал столкнувшись с вопросами в лоб готовиться к тому, что и обучением никто заниматься не будет и все будет так же в лоб. Хотя всякое бывает.
                                                                                              • +1
                                                                                                3. Согласен, если у большинства людей забрать jQuery, они не смогут даже цикл по массиву написать
                                                                                                Проблема «Держания синтаксиса JavaScript в голове». Откроет простейший учебник по JavaScript и через 2 минуты получите решение вашей задачи.
                                                                                                Мне казалось видение алгоритма важнее синтаксиса языка.
                                                                                              • 0
                                                                                                3. А в чем печаль применения jQuery для человека, который претендует на Junior?
                                                                                                4. БД сами сказали не критично. Даже для выпускника старших курсов это некритично, т.к. лабораторные работы могут делаться на MS Access, где самого SQL студент даже в глаза не видел, а видел лишь: тыкнуть галку сюда, ввести в формочку здесь, нажать ключик вон там.
                                                                                                5. ООП никогда не являлось серебряной пулей. Ну да хорошо выражаться в терминах паттернов, фабрик и т.д. Однако я за свою карьеру программиста столько говнокода перевидал от любителей ООП, что не вижу особого смысла общаться в абстрактных категориях полиморфизм, инкапсуляция, наследование. Лучше поставить реальную задачу и попросить набросать приблизительную архитектуру для ее решения.
                                                                                                • 0
                                                                                                  3. Печаль == не знание javascript, но попытки оперировать jQuery, который без js почти ничего не стоит. (Оперирование сложным инструментом без понимания)
                                                                                                  4. Если специальность не IT-шная, то такой расклад допустим. Если IT-шная то в ней с очень высокой вероятностью был курс реляционных баз данных, включающий некий практикум => знание базиса SQL подразумевается.
                                                                                                  5. Обратите внимание, что ООП я оцениваю как и БД == «для джуна не самое страшное, если он не с IT специальности». Потому что узнать всё равно придётся, но для начала — не критично. Ну и не надо приводить говнокод как оправдание принижения значения базовых архитектур. Так и функциональное и процедурное программирование можно опустить ниже некуда. А это всего-лишь паттерны, призванные облегчить разработку ПО для определённого круга задач.
                                                                                                  • 0
                                                                                                    Печаль == не знание javascript, но попытки оперировать jQuery, который без js почти ничего не стоит. (Оперирование сложным инструментом без понимания)


                                                                                                    Можете привести конкретные примеры?
                                                                                                    • 0
                                                                                                      Вот с ходу? Нет. Но неоднократно натыкался на такие. Архитектурные навороты в 5-10 строчек, для которых достаточно 2-4х на чистом js…
                                                                                                      • 0
                                                                                                        Make an AJAX call
                                                                                                        JS
                                                                                                        var r = new XMLHttpRequest(); r.open("POST", "path/to/api", true); r.onreadystatechange = function () { if (r.readyState != 4 || r.status != 200) return; alert("Success: " + r.responseText); }; r.send("banana=yellow");

                                                                                                        jQuery
                                                                                                        <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $.ajax({ type: 'POST', url: "path/to/api", data: "banana=yellow", success: function (data) { alert("Success: " + data); }, }); </script>

                                                                                                        Отсюда. Там как раз эта проблема и представлена в ироничной форме.
                                                                                                        • 0
                                                                                                          А вы уверены что в вашем браузере есть XMLHttpRequest?

                                                                                                          Помню что он есть не во всех, а через JQuery — об этом заботится библиотека, которая кормит целый зоопарк «XMLHttpRequest» для всех браузеров.
                                                                                                          • 0
                                                                                                            В чём, собственно, проблема? Особенно здесь (если предположить, что jquery используется в проекте, а не подключена ради этой конкретной штуки):

                                                                                                            var s = document.getElementById('thing').style;
                                                                                                            s.opacity = 1;
                                                                                                            (function fade(){(s.opacity-=.1)<0?s.display="none":setTimeout(fade,40)})();
                                                                                                            

                                                                                                            vs

                                                                                                            $('#thing').fadeOut();
                                                                                                            

                                                                                                            • 0
                                                                                                              AJAX — плохой пример. Без штук типа jQUery или каких-то оберток довольно сложно на самом деле, особенно если в требованиях к проекту можно с тоской прочитать IE7+.
                                                                                                              • +1
                                                                                                                Ну ни фига не смешно. Чисто для примера посмотрите как создавать кросс-браузерный запрос и это минимально необходимый код:
                                                                                                                github.com/Raynos/xhr/blob/master/index.js
                                                                                                            • +1
                                                                                                              Знание JS это не столько знание DOM API, сколько умение писать поддерживаемый модульный код в JS и не седеть при изменении требований. А джуниор пусть пишет на jQuery. Это действительно очень удобный инструмент с более понятным синтаксисом и API, чем встроенные API. А для джуниора это критически важные преимущества. Я и сам, когда только начинал писать на JS, писал на jQuery и лапше из функций.