Jak określić poziom własnej znajomości technologii?

0

Ostatnio zastanawiam się nad tym, jak określić poziom własnej znajomości technologii. Przez "poziom" rozumiem tutaj stwierdzenia: "podstawowy", "średniozaawansowany", "zaawansowany", "biegły". Przez "technologię" rozumiem języki programowania lub koncepcje typu "blockchain", choć mógłbym pod to też podciągnąć oprogramowanie. Czasem chce się podać taki poziom w CV lub w jakimś profilu internetowym.

W przypadku określenia "biegle" sprawa jest dla mnie raczej oczywista – jak ktoś czuje, że zna biegle, to zna biegle, jeśli nie czuje, to nie (nie mam tu na myśli upiększania się we własnych oczach, tylko możliwie realistyczną ocenę pewności siebie). Natomiast mam problem z określeniem momentów, w którym ktoś przechodzi z poziomu nieznajomości danej technologii do "podstawowego", z "podstawowego" do "średniozaawansowanego" oraz ze "średniozaawansowanego" do zaawansowanego". Szczególną trudność mam w tym, kiedy rozpoczyna się znajomość "podstawowa".

Zdaję sobie sprawę, że te określenia są płynne. Niemniej liczę na to, że jakoś da się to ustalić.

Pytanie pomocnicze, jakie mi się nasuwa: czy według Was poziom "podstawowy" powinien uwzględniać praktykę? Jeśli odpowiecie, że to zależy od technologii, to taka odpowiedź mi wystarczy. Obecnie nie wiem, czy zależy, czy nie.

Jeśli odpowiecie, że to zależy od osoby, która będzie to CV / ten profil czytała, to taka odpowiedź mnie nie zadowala. ;) Chodzi mi o to, żeby samemu być pewnym tej oceny.

Nie chodzi mi wyłącznie o określanie tego poziomu samemu: może być z pomocą innej osoby, może być z pomocą programu czy testu. Problem w tym, że nie zawsze wiadomo, gdzie taką osobę, program czy test znaleźć...

11

Jest na to prosty algorytm iteracyjny:

  1. Ustawiasz poziom = biegły
  2. Wpisujes poziom do CV
  3. Wysyłasz CV
  4. Dostajesz zapro na rozmowe
  5. Idziesz na rozmowe
  6. If not wyśmiali Cie goto 9
  7. Ustawiasz poziom = poziom - 1 // biegły -> srednio zaaw -> junior -> bootcamp -> hmm
  8. Pętelka, goto 2
  9. Profit, napinasz klate i wychodzisz jak prezez glownym wejsciem, znasz juz swoj poziom
2

Generalnie nie jest to łatwy temat, bo wiele osób może interpretować te poziomy inaczej. Zasadniczo pojmuję to tak - czy jestem w stanie wskoczyć w projekt w technologii X czy nie. A jeśli tak -to jak szybko będę rozumiał różne rzeczy, które się tam dzieją. I uwzględniam, że niekoniecznie będą one zgodne z przyjętymi standardami. Dla przykładu:

  • "miałem C# na studiach" i ani jednego projektu w nim nigdzie - nie ma się co oszukiwać - znam jego podstawy
  • "pracowałem w Elixirze i mam kilka projektów open source etc" - znam go, a raczej znałem dość dobrze, bo teraz w nim nie piszę. Znam nieco więcej niż podstawy, ale trochę czasu bym potrzebował by odświeżyć sobie wiedzę i znowu pracować przy jakimś projekcie w tym języku
  • "pracuję w PHP7 i Symfony 3/4, korzystam z Composera, PHPStorma etc." - zatem znam go na tyle dobrze, że przesiadka na inny projekt Symfony będzie potrzebować stosunkowo niewiele czasu, nieco więcej skok na Laravel, CakePHP etc.

Technologie, które mam w CV (a raczej na LinkedIn) to te, w których mógłbym pracować czyt. gdybym chciał odejść z obecnej pracy, to jestem w stanie przypomnieć sobie / zapoznać się z nowym frameworkiem etc. w niewiekim czasie np. w ramach okresu wypowiedzenia. Patrząc na to, co wymieniłem, nie będę udawał, że znam C# (składnia, a cały ekosystem, frameworki, narzędzia i praktyka to spooora różnica) ;)

