Оценивал ли новых сотрудников?

Ответ

Да, я участвовал в проведении технических собеседований на позиции junior и middle-разработчиков. Моя роль обычно заключалась в оценке практических навыков через решение задач и обсуждение архитектурных решений.

Фокус оценки:

  1. Базовые концепции: Понимание ООП, паттернов проектирования (например, Singleton, Factory), принципов SOLID и работы с коллекциями.
  2. Практическое программирование: Реализация конкретной функциональности, например, парсера логов или простого API-эндпоинта. Я смотрю на чистоту кода, выбор алгоритмов и обработку edge-cases.
  3. Работа с данными: Умение составлять SQL-запросы средней сложности, понимание индексов и транзакций.

Пример типового задания для backend-кандидата:

// Реализуйте простой класс для валидации данных формы.
// Он должен принимать правила и данные, возвращать массив ошибок.
class FormValidator {
    private array $rules;
    private array $errors = [];

    public function __construct(array $rules) {
        $this->rules = $rules;
    }

    public function validate(array $data): bool {
        // Код проверки по правилам (required, email, min_length и т.д.)
        // ...
        return empty($this->errors);
    }

    public function getErrors(): array {
        return $this->errors;
    }
}

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

Ответ 18+ 🔞

А, так ты про собесы спрашиваешь? Ну да, приходилось, ёпта, этим заниматься — сидишь, как манда с ушами, и слушаешь, как джуны и миддлы пытаются не облажаться. Роль у меня была простая: выяснить, не пиздят ли они про свой опыт, или реально могут код написать, который не заставит меня потом ебать мои старые костыли, разгребая их говно.

На что я обычно смотрел, аж волнение ебать:

  1. Основы, блядь: Понимает ли человек, что такое ООП, или он просто слова слышал. Можешь объяснить, чем полиморфизм от инкапсуляции отличается, или ты просто мартышлюшка, которая копипастит с Stack Overflow? Паттерны там, SOLID — не чтобы назвать, а чтобы применить. И коллекции, ядрёна вошь, — не просто array туда-сюда пихать.
  2. Руки из жопы или нет: Вот тут самое интересное. Даю задачку — типа, напиши парсер логов или какой-нибудь простенький эндпоинт. И смотрю, блядь, как человек думает. Пишет ли он читаемый код, думает ли об исключительных ситуациях, или его решение — это один сплошной if-else на три экрана, от которого глаза кровоточат. Чистота кода — это всё, чувак, терпения ноль ебать на спагетти-код.
  3. С базами данных дружит?: Ну, middle-то уж точно должен. Не просто SELECT * FROM users, а какой-нибудь join сообразит, про индексы понимает, зачем они. Если на вопрос про транзакции начинает про ACID рассказывать, но не может объяснить, в какой реальной задаче они нужны — это доверия ебать ноль.

Вот, смотри, какую простыню могли заставить написать на бэкенде:

// Напиши класс, который данные формы проверит. Правила ему дашь, данные — он тебе скажет, что не так.
class FormValidator {
    private array $rules;
    private array $errors = [];

    public function __construct(array $rules) {
        $this->rules = $rules;
    }

    public function validate(array $data): bool {
        // Тут надо по правилам пройтись (обязательное поле, email, длина и всё такое)...
        // ...
        return empty($this->errors);
    }

    public function getErrors(): array {
        return $this->errors;
    }
}

И вот тут-то и начинается цирк. Один сразу про регулярки для email заводит, другой edge-cases ловит, а третий такой: «А можно библиотеку использовать?». Ну, ни хуя себе, конечно можно, но ты-то сам как?

Но самое главное, что я выносил из этих бесед — это не код, а коммуникация. Как человек вопросы задаёт: уточняет требования или сразу в пизду несётся делать ерунду. Как объясняет, что у него в голове происходит. И, что критично, как на подсказки реагирует. Если ему говоришь: «А тут, может, исключение выбросить?», а он упёрто стоит на своём, как хуй с горы — это плохой знак. А если слышит, думает и говорит: «Ага, точно, так лучше будет» — вот это уже теплится надежда, что с человеком можно будет работать, а не только ругаться.