Umiejętności na poziomie mida

0

Mam pytanie, jak swoim zdaniem definiujecie osobe będącą na poziomie mida? Nie lubie tych określeń, ale łatwiej zobrazować całą sytuacje.
Tutaj bardziej mam na myśli osobe siedzącą od strony backendu. Co byście wymagali od takiej osoby, gdyby była u Was w zespole?
W jakich technologiach powinna być biegła? Do czego powinna dążyć aby podnieść swoją rynkową wartość?
Wiem, że technologie zależą od projektu/firmy, ale mimo wszystko wydaje mi się, że można to dość zgrabnie zdefiniować.
Temat do dyskusji

1

Mid to osoba samodzielna, dająca też do projektu swoje pomysły, które nie są z "4 liter". Mid nie pyta się co 5 minut jak coś zrobić, jeśli się pyta to co najwyżej o kwestie domenowe i o jakieś optymalniejsze/lepsze architektonicznie rozwiązania. PRy mida w zdecydowanej większości nie wymagają poprawek a te co wracają do niego na poprawki mają minimalną ilość uwag po CR.

3

Osoba samodzielona, która wie jak zrobić zadanie od strony technicznej, a jedynej wiedzy jakiej potrzebuje to znajomość projektu/domeny.

19

Mid to programista który zarabia mniej niż senior.

47

Pod kątem technicznym, "prawdziwy" mid nie różni się wiele w porównaniu do seniora, o ile w ogóle. W przypadku seniora wymaga się również szerszych interakcji z biznesem, szerszego zrozumienia biznesu, leadership itp. W dużej mierze kształtują to lata doświadczenia oraz ilość projektów w których się pracowało. Niby pierdoła, ale ma znaczący wpływ na wynagrodzenie ;)

1

Zależy od firmy. Dla mnie MID to ktoś kto zrobi Ci taska z jiry samemu. W sensie sam się dopyta itd
Senior mając więcej doświadczenia będzie umiał zrobić design architektury, albo większy refactor.

1

Nie ma jednoznacznej definicji. Generalnie oczekiwałbym od takiego mida, że jest w stanie samodzielnie przeanalizować i wykonać powierzone zadanie w rozsądnych ramach czasowych, na przyzwoitym poziomie, zgodnie z dobrymi praktykami, z minimalnym wsparciem lub bez oraz jest w stanie pomóc w pracy mniej doświadczonej osobie.

0

Po pracy w paru projektach nie umiem tego rozróżnić

Bywa że kogoś latami trzymają na tzw midzie a inni są awansowani, dlaczego?

W swojej własnej definicji widzę to tak

  • wysługa lat
  • znajomość domeny
  • tzw visibility, czyli manago, pm, ktokolwiek zna ciebie bardziej niż innych
  • złoty strzał - propozycja o której wiedział ktoś na górze, która przeszła, nie musi to być nic wielkiego, ważniejsze żeby był rezonans na odpowiednim poziomie , u mnie np była propozycja toola do ui, która przeszła, za którą była podwyżka bo był w to zaangażowany jakiś tam dyrektor
  • koleżeńskość, bycie buddym, takim pro zespołowym
  • wreszcie umiejętności techniczne, one moim zdaniem nie są aż tak ważne bo jest to na tyle abstrakcyjne, że trudno to docenić osobie nietechnicznej

Generalnie o awansie decydują ludzie, którzy nie znają się na robocie to oceniają wg kryteriów które rozumieją

0

Z perspektywy osoby która często zmienia pracę i wszelkie awanse otrzymała przez zmianę pracodawcy - mid to osoba która przeszła rekrutację i została przyjęta na stanowisko mida.
Można przyjrzeć się ogłoszeniom na takie stanowisko i jest to najlepsze źródło wiedzy.

0

Mid to programista co ogarnia ale jeszcze nie jest kozakiem jak Senior i czasem może mieć problemy z większymi problemami w większej/skomplikowanej architekturze

2

Mid to jest tylko symboliczne oznaczenie juniora, który zarabia trochę więcej. Dopóki nie ogarniesz określonych skilli na takim poziomie, że jesteś w stanie sam zrobić projekt to jesteś juniorem.

6

java:

praktykant: nic umie, nawet maile trzeba mu dyktować
od 0k + vat

stazysta: niesamodzielny, nie umie do końca programować, przez midów potrzegany jako ktoś upośledzony
od 5k + vat

