Вагиф Абилов (object) wrote,
Вагиф Абилов
object

Category:

Собеседования с программистами

Сполски обновил свои рекоммендации: http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html

Все больше склоняюсь к тому, что он прав: "At the end of the interview, you must be prepared to make a sharp decision about the candidate. There are only two possible outcomes to this decision: Hire or No Hire. There is no other possible answer."

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

Неплохая подборка вопросов и ссылок: http://www.hanselman.com/blog/WhatGreatNETDevelopersOughtToKnowMoreNETInterviewQuestions.aspx

Поскольку наша специализация - .NET, то для того, чтобы сложилось впечатление, затрагивают следующие темы:

1. Типы, передаваемые по ссылке и по значению (reference/value types). Boxing/unboxing. Смежный вопрос - как эффективность хранения и доступа коллекций value-типов улучшена в .NET 2.0 (generics). Был случай, когда уже на этом вопросе мнение о кандидате (к сожалению) сформировалось.

2. Обработка исключительных состояний. Кстати, разницу между "throw" и "throw ex" не знает почти никто.

3. ADO.NET, доступ к базам данных. Если кандидат понимает, что использование DataSet при записи данных позволительно, лишь когда данные спускаются с уровня интерфейса пользователя, это уже хорошо.

4. Assembly version management, strong naming.

5. XML. Тривиальный вопрос-индикатор: вам нужно объекты классы сохранить как XML-файл. Самый простой код, который позволит вам это сделать. Про XmlSerializer знает не больше половины кандидатов. Незнание этого еще не означает "No Hire", но это тревожный симптом: программист с опытом работы с .NET должен обладать соответствующим кругозором.

6. Disposable objects. Почему конструкция "using (SqlConnection con = new SqlConnection(...)) {}" возможна, а "using (string str = new string(...)) {}" - нет?

7. Средства обмена данными между процессами в .NET.

8. Вопросы для определения опыта работы с .NET: пользовался ли кандидат reflection, remoting, cross-domain communication, globalization. Отрицательные ответы на эти вопросы общего впечатления не ухудшают, а вот положительные идут в копилку.

9. Автоматизированные тесты. "Печально я гляжу на наше поколенье". Практически никто ими серьезно не пользуется, хотя ответственность за это несут, конечно, руководители проектов. Один из кандидатов со статусом руководителя, т.е. определяющий выбор инструментальных средств, сказал, что на ручное тестирование времени уходит много, а вот с автоматизированным тестированием пока не познакомился - времени нет. Видимо, ручное тестирование все съедает.

10. Любимые книги по профессии, часто посещаемые программистские сайты.

Я, однако, по-прежнему не прибегаю к практике постановки алгоритмических задача, которые кандидат должен в моем присутствии решить, написав соответсвующий код. Умение сконцетрироваться и выдать код хорошего качества в присутствии наблюдающего - имхо, способность, далеко не обязательная для хорошего программиста. Видимо, средний уровень кандидатов, приходящих к Джоэлю Сполски или в Майкрософт, значительно выше, чем у приходящих к нам, поэтому они могут позволить себе отсечь хороших программистов, не справившихся с волнением во время разговора. Мы стараемся их не упустить - не так уж велик выбор.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 46 comments