Historia znajomego, który rekrutował programistę C++ kilkanaście lat temu w pewnej firmie zajmującej się automatyzacją testów.
Poszukiwany był wówczas kandydat z niewielkim doświadczeniem i z dobrą znajomością języka, taki początkujący, dobrze prosperujący programista. Trafił się kandydat z ciekawym CV - kilka lat programowania w C++, głównie własne projekty ale też rok doświadczenia komercyjnego; dodatkowo znajomość najnowszego standardu, jakieś nowinki techniczne, różne wodotryski i inne ciekawostki. Generalnie wpasował się w wymagania i został zaproszony na rozmowę techniczną. Znajomy wraz z kolegą w celu przeprowadzenia rekrutacji udali się do salki na spotkanie i na wejściu standardowo luźna rozmowa, wymiana uprzejmości, ciepłe powitanie. Pierwsze pytania bardzo ogólnie związane z technologią, czy wspomnianymi wcześniej nowinkami ze świata IT i pierwszy zonk, bo kandydat dużo opowiada, ale bardzo ogólnikowo i nie koniecznie na temat. Rekruterzy drążyli dalej, próbowali doprecyzować pytania, jakoś nakierować kandydata, ale dalej tylko owijanie w bawełne. Jeden z nich stwierdził, że może się chłopak zestresował i przez co nie może się skupić, dlatego błądzi i rzuca ogólnikami. Doszli więc do wniosku, że zrobią dla niego proste zadanie z kodu C++ tak na rozgrzewkę. Na kartcę napisali kawałek kodu:
#include <iostream>
using namespace std;
int a = 10;
// int b = 30;
Pytanie: Co oznacza //
w tym kodzie?
Kandydat patrzy, zastanawia się i wypala: To jest znak dla kompilatora, żeby tą linijkę skompilować.
Lekkie zdziwienie na twarzy rekrutujących się pojawiło, ale stwierdzili że spróbują ponownie, tym razem z kodem:
#include <iostream>
using namespace std;
/*
int a = 10;
int b = 30;
*/
Pytanie: A co teraz oznaczają /*
i */
?
Po chwili zastanowienia: A to jest blok... (o jest nadzieja!) To jest blok, którym zaznacza się kod, który kompilator nie tylko skompiluje, ale również przetestuje.
W tym momencie zakończyli rekrutacje i ulotnili się jak najszybciej, żeby nie wybuchnąć śmiechem w twarz kandydata.