junior: samodzielny, umie programować, czasem zrobi coś nie tak, nie zna wszystkich pułapek, nie rozumie do końca jak to wszystko działa, pozbawiony pomocy może wypuścić aplikacje liche, wrażliwe, wszystko go jara, midzi hamują jego zapał, żeby nie wyszło, że robi więcej od nich
od 10k + vat

mid: samodzielny, umie programować, zna bebechy, rozumie jak to wszystko działa i nie daje się złapać w pułapki, projektuje i tworzy aplikacje niezniszczalne, cierpi na wypalenie zawodowe
od 20k + vat

senior: to co mid + posiada cechy mentora, opiekuje się innymi i naucza innych, prowadzi projekt od strony technologicznej, wyznacza kierunek, ma bardzo głęboką wiedzę i bardzo szeroką, wyleczony z wypalenia zawodowego
od 35k + vat

lider: to co mid + wysoko rozwinięte umiejętności społeczne
od 25k + vat

3

Czy nie prościej wejść w oferty pracy na mida i sprawdzić czego wymagają?

Ciężko jest odpowiedzieć na takie pytanie, bo to mocno zależy od technologii, typu projektu, firmy, więc rozstrzał będzie duży

bo w jednej firmie midem będzie osoba która będzie potrafiła uciągnąć jakiś zwykły projekt od A do Z, a w innej midem będzie ktoś, kto nigdy projektu od 0 nie napisał - i to też będzie ok, bo po prostu w danej firmie będą inne oczekiwania

2
  • Junior - osoba, która wie, że jest słaba i pragnie się rozwijać
  • Mid - osoba, która już coś umie i mimo że wiele jej brakuje, to postanowiła usiąść na laurach i zamiast się rozwijać, to po prostu jak najszybciej klepie kod. Pracodawcy doceniają taką postawę.
  • Senior - jedna z dwóch:
    • osoba, która umie dużo i dalej się rozwija. Czyli w zasadzie taki turbo junior (ktoś kto ma dużo wiedzy, ale dalej ma beginner's mind)
    • osoba, która stanowisko seniora dostała przez przypadek, np. za dupogodziny, ale umie mało. Ktoś z umiejętnościami juniora, któremu dali plakietkę seniora. Czyli senior ze względu na politykę.

No to tak żartobliwie, bo tak na poważnie to w zasadzie liczy się tylko kasa. Junior = mało kasy. Mid = średnia kasa. Senior = dużo kasy.

1

Junior - osoba coś ogarniająca technicznie ale potrzebująca więcej czasu aby zapoznać się z różnymi technikami lub technologiami. Słabe skille miękkie, nie interesuje go zbytnio biznes, a raczej linijki kodu.
Mid - osoba z szeroką wiedzą techniczną i dobrymi skillami miękkimi. Jest w stanie poprowadzić takiego juniora. Interesuje się biznesem a nie tylko zaklepaniem tasków.
Senior - sporo się już naoglądał, wie, że pójście w danym kierunku może zakończyć się fiaskiem i zespół dzięki temu zaoszczędza sporo czasu. Bardzo dobre skille miękkie. Bardzo dobra wypłata :D

8

Cały ten podział mid/ senior jest jak dla mnie bardzo umowny. No bo załóżmy- jest ktoś seniorem, używa np. rabbitMQ, javy 8 i rzeczywiście w tym wymiata, ale zmienia pracę i tam np. jest java 17 i kafka. Nowości w javie można szybko ogarnąć, ale taki człowiek już nie ma seniorskich umiejętności dot. kafki i co teraz? Jest mid-em? A może juniorem, bo Kafkę widzi pierwszy raz w życiu? Tak samo sytuacja z jaką się spotykałem- niby senior, świetnie pisze, wiedza ogromna, ale ma problem z ogarnięciem jakiegoś legacy code i gubi się. Pojawia się ledwo- mid i jakimś cudem ogarnia. Że tak spytam- who is who?;) Tu jest tyle przypadków brzegowych, możliwych kombinacji itd., że ciężko jednoznacznie powiedzieć kto to mid a kto senior. Oczywiście można sobie stworzyć tabelkę co ma umieć mid a co senior, nawet można taką tabelkę stworzyć pod daną firmę/ projekt, ale i tak zawsze znajdzie się ktoś, kogo będzie ciężko sklasyfikować.

3
micheangelo napisał(a):

Cały ten podział mid/ senior jest jak dla mnie bardzo umowny. No bo załóżmy- jest ktoś seniorem, używa np. rabbitMQ, javy 8 i rzeczywiście w tym wymiata, ale zmienia pracę i tam np. jest java 17 i kafka. Nowości w javie można szybko ogarnąć, ale taki człowiek już nie ma seniorskich umiejętności dot. kafki i co teraz? Jest mid-em? A może juniorem,

