Rant na temat rekrutacji w Polsce (i nie tylko?)

Rant na temat rekrutacji w Polsce (i nie tylko?)
EL
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 5 godzin
  • Postów:138
0
wartek01 napisał(a):

nie potrafiła wypisać odwróconego String na wyjście standardowe
...
ja osobiście takie rzeczy mogę tolerować u stażysty

Serio? Czy jest jakis poziom niekompetencji przy ktorym stazyste odrzucasz?
Stazysci z ktorymi ja mialem do czynienia, zatrudnieni po znosnym przejsciu przez codility, byli calkiem kumaci i przydatni w projektach.

W0
Stażystów nie rekrutuję i obecnie z takowymi nie za bardzo pracuję. Natomiast gdyby mi takiego stażystę przydzielili to bym jakoś specjalnie się nie denerwował.
RE
  • Rejestracja:prawie 5 lat
  • Ostatnio:2 minuty
  • Postów:105
1

@LukeJL: co do gonitwy myśli.

Firma prawnicza, ostatni etap, czwarta godzina rekrutacji, zadanie. Podszedłem do niego źle, na pierwszy ogień zaproponowałem rekurencje, ale kolo powiedział jeden przykład gdzie to nie pykło. Przyznałem mu rację, podszedłem z innej strony i rozwiązanie było ok.

Jako feedback - no źle zaczął, potrzebował podpowiedzi, do widzenia.

Firma w której nie można się mylić i pogadać, przegadać rozwiązania - tak to odebrałem.

Inny przykład - firma skandynawska, problem do rozkminy i zakodzenia, wymagali tam autofac. Mało tego używałem, nie miałem pamięci mięśniowej jak w autofac rozwiązuje się problem httpclient. Zarejestrowałem po prostu jako transient, przy czym opowiedziałem, że zwyczajnie nie wiem jak to się ładnie w autofac robi, powiedziałem co bym zrobił i czego bym poszukał. Wyjaśnienie zostało przyjęte i dostałem ofertę.

Grneralnie większość live coding session poszło mi dobrze, zazwyczaj jak jest taka forma rekrutacji to, to przechodzę. Ale jak wszędzie potrzeba obycia, pamiętam jak lata temu dostałem pierwszy raz codility. To było z 12 lat temu. Kurde - o co chodzi jak to ugryźć, dostałem po dupie, bo spieprzyłem, ale po tym miałem faze na hackerrank i codility właśnie, dzięki czemu nie było mi to straszne.

Przechodzenie rozmów to umiejętność sama w sobie. Pewnie są ludzie którzy mają większą niż ja odporność na niespodzianki podczas rekrutacji, niestety ja potrzebuję trochę poćwiczyć aby potem nie dać d**y po całości, żeby trema nie zjadła.
Z tym że nie masz pewności kto i jak ocenia.
W nawiązaniu do pierwszej historii, myślałem że zostanie pozytywnie zauważone, że po zwróceniu mi uwagi znalazłem rozwiązanie, a tu został podkreślony mój błąd. Ok, każdy patrzy po swojemu, a patrząc się na to samo nie musimy wcale tego samego widzieć.

D9
Przykład z firmą z zagranicy to jednostkowy przypadek? Ostatnio przechodziłem przez kilka rekrutacji, polskich i zagraniczne firmy, ostatecznie przyjąłem ofertę z firmy skandynawskiej i ogólnie mam wrażenie że firmy zagraniczne mniej restrykcyjnie podchodzą do znajomości szczegółów implementacji a bardziej sprawdzają czy umiesz rozwiązać problem. Zagraniczne firmy były zachwycone tym że potrafię rozwiązać problem X na kilka sposobów, Polskie firmy były główne zainteresowane tym czy znam metodę X i czy znam jakie parametry przyjmuję.
BA
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 2 miesiące
  • Postów:24
3

Dziwny temat moim zdaniem.

Nigdy nie miałem problemów z rekrutacją w jakiejkolwiek firmie, tylko znam solidnie fundamenty takie jak:

  1. Architektura komputerów + elektronika (interesuję się również jako hobby)
  2. Sieci komputerowe
  3. Systemy operacyjne
  4. Podstawowa znajomość algorytmów
    Każdy z 4 punktów do przerobienia porządną książką/cegłą po 800 str.

