В 2007 году я искал работу разработчика ПО в различных компаниях. В одной из них лучшей стратегией для получения должности стала дача неправильного ответа. Если вам кажется это странным, то позвольте мне объяснить произошедшее.
Когда я пришел на собеседование, меня встретили двое парней. Первый — технический руководитель, который был бы моим непосредственным тимлидом, а второй - его менеджер. Именно тимлид вёл нашу беседу и задавал мне вопросы.
Итак, после небольшого разговора и череды стандартных вопросов, меня попросили объяснить, что такое «трехуровневая архитектура».
Я дал общее определение «клиент-сервер-база данных». Также я сослался на наиболее общий бизнес-сценарий с веб-браузером в роли тонкого клиента, сервером веб-приложений и базой данных на нижнем уровне. Мне казалось, что их удовлетворил мой ответ.
Затем они перешли к следующему вопросу: «Как эта архитектура соотносится с шаблоном MVC (model-view-controller)?».
Я знал, что этот вопрос действительно каверзный, потому что многие люди делают ошибку, напрямую соотнося уровни архитектуры с каждым компонентом MVC. Но в реальности, MVC в большинстве случаев реализован на центральном уровне «приложения».
Если вы не верите мне, то взгляните, что написано в Wikipedia по поводу многоуровневой архитектуры:
В обычной ситуации я бы дал правильный ответ и подискутировал, если они были бы уверены в обратном.
Но проблема заключалась в менеджере, сидящем рядом. Если он не знал правильного ответа, то я бы тотально унизил его перед начальством. Так что либо он будет настаивать на своем и отрицать мою правоту, чтобы не упасть в грязь лицом. Либо ему придется согласиться, что он не прав, и упасть в грязь лицом. В любом случае, я видел только одно правильное решение: я должен дать ответ, который они считают правильным.
И я решил начать давать правильный ответ на вопрос, чтобы увидеть реакцию менеджера. Я начал отвечать: «MVC — это программный шаблон, поэтому он находится внутри написанного кода. В большинстве случаев этот код работает на среднем уровне, …» Но когда я увидел смущение менеджера, я понял, что он ожидал не этот ответ. И я продолжил: «View соотносится с уровнем «клиент», Controller с уровнем «сервер», а Model с уровнем «база данных».» Готово! Хороший ответ! Все удовлетворены, а я получил работу.
В чем же мораль истории? Собеседование — это история не только о ваших технических способностях, но еще и о навыках работы с людьми. И это хорошо, поскольку в работе вам нужно и то, и другое.
Когда я пришел на собеседование, меня встретили двое парней. Первый — технический руководитель, который был бы моим непосредственным тимлидом, а второй - его менеджер. Именно тимлид вёл нашу беседу и задавал мне вопросы.
Итак, после небольшого разговора и череды стандартных вопросов, меня попросили объяснить, что такое «трехуровневая архитектура».
Я дал общее определение «клиент-сервер-база данных». Также я сослался на наиболее общий бизнес-сценарий с веб-браузером в роли тонкого клиента, сервером веб-приложений и базой данных на нижнем уровне. Мне казалось, что их удовлетворил мой ответ.
Затем они перешли к следующему вопросу: «Как эта архитектура соотносится с шаблоном MVC (model-view-controller)?».
Я знал, что этот вопрос действительно каверзный, потому что многие люди делают ошибку, напрямую соотнося уровни архитектуры с каждым компонентом MVC. Но в реальности, MVC в большинстве случаев реализован на центральном уровне «приложения».
Если вы не верите мне, то взгляните, что написано в Wikipedia по поводу многоуровневой архитектуры:
Таким образом, вопрос заключался не только в том, какой правильный ответ, но также и в том, что они считают правильным ответом. Знали ли они об этом и хотят ли узнать глубину моих знаний? Или всё-таки нет?На первый взгляд, эти три уровня могут показаться схожими с концепцией MVC; однако, топологически они разные. Фундаментальное правило трехуровневой архитектуры заключается в том, что уровень «клиент» никогда напрямую не взаимодействует с уровнем «данные»; в трехуровневой модели все взаимодействия осуществляются посредством промежуточного уровня. Концептуально трехуровневая архитектура линейна. Однако MVC архитектура треугольна: View отправляет обновления в Controller, Controller обновляет Model, и View получает обновления напрямую от Model.
В обычной ситуации я бы дал правильный ответ и подискутировал, если они были бы уверены в обратном.
Но проблема заключалась в менеджере, сидящем рядом. Если он не знал правильного ответа, то я бы тотально унизил его перед начальством. Так что либо он будет настаивать на своем и отрицать мою правоту, чтобы не упасть в грязь лицом. Либо ему придется согласиться, что он не прав, и упасть в грязь лицом. В любом случае, я видел только одно правильное решение: я должен дать ответ, который они считают правильным.
И я решил начать давать правильный ответ на вопрос, чтобы увидеть реакцию менеджера. Я начал отвечать: «MVC — это программный шаблон, поэтому он находится внутри написанного кода. В большинстве случаев этот код работает на среднем уровне, …» Но когда я увидел смущение менеджера, я понял, что он ожидал не этот ответ. И я продолжил: «View соотносится с уровнем «клиент», Controller с уровнем «сервер», а Model с уровнем «база данных».» Готово! Хороший ответ! Все удовлетворены, а я получил работу.
В чем же мораль истории? Собеседование — это история не только о ваших технических способностях, но еще и о навыках работы с людьми. И это хорошо, поскольку в работе вам нужно и то, и другое.
Мне пришлось дать неправильный ответ на собеседовании, чтобы получить работу
В 2007 году я искал работу разработчика ПО в различных компаниях. В одной из них лучшей стратегией для получения должности стала дача неправильного ответа. Если вам кажется это странным, то...
habr.com