PHP

индекс
206,76

Еще раз об отборе программистов (часть 2)

В своей предыдущей статье я постарался вкратце описать основные моменты двух важных процессов: составления вакансии и предварительного отбора кандидатов на вакансию PHP-программиста. В данном материале речь пойдет о следующих этапах: интервьюировании и тестировании кандидата.

По одежке встречают


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

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

Швец, жнец и на дуде игрец


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

Далее в обойме у меня стандартный комплекс вопросов по базису, которым должен обладать любой разработчик — от юниора до лидера:
  • Используемые в работе фреймворки, ORM, CMS и сторонние библиотеки.
Этот пласт вопросов поможет понять, насколько широк кругозор соискателя, как много интересных решений он видел, и, самое главное — не страдает ли он опаснейшим заболеванием — «мание величия и свой велосипед»
  • ООП. Классы, объекты, методы, свойства. Чем отличается абстрактный класс от интерфейса? В чем особенности статического метода и свойства?
Некоторые соискатели оправдывали плохое знание основ ООП многими причинами, в том числе и мифической «громоздкостью» и/или «сыростью». :) С другой стороны, не стоит бить кандидата по почкам, если он не помнит академического определения, но бойко рассказывает на «пальцах».
  • Азы архитектуры. Вопросы про знание основных шаблонов/паттернов, MVC.
В принципе, шаблоны ООП — это большая и отдельная тема для многих холиворов в Сети. Однако самые базовые паттерны разработчику всё же стоит знать, так как это серьезно облегчает процесс интеграции в коллектив, а заодно говорит о том, что у человека есть по крайней мере желание стремиться к хорошему коду.

Лирическое отступление: Вообще, главное правило, которое я вывел за 7 лет практики: «Лучше плохие алгоритмы и хорошая архитектура, чем хорошие алгоритмы и плохая архитектура»

Далее идут специфические вопросы, не связанные напрямую с PHP. Для меня такими вопросами были моменты, связанные с основными сопутствующими знаниями: MySQL и фреймворк для работы с JS (предпочтительнее был jQuery), хотя в принципе, если время позволяет, список дополнительных вопросов можно расширить в сторону более низкого уровня (чем POST отличается от GET?) или расширить за счет регулярных выражений и более детальным разбором ООП (передача по значению/ссылке, магические методы и т.д.)

По MySQL можно пробежаться за пять минут, упомянув как общие понятия для реляционных БД (нормализация, ключи, связи между таблицами), так и специфические вещи (а чем там InnoDB отличается от MyISAM? Хранили бы вы всю финансовую информацию в таблице типа MEMORY?). В принципе, от ответов на эти вопросы зависело количество заданий, которое бы соискатель выполнял в практической части.

Тяжело в учении, легко в бою


Обычно, в случае если кандидат бодро отвечал на вопросы первой части я предлагаю ему стандартный набор из 3-5 заданий и оставляю его на полчаса. Какие типы заданий лучше всего могут охарактеризовать человека как специалиста за полчаса?

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

SQL-запрос нашел героя
Далее идут два простых SQL запроса через несколько табличек. Первый — просто проверка, насколько быстро и адекватно человек может построить простой запрос с JOIN'ами. Второй — легкая модификация первого, для проверки знаний об агрегирующих функциях, группировках и HAVING.
Лирическое отступление: Если кандидат «поплыл», то желательно немного побеседовать о нормализации и пересечениях таблиц. На таком разговоре я срезал человека, который очень бодро доложился по PHP.
Когда он не смог построить простой запрос с JOIN'oм, я его спросил: «А как бы вы реализовали такую схему..?».
Правильным ответом было бы: «Я введу дополнительную таблицу связей articles2categories.»
Его ответом было: «Я создам по полю в articles и categories и буду хранить там соответствующие id в засериализованном виде»

Архитектор и творец
Самым интересным заданием, по моему мнению, является задание спроектировать небольшую систему, которая регулярно встречается на многих сайтах. В данном задании я жду от человека умение грамотно построить самостоятельную часть системы, защитить ее оптимальность. Большим будет знание диаграмм UML и понимание что есть агрегация, композиция и с чем их едят. Заодно это предоставляет возможность посмотреть, как человек ведет себя в реальных боевых условиях.

Конец — делу венец


К концу интервьюирования у вас должно сложиться четкое мнение о соискателе. Основными факторами для принятия решения должны быть:
  1. общая оценка человека: поведение, внешний вид, поведение в сложных ситуациях, эмоциональность, энтузиазм
  2. знания базиса
  3. скорость реакции и адекватность ответов в сложных ситуациях
Собственно вердиктов может быть всего три:
  • Моментальный отказ
  • Рекомендация к приёму (если есть следующие инстанции перед приёмом)
  • Отложенное решение (не более одной недели)
Если есть возможность — посылайте письмо даже в случае отказа. Идеально — указать человеку на недостатки и пожелать успеха :)

Краткое резюме

  • Никаких тестов
  • Никаких задач типа «напишите алгоритм вывода всех цветов радуги используя #000000 и битовые сдвиги»
  • Знания по архитектуре «весят» больше знаний по стандартным функциям
  • Задача собеседования — оценить уровень соискателя и его адекватность. Ничего большего.

Все части

Продолжение следует…
+33
13 мая 2010, 00:25
85

комментарии (219)

–5
braindamaged #
Выглядит вполне здраво и адекватно; пожалуй, стоит обощить и взять на вооружение :) Спасибо

Может быть интересно: проходил недавно интервью, полносттю противоположное вашему — тесты, задрачивание по low-level, задания «поработайте-ка компилятором» :) Хотя потом оказалось, что, несмотря на крайне негативное впечатление на собеседовании, попал, что называется, в крайне здравую во всех смыслах «компанию мечты», чего и всем желаю.
–2
peterpro #
Я все же поставлю архитектуру на первое место — если человек хорош всем, но не может влиться в нормальную разработку из-за того, что постоянно косячит с распределением обязанностей классов и пониманием кто кому что делегирует — будет очень обидно его убирать после испытательного срока.
0
vlsergey #
Капитан, поясните пожалуйста, за что минусуют?

Может за то, что от PHP-кодера потребовали знания UML?
–3
uglock #
BTW, _кодеру_ знание УМЛ требуется на уровне «прочитать как называется класс, какие методы должны быть». Во всем остальном за него дядя архитектор/системный дизайнер подумал.

А вот хорошему _программисту_ без умения строить архитектуру своей части проекта ну никак.
–3
vlsergey #
Боюсь, я слишком поспешно выразил свой вопрос, не отличив кодера от программиста. Я имел ввиду, что в этот топик придёт большое количество программистов на PHP, и, что-то мне кажется, далеко не все из них знают UML. Вот из-за обиды минусы и понаставили…

Но может есть и другая причина «минусов»?
–1
taliban #
Дядя архитерктор, как раз, должен заниматься архитекторой, если вы уж разделяете понятие проектирования и кодирования, а Вы, как кодер, общаетесь с «дядей архитектором» по средствам UML. соответсовенно вывод: чем лучше вы знаете язык общения, тем лучше вы понимаете человека. вы же не будете общаться с зарубеждыми заказчиками на русском, они вас не поймут, а у «дяди архитектора» не будет времени размусоливать то что он хотел сказать в UML диаграмме вам на вашем языке
–3
uglock #
Ну я кагбе обычно с другой стороны кодинга нахожусь :) Но ясен пень, чем лучше скиллы — тем лучше вообще.
–2
PsychodelEKS #
Действительно неплохой подход. Прочитал весь текст и ни разу не возникла мысль «ну вот этот х… ня никому не нужная».

Единственное что, никогда не понимал этого стремления получить js-кодера одновременно c php-программером или верстаком. Это очень разные вещи. Лучше пусть php'шник умеет отдавать/принимать json, а js код пишет отдельный человек.
Ибо это принципиально очень разные языки, и если хотите хороший js код (архитектурно хотя бы), то лучше его php'шнику не поручать, часто получается просто страшно =)

Можно спрашивать про работу с внешними источниками, imo, достаточно полезно, опыт написания парсеров, работа с xml, json и soap.
Может шаблонизаторы и/или xslt еще, раз уж речь об mvc.
–3
Psih #
Вот наверно это меня и смутило, о чём я отписал комментом ниже. Опять в итоге выходит 3 в 1, и получается как всегда хрень.
–4
peterpro #
> получить js-кодера одновременно c php-программером или верстаком

Про верстальщика — абсолютно согласен :) А про JS… Главное, что препятствует — то, что задачи придется дробить и то, что тяжело обеспечить равномерный поток задач.

> Может шаблонизаторы и/или xslt еще, раз уж речь об mvc.

Как раз если говорить про MVC — то тут скорее будет даже не шаблонизатор, а вопрос «почему из представления нельзя дергать модель напрямую?»
0
taliban #
есть схемы MVC в которых вид работает с моделями. MVC вариаций много.
0
plandem #
смотря что понимать под «дергать модель напрямую», если обращение к свойствам модели, то норма, если что-то другое, то уже зло.
0
taliban #
вы собираетесь модель с бизнес логикой передавать в вид? иначе как обращаться к модели если ее нет? либо придется создать в виде экземпляр модели, либо держать модель где-то в глобальной области… а это все и есть «что-то другое»
0
plandem #
я вроде написал, что к свойствам модели обращаться это одно(аля readonly), а если что-то другое с ней, то зло. под чем-то другим я подразумевал, что уже функционал контроллера, например, начать пихать еще и в вид.
0
vlsergey #
Мне кажется, любому программисту неплохо знать как в принципе работает приложение, начиная от умения поставить серверную ОС/базу/php, уметь настроить сетку из двух компов и разбираться в HTML. Хотя бы на уровне новичка, но везде — чтобы знать, как взаимодействуют отдельные части. Хотя бы для того, чтобы не предлагать программисту из UI делать по 10 запросов к серверу в секунду с одной HTML страницы.