Dzięki ww. wiedzy + bazy danych oraz praktyczne doświadczenie z programowania, to jest naprawdę kawał solidnej wiedzy żeby ktoś był Was w stanie zagiąć, bo 99% programistów pracujących przy systemach enterprise (pomijam HFT i embedded, bo to jest inna liga) nie ma o tym zielonego pojęcia w praktyce

Problem jest taki, że większości ludzi tutaj nie chce się uczyć i jęczą i płaczą jak to jest źle podczas rekrutacji, ale ego i zarozumiałość wy** w kosmos.

Polecam tak:

  1. Skupić się na nauce ww. rzeczy, a nie siedzeniu w działach Flame czy innym gównie, które i tak nic nie daje poza kłóceniem się nad zjebanymi tematami politycznymi, które i tak nic nie zmienią w Waszym życiu xD
  2. Mniej ego i zarozumiałości, a więcej samokrytyki.
edytowany 3x, ostatnio: Baldr
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8398
1
wartek01 napisał(a):

30-45 minut, nie mam zielonego pojęcia skąd wziąłeś "kilka" minut)

Okej, ale to nic nie zmienia.

I tak, programista musi panować nad swoim czasem.

Zrobienie czegoś albo nie zrobienie w 30-45 minut nie przesądza o tym, jak zarządza czasem w codziennej pracy.
W realnej pracy nawet jakby jakiegoś dnia złapał 2 godziny zamuły, to pozostaje mu 6 godzin, żeby tę zamułę nadrobić.
Myślę, że problem w tym, że ludzie mogą być po prostu słabi technicznie (Człowiek miał 3 lata expa. Nawet gdy jasno powiedziałem, żeby zrobił pętlę od length-1 do zera - nie potrafił.) i taka osoba ani nie zrobi dobrze live codingu, ani zadań w pracy.

Co do gonitwy myśli - to jest bardzo duży problem u potencjalnego pracownika, z takimi osobami nie da się pracować bo potrafią kilkukrotnie zmienić koncepcję, ale nie sprawdzić żadnej z nich.

To mają panować nad czasem, czy sprawdzać koncepcje?
Sprawdzanie wszystkich koncepcji niekoniecznie musi być dobre, bo sprawdzanie koncepcji zajmuje czas.

Chociaż moim zdaniem lepiej by było, gdyby programiści częściej sprawdzali alternatywne koncepcje robienia czegoś (i robili więcej PoC). Bo wiele projektów wydaje się być zakopanych w jakimś podejściu legacy (nie mówię już o kodzie legacy, ale o samym podejściu legacy, architekturze, rozwiązaniach technicznych, które są słabe, ale które zostały w projekcie dlatego, że ktoś tak kiedyś wymyślił, a nikt nie sprawdził alternatywnego rozwiązania, a później już nie dało się zmienić)


edytowany 3x, ostatnio: LukeJL
ToTomki
  • Rejestracja:około 7 lat
  • Ostatnio:2 dni
  • Postów:1318
0

A co sądzicie o pisaniu zadanek w prostej konsoli zamiast w IDE? Ja wczoraj próbowałem napisać coś w uproszczonym oprogramowaniu w apce webowej i... było ciężko, delikatnie mówiąc ;)

Zobacz pozostałe 4 komentarze
TA
Nie wiem czym dokładnie jest ta opisana prosta konsola i czy ma przynajmniej kolorowanie i pokazywanie po najechaniu na zamknięcie klamry, gdzie jest jej otwarcie, natomiast osobiście nie używam IDE wcale. Moje ulubione edytory to mcedit, gedit i kwrite - używam zależnie od tego, z jakim wariantem systemu mam do czynienia. Do wyszukiwania funkcji i ich argumentów służy "grep" po plikach nagłówkowych i oglądanie mcedit-em. Dziwi mnie, że IDE są aż tak cenione.
DC
Moje kodzenie w edytorze webowym by się szybko skończyło bo skrot na rozszerzenie selekcji mam taki sam jak na zamknięcie Taba w FF :P (Cmd+W). @Troll anty OOP zalezy co robisz. Chciałbym zobaczyć jak robisz choćby helloworlda apki na iOS albo Androida bez IDE ;)
LukeJL
Myślę, że to zależy. I to nie tylko od technikaliów, ale od podejścia rekruterów. Ogólnie live coding zawsze jest żenujący i pytanie, co rekrutujący zrobi, żeby nie zwiększać żenady.
TA
@dbCooper: nie wiem co tam jest szczególnego w iOS albo Androidzie, ale sądzę że jak najbardziej da się zrobić program przez zwykłe wpisywanie tekstu. Co prawda dość rzadko, ale robię też GUI (dla mnie na Linuksa, dla odbiorców na Windows) i robię to zwyczajnie wpisując tekst do plików źródłowych.
M0
Ja czasem kodze sobie w notatniku zamiast w IDE, żeby wpisać więcej godzin pracy
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 7 godzin
  • Postów:3539
