Pytania, które programista powinien zadać potencjalnemu pracodawcy. Jak się nie wpakować w beznadziejny kod

Ten mini-przewodnik powstał dzięki licznym rozmowom z deweloperami, którzy byli sfrustrowani gdy rekrutacyjne obietnice ciekawych projektów szybko zamieniały się w utrzymywanie beznadziejnego kodu brutalną siłą.

Jeśli nie chcesz nigdy mieć do czynienia z kiepskim kodem, ten artykuł oszczędzi Ci czasu i frustracji. Dziś przyjrzyjmy się:

  • jakie umiejętnie i kulturalnie zadać pytania na rozmowie kwalifikacyjnej żeby się zorientować z jakim kodem będziemy mieć do czynienia
  • na jakie sygnały ostrzegawcze uważać

Ponieważ angielski coraz bardziej się wkrada do pracy programisty, poniższe pytania są w języku angielskim. Aplikując o pracę, w której możemy się spodziewać kontaktu z Brytyjczykami, należy mieć na uwadze, że mają oni odmienny styl komunikacji i pożądane informacje należy czytać między wierszami - dlatego też powstał ten przewodnik.

Będąc przy temacie rekrutacji, potrzebujesz stworzyć bezbłędne CV po angielsku? Tu się dowiesz jak napisać CV po angielsku. Jeśli jesteś przed rozmową kwalifikacyjną, możesz także przeczytać artykuł o pytaniach i odpowiedziach na rozmowie kwalifikacyjnej w IT.

1

What do you think of the codebase?

Czyli jazda po bandzie, ale w wyrażona w kulturalny sposób. W jednej z korporacji, w której pracowałam, pojawił sie smiałek, który bez żadnych ogródek spytał architekta systemu o jakość kodu. Jakość pozostawiała bardzo wiele do życzenia, ale architekt (który stworzył architekturę systemu i nadzorował prace programistów nad systemem przez parę lat) skłamał mu w żywe oczy. Jednak nawet on nie mógł się zdobyć na kłamstwo bez chwilowej pauzy. Dlatego też, gdy pytamy o jakość kodu, należy zwrócić szczególną uwagę na wyraz twarzy interlokutora i szybkość odpowiedzi. Zwróć też uwagę na inne sygnały niewerbalne.

Jeżeli Twój rozmówca wzruszy ramionami i w naturalnym tempie stwierdzi, że kod mógłby być lepszy, to najprawdopodobniej nie masz się czego obawiać.

Pauza, wdech, śmiech i ogólne poczucie dyskomfortu u rozmówcy to najpewniej oznaki poruszenia czułej struny. Właśnie obraziłeś architekta systemu, ale ocaliłeś samego siebie.

Wysoko uniesione brwi tudzież ostentacyjne pokazanie niezrozumienia pytania. Kod jest kiepski.

2

Are there any tool / software restrictions?

Nie możemy oczekiwać od firm, że programista będzie w stanie używać wszystkich narzędzi, na które ma ochotę, ale brak elastyczności negatywnie wpływa na pracę (np. wirtualka na Windowsie z zablokowaną możliwością instalacji software’u).

3

Which lesser-known tools are used in the organization?

Korporacje mają tendencje do zakupu niestandardowych narzędzi ze względu na to, że decyzje podejmują osoby nietechniczne albo niekompententne, które zostały omamione przez dział sprzedaży zewnętrznej firmy (tzw. golf-course purchase). Ma to silnie destrukcyjny wpływ na proces rozwoju oprogramowania. Jeśli widzisz, że zamiast powszechnie używanych narzędzi open source są bliżej nieznane komercyjne produkty, to możesz się spodziewać że połowę czasu pracy spędzisz na zmaganiach z nimi. Inny wariant problemu to tendencja do wyboru produktów tylko dlatego, że są kosztowne (jeśli płacisz za coś $100000 rocznie, to nie może być złe). W takich sytuacjach spodziewaj się, że postawienie kolejnego serwera w celu skalowania aplikacji będzie wymagało decyzji na poziomie CEO i 3 lat oczekiwania, a postawienie środowiska testowego będzie wymagało konsultacji z departamentem prawnym (darmowe dla celów testowych, ale…)

4

What tools do you use to assess code quality?

Sygnałem ostrzegawczym jest sytuacja gdy w ogóle nie ma statycznej analizy kodu lub jest stosowana niekonsekwentnie tudzież ignorowana. (W firmie, do której się już odwoływałam, SonarQube z podstawowymi ustawieniami pokazał półtora roku długu technicznego. Ta niepokojąca sytuacja nie spotkała się z żadną reakcją).

5

I need to deploy a service during developer testing. How do I go about it and how long does it take?