Ну и отладка ещё. Пусть PHP-программист умеет хотя бы набросать, как должен работать JS-код, а уж «настоящий» JS-программист сделает из него конфетку — когда серверная часть уже хоть как-то заработает.
–2
taliban #
если есть разделение PHP/JS, то PHP кодер не должен лезть в дела JS программера. PHP всего лишь должен подготовить данные, больше от него ничего не требуется. или может еще и верстальщики должны вам «набросать PHP код», а вы из него конфетку будете делать?
0
PsychodelEKS #
Ну и да, я работаю php программером, а не в HR =)
+20
Psih #
Прочитал и сижу щас с каким-то негативным оттенком от прочитанного. Даже не знаю как объяснить. Что-то не вяжется, но не могу хватить что именно.
+1
Bambr #
Аналогично. Думаю, автор упоминает местами о спорных вещах, и это вызывает соответствующие эмоции.
0
Cancel #
Офигеть, буквально только что в блоге практически то же самое дословно написал. Реально странное впечатление от текста.
+2
eBuster #
Я почувствовал, что скорее всего не прошёл бы. У меня плохое ощущение именно по этому.
0
eosunknown #
А я рад, что обхожусь без всего описанного в требованиях, получаю нормальную зарплату и в моем коде без проблем разбирается любой программист который просто знает ПХП, поскольку ни фреймворков, ни шаблонизаторов ни ООП ради ООП «потому что так круто и не ООП — не тру» там нету. И это не мешает мне одному строить отличные проэкты, верстать, писать JS с jQuery, знать отлично MySQL и жить припевая.
0
Psih #
Да, ООП в меру рулит. Со мной щас студент работает, он в PHP совсем не давно, а я 7-й год. Он в моём коде через месяц как рыба в воде себя чувствовал. И ООП есть, и модульная система на объектах построена, и паттерны применены. Однако оно всё написано легко и доступно и без излишних наворотов.
+15
sl_bug #
Прочитав первую и вторую части лично у меня сложилось мнение о некорректности ваших требований. Во всяком случае вы не указали должность на которую выбираете специалиста. Когда я был на интервью на должность java-программиста в банковской сфере (софт для банкоматов, pos-терминалов и сервера для процессингового центра) мне предложили простой тест — написать сервлет в котором можно добавлять рингтоны, скачивать, просматривать описание (условия — Hibernate, Spring, ant). Все что было нужно для данной должности было покрыто (как минимум скоростью исполнения и знанием где и что читать). Все остальное можно изучить (или нет) за испытательный срок. Если требовать от человека все и сразу, то очень долго придется искать (да и заплатить не мало).
–12
peterpro #
Знаете, пожалуй это именно специфика гибких проектов и именно на PHP. Здесь нужны именно широкий кругозор, энтузиазм и умение вписаться в архитектуру, т.к. фронт работ постоянно изменяется.
–9
sl_bug #
Я не считаю что специалист по пхп должен обязательно идеально знать MySQL и JS, т.к. чаще всего пхп программисты работают с фреймворками (т.е. мускул побоку) а JS это работа верстальщика чаще всего.
–2
peterpro #
Простите, но это резко расходится с моими представлениями о командной работе

>пхп программисты работают с фреймворками (т.е. мускул побоку)
Фреймворк — фреймворком, а понимание того, что такое индекс, и почему от ввода денормализованного поля для кшеирования система заработала в 3 раза быстрее дорогого стоит! К тому же не все операции можно выполнить через какую-нибудь ORM.

>JS это работа верстальщика чаще всего.
Опять же не соглашусь. Верстальщик отвечает за представление, так что часть JS действительно можно отдать ему, если это касается оформления, но вся логика приложения (в т.ч. и AJAX) всё-таки лежит на программисте.
+2
lazycoder #
Однако спрашивать про InnoDB и MyISAM и про другие особенности MySQL тоже немного однобоко, например потому, что есть такая штука PostgreSQL и после перехода не неё на мускуль обратно как-то не хочется, если требований таких нету. Это, конечно же, ИМХО, а не холивар, но хочу заметить — это надо учитывать. Но в общем и целом — очень и очень хоршая статья. Если бы каждый неадекватный интервьюер пользовался хотя бы частью советов отсюда, то многим стало бы легче жить.
+7
LimeOrange #
a). Для проектирования и корректирования использования БД есть DBA. Не требуйте от программиста быть человеком-окрестром.
б). Верстальщику отдается документация, что и на какой интерфейс отправлять/получать. Если следовать нормальному RESTу, то у верстальщика с этим не должно возникать абсолютно никаких проблем.
в). btw, верстальщик и front-end программист — не всегда одно и то же. Не стоит валить front-end программирование на back-end разработчика, это бесит. Точнее даже не так. Это БЕСИТ.
+2
zerkms #
пардон, но кто в приложении тогда будет писать запросы? :-))) отдельно нанятый DBA-помогайка-программисту? :-)))
–5
sl_bug #
Ajax запросы? — Верстальщик. Он пишет запросы. А пхп программист пишет только ответы. Что вполне логично. Иначе вы получите специалиста «два в одном», за которого придется заплатить больше чем за одного :) Я не утверждаю что разделять всегда целесообразно и что у пхп программиста знания JS должны отсутствовать. Я лишь говорю что такой специалист должен (и будет) «стоить» дороже.
+1
zerkms #
я же говорил о DBA, соответственно — я о mysql.

так или иначе, конкретно по ответу: адекватному специалисту по пхп _НЕ ПОЛУЧИТСЯ_ не уметь писать примитивные вещи на js и верстать хотя бы немного. вообще не получится. если он даже этого не знает — это сигнал к тому, что и с пхп там всё совсем-совсем плохо.

касаемо mysql — тебе ли мне ли говорить, что производительный проект это быстрые запросы и быстрый код. не получится написать одного в отрыве от другого. не получится написать быстрый код, не зная специфики используемой субд.
–1
sl_bug #
я согласен что не получиться :) мы с тобой уже сталкивались с этим. но я вполне мог бы писать пхп код, а кто-нить другой оптимизировать мои мускул запросы. это даже может было бы быстрее(и дешевле), если бы я не знал как адекватно писать запросы и нормализировать таблицы
+1
odiszapc #
По моему MySQL для худо-бедно типовых сайтов настолько прост, что нанимать отдельного чела под это — непозволительная роскошь. ДА и вообще разве MySQL сложен в освоении
+1
dukelion #
Mysql прост, но поэтому налажать даже с простейшим JOIN-ом так, что он будет выполняться 30-60 секунд очень легко…
Правда для большей части типовых сайтов это не так уж важно
–4
peterpro #
Ой.

Т.е. вместо связки "(php + js) программист и верстальщик" мы получаем «php-программист и (js-программист и верстальщик)»? Мне кажется, что это нерационально.
–1
zerkms #
это рационально, когда есть:

а) очень сложный проект
б) звезда сервер-сайд программирования с навыками клиент-сайда
в) звезда клиент-сайд программирования со знанием сервер-сайда
–4
peterpro #
Если это очень сложный проект, то можно выделить следующие роли:
— архитектор кода
— DBA
— программисты PHP
— программист JS
— верстальщик
— системный архитектор

По моему, это оптимально.
–3
zerkms #
хотелось бы уточнить, что этот комментарий мой список таки дополняет, а не отменяет :-)
–3
sl_bug #
сюда еще стоить добавить отдельного архитектора БД (который работает в связке с архитектором кода)
–3
zerkms #
DBA он и есть, подозреваю :-)
–3
sl_bug #
врядли. архитектор только рисует таблицы. DBA же помогает с оптимизацей запросов и типов используемых хранилищ. но это мое лично мнение.
–1
dukelion #
«оптимизация запросов» иногда связана с тем, что таблицы надо перерисовывать :) Грамотный DBA как раз и должен проектировать схему БД
0
d3z #
Ни в коем случае не он! Если только проектная команда не занимается разработкой очередного дейтинга.
A database administrator (DBA) is a person responsible for the design, implementation, maintenance and repair of an organization's database.

К сожалению, исключения случаются всё чаще и чаще. Даже дейтинги упали в качестве!
+1
basilisk #
DBA — это не только ценный мех database administrator, но ещё и database architect
0
d3z #
Разве я не отметил это, выделив слово «design» в определении?
–4
peterpro #
Я думаю, что оба архитектора + DBA способны выполнить эту роль, хотя конечно, все зависит от задачи.
0
remal #
А где вы бюджет найдете на такое кол-во людей? Практически все современные большие проекты современности, что сразу приходят в голову, делались командой в два раза меньше.
+3
Psih #
Есть не очень большие (по объёму), но достаточно ёмкие проекты, где программистов есть целесообразность унивесального комбаина сомнительна. Вопервых потому, что если пытатся охватить весь этот пласт до уровня эксперта, то вам нужно искать человека ни с 3-5-7 лет опыта, а 10+ стабильно. И портфолио у него должно быть очень внушающим. Я по себе знаю (7-й год идёт, за плечами из большого: портал irc.lv, социальная сеть boomtime.lv, несколько систем управления предприятиями, в данный момент социальная сеть fizzer.ph которая полностью спроектирована мною и реализована в небольшой комманде в 3 человека), что не реально уметь это всё хотя бы так, что бы потом небыло стыдно показать тем, кто специализируется более узко. Например я настоящему UI программисту свой JS постыжусь показать, т.к. мне не хватает продвинутых знаний JS и подходов программирования на нём, что бы сделать красивый модульный функционал — вобщем сделать AJAX приложение в полном смысле этого слова. В итоге довольно много inline js на jquery и на что мозгов хватило, вынесено во внешние JS файлы. Зато серверная часть (PHP, MySQL (& MySQL Cluster), memcache) у меня на высоте. И если честно, я даже не хочу лезть в продвинутый JS из-за объёма, который требуется реально проштудировать что бы стать настоящим Гуру с большой буквы. Всё же семья, заботы реального мира, преподавание в школе веб технологий, и в конце концов нужно отдыхать что бы не перегореть. Поетому мой фокус — это PHP & MySQL и сопутствубщие серверные технологии. А HTML, CSS и JS на себя взял мой коллега, и т.к. он этим занимается больше чем серверным программированием, то у него и получается лучше и быстрее. В итоге каждый занимается своей частью и наша эффективность гораздо выше, чем была до этого, когда мы каждый пытались по принципу универсального комбаина работать.
+1
develop7 #
Кстати, в Нивале разрабы общаются с БД через хранимки, которые пишет DBA.
0
iexx #
А как же вы будете программировать на фреймворке не используя БД? Хорошее знание SQL просто необходимо. По Javascript тоже самое, особенно если учесть, что очень часто нынче используется ajax. Как будете создавать такое приложение? backend/frontend отдельно?
0
remal #
Огромное количество человеко-часов митингов и гора документации — наше все!
0
taliban #
я щас работаю над проектом где флеш используется как frontend, не поверите, я пишу backend, а флешер frontend. не вижу большой разницы flash или Javascript, принцип ведь тот же
0
taliban #
Вы не совсем правы, я далеко не гуру, но не провалился бы на таком собеседовании, в принципе ничего там не описано сверх естественного, если человек увлекается своей работой, то он будет знать 90% из предложенного в топике
0
remal #
Ждите гору минусов. На Хабре считают, что программисты не должны чистить сортиры, точнее верстать:)
+4
tushev #
Угу. На самом деле на Хабре считается, что в любом, даже мелком PHP проекте должны учавствовать: Архитектор + DBA + PHP программер + HTML верстальщик + JS програмер (5 шт.)
Но не согласен я с этим и все тут! Для реально большого проекта это правильно, а для мелкого лучше если все будет выполнено одним программером. Вышеупомянутые 5 человек будут дольше договариваться и согласовывать работы между собой.

