Byłem jakiś czas temu na rozmowie o pracę jako programista w pewnym szacownym banku. Najpierw standardowa rozmowa z dwoma tambylcami, przepytali mnie o różne rzeczy dotyczące ASP.NET, w zasadzie nic niespodziewanego. No może poza tym, że odpowiedź na jedno pytanie trochę skopałem, bo dotyczyło pewnych podstaw języka, które są dla mnie tak naturalne, że nie bardzo potrafię je wyjaśnić. Na jedno pytanie nie odpowiedziałem w ogóle, bo niby jaka może być odpowiedź na pytanie: "Jak zoptymalizowałby pan prędkość ładowania strony korzystającej z 30 web serwisów?". Miałem powiedzieć, że zrobiłbym to bardzo dobrze, a nawet zajebiście, czy spytać skąd wzięli taką stronę, bo mi to wygląda na błąd w architekturze?
No, ale dobra, po rozmowie miałem dostać zadanie praktyczne...
W tym celu z pokoju zostałem zaprowadzony do open space, w którym ciągle pracowali, rozmawiali i wygłupiali się ludzie, i posadzony przed jednym z komputerów. Może ja się nie znam, ale w poprzedniej robocie prowadzono rekrutację, to kandydat siedział sam w cichej sali i dostawał laptopa do wykonania zadania. WTF #1.
Zadanie było banalne, napisać kontrolkę serwerową ASP.NET, która będzie się składała z jakichś tam innych standardowych kontrolek frameworka i ma coś tam robić. Niby nic trudnego, z tymże, ja takie coś robiłem dwa razy w życiu, ostatnio 1,5 roku temu. No i te moje kontrolki były nieco bardziej zaawansowane, tzn. po pierwsze nie były składane z istniejących kontrolek tylko "ręcznie" renderowałem kod HTML i JS, a po drugie były bardziej skomplikowane - coś w rodzaju input+button, który po wciśnięciu dynamicznie generuje dialog z zestawem pól (zdefiniowanym w BD) do pobierania od użytkownika jakichś danych, po czym przekazujący je do obliczenia do odpowiedniej procedury składowanej (jej nazwa też zdefiniowana w BD), itp.
Jak już wspomniałem, dawno tego nie robiłem, więc pamiętałem jedynie, z której klasy muszę dziedziczyć, ale nie pamiętałem dokładnie kolejności innych działań, tj. którą metodę muszę przeciążyć, żeby wyrenderować swoją kontrolkę, jak się obsługuje eventy, itp. Skutkiem czego, nie wykonałem tego prostego zadania. Nie miałem dostępu do dokumentacji, ani internetu, dali mi go łaskawie dopiero 15 minut przed końcem czasu, a więc nieco za późno, abym mógł doczytać i przypomnieć sobie, jak to się robi. WTF #2
A tak w ogóle, to wg nomenklatury ASP.NET, kontrolka złożona z gotowych kontrolek, to composite control. Server control, to tak jak opisałem powyżej, ręcznie renderowany HTML. WTF #3
Wnioski:
- Panowie z banku nie mają chyba doświadczenia w rekrutacji.
- Bogatego banku nie stać na jednego laptopa, którego by mogli zanieść kandydatowi do pokoju, a jedynie na kijowe desktopy z zacinającymi się klawiaturami i kwadratowymi monitorami.
- Odpowiednio dobierając pytania i nie dając dostępu do dokumentacji, łatwo jest udowodnić, że ktoś z 1,5 rocznym doświadczeniem w technologii, absolutnie nic nie potrafi.
- Nie zawsze jest tak, że rozmowy z osobami technicznymi są lepsze niż z HR. HR zazwyczaj ma przynajmniej cycki.
- Nawet gdybym przeszedł kwalifikację, nie chciałbym tam pracować.
I tak się zastanawiam - może ja faktycznie powinienem znać na pamięć dokumentację, a to, co opisuję jest normalne, tylko ja jak zwykle marudzę?