W funkcjonujących organizacjach zajmie to pare minut, a w dysfunkcyjnej – parę miesięcy. Będziesz musiał błagać, żeby administratorzy wykonali to zadanie i będziesz musiał wykonywać wiele czynności cudzymi rękami, co jest frustrujące i podatne na błędy. Jest to słynny problem Dev vs Ops. Współcześnie każda organizacja twierdzi, że stosuje DevOps albo jest w trakcie jego wprowadzania. W większości przypadków jest to jednak całkowita fikcja.

6

Is refactoring allowed?

Istnieje wiele takich organizacji, gdzie refaktoryzacja nie jest w ogóle dopuszczalna, chyba że ukryjesz ją w nowych funkcjonalnościach. Jeżeli tylko usłyszysz jakiekolwiek zastrzeżenia do refaktoryzacji – uciekaj. Oczywiście, nikt nie powie Ci niczego wprost, ale mogą się pojawić się wypowiedzi typu:

- Tak, ale prymat mają nowe fukcjonalności.

- Tak, ale mamy stary moduł, którego prawie nie zmieniamy. Co prawda ma niską jakość, ale nie ma potrzeby go dotykać.

Brzmi to mniej więcej tak, jakby kucharz spytał managera w restauracji:

- Czy wolno sprzątać po przygotowaniu posiłku?

- Zasadniczo tak, ale nie sprzątamy w takim jednym pomieszczeniu gdzie wisi tona gnijącego mięsa.

Niechęć do refaktoryzacji jest silnie skorelowana ze strachem przed zmianami w kodzie. Możesz się spodziewać niskiego pokrycia testami, niejasności co do wymagań i innych patologii.

7

How many steps does it take for you to do a build?

Występowanie wielu ręcznych kroków nie jest dobrym znakiem. Spodziewaj się, że pierwszy tydzień spędzisz na zaznajomieniu się z dziwactwami stosowanych procesów.

8

How long will it roughly take for my first code to go into production?

Takie pytanie ogniskuje wszystkie problemy dysfunkcyjnych organizacji IT. Większość patologii będzie skutkowała opóźnieniem momentu, kiedy Twój pierwszy kod znajdzie się na produkcji.

  • Brak automatyzacji, narzędzi i zdrowego rozsądku oznacza że konfiguracja maszyny deweloperskiej może zająć tydzień.
  • Nieefektywne procedury administracyjne wprowadzą dalsze opóźnienia.
  • Fatalna jakość kodu oznacza, że jego zrozumienie zajmie miesiące. Wprowadzenie zmian będzie przypominało kroczenie po polu minowym.
9

I’d like to implement a new feature. It seems that I need to use an open-source library to make it happen. How do I go about it?

W wielu organizacjach możesz użyć bibliotek, których potrzebujesz, bez pytania. W innych będzie wymagało to konsultacji z architektem projektu, co jest rozsądne choćby ze względu na bezpieczeństwo systemu i spójność technologii w ramach projektu i poza nim. A w jeszcze innych miejscach pracy musisz to skonsultować z innymi departamentami, które najczęściej nie rozumieją problemu. Jeszcze inne organizacje tworzą własne, niestandardowe, wewnętrzne wersje powszechnie używanych bibliotek, frameworków i narzędzi, co rodzi wiele uciążliwości.

10

What are your system integration practices?

Jeśli integracja z innymi systemami odbywa się przez bazę danych, nie świadczy to o niczym dobrym. Dla przykładu, w jednej firmie 300 usług współdzieliło gigantyczną bazę danych liczącą 6 tysięcy tabel. Organizacja dawno straciła kontrolę nad zmianami w tej bazie i nie było nawet jasności które usługi korzystają z czego.

11

Is the employee turnover rate is high in the organization or the team?

Duża rotacja pracowników w organizacji tudzież w zespole zazwyczaj nie występuje bez powodu. Niezależnie od tego, jaka jest odpowiedź na powyższe pytanie, trzeba jeszcze spytać:

12

Why was this position vacated?

Jeśli nie czujesz się do końca pewnie zadając tak bezpośrednie pytania podczas rozmowy lub chcesz przećwiczyć rozmowę kwalifikacyjną po angielsku, dowiedzieć jakiego typu błędy popełniasz i nie powtarzać ich nigdy więcej, zapraszamy do kontaktu z naszymi konsultantami.

W odpowiedzi na każde z powyższych pytań, jeśli odpowiedź nie wygląda zachęcająco, będzie można usłyszeć, że trwa proces naprawy. Należy to ignorować. Owszem, niektórym organizacjom uda się proces przebudowy, ale dotyczy to na tyle nielicznych, że nie ma praktycznego znaczenia. Jeśli organizacja latami ignoruje powszechnie znane, podstawowe dobre praktyki, to dzieje się tak ze względu na głębokie patologie, które wykoleją także ewentualne próby naprawy.

Jeśli uważasz, że artykuł może się przydać Twoim znajomym, podziel się nim na