Для примера, когда я беру на работу PHP-програмиста, я всегда от него требую базовые знания в остальных областях. Какой бы крутой PHP программер ни был, но если он не может сделать UI компоненты на JS, или плохо понимает чем отличается WHERE от HAVING в SQL, то я такого однобокого разработчика к себе на работу никогда не возьму.

Изучить эти смежные области на базовом уровне для толкового PHP-програмера это вопрос пары недель. Стать экспертом во всех областях это конечно крайне тяжело, тут я не спорю.
+3
remal #
Что есть «реально большой»? Гугл, Яндекс? — Да, пожалуй. У всяких Фейсбуков, Твиттеров и т.п. вся команда создателей была человек 5. Поэтому в «реально больших» проектах заняты единицы из огромного числа веб-девелоперов.

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

Когда я как-то услышал от PHP программиста, что он не может 2 строчки в CSS поправить в мелком проекте, т.к. на это есть верстальщик фрилансер(!!!), я просто охренел. О чем думало его начальство, позволяя тратить огромное кол-во времени на передачу работы фрилансеру и обратно, я не знаю. Я бы, услышав такое, сразу бы спросил хочет ли этот программист дальше с нами работать.
–1
tushev #
Я согласен что во многих IT облостях однобокий программист это вполне нормально. Но в Web-разработках все на столько завязано друг на друге, что однобокий программист становиться реально неуклюжим.
0
remal #
А я не согласен. Однобокость везде плоха. Программирование — это прежде всего решение конкретных задач, а не написание кода.
0
taliban #
я не знаю как сделать UI компоненты на JS, и не поверите, я отлично знаю чистый JS, но вот на собеседовании провалюсь именно на этом, вы меня не возьмете, а ведь это реально узнать за 10 минут, просто я не сталкивался с этим
0
tushev #
Если вы отлично знаете чистый JS и устройство браузеров, и сможете это доказать, то я пойму что быстро освоить создание UI для вас не проблема. Так что вовсе не обязательно провалитесь. Я собеседование провожу не по формальным признакам, а пытаюсь оценить возможности человека.
0
taliban #
я к тому веду, что алгоритмы дают на собеседованиях не для того чтоб посмотреть прочтитал ли человек кнута, а для того чтоб понять на сколько он может мыслить, он может и не написать решение алгоритмом, но человек берущий его на работу судя по его попыткам будет знать ход мыслей человека… стандартные функции можно выучить, программировать можно научиться без проблем, а вот мыслить…
–1
Sartor #
Вы дали мне стимул для более глубокого изучения паттернов. Все пункты для меня беспрекословны, спасибо.
–4
peterpro #
Спасибо!
Рекомендую вместе с великой книгой GoF «Шаблоны ООП» ОБЯЗАТЕЛЬНО просматривать конкретные примеры реализации на конкретном ЯП, чтобы знания не «повисали в воздухе».

Еще могу порекомендовать «Шаблоны корпоративных приложений» Фаулера.
–2
zerkms #
>> Вообще, главное правило, которое я вывел за 7 лет практики
кстати, от кого-то из великих есть похожая фраза, только об алгоритмах и структурах данных

навскидку нагуглить не получилось…
–3
zerkms #
упс, промазал. должно было уйти в первый уровень комментов.
–7
peterpro #
Вполне вероятно :) Я не претендую на то, чтобы это называлось "«Великим законом peterpro», просто практика действительно показала, что рефакторинг куда дешевле реинжиниринга :)
–1
Zimmer #
Это у Никлауса Вирта есть книга, «Алгоритмы + структуры данных = программы»
–1
d3z #
Начинайте работать с каким-нибудь хорошим фреймворком. Знание паттернов, а главное — необходимость в этих знаниях, придут следом. Беспрекословное следование советам, начинайте уже после того, как появится реальная необходимость в паттернах.
0
zerkms #
>> умеет выкручиваться в случае, если конкретная реализация паттерна подзабыта
если человек _ПОМНИТ_ конкретную реализацию паттерна — это куда более плохо, чем знает паттерн. паттерн — это не готовое решение, а набор техник и советов.

так вот — нужно знать техники, а не реализацию.
–1
sl_bug #
знание (или конкретной реализации), без адекватного знания языка может привести к очень кривому коду. Причем на собеседовании человек вполне сможет пройти все пункты указанные в посте.

«Слышишь звон, да не знаешь где он»
+3
sl_bug #
Это я к тому что знание паттернов у наших электриков (схемы подключения), не помешало им сегодня дать на весь дом вместо 220в, 380в. В итоге их зверения — «у нас все з***ись», против наших — «все что было включено в розетку сгорело» )

P.S. Да у меня сегодня плохое отношение ко всему.
0
zerkms #
не получается осилить аналогию с электриками.

ты предлагаешь, чтобы люди бездумно писали зазубренный код что ли? :-)) или всё таки адекватно могли применить свои знания.

в случае с электриками — они как раз зазубрили и не думая произвели ряд механических па. вместо того, чтобы адекватно ситуации определённые знания применить.
+1
dime #
>не помешало им сегодня дать на весь дом вместо 220в, 380в.
Извините, что не по теме, но я, как бывший КИПовец не понимаю как такое возможно. Вместо нуля воткнуть фазу? Это нереально, тк ноль заземлён много где.
0
sl_bug #
именно так они и сделали :) лампочки разлетались фонтаном. все что было включено в розетку сдохло. у некоторых даже загорелось. в нашей стране ничего невозможного не бывает :)
0
dime #
Но как??! Нейтраль заземляется на входе в здание, а так же во всех щитках. Поменять нулевой провод с фазным означает заземлить фазу — её выбьет на подстанции.
На уровне отдельно взятого щитка ещё представляю как сделать (но там, обычно провода короткие и чтобы такое проделать — это надо сознательную диверсию устраивать). А здание… Только если там и изначально проводку делали какие-то халтурщики-самопальщики.
0
sl_bug #
Все очень просто. Меняли основной кабель, подключили резервный. Резервный был немного подпален (как позже выяснилось). Через 10 минут работы сгорел ноль и естественно он заместился фазой. Во всяком случае это мое понимание происшествия.
0
dime #
А-а-а! Понял. Ещё должен быть значительный «перекос фаз» в здании — много-много потребителей на одной-двух фазах и мало на оставшейся/оставшихся. Если нагрузка равномерная, ничего такого не произойдёт — отгоревшая нейтраль заменяется не фазой, а своего рода векторной суммой того что там получается в результате по фазам.
0
zerkms #
может привести.
>> «Причем на собеседовании человек вполне сможет пройти все пункты указанные в посте.»
и тогда это проблема собеседования в общем — значит пресловутые «пункты, указанные в посте» недостаточно хорошо оценивают кандидата.

настаиваю:
— кривой код может получиться и с зазубриванием паттернов
— ровный код может получиться и с только лишь знанием идеологии конкретного паттерна

настаиваю: знать конкретные реализации вредно _ВСЕГДА_ — знать нужно паттерны.
–4
peterpro #
Знаете, наверное я недостаточно широко раскрыл тему паттернов в посте.
Естественно, что речь идет именно про код, созданный на основе понимания, что есть паттерн и с чем его едят :)
–1
sl_bug #
Знать паттерны на пальцах тоже может быть вредно. Допустим я знаю паттерн «Observer», но не знаю специфики ruby. В итоге я изобрету кривейший код в мире :)
0
zerkms #
из этой фразы не следует, что тебе нужно _ПОМНИТЬ_ реализацию на руби :-)

из этой фразы следует, что:
— тебе нужно знать руби
— тебе нужно знать паттерн

если ты не знаешь языка программирования достаточно глубоко — то твой код ВСЕГДА будет лапшой, бесприменительно — будь-то реализация паттернов или просто кодирование конкретного контроллера.

а вот специфические знания в виде «я помню конкретную реализацию конкретного паттерна» в итоге приводят к тому, что человек реализовывает по памяти 2 паттерна и систему подпорок между ними, чтобы они в принципе могли взаимодействовать. Вместо того — чтобы взять и написать сексуальный код, основываясь на _ПОНИМАНИИ_ принципов.
–2
sl_bug #
Я не говорил что знание конкретной реализации полезно, я лишь привел пример когда даже знание самого паттерна в абстракции может быть опасно без знания (причем глубокого, учитывая что на простых задачах знания языка адекватное) языка.
–2
sl_bug #
в любом случае практическая задача на собеседовании всегда более адекватна чем абстрактные паттерны и мускул запросы.
+1
kirushik #
На руби, кстати, нет нужды самому писать Observer. Есть observer.rb.
Дальше в классе-источнике событий пишем
include Observable
и что-то вроде notify_observers(изменившийся_параметр) в нужных местах.

Далее классы, у которых есть метод update, цепляются к источнику с помощью появившегося метода add_observer

Собственно, ruby-fu состоит на 90% именно в знании/умении найти доки по уже написанной либе. С питоном так же, я думаю.
+5
amarao #
Средней мятости рубашка и джинсы (те из них, которые поновее). Перед собеседованием могу побриться.
+13
Vladson #
За всех не скажу, но из тех людей с кем я работал, действительно опытными и умными программистами были люди которые даже на собеседование одевались «неформально», т.е просто джинсы и свитер (я сам вовсе «исповедую» панк-культуру, ибо хоть у меня и есть костюм, я в нём выгляжу как придурок, по этому хожу всегда в грязных и рваных джинсах, на собеседование могу одеть чистые джинсы и чистую рубашку)

Так что я на этот пункт не смотрю, для себя я вычеркнул «неформальность» и смотрю только на «неопрятность » (неопрятность тоже спорна, но ладно, надо же хоть на что-то смотреть)