To ciekawa sprawa, bo jak taka osoba wchodzi na rekrutację i dana technologia X jest ważna, to potem mogą go odrzucić za brak doświadczenia i zatrudnią kogoś, z większym doświadczeniem w X.

Czyli ktoś, kto w jednej firmie dorobił się seniora, tak naprawdę nic nie osiągnął stałego, bo rekrutacja w nowej firmie = leci estymacja doświadczenia/skilla od nowa. I taka osoba może tak samo być oceniona jako ktoś z małym doświadczeniem.

Czyli to wszystko bardzo umowne jest. Problem zaczyna się wtedy, kiedy ludzie zaczynają wierzyć, że istnieją obiektywnie 3 rodzaje programistów - junior, mid i senior albo że lata doświadczenia przekładają się na umiejętności.

7
micheangelo napisał(a):

Cały ten podział mid/ senior jest jak dla mnie bardzo umowny. No bo załóżmy- jest ktoś seniorem, używa np. rabbitMQ, javy 8 i rzeczywiście w tym wymiata, ale zmienia pracę i tam np. jest java 17 i kafka. Nowości w javie można szybko ogarnąć, ale taki człowiek już nie ma seniorskich umiejętności dot. kafki i co teraz? Jest mid-em? A może juniorem, bo Kafkę widzi pierwszy raz w życiu?

Jeśli był seniorem, to nadal nim jest. Seniorzy mają wywalone na jakieś juniorsko-haerowe buzzwordy typu Java 2137 czy herpatka. Senior to osoba doświadczona w szeregu różnych technologii, ogarniająca różne architektury, potrafiąca zdobyć szeroki obraz zarówno techniczny jak i biznesowy, taka która widziała wiele projektów - zarówno udanych, jak i nieudanych, więc ma doświadczenie pozwalające na dobranie narzędzia do problemu. A spotykając się z nową technologią będzie się spodziewała jakie ona ma komponenty, i jakie problemy mogą wynikać z jej używania.

Tak samo sytuacja z jaką się spotykałem- niby senior, świetnie pisze, wiedza ogromna, ale ma problem z ogarnięciem jakiegoś legacy code i gubi się. Pojawia się ledwo- mid i jakimś cudem ogarnia.

Ten niby-senior i ledwo-mid, to jak rozumiem za lata doświadczenia dostali swoje tytuły?

1

@somekind:
To wszystko o czym mówisz ma sens, pod warunkiem że tych "tytułów" nie dostaje się za dupogodziny. Jak pracowałem z niektórymi "seniorami" co to 10 lat w jednym korpo siedzieli przy 3 projektach i to głównie gasząc pożary wrzucając brzydkie workaroundy (no bo przecież później do tego wrócimy...prawda?). To straciłem wiarę w te śmieszne nazwy czy też korpo grady.

1

@mariusz00: Żeby być "midem" w moim rozumieniu, i zakresie Java backend:
technicznie:

  • znać Java (tutaj może być długa dyskusja co to oznacza)
  • rozumieć programowanie obiektowe, czyli patterns, SOLID, ale praktycznie
  • wiedzieć jak działa Spring (takie realia backendu...), w tym wiedzieć co to refleksja, jak działają te adnotacje (nie co robią, ale chociaż trochę "jak")
  • wiedzieć co to kolejka, baza relacyjna, baza nierelacyjna i mieć z tym chociaż trochę doświadczenia

doświadczenie:

  • świadome uczestnictwo w projekcie, który coś robi i gdzie taka osoba coś świadomie zrobiła
  • zrozumienie, że robimy to po to, żeby ktoś używał

osobowość/softskille

  • nie być psychopatą
  • umiejętność prowadzenia dyskusji opartej na faktach i danych
  • umiejętność wyrażania własnego zdania, w tym opinii negatywnych "ten ficzer nie jest dobrze zdefiniowany, bo...", "użycie tej biblioteki nie ma sensu, bo..."
  • jakieś minimalne poczucie odpowiedzialności za projekt, produkt, to co się robi, czyli po korporacyjnemu "proaktywność" i "ownership"
4

mysle ze spokojnie z 90% midow z ktorymi pracowalem nie spelnia warunkow z komentarzy ;) i pewnie ponad polowa seniorow tez ;)

1
kimikini napisał(a):

mysle ze spokojnie z 90% midow z ktorymi pracowalem nie spelnia warunkow z komentarzy ;) i pewnie ponad polowa seniorow tez ;)