0
LukeJL napisał(a):

Okej, ale to nic nie zmienia.

To wszystko zmienia, a już na pewno psuje narrację.

Zrobienie czegoś albo nie zrobienie w 30-45 minut nie przesądza o tym, jak zarządza czasem w codziennej pracy.

W realnej pracy nawet jakby jakiegoś dnia złapał 2 godziny zamuły, to pozostaje mu 6 godzin, żeby tę zamułę nadrobić.

W realnej pracy nie masz ośmiu godzin na wykonanie piętnastominutowego zadania.

Myślę, że problem w tym, że ludzie mogą być po prostu słabi technicznie (Człowiek miał 3 lata expa. Nawet gdy jasno powiedziałem, żeby zrobił pętlę od length-1 do zera - nie potrafił.) i taka osoba ani nie zrobi dobrze live codingu, ani zadań w pracy.

Tak. Live-coding takie osoby filtruje bardzo skutecznie. I to jest jedno z zadań rekrutacji.

To mają panować nad czasem, czy sprawdzać koncepcje?
Sprawdzanie wszystkich koncepcji niekoniecznie musi być dobre, bo sprawdzanie koncepcji zajmuje czas.

I cząstka, i fala. Powiem ci jak to wygląda w praktyce.
Człowiek dostaje zadanie. Do zadania są dorzucone testy, które muszą przejść. Prawidłowe podejście jest takie, że na początku siadasz, rozkminiasz problem, tworzysz koncepcję rozwiązania, implementujesz, puszczasz testy, jeśli nie działa to odpowiednio swój kod zmieniasz lub - gdy widzisz, że to podejście całkowicie nie podchodzi - to po prostu orasz kod i robisz od nowa.

Osoba z gonitwą myśli zatrzyma się na samym początku - będzie wymyślać koncepcje (zazwyczaj to takie błędne koło, tj. zaczyna od A, potem dochodzi do B, potem do C, a na końcu z powrotem do A) bez wyklepania kawałka kodu, który miałby szansę przejść chociaż część testów.

Przypominam, że:

  • mówimy o prostym zadaniu (tak na oko bo pomiarów nie robiłem - jeśli ktoś przechodzi ten etap to zajmuje mu to jakieś 10-20 minut)
  • chodzi o to, żeby znaleźć kandydata dobrego, a jeśli wśród tych 3 kandydatów wszyscy się będą nadawali, ale jeden odpadnie bo mu nie poszło - to ciągle jest OK

Przykładem nieprawidłowego według mnie live-codingu jest ten podany przez @___ref___ - nigdy nie wymagam znajomości jakichś algorytmów typu bubble sort. Natomiast bardzo trudno jest przejść takowe zadanie bez znajomości podstawowych struktur danych.

W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 7 godzin
  • Postów:3539
1

@ToTomki: uważam te codingi przez weba za bardzo głupi pomysł, natomiast wiele firm to kultywuje niestety. Akurat zmuszanie kogokolwiek, żeby korzystał z jakiegoś IDE którego nie zna jest dla mnie nieporozumieniem.

veneficus
ale w sumie co tam znac w takim web IDE? jak masz dwa przyciski na krzyz submit i test
W0
W Javie - są problemy z importami i lambdami.
SE
  • Rejestracja:prawie 6 lat
  • Ostatnio:6 dni
  • Postów:321
1
wartek01 napisał(a):

Przykładem nieprawidłowego według mnie live-codingu jest ten podany przez @___ref___ - nigdy nie wymagam znajomości jakichś algorytmów typu bubble sort. Natomiast bardzo trudno jest przejść takowe zadanie bez znajomości podstawowych struktur danych.