По личному опыту (пару раз доводилось подбирать программистов в рамках 30-ти минутной беседы)
Важно:
— Ответственность. (тревожные знаки «человек живёт с мамой», положительные знаки «женат с детьми» или хотя бы «живёт один, но есть домашние животные»)
— Честность (тревожные знаки «знание в совершенстве HTML/Ajax/XML/CSS/и много страшных слов», нельзя знать всё и в совершенстве, человек должен «знать в совершенстве» мало, и не скрывать что только поверхностно знаком с многим другим.)
— Ну и наконец «пригодность» для именно этого проекта (глупо требовать знание ASM у программиста на РНР, важно узнать может ли он делать то ради чего его собственно берут)
— После выяснения этого (когда уже достаточно времени с ним пообщались) остаётся сделать выбор «приятный ли он человек» (сработается с коллективом, или это «себе на уме человек»)
–12
peterpro #
В принципе всё это прекрасно ложится в канву повествования.
Кстати, спасибо за пункты о семейном положении и домашних животных, пожалуй, это поможет разнообразить интервью :)
+11
Chikiro #
Про семейную жизнь невежливо спрашивать, мало ли что там у человека. Вы же не соседка-сплетница, лезьт в личную жизнь, а потенциальный работодатель.

Я девушка, мне на собеседованиях постоянно задавали вопрос, когда собираюсь заводить детей, так мерзко после этого и хочется только одного — уйти. Какой ответ они хотят услышать? Какое отоншение это имеет к работе?
+1
Pilat #
Очень простое — их вопрос на самом деле значит «а не уйдёте ли Вы в ближайшее время в декретный отпуск, оставив нас без программиста и с оплачиваемой незанятой ставкой». С Вашей стороны это гадко, а с точки зрения нанимателя молодая девушка — это красиво, но очень ненадёжно :(
+2
Chikiro #
Представьте, что на собеседование приходит девушка с диагнозом «бесплодие», а вы ей такие вопросы. Не стоит вообще этой темы касаться, по-моему. Семейная жизнь — она сложная вещь, никто ни от чего не застрахован.

Лучше такие личные вопросы допытывать на испытательном сроке в непринужденной беседе во время обеденного перерыва.
0
Pilat #
Это тоже не выход — Вы приходите, работаете, а потом Вам сообщают что Вы не подходите, причём приходится придумывать какой-то предлог.

Вообще говоря я объяснил откуда такие вопросы у работодателя возникают.
+1
viat0r #
Тогда можно начать спрашивать соискателя сколько человек считают его подонком и сколько хорошим человеком и вообще сколько у него друзей, чтобы попытаться определить как человек уживается в коллективе. Нет ли у него привычки ковырять в носу и как часто принимает душ — а то вдруг сейчас он чист и выбрит, а на деле от него воняет и с ним неприятно работать. Это конечно было бы очень удобно для работодателя, но всему есть пределы и нормы этики и морали никто не отменял. А если Вы считаете нормальным нарушать их, значит Вы сам не из тех работодателей, с которыми приятно работать.
+2
dime #
Ну, и ну! А представте, если на собеседование приходит человек с диагнозом «идиотия», а его про пхп справшивают, да про паттерны всякие :). Что ж теперь про пхп не спрашивать — вдруг попадётся придурок и ему сделается гадко. Он же ещё и ударить, пожалуй, может за такое :).
ЗЫ. Эту абстрактную девушку же никто не спрашивает про её диагнозы, кому они нахрен нужны. Ответ «в ближайшее время — нет» нейтрален и всех устроит.
0
plandem #
а если приходит кандидатка с целью устроиться, чтобы получать пособие? :) ну в смысле уже все знает, все решено, нужно только подготовиться как следует :)

понять можно обе стороны.
0
viat0r #
а задав такой кандидатке этот вопрос, работодатель надеется получить какие-либо гарантии того, что она не забеременеет в ближайшее время? :)
Вывод — вопрос не этичен, неприятен соискателю и при этом ответ на него не дает работодателю абсолютно ничего.
Стоит ли задавать такой вопрос?
0
plandem #
я вроде и не утверждал, что это что-то дает :) соврать можно всегда, в крайнем случае.

повторюсь еще раз — понять можно обе стороны :)
0
Vladson #
Вот именно по этому (ниже уже пояснил) что надо просто быть тактичным, и вести разговор в виде непринуждённой беседы. Возможно «интервьюверу» даже можно первому заговорить о своей личной жизни (например рассказать что у него есть любимая кошка, или собака, или жена в конце концов, и спросить у кандидата «а вы кошек любите ?»)

Но (забыл пояснить) мало того это поможет понять «что за человек перед вами», это так-же поможет кандидату расслабиться (любое собеседование, это какой никакой но всё-же стресс)

Видел ситуации когда отличным (на первый взгляд) кандидатам категорически отказывали, просто потому что собеседование шло в ключе «разговор двух роботов», или ещё хуже как «разговор студента с вредным профессором», не потому что кто-то из них глуп или некомпетентен, просто не удалось «установить контакт».
+2
Vladson #
Это собеседование, а не допрос, то есть разговор предназначенный чтоб «установить контакт» с человеком (который в отличии от 100 человек чьи резюме были выкинуты в помойку) имеет шанс стать вам коллегой не на день и не на два, а может и стать вам хорошим другом на долгие годы.

Это должна быть непринуждённая беседа, а чтоб не случилась «мало ли что там у человека» надо просто быть тактичным.
–3
Insar #
Я формулирую этот вопрос так — Задам личные вопросы, это не попытка выспросить что-то, прошу ответить очень кратко. Замужем-не замужем, есть дети-нет детей, живете с родителями, своя квартира, съемная квартира? Если замужем, прошу сказать — кем работает супруг и как давно женаты.
Хотя инфу про замужем-не замужем-дети-не дети можно получить из анкеты, тем не менее, такого рода вопрос, есть простейший тест на стрессоустойчивость. И большинство отвечают на эти вопросы без малейшего напряга.
Ответы на эти вопросы проливают свет на возможную мотивацию соискателя. И вполне определенным образом его характеризуют.
0
Chikiro #
Я тоже отвечала без напряга, но впечатление о работодателе сильно падало. Как вы отнесетесь, если потенциальный работник попросит вас о своей личной жизни рассказать, дети-родственники, хронические заболевания, имущество. %)

Узнавайте о личной жизни на испытательном сроке. ;)
0
plandem #
да ладно… иногда нужно подыгрывать :) в свое время я указывал, что гражданский брак, т.к. отпадало сразу куча вопросов :)
+1
tushev #
Понимаю что вам может быть мерзко.
Но и вы поймите, для работодателя это очень важный вопрос, особенно если девушка претендует на ответственную должность, от которой будет многое зависеть.

Если вы претендуете на должность секретарши или уборщицы, то без проблем. Забеременела — ушла в декрет, а вам тут же нашли замену.

Но если вы претендуете на руководящую должность или на ответственную инженерную, то ваш внезапный уход может серьезно подорвать работу бизнеса.
0
andreycha #
Джинсы и свитер — вполне себе хороший «прикид». Обращать внимание действительно следует скорее на неопрятность и неряшливость.

А вот все вопросы из личной категории — в топку. Работодатель видит меня как работника, и моя личная сфера его не должна интересовать (по крайней мере, на собеседовании).
–1
Vladson #
Я не претендую на великую истину, ибо я сам не набираю обычно программистов, я немного по другую сторону. (по этому не надо воспринимать мой пост как критику, а только как «мой личный взгляд»)
Просто чисто случайно выпала такая честь пару раз. Причём я набирал не в «свою команду» (которой руковожу) а в «свою команду» (равных себе, где я был рядовым программером) по этому конечно прошу не бить ногами если мои методы «непрофессиональны». Скажу только что это сработало, и из тех кого я рекомендовал начальству взять на работу было пару человек которых «забраковали» на многих собеседованиях (они не впечатлили рядовых HR-специалистов) однако они прекрасно сработались с имеющейся командой, а один даже получил повышение ещё до окончания испытательного срока…
–1
mephisto #
гг я бы пожалуй не прошел такое собеседование, у меня с JS-фреймворками никак, а с паттернами проектирования слабовато (да, каюсь, имею склонность к велосипедостроению и страсть к перформансу)
–1
Vladson #
В таких случаях (имею ту-же проблему) на «интервьювера» можно воздействовать попыткой «заговорить зубы» (компании бывают разные, одним нужен «результат сразу не смотря ни на что» другим «перспективный кадр») например объяснить что не работали с этим фреймворком потому что вам «для дома, для семьи» не надо, а на прошлой работе тоже не требовалось, но пояснить что вы сможете быстро освоить (будет действительно положительным знаком если это будет не ложь, способность к обучению и желание развиваться это положительный знак для большинства HR-специалистов)
–2
mephisto #
С обучаемостью у меня все в порядке как раз)
Спасибо за совет.

Вообще я на данный момент фрилансю/занимаюсь своим проектом, поэтому необходимости участвовать в собеседованиях нет, но заранее страшно))) вдруг понадобится. жизнь — штука непредсказуемая.
НЛО прилетело и опубликовало эту надпись здесь
0
Zhenek #
Ну ТС же не требования к вакансии указывает, а план проведения собеседования. Каждый интервьюер сам решит на сколько использовать эти советы. Если вакансия на 5 к, то внешнего вида должно быть достаточно, а уж на 60 — разумно будет применить все советы из обеих статей.
–8
zerkms #
заниженные требования на 60к имхо.
всё описанное в статьях — mustknow. начальный уровень.
–3
deniamnet #
и не говори!
+2
Psih #
Именно из-за таких мнений настоящим асам в своём деле и дают вечно 30-40к на собеседованиях, мол у него нету обширного опыта в JS/CSS/HTML (само собой что человек с ними знаком на нормальном уровне и может большую часть заданий сделать), зато он асс в серверных технологиях и может выпотрошить PHP, MySQL вдоль и поперёк и поставить всё в правильные рельсы. А такие вот «умные» люди и говорят — да он там не знает раз, два, три, а с четыре, пять и шесть работал мало. Нафиг его, он не стоит 60к.

Насчёт must know — из статьи этого не ясно. Описывается так, что складывается впечатление о том, что собеседуемый должен всё это знать достаточно хорошо.
+2
remal #
В итоге каждый получает столько, сколько достоин. Причем достоин по огромной совокупности качеств, в т.ч. и умению себя продавать.

