насколько типичными являются следующие навыки у PHP разработчиков
PHP — хороший уровень
Javascript — (Jquery или аналог) — хороший уровень, нужно писать простые скрипты на клиенткой стороне.
CSS+HTML — верстать никто заставлять не будет, но знать нужно
SVN
SSH
Linux,Apache — никто не будет заставлять администрировать, но понимание работы должно быть
Mysql — понимать что такое индексы, понимать как join`ы работают
Это навыки типичного веб разработчика или Senior`а? Если брать москву, какова стоимость такого специалиста?
PS: Я не веду найм специалиста, я хочу понять ситуацию на рынке.
Из личного опыта собеседования с middle-php-разработчиками не в дефолт-сити который имеют 2-5 лет работы в сфере веб-разработки.
1) 30% не знают как использовать foreach
2) 50% не понимают ООП (путают public с private)
3) 40% вместо join используют вложенный select
В тоже время приняли junior-web-developer у которого отличный теоретический багаж знаний, но совершенно нет опыта работы (знает чем отличаются join, какие модификаторы доступа бывают, что значит tinyint(2) и т.д.).
Результат — не очень продуктивная работа, т.к. разница между теорией и практикой не имеет значения только в теории :)
Подводя итог — помимо теории, очень важен опыт работы. Который как раз и будет отличать junior от middle и senior developer'a
SpiRi7
1. О.О Удивительно
2. Вообще чудеса, де вы таких лохов то видели? чтоб 5 лет работать и путать паблик с приват
3. лично из моего опыта: замена 2-х джоинов на 4 вложенных запроса дало прирост в 5 раз, так что это не всегда плохо =)
Правильный ответ: обе одинаковые. На самом деле тут дело не в передаче объекта по ссылке, а во особенностях работы интерпретатора с памятью. Например, $str = '123'; $str2 = $str; В памяти будет только один объект со строкой '123', $str и $str2 указатели на один и тот же объект. Новый объект для $str2 выделится только во время модификации.
$str = '123';
$str2 = $str;
$str2 .= '4'; // копирование объекта происходит только на этом этапе
print $str.'-'.$str2; // 123-1234
Не поленился, прогнал обе функции по сто тысяч раз. Получилась разница в третьем знаке после запятой. Эка экономия. Интуитивно-понятно что с передачей по ссылке быстрее, но вот почему? Какой правильный ответ? Что-нибудь в духе «ПХП не приходится делать проверку расклеивать переменную на две или нет»?
первая.
потому что во втором случае будет создаваться лишняя копия соответствующего zval-а.
если сделать $a = range(0, 100500), разница в пару раз видна и на одном запуске.
а, все равно никто не знает. поэтому расскажу. при передаче по ссылке явно, задействуется механизм рефкаунтеров. на него и уходит время. при передачи просто так, копирование происходит только если значение переменной меняется. но и рефкаунты не задействуются. вот такая оптимизация внутренняя.
время уходит не на «механизм рефкаунтеров» сам по себе (объяснение правильное, но не полное), а из-за того, что мы ссылку потом передаем куда-то еще (в count()).
вот тут-то копия и создается.
пруф: если count($a) поменять на $a[0], все будет ок.
подчеркиваю, разница хорошо заметна на больших размерах массива и одном запуске, а не на 9 элементах и 100500 повторах, где оверхед от вызова функции больше этой разницы.
иными словами, a1 работает за O(1) от размера массива, a2 за O(n).
к сожалению, не могу сейчас найти ссылку на статью, где разбирается механизм подсчета ссылок в php и как уживаются references и copy-on-write, но кажется, с хабра я на нее и попал.
короче, вот такой код:
$a = range(0, 100500);
$b = &$a;
$c = $b; // или $c = $a, что одно и то же
создаст две копии исходного массива.
если присваивание по ссылке во второй строке поменять на обычное, или наоборот, третье присваивание сделать по ссылке, то этого не будет.
проверяется функциями memory_get_usage() и xdebug_dump_zval()
PHP — хороший уровень
Javascript — (Jquery или аналог) — хороший уровень
CSS+HTML
— «Карл Маркс и Фридрих Энгельс не муж и жена, а четыре разных человека.» (с)
Не путайте всё в кучу пожалуйста. Я бы отдал разным людям если объём задач большой. Если не большой — отдал бы на аутсорс.
Вот только не надо мне про это говорить. мой сайт gdeposylka.ru был сделан мною за 2 месяца в одиночку. Причем php,css,js у меня только хобби. У меня основная работа это администрирование сетей в которых проходят многие мегабиты трафика, а вторая хобби это линукс ( apache,mysql)
Если я в качестве хобби смог изучить php,javascript,css то почему профильный специалист этого не может?
Ок, я извеняюсь, может плохо выразился. Эти характеристики, которые вы написали, способен человек усвоить примерно за 3 месяца. => юниор. Способные юниоры под хорошим руководсвтом могут «вырасти» в прекрасных работников, главное чтобы старались.
gdeposylka.ru — отличный проект! Постоянно пользуюсь, имею платный аккаунт. С радостью бы обсудил некоторые нюансы и предложил бы нововведения если бы у Вас нашлось время.
Но — gdeposylka.ru — это два человекомесяца. Это «объём задач небольшой». Специалист в штат не нужен. Такое проще на аутсорс.
А если в штат — то лучше два человека. или опять же — одну из частей на аутсорс.
Разнотипные задачи на одном человеке — очень сбивают темп разработки. И настроение у разработчика ухудшают.
Хотя — иногда и наоборот — например Моделлер/Текстурщик как правило в лучшем настроении чем моделлер на конвейере или там же текстурщик. Вот только отдача меньше. И качество и скорость.
В общем — признаю — погорячился с категорическим разделением. Но всё же склоняюсь к мысли что для большого проекта — лучше несколько человек. Заодно и остальные linux-апачи-mysql-svn ы — лучше покроются.
А энцеклопедисты — это отлично — но от них больше пользы в руководстве чем в разработке.
Хее всё указанное раскуривается за пару дней. Чем джойны отличаются — мона нагуглить минут за пять)
Чтобы на перле хорошо писать надо его курить пару месяцев, а похапе — фиии.
Главное не увлекаться изобретательством велосипедов.
Это обычный Junior Developer.
Конечно желательно к этому еще знание каких-либо CMS (Drupal, Joomla, 1C — сложнее).
З/п порядка 40 тыс. рублей
Более высокий уровень:
+ ООП, Frameworks
+ Разработка под CMS (плагины, модули)
хм, у меня на джуниора спрашивали и ООП, и фрэймворки, и CMS. Правда, незнание frameworks и CMS не было проблемой при приёме на работу, но ООП обязательно.
2shagguboy да пробовал — dpaste.com/hold/567156/ не в полтора раза конечно, но несмотря на то что в документации написано sizeof — Alias of count() разница небольшая но почему-то есть.