O ile sam jestem przeciwnikiem algosow na rozmowie rekrutacyjnej tak nie wiem co jest zlego w zadaniu bubble sorta, ewentualnie moglbym sie zgodzic zeby zamienic to na zastosowanie dowolnego sorta. Jezeli ktos nie potrafi posortowac listy intow bez wykorzystania wbudowanych metod to cos ewidentnie jest nie tak. I to nie dlatego, ze to trzeba wykuc. Bubble sorta jest w stanie napisac srednio rozgarniety licealista, ktory w zyciu o nim nie slyszal, a my tutaj mowimy o ludziach ktorzy pracuja profesjonalnie i jeszcze chca za to dostawac niemale pieniadze.

Tak z czystej ciekawosci moge wiedziec jakie zadania na live codingu sa wedlug Ciebie adekwatne do sytuacji?

edytowany 1x, ostatnio: Seken
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 7 godzin
  • Postów:3539
1

@Seken: zrozumiałem, że nikt nie powiedział co to jest bubble sort - i to mi się nie podoba. Jeśli byłoby to opisane to byłoby ok.

DC
  • Rejestracja:około 12 lat
  • Ostatnio:18 minut
  • Postów:409
2

Co do korzystania ze StackOverflow i generalnie Google to imo są to po prostu kolejne umiejętności które trzeba posiadać żeby dobrze pracować. Narzędzie jak narzędzie. IMO jak już musi być ten live coding to nie widzę sensu żeby zakazywać korzystania z dokumentacji/google/so

W0
I tak, i nie. Uważam, że jeśli ktoś nie potrafi rozwiązać prostego zadania bez SO/Google to znaczy, że nie będzie potrafił dobrze wywiązywać się z obowiązków. Tak, gdyby to było coś w stylu "napisz aplikację webową w SpringBoocie" to nie widziałbym problemu żeby używać Google, natomiast zadania, które sam daję wymagają znajomości kilku wbudowanych klas (powszechnie używanych typu Map/List/String itp.) i składni języka. W takim przypadku fakt, że ktoś znajdzie sobie rozwiązanie w Google nie przybliża mnie do odpowiedzi na pytanie, czy takiego kandydata chcę mieć w zespole.
RE
  • Rejestracja:prawie 5 lat
  • Ostatnio:2 minuty
  • Postów:105
0

@Seken @wartek01 - z mojej strony, żeby nie było, ja się nie skarżę, tylko opisuje - chcieli kogoś kto umie bubble sorta, ja pokazałem, że nie umiem - total eclipse of the heart, no i nie pykło :) - czy to znaczy, że jestem złym devem, czy jest to coś coś mnie dyskwalifikuje? - być może, ale generalnie piszę to wszystko z pozycji osoby, która uważa, ze live coding jest jedną z lepszych sposób weryfikacji potencjalnego pracownika i generalnie mi live coding siada, bo tylko 2x zdarzyło się, że po czymś takim nie dostałem oferty, w tym ten jeden nieszczęsny bubble sort z którym będę musiał żyć aż do samiuśkiej śmierci

W0
Nie twierdzę, że się skarżysz. Ja po prostu uważam, że po prostu live-coding powinien sprawdzać umiejętność tworzenia algorytmów, a nie znajomość jakichś archaicznych algorytmów.
WK
Można nie wiedzieć co to bubble sort, ale wtedy powinieneś dostać zadanie - masz tablicę z liczbami, jak ją posortujesz, bez używania .Sort()? To jest proste zadanie do ogarnięcia przez każdego kto kiedykolwiek uczył się programowania, ale właśnie szukamy programistów, a nie ludzi, którzy jedyne co potrafią to uderzyć do bazy i przemapować obiekt do dto
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8398
0

Ale bubble sort i tak jest słaby.
Tutaj można zobaczyć tabelkę z porównaniem różnych algorytmów sortujących. Są bardziej wydajne algorytmy niż bubble sort.
https://en.wikipedia.org/wiki/Sorting_algorithm#Comparison_of_algorithms


edytowany 1x, ostatnio: LukeJL
randomize111
Wiadomo że słaby, ale na pewno o wiele łatwiejszy do zaimplementowania
SE
No ale przeciez tu nie chodzi o kod na produkcje tylko o sprawdzenie czy kandydat umie rozwiazac proste zadanie algorytmiczne
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)