Мир разработки меняется быстро. Одни технологии приходят на смену другим, а способы разработки постоянно эволюционируют. Программист, который знает *только* PHP и MySQL через некий промежуток времени может оказаться обузой, т.к. не способен обучаться. А если он способен обучаться, то и смежные технологии он будет знать на хорошем уровне.
0
Psih #
О «только PHP и MySQL» речи небыло, нужно знать их и смежные технологии. Но это не значит что нужно знать обязательно Python с Django, Ruby с Ruby On Rails и.т.д. Человек вполне себе нужен, если он крутится вокруг PHP и MySQL и соотвественно развивается вместе с этими технологиями и не брезгует иногда по собственному желанию, иногда из необходимости обучится чему-то новому. Я вот кручусь вокруг PHP и MySQL, ну и ествественно memcache, смотрю на Sphinx и MongoDB, рассматриваю фреймворки и.т.д. Да, я может не знаю часть из этого на практике, или практика небольшая. Но я много читаю, интересуюсь всем что с этим связанно и если надо, то быстренько подтянусь. Соль не в «знать и уметь» как букварь. Соль в «знать о продукте, иметь о нём представление и уметь быстро освоить».
+2
zerkms #
Я оцениваю с «высоты» своего опыта и своих доходов. Я стою — столько сколько мне платят, а не столько, сколько я хотел бы получать.

И не надо за эту мою точку зрения вешать на меня все грехи из разряда «именно из-за таких мнений».

по поводу «достаточно хорошо»:

>> список дополнительных вопросов можно расширить в сторону более низкого уровня (чем POST отличается от GET?)
более низкий уровень? вы смеётесь? это основы, которые должен знать каждый и которые вообще должно быть стыдно задавать на собеседованиях на зарплату в 60тысяч.
0
VolCh #
Часто задают, видимо часто не отвечают. Но тут ещё вопрос как называется конкретная вакансия, одно дело если что-то вроде «Senior PHP Developer», другое «веб-программист», зарплата может стоять одинаковая, но для первой действительно стыдно, а вот для второй…

Я, например, шлю свои резюме практически везде, где в требованиях нет незнакомых аббревиатур/названий (естественно на «senior'а» или «ведущего» не претендую), а для знакомых не указано «отличное владение». Написано «знание AJAX» — знаю в общих чертах (что там знать-то собственно, если иметь в виду определение/принцип работы, а не конкретные реализации в разных фреймворках — одну функцию JS?) — пишу в резюме что знаю, не уточняя уровень знания, и т. д.

В итоге получаю резюме формально удовлетворяющее требованиям работодателя и не содержащее ни слова неправды. На уровень зарплаты даже не смотрю, просто копипастю его в резюме (+- 10%), т. к. давно понял, что чем меньше запрошенная цифра отличается от указанной в вакансии, тем больше шансов, что вызовут на собеседование, а не отправят резюме в корзину (запросить 20к на вакансию, где написано 60-70к, равно как и наоборот — способ потратить своё время зря в 100% случаев). Как мне кажется, очень многие (особенно без опыта работы, портфолио и т. п.) поступают точно так же, а то и ещё хуже — указывают то, о чём даже представления не имеют (я хотя бы имею и, как правило, хоть «hello world» написал).

Конечно, зачастую я так трачу зря время работодателя, но сами виноваты, что формально я им подхожу, а на деле их не устраивают во многих смежных с «голым» php(+mysql) областях/технологиях мои очень поверхностные знания и отсутствие опыта (или опыт только на словах, без портфолио).
0
remal #
А вам *свое* время не жалко когда вы указываете не устраивающую вас з/п?
0
VolCh #
Что значит «не устраивающую»? Написано в вакансии, например, 50к, а меня устроило бы и 20 — пишу, что хочу 45. А вакансий меньше 20 давно не видел :)
0
dime #
А что может вам помешать на собеседовании спросить у интервьюера про эту самую зарплату? Вы ведь всё-равно тоже тем или иным способом оцениваете работодателя в том числе и на интервью, интервью — процесс обоюдный (хотя многие соискатели об этом не догадываются).
–2
lazycoder #
Очень хорошая статья, но подход не массовый, по крайней мере пока, а жаль.
–1
chiffa_ua #
Спасибо за хорошую статью, ностальгировал почти до слез вспоминая родину и наем программистов :) Если я так буду интервьюировать народ в Австралии, то шансов нанять человека — абсолютный ноль или он будет из бывшего Союза :) Индусы и китайцы сплошные «профессиональный программист на XML» или «год разрабатывал инновационную технологию HOHO — отправка HTML через Ajax».
–1
iSeiryu #
Мой бывший одногрпуник учится в Австралии сейчас и говорит что их там грузят больше, чем здесь и материал дают куда интереснее и глубже.
Думается, что с таким образованием найти хорошего специалиста не проблема. Правда он учится на Java-программиста.
0
chiffa_ua #
Джависты мне не попадались, а вот РНР программистов интервьюирую часто. Нашего HR вобще тёпает от одного только «нужно найти кандидата...» Это не потому что я вредный, а потому что они однобокие какие-то и совершенствоваться не хотят, «плывут» если ставишь в ситуацию где нужно подумать. Поэтому и набираем таких «ух ты! умеет курить документацию — берем и будешь обучать его!»
–1
antimirov #
Не могу поверить, что есть ВУЗы, где «учат на Java-программистов». Это как?
0
iSeiryu #
Там при поступлении был выбор предметов, он выбрал с ориентацией на Java.
0
tnz #
Хмм. Значит надо ехать в Австралию, видимо найти нормальную работу PHP-прогером не составит особого труда.
+7
Caiiiycuk #
Ваш подход, в каком то смысле, не чем не отличается от подхода бабушек в отделе кадров которые сидят на заводе и набирают не пойми кого. Вы как и они спрашивают ну все что знают, а так как они ни чего не знаю то и берут кого попало. Вы же наоборот знаете многое, поэтому к Вам попасть наверное трудно и попадают к Вам достаточно знающие люди, но это ваша заслуга, а не подхода. Если вы посадите не знающего человека в отдел кадров и скажете набирать по этому принципу он наберет всякий шлак, потому что сам не знает большинство вещей о которых вы ему расскажите в наставлении.

Особенно напрягает эгоизм этого подхода, будто кандидат должен Вам что то, а Вы ему нет. Лучше бы рассказали что Вы предлагаете вашим сотрудникам и имеет смысл ли к Вам идти, я на собеседывании всегда проедаю мозги что же мне предложат, и тогда знаете что бывает — работодатель понимает что он не настолько хорошо, зачастую совсем не хорош и не соответствует выдвигаемым вам требованиям. Типа ты должен уметь то то то, и еще вот тут, и сверху еще вот это, и в субботу иногда поработать, а платить я тебе буду 10к и то в конверте, понимаете…
0
Psih #
Да, насчёт применения вы абсолютно правы.

Я вот вчера сходил на собеседование, больше из любопытства, чем из необходимости. Собеседование получилось совсем не формальным, и человек узнал всё что он хотел, и о себе задачах он подробно рассказал. И просто пообщались на професиональные темы, обменялись мнениями. Было чертовски приятно сходить туда.
0
dime #
>Если вы посадите не знающего человека в отдел кадров и скажете набирать по этому принципу он наберет всякий шлак
Пардон, но я не понял — а зачем, собственно, «сажать» незнающего человека на работу, которая требует от него этих знаний??? Давайте уборщице объясним по-быстрому принципы программирования и посадим за компьютер — она вам тоже напрограммирует «всякий шлак». Зачем так делать? Всякую работу следует давать человеку способному её выполнить. Зачем давать неспособному?
>Особенно напрягает эгоизм этого подхода, будто кандидат должен Вам что то, а Вы ему нет.
??? Тоже инфантилизм какой-то. Работодатель спрашивает у кандидата то, что интересует работодателя. Кандидат спрашивает у работодателя то, что интересует кандидата. Где проблема? Где эгоизм? Кандидату запрещено задавать вопросы? Где такое бывает??? Зарплата? Я вообще ещё не проходил ни одного интервью, на которых моя кандидатура рассматривалась бы всерьёз и где при этом не обсуждался бы вопрос о зарплате. Работодатель либо сам называет предложение, либо просит меня назвать мои предпочтения (последнее — чаще).
>Типа ты должен уметь то то то, и еще вот тут, и сверху еще вот это, и в субботу иногда поработать, а платить я тебе буду 10к и то в конверте, понимаете…
Нет, не понимаю. Вас ведь не в армию берут, где отказаться от предложения невозможно. Не устраивают условия — просто отказываетесь и всё.
0
Caiiiycuk #
>Пардон, но я не понял — а зачем, собственно, «сажать» незнающего человека на работу, которая требует от него этих знаний??

Вот я про то и говорю, что при такой постановке вопроса, человек по подобру персонала должен разбираться в предмете не хуже главного специалиста, а ведь эти должности разные. Это было гипотетически придумано, что бы выявить минусы подхода. В первом приближении можно взять большое предприятие где работают 1000 человек, ну заводик какой-нибудь, и обычно отдел кадров там общий. Если сажать для подбора персонала какого-нибудь начальника отдела программирования, то он вместо своей работы будет людей на нанимать, так ведь тоже не делают. Поэтому там зачастую оказывается человек который средненько разбирается в вопросе, ну мне так кажется.
0
dime #
Так, вроде, коллективным разумом уже давно пришли к мысли, что конечное принятие решения о приёме на работу должен определять специалист и/или будущий непосредственный начальник. А дело сотрудника отдела кадров большого предприятия — предварительный фильтр.
Или вы знаете методику с помощью которой неспециалист в программировании может отобрать специалиста из потока кандидатов? Тогда открывайте консалтинговое агентство, к вам будет очередь на год вперёд :).
НЛО прилетело и опубликовало эту надпись здесь
+1
Anonym #
Человек может быть очень толковым программистом, но растеряться на собеседовании и «поплыть» на самых тупых вопросах. Мне всё-таки кажется, лучше придумать интересное задание, которое охватывает весь перечисленный в вопросах базис и дать его сделать. Вы увидите и стиль кода, и знания. Это конечно не значит, что с кандидатом вообще не надо разговаривать, спросите о прошлой работе.
–1
uglock #
Если человек «плывет» на собеседовании при малейшем стрессе — он точно также радостно «поплывет», к примеру, в момент аврала. Ну или в магазине там ему нахамят, а он сам не свой весь день будет. Нафиг-нафиг.
0
Anonym #
Вас человек как квалифицированный программист интересует или как секретарь, который в магазин будет бегать?
0
uglock #
Меня интересует квалифицированный программист который умеет работать в команде. А ежели он плывет при ненапряжном часовом общении с коллегами и начальством — ну его нафиг.

И да, стрессы — неотемлимая часть работы, тут извините никак. Я не хочу чтобы очередной релиз застопорился на два дня из-за того, что какой-то вася вдруг растерялся и поплыл.
0
Anonym #
А теперь перечитываем внимательно мой комментарий:
… растеряться на собеседовании и «поплыть» на самых тупых вопросах…