1

Podajesz stwierdzenia, które są mocno subiektywne. Nie da się tego tak jednoznacznie określić.

1

Stosujesz sprawdzony od wieków algorytm dochodzenia do porozumienia;)

    binarySearch(JobOffer[] offers) {

       left = 0 // pracodawca
        right = offers.length // ty
        while left<right){
            mid = (left + right) / 2 // wspólna pierwsza iteracja na interview
            if (offers[mid] == yourGoal return mid // welcome on board
            if (yourGoal < offers[yourGoal])
                right = mid
            else left = mid + 1
        }
        return -1 // happy enda diabli wzięli
    }

Nie ustalaj nie wiadomo ile i nie wiadomo po co warunków, kryteriów, porównań, wartościować i diabli wiedzą czego. Sprawdzaj w praktyce bo tylko takie sprawdzenie ma sens. PS Uwzględnij tak zwany easy-warsaw-factor ;)

0

@cepa: u mnie algorytm szedłby tak: 6. If wyśmiali Cię, bo oszukiwałeś then nie składaj więcej nigdzie podania. ;)

@Pipes: to brzmi rozsądnie; trochę muszę to uporządkować według siebie, ale to brzmi jak część rozwiązania mojego problemu.

@BraVolt:

happy enda diabli wzięli

He, he. ;)

Sprawdzaj w praktyce bo tylko takie sprawdzenie ma sens.

Widać w tym sens... ale to dużo czasu zabiera. Ale może tylko tak będzie dobrze.

PS Uwzględnij tak zwany easy-warsaw-factor ;)

Co to?

2

. Przez "poziom" rozumiem tutaj stwierdzenia: "podstawowy", "średniozaawansowany", "zaawansowany", "biegły".

Ja się tak zastanawiam z JSem. Na pewno jestem zaawansowanym użytkownikiem tego języka, ale czy biegłym? Ekspertem nie jestem, bo jest masę rzeczy, których nie wiem, ale z drugiej strony czuję, że poruszam się w JS bez problemu i szybko mknę po kodzie.

Tylko czy to biegłość? Czy może po prostu pewna "płynność". Tak jak kurczę można znać płynnie angielski, ale to nie znaczy, że się zna go na poziomie eksperckim.

Czasem chce się podać taki poziom w CV
(...)
W przypadku określenia "biegle" sprawa jest dla mnie raczej oczywista – jak ktoś czuje, że zna biegle, to zna biegle, jeśli nie czuje, to nie (nie mam tu na myśli upiększania się we własnych oczach, tylko możliwie realistyczną ocenę pewności siebie)

W CV / na potrzeby pracodawców trzeba zwrócić uwagę na to, że jest to pewna gra. Jak w ofertach jest napisane "biegła znajomość X" to zwykle wcale nie jest potrzebna biegła znajomość, tylko zwykle wystarczy średniozawaansowana, żeby aplikować i przejść testy techniczne. Tylko, że oczywiście przed HRką trzeba mówić, że się jest jak najlepszym, mistrzem, biegłym, i co tam chcą usłyszeć, bo jak pokażesz niepewność siebie, to możesz nie zostać zaproszony na rozmowę techniczną.

"podstawowy", "średniozaawansowany", "zaawansowany", "biegły". Przez "technologię" rozumiem języki programowania lub koncepcje typu "blockchain", choć mógłbym pod to też podciągnąć oprogramowanie. Czasem chce się podać taki poziom w CV lub w jakimś profilu internetowym.

Co do blockchaina to robiłem kiedyś jakieś tutoriale i gdybym aplikował do firmy, która się tym zajmuje, to bym wpisał, że znam podstawy blockchaina. Ale czy znam? Koncepcyjnie może i kumam, ale bawiłem się i tak na sucho i gdybym miał wejść w jakiś projekt blockchainowy, to przez kilka tygodni musiałbym się douczać tych technologii blockchainowych i tego, jak to się faktycznie robi. Więc czuję, że nawet podstaw nie znam (ale - na potrzeby rekrutacji i tak byłbym lepszym kandydatem niż ktoś, kto nic w tym nie robił, więc mógłbym spokojnie powiedzieć, że podstawy znam. Bo to nie chodzi o absolutną znajomość, tylko relatywną, jak wypadasz na tle innych kandydatów czy ogółu społeczeństwa).

