Firma, z którą współpracuję, poprosiła mnie o przeprowadzenie badań telefonicznych kandydatów, aby upewnić się, że nie są całkowicie zawstydzeni, gdy wysyłają kogoś do potencjalnego klienta.
Okazuje się, że znaczna liczba osób została umieszczona na roli programisty C ++. Nie spędzam dużo czasu w C ++, ale wykonałem kilka trywialnych i nietrywialnych projektów w tym języku. Uznałem, że „Wyjaśnij idiom RAII” byłoby fajnym pytaniem softballowym, na które najpoważniejsi programiści C ++ mogliby odpowiedzieć w półśnie, i pozwoliłoby mi przejść do bardziej interesujących pytań dotyczących doświadczenia. Okazuje się jednak, że ludzie, którzy mają ponad 10-letnie doświadczenie w C ++, nie rozpoznają tego terminu, nawet jeśli rozwinę skrót do „Pozyskiwanie zasobów to inicjalizacja”. Jeden z kandydatów posunął się tak daleko, że stwierdził, iż nie zawsze było praktyczne zastosowanie tej techniki w rozwoju systemu Windows, co moim zdaniem było dziwnym sentymentem, ale widziałem kilka przykładów, które prawdopodobnie potwierdzają tę myśl.).
Nawet kilku programistów C ++, których znam wystarczająco dobrze, aby ocenić ich kompetencje, stwierdziło, że nie rozpoznali tego terminu, ale po przeczytaniu podsumowania techniki, powiedział: „Och, tak, nie wiedziałem, że to imię. Po prostu myślałem o tych rzeczach jako o czymś, co musisz po prostu zrobić ”. Pamiętam ten termin z drugiego wydania książki Stroustrupa, mimo że pełne uderzenie nie doszło wtedy do skutku.
Czy zatem „czy możesz mi wyjaśnić idiom RAII?” uczciwe pytanie przesiewowe? Czy można oczekiwać, że wszyscy kompetentni programiści C ++ to zrozumieją? Czy ten termin jest bardziej ezoteryczny, niż myślałem? Zakładając, że kandydat nie zna tego terminu, czy istnieją pytania uzupełniające, które mogą pomóc mi dowiedzieć się, czy przynajmniej zinternalizowały praktyki, dzięki którym RAII działa? Czy istnieją lepsze alternatywne pytania „odchwaszczające”, które dają kandydatowi nieco swobody w udzielaniu odpowiedzi i pomagają kandydatowi wykazać się zrozumieniem rozwoju C ++?
Edytowanie w celu dodania : Aby wyjaśnić, nie jestem typem ankietera, który dyskwalifikuje ludzi, ponieważ nie znają modnych słów i akronimów. Uważam jednak, że uzasadnione jest oczekiwanie, że doświadczony programista C ++ zastosował dobre praktyki zarządzania zasobami. Uważam również, że ważne jest, aby sprawdzić, czy kandydat rozumie pewne „podstawy” dotyczące technologii, w której twierdzą, że są ekspertami, zanim przejdziemy do bardziej interesujących pytań dotyczących projektowania, rozwiązywania problemów itp. Myślę, że to, czego szukam, to dobry sposób zadać pytanie otwarte, odpowiednie do użycia podczas krótkiego przesłuchania telefonicznego, którego mogę użyć do oceny podstawowego zrozumienia przez kandydata dobrych praktyk zarządzania zasobami w C ++, zanim zadam „twarde” pytania.