Собеседование — это стресс даже для очень самоуверенного и умного человека. К сожалению, среди программистов встречаются умные, но скромные. При работе они как правило дисциплинированы и хорошо вливаются в коллектив. Но на собеседовании могут и растеряться.
+1
vlsergey #
Меня сильно забавляло, что перед приёмом в ВУЗ, всем рассказывали «как бороться со стрессом на экзамене» (когда ещё были эти экзамены). Забавляло это потому, что после ежегодных школьных олимпиад и десятка-другого «псевдоэкзаменов» зимой и осенью никакого стресса на экзамене летом просто не было. А сейчас модно рассказывать «как бороться со стрессом на собеседовании». Ау! Сильный стресс может быть у человека, который на собеседовании в первый-второй раз. И вы верите, что это может быть профессионал?

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

Конечно, это если вы не проводите «стресс-собеседование». Хотя что-то мне кажется, что компании, которые эти сами «стресс-собеседования» проводят, будут и работать заставлять в постоянном стрессе 60 часов в неделю.
+1
Anonym #
Когда сам уже собеседовал будущих программистов, могу сказать, что волнующихся и растерянных на собеседовании почти нет.

Потому что вам попадались люди, которые по каким-то причинам часто меняли работу.
Сильный стресс может быть у человека, который на собеседовании в первый-второй раз. И вы верите, что это может быть профессионал?

Конечно верю. Человек мог работать на одном месте несколько лет, добиться там многого, и понять, что он перерос свою должность. Он может вообще второй раз в жизни на собеседование идет, но это ведь не значит, что он не профессионал.
–1
vlsergey #
Потому что вам попадались люди, которые по каким-то причинам часто меняли работу

Неа, большинство из них были люди, которые вообще первый раз шли на работу. Студентов отбирали пачками.

Конечно верю

Уточню вопрос. Верите ли вы в то, что если в результате этого стресса у человека не будет ни возможности рассказать о своих знаниях, ни о своём опыте, ни отрешать тестовые задачки и вообще он не сможет просто поговорить, то его стоить серьёзно рассматривать как кандидата?
Из чего вы сделаете такой вывод?
0
Anonym #
Не утрируйте. Человек может забыть как написать запрос, забыть какой-то паттерн, растеряться и не вспомнить еще что-нибудь. Но он расскажет вам где учился, чем он занимался на прошлом месте работы, какие задачи выполнял и сколько получал. Этой беседы будет достаточно, чтобы оценить его адекватность и общительность. Дайте ему интересное задание, которое охватит базис того, чем ему придется заниматься у вас и оставьте на 2 часа у компьютера, и вы узнаете насколько он умен.
–1
vlsergey #
Ну тогда это не то, что я называю «стрессом», и не то, чего стоит бояться работодателю или работоискателю. Один-два вопроса погоды не делают.
–3
peterpro #
Именно поэтому — никаких тестов и упор на личный разговор :)
0
tnz #
Если он плывет в незнакомой обстановке, в разговоре с чужим и страшным начальником, то это еще не факт, что он будет плыть в сплоченном и таком домашнем коллективе.
0
uglock #
*риторически* Ну и зачем мне нелюдимые боязливые программисты?

ЗЫ ну а ваще редко с такими встречаюсь. Обычно программисты — вполне себе уверенные и общительные люди.
0
tnz #
Я просто по себе сужу.
Да и вообще палка о двух концах. Если на собеседовании общительный, то не факт, что вольется в коллективю
–1
uglock #
Ну хорошие, годные _обязательные_ требования. После них можно уже с кандидатом начинать нормальный разговор.
+15
pwl #
Создается впечатление что вы набираете человека на проект длиной от месяца до трех.
а если быть точнее, то вы хотите чтобы человек с улицы разирался в системе, которую вы пишете годами. чтобы он пришел, написал пару сайтов и умер (ну не увольнять-же его в самаом деле! вроде незачто...)
вас не интересуют люди неработавшиее плотно с ООП.
вас не интересуют люди неработавшиее плотно с mysql.

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

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

вам нужен человек будет клепать сайты по штуке в квартал по заданным шаблонам.
вот только никак не пойму, почему вы его называете программистом.
+12
Caiiiycuk #
Пока шёл на работу созрели еще мысли. Я так понимаю вы работаете в Москве, поэтому я думаю отобрать php программиста не такая проблема. Представляю что к Вам на собеседование придет человек 100, из них пусть 20 обладают добротными знаниями php, из которых Вы примете одного — не сложно.

А теперь Вы живете в n-ске, вам нужен программист, к вам на собеседование пришло 7 человек, из них почти никто не писал крупных проектов, один даже вообще не занает что такое пхп. На самом деле, после нескольких недель ожидания кандидатов, Вы понимаете что из 7 человек, только два произвели на хоть какое-то впечатление. Один потому что знает азы и чуть более пхп, разумеется без крупных проектов, так домашние странички и пр., но перевернуть строку может да и выглядел опрятно %). А другой не знает пхп вообще, знает Delphi и ваши задачки может на Delphi решить и паттерны говорит знает, работает правда уже где-то, и сам не уверен что хочет у Вас работать, да и выглядит как-то замученно он. Вот кого интересно стоит брать в такой ситуации, с Вашей точки зрения — никого?

Просто понимаете, если человек что-то еще не разу не делал, это не значит что у него не получится. Например пишет человек на Delphi не потому что он ничего другого не сможет, просто область задач у него такая, а php он еще не пробовал. Человек и так работает, а к Вам пришел просто попытать счастья ведь php он не знает, и вообщем-то сам еще не понимает что хочет у вас работать поэтому и замученный такой.

Отобрать из 100 достойных — 1 лучшего, это не достижение. Отобрать из 2 не очень — 1 который станет лучшим, это достижение, это мое мнение.
0
Caiiiycuk #
Извините, не планировал это ответом к Вашему высказыванию.
0
pwl #
однако, вы смогли гораздо более гладко описать практически ту-же мысль. спасибо :)
–1
Pilat #
pwl> ваши шутки с ловлей претендентов на sql запросах выглядели-бы уместно, будь вы злобным перподавателем на экзамене. зачем спрашивать у него вещи которым он может обучиться меньше чем за день?

Если он за всю жизнь не изучил тривиальные вещи — как можно ждать что он изучит за сутки? Да и теория баз данных — это не один фокус.

Caiiiycuk> Вы не правы. Если Вам нужен программист, а приходят всё повора и секретарши — вы возьмёте из них лучшего? Вообще предполагалось, что человек будет работать, а не годами сидеть учиться. Если у Вас есть куча времени чтобы учить человека, может быть надо не проекты делать, а открыть учебный центр?
+1
Cim #
>Если он за всю жизнь не изучил тривиальные вещи — как можно ждать что он изучит за сутки? Да и теория баз данных — это не один фокус.
Может, ему не нужно это было?
Я знаю ZendFramework, работал доктриной, разрабатывал проект на питоне на Django. Могу сказать, что хорошо-отлично знаю PHP 5 — и все его возможности в ООП я изучил и умею ими пользоваться.
Знаю и использую некоторые паттерны(MVC, фабрики etc). Но мне в принципе не нужно писать SQL-запросы сложнее «SELECT * FROM posts WHERE id=33 LEFT JOIN users WHERE posts.user_id = users.id». Ну, не нужны они мне. Проект такой, что хватает Zend_Db.
Азы какие-то знаю, могу агрегатные функции да HAVIG юзать и всё. Дык что теперь? Я — ничего не умеющий «еще один пхпшник»?
+1
Pilat #
Ну значит Вам в помощь надо нанимать специалиста по SQL, то есть ещё одна ставка должна открываться. Вот и делайте вывод — либо Вы учились в институте, знаете что такое реляционные базы данных и можете работать в разнообразных проектах, либо выучили несколько трюков и можете работать только в нескольких уже изученных областях. Есть понятие теории, а есть понятие эмпирических знаний. У Вас, судя по всему, второе.
+1
Cim #
Если проект крупный, то в команде как минимум несколько программистов, в том числе и специально обученный человек-архитектор. Или просто более опытный программист по совместительству является и архитектором. Пока будет идти испытательный срок, можно и пару книжек по теории БД изучить — как раз получите и опытного программиста в одной области, и в то же время подкованного в другой.
Но с другой стороны, выгоднее нанять и Левшу: он и графический дизайн придумает, и в фотошопе вам макет нарисует, а потом сверстает, затем спроектирует масштабируемую базу данных и приложение. Потом, безусловно, всё напишет, оттестирует, сам же станет и тех.поддержкой. Платить ему тоже не нужно: не будет денег на проезд — не сбежит из офиса.

Хотя, безусловно, если есть выбор из сотни кандидатов, то можно позволить себе выискивать тот самый самородок.
0
Pilat #
Не надо подтасовок. Никто не предлагал нанимать левшу, знающего и фотошоп и программирование.
–1
tushev #
Кстати, я от веб-програмеров требую знание фотошопа. На уровне «чего-нибудь передвинуть». Это не очень оптимально, когда программист каждый раз когда надо поправить какую-нибудь мелочь дизайн-макете, или поменять кнопочку, бежит к дизайнеру. Если программер в глаза не видел фотошопа, я ему выделю 1-2 дня на освоение азов. А больших знаний в фотошопе ему и не понадобиться.
0
Cim #
По уму, тот, кто занимается серверной логикой(«пхпшник») не должен лезть в работу того, кто занимается юзер-интерфейсом(«верстальщик»).
И оба они программисты, но кто же из них более «вебовый»?
0
Psih #
А иногда и студенты попадаются очень толковые. Вот у меня сейчас такой работает. Опыта почти небыло, в основном всё чисто для себя делал. И что? Работает щас во всю, прекрасно во всём разбирается, за неделю влюлся в работу на все 100%. Ему интересно, он работает с удовольствием, с хорошим чуством юмора, иногда в офисе ржач стоит неимоверный. По одёжке неформал. И при этом обсалютно нормальный адекватный человек. Попади он в какую-нить хорошую контору на собеседование и испытательный срок — его бы не отпустили. Вобщем то мы тоже не отпустим :)
–3
peterpro #
Знать, что такое интерфейс и MVC — это плотная работа с ООП?
GROUP BY и HAVING, самое сложное, что было в посте — это самые страшные ужасы MySQL?:)

>вас не интересуют люди, которые через 2-3 месяца работы скажут, что вашу систему нужно переписывать на корню

А как он мне такое скажет, если он плавает в ООП и MySQL?:) Т. е. что он посоветует переписать, как диагностирует проблему?

>вам нужен человек будет клепать сайты по штуке в квартал по заданным шаблонам.