Też można by zadać pytanie w drugim temacie, "z jakimi midami/osobami pracowaliście, jesli chodzi o umiejętności techniczne"

Bo w sumie ten temat może wyglądać bardziej na życzeniowy :D

44

W idealnym świecie wszystkie te punkty powinny być znane dla mida/seniora, nawet po obudzeniu w środku nocy. W praktyce większość osób tego nie pamięta co jest normalnym jak się czegoś nie używa na co dzień. Niemniej kumata osoba szybko sobie to wyszuka i bez problemu zaimplementuje.

4
Pinek napisał(a):

Mid to programista który zarabia mniej niż senior.

Jedyna słuszna odpowiedź w tej całej piramidzie różnych tytułów

Zwykle ogłoszenia są Mid/Senior. Gdzie oznacza to że ty startujesz na seniora, a oni szukają sposobu żeby zbić twoją pewność siebie bo jak przeknają cię że jesteś midem to trafisz w niższe widełki. Dla porównania np w Scalu (nie żebym robił im reklamę, ale wiem że mają cały czas jawne widełki na stronie) to senior to widełki 16 050 - 28 000, a mid(regular) 10 000 - 18 000

0

Ok, więc może pytanie do osób które zajmowały się stricte rekrutacją techniczną, czego wymagaliście od osób które startowały na stanowiska midowskie?
O czym rozmawialiście z taką osobą? Można podać technologie i poruszane tematy

0

A to nie ty powinieneś wiedzieć czego potrzebujesz? tech / projekt / podejścia użyte (microserwisy/monolity) / etc

0

Ok, to konkretnie, widełki do ~20k b2b (żeby mieć jakieś tam pojęcie kim jest ten mityczny "mid")

  1. Pierdoły z Java, czym się różni set od listy, czym jest mapa, zahaczenie o kontrakt hashCode equals, jakieś tam bzdety o ArrayList i LinkedList
  2. Trochę o zarządzaniu pamięcią w Java, co robi GC, kiedy jest uruchamiany, kiedy jakiś obiekt może, a kiedy nie może być usunięty
  3. O co chodzi w schemacie REST
  4. Co jest jednostką w testach jednostkowych (nie ma właściwej odpowiedzi)
  5. Jak zaimplementował(a) byś nasłuchiwanie zmian na liście
  6. Co i jak robi adnotacja @GetMapping w Springu
  7. W jaki sposób Hibernate dowiaduje się, że zarządzana przez niego encja została zmieniona i powinna być wysłana gdzieś tam
  8. Jakie są typy relacji w bazie danych, jak się je realizuje, co to jest n+1, lazy vs eager
  9. Czego się ostatnio nauczyłeś, czy znasz jakieś nowości w nowszych wersjach Java
0
mariusz00 napisał(a):

Ok, więc może pytanie do osób które zajmowały się stricte rekrutacją techniczną, czego wymagaliście od osób które startowały na stanowiska midowskie?

Ale tak bez podania języka? Możliwe że raz się mnie pytali co to monada. A może to było na seniorskie?

O Springa i Hibernate też się pytali. W Javie prawie zawsze się o to pytają. O różnice między interfejsem a klasą abstrakcyjną (nawet na seniora się o to mnie pytali)

1

Sam prowadzę rekrutacje i jest to niezwykle mocno zależne od firmy.
Dostajemy dużo kandydatów np. na Senior DevOpsów, którzy 7 lat pracowali pisząc pipeline'y w Jenkinsie + skrypty w terraformie. W swojej firmie awansowali, bo znali specyfikę firmy, natomiast na rynku są bardzo mało użyteczni - nie mieli styczności z wieloma systemami, networking, stability, skalowalność aplikacji, zarządzanie taintami w kubernetesie - nic nie potrafią z tego.

Z perspektywy tego czego ja oczekuję od mid developera, to znaczy głębokiej wiedzy dotyczącej podstaw (np. OOP, bazy danych, design patterns, process vs thread, konteneryzacja, jak usunąć duplikaty z pliku przy małej ilości pamięci), oraz szerokiego zrozumienia IT, ale już bardziej płytkiego (czyli przekrojowo CICD, web-development, konteneryzacja, chmura, podstawowe security aplikacji) - generalnie świadomość ekosystemu i umiejętność, z pomocą googla, zrobienia aplikacji samemu od zera

3

5 lat pracuję w IT, dotychczas w 3 firmach i w żadnej nie miałem wyszczególnionego poziomu. Zawsze byłem software engineer.

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