Szczególną trudność mam w tym, kiedy rozpoczyna się znajomość "podstawowa".

Zależy. To może być znajomość typu "słyszałem nazwę i przeczytałem jeden artykuł o tym", poprzez "przerobiłem tutoriale", czy "używałem tego w istniejącym projekcie" albo "zrobiłem kilka prostych projektów w tym" aż po "używam tego od kilku lat, ale czuję, że jest to wiedza powierzchowna, i muszę googlować jak chcę osiągnąć coś zaawansowanego". To wszystko można podciągnąć pod "znajomość podstawowa".

Pytanie tylko, czy jest znajomość wystarczająca do skutecznej pracy z tymi technologiami. Np. z pewnymi pobocznymi technologiami, jak Git, można jechać na dość słabej znajomości i googlować recepty na StackOverflow. Ale już jechanie na słabej znajomości języka programowania(czy innego podstawowego narzędzia) byłoby dość słabe, bo wtedy co chwila wyskakiwałyby jakieś problemy i człowiek straciłby masę czasu na googlowanie albo na zastanawianie się "czemu tu jest błąd?" albo "jak to zrobić w tym języku?".

0
LukeJL napisał(a):

Ja się tak zastanawiam z JSem. Na pewno jestem zaawansowanym użytkownikiem tego języka, ale czy biegłym? Ekspertem nie jestem, bo jest masę rzeczy, których nie wiem, ale z drugiej strony czuję, że poruszam się w JS bez problemu i szybko mknę po kodzie.

To coś jak ja; niekoniecznie w sensie JS, ogólnie.

W CV / na potrzeby pracodawców trzeba zwrócić uwagę na to, że jest to pewna gra. Jak w ofertach jest napisane "biegła znajomość X" to zwykle wcale nie jest potrzebna biegła znajomość, tylko zwykle wystarczy średniozawaansowana, żeby aplikować i przejść testy techniczne. Tylko, że oczywiście przed HRką trzeba mówić, że się jest jak najlepszym, mistrzem, biegłym, i co tam chcą usłyszeć, bo jak pokażesz niepewność siebie, to możesz nie zostać zaproszony na rozmowę techniczną.

Jak pokażę "zbytnią pewność", to też nie wróżę sobie zaproszenia. Przynajmniej sam bym nie chciał rozmawiać z osobą "zbyt pewną siebie".

Co do blockchaina to robiłem kiedyś jakieś tutoriale i gdybym aplikował do firmy, która się tym zajmuje, to bym wpisał, że znam podstawy blockchaina. Ale czy znam? Koncepcyjnie może i kumam, ale bawiłem się i tak na sucho i gdybym miał wejść w jakiś projekt blockchainowy, to przez kilka tygodni musiałbym się douczać tych technologii blockchainowych i tego, jak to się faktycznie robi. Więc czuję, że nawet podstaw nie znam (ale - na potrzeby rekrutacji i tak byłbym lepszym kandydatem niż ktoś, kto nic w tym nie robił, więc mógłbym spokojnie powiedzieć, że podstawy znam. Bo to nie chodzi o absolutną znajomość, tylko relatywną, jak wypadasz na tle innych kandydatów czy ogółu społeczeństwa).

To ciekawe. Nie myślałem o określaniu znajomości jako relatywnej do innych. Najbardziej to chyba dotyczyłoby poziomów "podstawowego" oraz "biegłego". To mogłaby być część rozwiązania.

Zależy. To może być znajomość typu "słyszałem nazwę i przeczytałem jeden artykuł o tym", poprzez "przerobiłem tutoriale", czy "używałem tego w istniejącym projekcie" albo "zrobiłem kilka prostych projektów w tym" aż po "używam tego od kilku lat, ale czuję, że jest to wiedza powierzchowna, i muszę googlować jak chcę osiągnąć coś zaawansowanego". To wszystko można podciągnąć pod "znajomość podstawowa".