Как раз для клёпки сайтов не нужна квалификация и хорошие задатки программиста.

НЛО прилетело и опубликовало эту надпись здесь
0
deniamnet #
невольно прочитал
«вещи которыми он может облучиться меньше чем за день»
вместо
«вещи которым он может обучиться меньше чем за день»

о_О
надо спать больше
+1
dime #
>вас не интересуют люди неработавшиее плотно с ООП.
Если проекты работодателя ОО, это более чем оправдано. На пхп существенно проще писать макаронный код, чем ОО, поэтому люди, «неработавшиее плотно с ООП» за неделю сделают из стройной системы такой отстой, с которым разбираться придётся годами.
>вас не интересуют люди неработавшиее плотно с mysql
Тут, думаю, ситуация so-so. Впрочем про шнец-жнец-на-пхп-и-майэкуэль-игрец уже обсудили выше. Специфика пхп, фигле :)
>вас не интересуют люди, которые через 2-3 месяца работы скажут, что вашу систему нужно переписывать на корню, потому что она тормозит процесс разработки в n раз.
Это изобретатели велосипедов-то? :) Обычно, они вообще мало кого интересуют в коммерческом программировании (хотя и бывает). По-моему, ориентация на приоритет использования имеющихся технологий перед велосипедостроением вполне оправдана. Ну, и делать такие выводы и давать такие советы всё-таки дело архитектора, а не рядового программиста. Хотя он может, да, но я не совсем понял откуда такой вывод.
>ваши шутки с ловлей претендентов на sql запросах выглядели-бы уместно, будь вы злобным перподавателем на экзамене. зачем спрашивать у него вещи которым он может обучиться меньше чем за день?
Плюс стопиццот! Фраза про «срезал» бодрого пхп-шника на пересечении таблиц убила наповал!
+3
Ramm #
Когда он не смог построить простой запрос с JOIN'oм, я его спросил: «А как бы вы реализовали такую схему..?».
Правильным ответом было бы: «Я введу дополнительную таблицу связей articles2categories.»
Его ответом было: «Я создам по полю в articles и categories и буду хранить там соответствующие id в засериализованном виде»

Не то чтобы я хотел придраться, но «срезал человека» — это с ходу сказал ему «ты не прав»?
Вообще такой подход право на жизнь вполне имеет, сильно зависит от условий задачи. :)
–1
dkurilenko #
это все бесполезно.
Ну не знает PHP/Java и т.д и что? При наличии мозгов выучит за пару недель (есть у нас таки люди в команде кто пришел с C-багажом и пишет дальше на JAVA). Поэтому спрашиваю логику исключително, когда же дело доходит до кода — предлагаю писать на языке по выбору кандидата. Пропустить достойного кандидата — это грех.
0
Cim #
Даже немного странно: пришел собеседоваться на вакансию PHP-программиста, а не знает PHP. Но обязательно выучит!
0
Pilat #
Ничего странного. Я в вакансии писал «Perl PostgreSQL JS» — приходили люди, были готовы «все эти системы» выучить…

dkurilenko: Java учится месяцами, если не годами. И к Вам на вакансию PHP приходят люди, способные php выучить быстро? Почему они не находят для себя тогда нормальной работы по своему профилю?
0
Cim #
Интересно, сколько этим людям времени надо, чтобы выучить Perl PostgreSQL JS, если они, как я понимаю, совершенно с этими системами не работали…
В принципе, изучив пару ЯП, новый изучается легко. Но синтаксис пёрла и я могу заучить за один вечер — только вот какой же из меня программист-то будет…
0
Pilat #
В этом и проблема. Массовое программирование веб-сайтов на PHP+Mysql породило представление, что всё в программировании очень просто. Эта сладкая парочка просто изувечила поколение…
0
ashofthedream #
динамические языки вообще развращают, если бы не достаточно объемная база плюсов втиснутая в могу голову когда я еще учился, то даже и не знаю как бы перешел с тех же php/js на java.
0
ashofthedream #
Ох, как же я с вами не согласен. Сейчас уже пишу на яве, поддерживая довольно массивный проект. Так вот, встречаются там места написанные людьми у которых основная сишная специализация, или даже php-шная… столько не матерился давно уже. Если вы правда считаете, что за две недели можно научится грамотно писать на новом языке — ну чтож, видимо для ваш каша из различных стилей которые еле пашут и в некоторый момент по совершенно непонятной причине падают\косячут\тупят в одном классе или пакете вполне приемлима, а что, и так работает.

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

0
dkurilenko #
Каждый смотрит со своей колокольни:
когда к вам приходит кандидат с phD из Стенфорда, отработавший 10-15 лет в индустрии в мейнстрим компаниях (SGI, symantec, yahoo и т.д) и знающий только C/C++, а нужна java, то глупо ему отказывть. Все таланты важны. Люблю когда кандидат умнее меня, есть чему научиться у него.
0
ashofthedream #
Вот-вот, что колокольня то у каждого своя. Ситуации бывают разные: смысл вам от такого пришедшего человека, если у вас система которой пять лет, которую надо поддерживать потому как переписывать с нуля не совсем оправдано? А как быстро этот человек может влиться в разработку, если до дедлайна осталось пара месяцев, продукт готов процентов на 90%, а в трекере еще две сотни разных задач на исправление косяков. И можно ли его посадить на исправление самых банальных, что бы хоть познакомился с новым языком? А если он отработал 10-15 лет, то ему уже за 30, и что-то новое он воспринимает уже со своей колокольни и совершенно иначе нежели выпускник какого-нибудь вуза, который может в свои 20 при опыте работы в один год может впитывать все в себя как губка?

Да и я с ужасом буду наблюдать за картиной как пять талантов каждый со своим багажом знаний в разных областях и разных языках, начнут писать что-то новое на новом для них языке.
0
dkurilenko #
как бы ни казалось странно, но это работает.
В соседнем с нами Google точно такой же принцип наема и пока работает тоже.

НАсчет возраста — достаточно дискриминационный вопрос. Есть у нас архитектор за 50, код пишет в emacs. Только он пишет его в 10 раз быстрее чем кто другой в среде разработки, он работает у него сразу после написания и без переписывания, вот это я называю опыт.
0
twi #
У меня другой подход, я не против агентов (за качественную услуги и заплатить не грех)
0
Bambr #
А где берутся вменяемые агенты? За последний месяц я получил на свое резюме кучу откликов от кадровых агенств. Из них только пара кадровиков читала резюме/понимала кого ищет. Я хронический perl-разработчик, и у меня не упоминается php в резюме. Вообще. Тем не менее, большинство хотело именно пыхера. После этого отношение к профессионализму агентов остается крайне негативное.
0
v_k #
Первым делом стоит оценить внешний вид и поведение соискателя. Естественно, никто не требует, чтобы человек был в костюме-тройке и имел повадки настоящего английского джентльмена, но прикид в стиле «я к вам с ночной дискотеки» или комбинация из пяти нервных тиков должны стать для вас первым тревожным звоночком.
Никто не спорит, что особенности стиля — это личное дело каждого, но откровенная неопрятность или «неформатность» кандидата означает, что приняв его вы начинаете азартную игру, в которой вы можете или приобрести Григория Перельмана, или, что более вероятно — такой кандидат в чем-нибудь будет сильно не вписываться в отдел разработки.

Прошу прощения, но больше походит нежелание научиться руководить такими как Перельман.
НЛО прилетело и опубликовало эту надпись здесь
+3
tnz #
Как понять, что я хочу работать с ним? По внешнему виду? По манере разговора? Или по знаниям?
–2
peterpro #
Круто.
Т.е. я иду к начальству и говорю: «Вот там сидит клвый Вася, от разговора с ним у меня тепло на душе и хочет он немного — берём!»?
НЛО прилетело и опубликовало эту надпись здесь
0
peterpro #
Кхм.
Наверное, вы несколько неверно поняли пост. Я — программист, моё дело — оценить насколько человек может быть полезен проекту как программист. Вы же мне предлагаете «понять хотите ли вы работать с ним.»

Как я могу понять, хочу ли я работать с ним, если не знаю уровня его профессионализма?
НЛО прилетело и опубликовало эту надпись здесь
0
peterpro #
С чего вы взяли, что программист-интервьюер не заинтересован в лучших кадрах? Цель поисков — усилить отдел разработки, а не тащить балласт.

И как по вашему должна происходить оценка профессиональных качеств соискателя?
НЛО прилетело и опубликовало эту надпись здесь
0
peterpro #
Прекрасно! Такой соискатель отправляется выше с соответствующей пометкой, что человек крайне будет полезен и представляет собой отличного кандидата.

Кстати, вы так и не ответили на вопрос — как по вашему должна происходить оценка профессиональных качеств соискателя?
НЛО прилетело и опубликовало эту надпись здесь
0
peterpro #
Знаете, когда я начинал этот разговор с Вами, я думал, что Вы выскажете какую-нибудь необычную вещь и каким-нибудь образом ее обоснуете. Оказалось, что вы либо резонёр, либо простой тролль.

Всего хорошего.
НЛО прилетело и опубликовало эту надпись здесь
0
offline15 #
Мне вот больше интересно что случается когда вы ошиблись с кандидатом? Приняли на работу, а люди из команды приходят и говорят мол что за урода ты нам подкинул? Вы начинаете оправдываться, что он талантлив не по годам или всё-таки признаёте, что наверное 10 программистов проведя неделю в обществе этого работника успели лучше понять его породу и идёте к директору и говорите мол освобождаю кресло, мои методы не сработали, я сам оказывается плохой HR…

Только не говорите что всех людей которых вы приняли на работу стали мегауспешными программистами, лояльными к компании и всё такое.
0
uglock #
Ну есть испытательный срок и непродление контракта после него. :)
0
offline15 #
Это понятно, но зачем тогда HR нужен? Просто бери тогда людей на испытательный срок и всё. Мне кажется если HR пропустил такого человека который не прошёл испытательный срок это плохой HR. А если прошёл, но не стал успешным программистом то это ещё хуже :) Знания то любой программист сам может проверить, а вот понять есть ли потенциал для развития, тут нужен специалист, коим HR по идее и является.
0
dime #
>Просто бери тогда людей на испытательный срок и всё.
Э-эээ. Кого именно брать с таким подходом? Первого по дате обращения? Или всех 350, которые резюме прислали?
НЛО прилетело и опубликовало эту надпись здесь
0
i360u #
Почему-то все, кто пишет о подборе программистов забывают изначально указать специализацию, а это именно то, что в первую очередь определяет методы отбора. А методы эти могут быть диаметрально противоположными и различаться так же, как отличаются задачи. И вообще надоело читать очевидные поучительные сентенции, думаю те, кто сам этого всего не понимает интуитивно или по опыту — лучше пусть чем-то другим занимаются. Формализм в подобного рода собеседованиях убъет охоту связываться с вами у кандидатов с интересными мозгами.
0
Enfield #
Проходил очень похожее собеседование. Люди гоняли меня и в хвост и в гриву по вопросам «А как реализован HashMap?», а какие методы есть у класса «java.lang.Thread», а в чем отличие JSP 1.0 от JSP 2.0?
По итогам сказали что никаких глубоких знаний у меня не обнаружили и я им не подхожу. В общем очень, очень часто встречается школота которая спрашивает просто тонны СПРАВОЧНОЙ информации, которая гуглится за секунды или выдается IDE по нажаию ctrl+space и думает что результаты такого собеседования будут адекватными.
0
tushev #
А им видимо надо на работу не програмера, а человека фотографической памятью, которые мануалы наизусть заучивает.
Ну а практика и опыт, это видимо не очень важно :-)
+1
r3verser #
мы отошли от главного, какая должность будет у нанятого человека (я так понимаю — php программист), и какую вилку зарплат вы предлогаете за данный набор знаний?
0
tushev #
Я на собеседованиях часто ставлю какую нибудь задачу, даю максимум 5-10 минут на подумать. Дальше кандидат должен мне рассказать на пальцах (ну и нарисовал пару схемок/диаграм) что и как он будет делать. Какие варианты. Куда будет копать. Какие библиотеки или решения будет применять.
После этого сразу становиться видно, тупит человек или нет. Насколько хорошо у него работают мозги. Какая у него была практика. С чем он уже имел дело.

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

Задачи о которых я говорю как правило не учебные, типа «найти кратчайший путь в направленном графе», а что нибудь практическое, похожее на реальный проект с которым работник столкнется в своей рабочей деятельности. Например для веб-программера это часто проектирование интернет магазина с витриной, историей заказов, системой дисконтов, связкой со складским ПО и т.п… дополнить по желанию.
–1
r3verser #
>>проектирование интернет магазина с витриной, историей заказов, системой дисконтов, связкой со складским ПО и т.п

простите, это по вашему задачка на 5-10 минут? Я не хочу у Вас работать.
+1
remal #
Набросать устно тенденции и описать примерную схему БД — да, задача на 10 минут. Или теперь «рассказать на пальцах» значит что-то другое?
0
tushev #
Для человека который уже делал десяток сайтов-каталогов или магазинчиков — однозначно ДА.
Хорошие кандидаты на такую задачу сразу берут карандаш и начинают сходу рисовать, по ходу рассказывая свои соображения и варианты решений.

Придумать структуру БД, основные классы и рассказать какие необходимы экраны и компоненты пользовательского интерфейса можно за 5-10 минут, если есть практика, а не абстрактное знание веб-технологий.
Разумеется я здесь не говорю о создании подробного ТЗ с детальной прорисовкой всех UML-ей, ER-ов и Layout-ов страниц.

Если кандидат ни разу не сталкивался на практике с подобными проектами, я ему слегка помогу, предложив некий каркас. Но если он и дальше продолжит тупить, ответ будет «Извините, но Вам будет сложно работать у нас. До свидания.»
0
basilisk #
Смысл в подобных заданиях не создать полностью готовую схему БД и спецификацию за 10 минут.
Это может быть просто карандашный набросок структуры, причём кривой, неверной, незавершённой. На данном этапе нужно проверить ход мыслей человека, сможет ли он донести до вас свою идею, насколько легко поймёт ваши замечания и насколько оперативно исправит.

Так что выполнение подобного задания говорит о важном: получится ли сработаться с данным человеком или нет? Понимаете ли вы друг друга? Насколько он вменяем?

Конечно, если интервьювер — злобный экзаменатор, как в лирическом отступлении у автора топика, то данное задание бесполезно.
0
PsychodelEKS #
Товарищи, которые пишут, что юзают Zend_Db (и т.п.) и этого достаточно (т.е. понимать мускул не надо), а MySQL можно выучить за пару дней — вы жестоко ошибаетесь =) Да, мускул не оракл, но тем не менее.
И знать чем движки таблиц в мускуле отличаются тоже нужно. Ну и знать, как писать быстрые запросы, разбивая длинные и сложные на короткие и простые, играться с индексами, временными таблицами, когда можно сделать вложенный запрос, а когда нет и т.п. — это далеко не сразу приходит. И по книжке такого «видения» не получишь, хоть и будешь знать, какие принципы и подходы бывают.
+1
dime #
Если задача этого не требует, зачем этим заниматься? Рискуете навсегда погрязнуть в деталях.
0
PsychodelEKS #
Я бы назвал это профессионализмом =) Ну или желанием знать и уметь больше, чем тебе «нужно». Опять же, если не знаешь как можно, не факт, что поймешь, что нужно тебе именно так, а не как делается сейчкас.
0
dime #
И что, вместо работы заниматься изучением тонкостей работы движка мускула, которые в работе не нужны? :)
Или вы этим занимаетесь после работы? А пострес уже изучили до тонкостей? А оракл? А ноэскуэльные системы? Все?!? :) А то вдруг не поймёте, что вам нужны именно они, а не мускуль?
Это всё хорошо и профессионально. Но человек может специализироваться на том же зенде и знать как раз его до корки, а опимизацией дб запросов в компании вообще могут отдельные дба заниматься. Разделение труда придумали для эффективность. Пхп-программисты «в одном флаконе» об этом, видимо, не слышали никогда :).
0
PsychodelEKS #
Я не говорю о тонкостях, которые не нужны (хотя не уверен, что такие есть), транзакции, например, очень даже нужны в определенных случаях.
Я работаю с мускулом, поэтому изучаю его во время работы, когда нужно что-то ускорить (я работаю над серьезными в плане объемов вещами) или сделать какую-то хитрую выборку. Если бы была возможность изучать и остальные в рабочее время — изучал бы и их =)
А знание зенда досконально никак не влияет на способности писать правильные выборки. В тех случаях, когда нужно делать что-то действительно сложное, все равно запросы пишутся плейнтекстом, т.к. в угоду совместимости dbo не умеет множества полезных/необходимых вещей.
Ну и да, я считаю что отдельный человек для написания запросов под мускул это перебор. Для оракла и т.п., когда в запросе должна быть сложная логика — да, но не для уровня mysql и т.п.
Я считаю, что чем больше человек знает о том как работает система в целом, тем более правильный код будет писать.
0
dulepov #
Здравый и разумный подход.
–1
alekciy #
Только мне кажется, что автор описал должность «системный архитектор», а не «программист»?
Просто конечно хорошо, если человек имеет об архитектуре/дизайне представление, но положа рука на сердце можно ли сказать, что все это, в контексте веба, нужно рядовому программисту? Имхо, нет, не нужно. Типичная задача для веба: вот разверстанные статические страницы, вот CMS, натянуть за ХХ дней первое на второе.
0
peterpro #
В статье речь шла про отбор на один большой проект, а вы говорите про много маленьких :)
0
alekciy #
В большом (берем за критерий размера количество вовлеченных в процесс людей), хотя упоминания размеров проекта в статье я как то не заметил, как раз различия между простыми программерами и системным архитектом/дизайнером еще сильнее.
+1
madesst #
Пока читал не покидало чувство, что писал человек который меня собеседовал в свое время. Дочитал до автора — бывший коллега (аллоха, Петя =).
И, да, я был на собеседовании «с ночной дискотеки» =)

А вообще, подход хороший, действующий, как показала практика. Вот только для решения задачек, все же лучше предоставлять машину, а не предлагать претендентам выводить скобочки руками на бумажке. Это как-то глупо и не актуально, имхо.
–1
peterpro #
Привет! :)

Хоть тебя собеседовал и не я, но принципы были заложены как раз примерно те же. Кстати, вполне по этому планчику недавно был крайне интересный юноша, что показывает, что методика имеет право на жизнь ;)
+1
theelephant #
>Кандидат должен на бумаге изобразить простой шаблон проектирования…
А чернила и перо свои приносить?
21 Век блин.

КОГДА БУДЕТЕ ВЫДЕЛЯТЬ РАБОЧЕЕ МЕСТО И ИНТЕРНЕТ? (Задрало).

0
resurection #
«Никаких тестов» — спорно.

Был случай с прогером, который не плохо знал теорию и свободно общался о пересечениях таблиц, таблице связей, JOIN, ООП, 3 кита ООПа и т.п… Поставил я ему не сложную задачу. Спустя 4 часа он тыкая пальцем в програмный код подзывает меня со словами «смотри я сделал». Подхожу и из далека замечаю, что не хватает точки с запятой.
— Ты её запускал?
— Нет.
— Запусти
Parse error.

Через 10 минут опять тыкая пальцем в програмный код: «смотри, всё нашёл и исправил». Подхожу, смотрю: исправил в одном месте, но в другом нет.
— Опять не запускал?
— нет
— Запусти
Parse Error

И так в течении оставшихся 4-х часов каждые 5-15 минут он меня подзывал со словами.
— всё работает!
— Запускал?
— нет.
— Запусти.
— млин, не работает.
— Ты сначала запускай, потом меня зови.

5-15 минут спустя:
— Всё работает
— Запускал?
— Нет.


______
В итоге так ничего и не заработало.
Был ещё один кадр, тоже смешной, но рассказывать долго. Т.е. это не единичный случай, а я понял, что практика — это один из главных показателей. В отличае от внешнего вида.
0
nalimka #
Статья рассказывает как автор отбирает программистов.
Ну что — не плохо отбирает: придумал подходящую для себя систему.
Думаю статья будет полезна в основном соикателям работы у автора.

Так как абсолютно все пункты краткого резюме и большинство целей и задач
собеседования будут строго специфичны у других нанимателей.
Ни один пунтк не является универсально хорошим советом.
Общая для всех — только конечная цель собеседования: нанять программиста. =)

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

Это может помочь как раз при найме неопытного сотрудника: у того кто лучше соображает — больше потенциал развития.

0
GoldenAlex #
Да уж, из статьи более 80% мне вообще не понятно что это и как это. Вот когда составляются этакие резюме и подсказки для соискателя, то, я так понимаю, берётся употребление языка вцелом.

Прочитал вышенаписанное мною же и понял, что вообще ничего не понятно… ПХП вроде занимаюсь более 5 лет, но тут просто тёмный лес.

Автору — спасибо за новый и интересный материал, особенно за первую часть статьи.

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