Przyda się Twój punkt widzenia do średniej, jaką będę wyciągać z tego wątku. :)

Pytanie tylko, czy jest znajomość wystarczająca do skutecznej pracy z tymi technologiami. Np. z pewnymi pobocznymi technologiami, jak Git, można jechać na dość słabej znajomości i googlować recepty na StackOverflow. Ale już jechanie na słabej znajomości języka programowania(czy innego podstawowego narzędzia) byłoby dość słabe, bo wtedy co chwila wyskakiwałyby jakieś problemy i człowiek straciłby masę czasu na googlowanie albo na zastanawianie się "czemu tu jest błąd?" albo "jak to zrobić w tym języku?".

Zależy od narzędzia. Ciekawe, nie myślałem o tym. To mogłaby być część rozwiązania.

1

Dla mnie są tylko takie poziomy znajomości:

  • zerowa, max do "coś tam słyszałem przy kawie"
  • podstawowa: umiem napisać skrypt robiący jedną rzecz w danym języku przy pomocy istniejącej bazy kodu, SO, zeal i oficjalnej dokumentacji
  • zaawansowana: robię to co powyżej sprawnie
  • biegła: odpowiadam bez zastanawiania na pytania na poziomie zaawansowanym

Osobiście uważam że z każdego tematu można zagiąć każdą osobę, chyba że mamy do czynienia z dr S. Cooperem.
Fakt na którym tę opinię opieram: https://news.ycombinator.com/item?id=4677541

0
vpiotr napisał(a):

Osobiście uważam że z każdego tematu można zagiąć każdą osobę

Idziesz do pracy czy na teleturniej z kołami ratunkowymi i telefonami do przyjaciela?
Chcą zaginać każdego kandydata to znaczy, że nikomu nie chcą płacić nawet dolnych widełek. Naprawdę chcesz tam pracować i czujesz dyskomfort bo dałeś się zagiąć?

0

Ciężko skategoryzować swój poziom, bo im więcej się wie, tym większą ma się świadomość, że jest jeszcze masa rzeczy do odkrycia i opanowania. Jeżeli chodzi o podejście zawodowe, to w CV nie wpisywałem poziomu znajomości technologii. Uznałem, że skoro aplikuję na pozycję juniorską, to wpisując "Java" nie mam na myśli tego, że jestem ekspertem w tej dziedzinie, lecz że jestem biegły w niej na poziomie juniora :)

0

Mam kilka metod
85% poziom ufność:
Wybieram sobie sporawy i dobrze się zapowiadający projekt (GitHub, albo coś w pracy), czytam kod, odpalam, jeśli kumam co się dzieje daję sobie podstawowy (0-2) poziom, wymyślam sobie w miarę prosta zmianę (ale taka idącą przez cały system, zmieniająca API, etc), jeżeli umiem ją wykonać daje sobie średni poziom (3), kombinuje co można by było w projekcie poprawić, jeśli ma to sens i umiem to zrobić, daje sobie zaawansowany (4), jeżeli to zrobiłem i zostało zaakceptowane - mistrzu (5).
Czasami skupiam się na konkretnym aspekcie (skalowalność, CI/CD, security jakieś) i staram się powyższe zrobić w moim kontekście w kilku projektach.

60% poziom ufność:
Szukam mistrza w temacie, pytam się go co trzeba umieć (wszak nie wiem jeszcze czego nie wiem). Czasem uda mi się kogoś poprosi o oszacowanie mojej wiedzy w trochę bardziej formalny sposób (takie testowe interview). Kiedyś używałem też https://interviewing.io/ ale nie wiem jaki jest tam teraz poziom ludzi, więc ostatnio postanowiłem się przygotować wchodząc w rolę rekrutującego. Niewiele się dowiedziałem o swoim poziomie, raczej ustaliłem tylko ile jeszcze nie wiem.

40% poziom ufność:
Czytam książki, blogi, idę lub oglądam na YT konferencje, workshopy, Cursera, edX jakieś. Jeśli mnie temat już zaczyna nużyć, zakładam że jestem w okolicach 3.

1 użytkowników online, w tym zalogowanych: 0, gości: 1