@arrowman:
Przecież @aurel Ci za bardzo nie schlebiała, tylko napisała swoje zdanie na temat sytuacji w korporacjach. Z Tobą nie ma to nic wspólnego: my nie znamy przecież Twojego poziomu. Może być tak, że jesteś naprawdę dobry. Prawdopodobnie tak nie jest, ale bazuję to wyłącznie na statystyce. Większość programistów to cieniasy lub średniaki. Nie przeszkadza to jednak Tobie w byciu dobrym programistą -- to już zależy wyłącznie od Ciebie. Od tego, jak się będziesz szkolił. Bo w nauce programowania ostatecznie możesz polegać tylko na sobie. Trzeba wspomagać się innymi jak tylko jest okazja -- pomoc dobrych programistów cholernie przyspiesza naukę (np. code review to jeden z najlepszych sposobów podniesienia jakości swojego kodu) -- ale to Ty musisz zadbać o to, byś mógł się od kogoś uczyć.
Tutaj np. pomagają dobre studia. Nie dlatego, że czegoś uczą. Na zajęciach samych w sobie nauczysz się niewiele z tego, co Ci się potem przyda. Ale studia dają impulsy do samorozwoju i w naturalny sposób zaznajamiają z innymi młodymi programistami. Część z nich będzie przecież dobrych...
Co do samooceny, to powiem przewrotnie: IMO lepiej mieć niską nic bardzo wysoką. Ja sam w naturalny sposób jestem bardzo krytycznie nastawiony do swoich umiejętności. Oceniam się bardzo zachowawczo i defensywnie. Z biegiem lat, mając dowody w postaci porównywania swojego poziomu do poziomu innych, wyzbyłem się tej niesłusznej, nadmiernej skromności ;). Ale nadaj widzę mnóstwo rzeczy, których nie umiem, a które powinienem umieć. To jest dobre i to pomaga!
I z drugiej strony: gdy ktoś aplikuje na jakieś stanowisko, to arogancja i gwiazdorzenie są zwykle stosunkowo poważnymi minusami. Zajmuję się na co dzień m.in. rekrutacją programistów właśnie do dużej korporacji (jestem tam starszym programistą, akurat chyba jedynym w dziale, więc zajmuję się stroną techniczną rekrutacji, choć nie tylko). Zdarzają się sytuacje, że trafia się ktoś, kto jest "dobry" lub "bardzo dobry", ale w CV i podczas rozmów daje do zrozumienia, że uważa, iż jest wybitny/celujący. I to z kilku technologii. Patrząc na jego realne umiejętności można się zastanawiać, czy przyjąć go na juniora czy na zwykłego programistę, a statsy sobie powpisywał w CV takie, że wg nich powinien być znacznie lepszy ode mnie.
Czy on nie wie, że np. język programowania X można umieć na wyższym poziomie? Że podczas rozmowy wykryliśmy u niego luki w dość podstawowych -- choć może nie super często używanych -- konstrukcjach, a np. ja sobie lubię poczytać "do poduszki" (w biurze :P) specyfikację w/w języka, jego drzewo składni, czy specyfikację nowszych wersji, a także o szczegółach kompilacji JIT? Gościu o tych rzeczach zdaje się nie mieć wielkiego pojęcia, a nad nimi są rzeczy jeszcze bardziej szczegółowe, których ja póki co nie ogarniam. A gościu dał sobie w CV 10/10, a co gorsza (bo w CV ludzie często wpisują bzdury) zdaje się naprawdę tak myśleć o swoim poziomie.
Po co nam taki koleś w zespole, w którym nikt (w negatywny sposób) nie gwiazdorzy, w którym każdy chętnie słucha uwag innych i nie obraża się za wytknięcie sobie błędów, a jednocześnie wie ile jeszcze ma do opanowania? Taki charakter jest nam zupełnie zbędny, bo atmosfera u nas w teamie jest świetna, luzacka i jajcarska i praktycznie nie ma nielubianych osób. Również dlatego, że staramy się nie przyjmować takich typków.
No, gdyby był rzeczywiście rewelacyjny, to wtedy moglibyśmy pogadać. A tak? Jak nie on, to ktoś inny, skromniejszy. Bo zdarzają się i lepsi, i (jednocześnie) skromniejsi.
W korporacjach jest wbrew pozorom naprawę różnie. Nawet w tej samej korporacji są różnice pomiędzy różnymi działami. U nas w teamie proces aplikacji jest długi, żmudny i szczegółowy -- chyba najbardziej ze wszystkich działów (które ja znam, przynajmniej). U nas nie ma bata, żebyś samą pewnością siebie wywalczył coś dobrego. Luki w Twojej wiedzy i tak wyjdą. Każdy je zresztą ma. I nic w tym złego: jeśli przyjmujesz do wiadomości istnienie tych luk, to OK. Jeśli im zaprzeczasz i uważasz się za nie wiadomo co (a nie jesteś nie wiadomo czym) -- to minus.
Także wg mnie podejdź do tego od tej strony, od której podchodzisz. Zacznij dość skromnie, ale bardzo sumiennie się ucz. Stopniowo, na drodze dowodów -- obserwując relatywny poziom innych ludzi -- zwiększaj sobie morale, bo na to będziesz zasługiwał. Kiedyś będziesz mógł z ręką na sercu powiedzieć: "Jestem dobry. Teraz popracuję jeszcze nad X, Y i Z i będę bardzo dobry.".
@aurel:
Hmm, ponownie: to zależy jak na to spojrzeć i o jaką korporację (jaki dział!) chodzi.
Tak, w samą technologię można się wdrożyć. Szczególnie że niektóre technologie są rozwijane tylko w konkretnej korporacji, więc i tak i tak żaden aplikant nie może ich znać.
Ale jeśli chodzi o poziom programistyczny...
Opanowanie języka, paradygmatów programowania, sposobów testowania i utrzymywania jakości kodu aplikacji -- to kandydat może mieć odhaczone praktycznie zawsze, niezależnie od technologii. Tak naprawdę niewielu programistów to potrafi (!). Tak: większość z nas pisze słaby kod, o testach automatycznych może coś tam słyszało, wzorców projektowych zna trzy na krzyż, a "refaktoryzację" kojarzy z menu Eclipse'a. Jak to wszystko umiesz na rozsądnym poziomie, to już jesteś całkiem niezła.
Tak, korporacje mają pieniądze. Ale spójrzmy na to z innej strony: mają kasę, to stać ich na dobrych pracowników. Po cholerę mają brać cienkich? Płacą tyle, że i dobrzy kandydaci przeważnie znajdują się wystarczająco często.
Choć fakt, nie zawsze. Nieraz firmy tak wydrenują rynek, że trzeba kombinować inaczej. I np. otwierać w korpo szkółkę dla junior developerów.
aurel napisał(a)
Poza tym, nie traktuj korporacji jak jakieś Eldorado :P Mają swoje wady... Ale początkującemu (na rynku pracy) jak najbardziej polecam.
Oj, na pewno nie eldorado... Z drugiej strony... Czy to dobre miejsce dla początkujących... Jak tak teraz pomyślę, to sam nie wiem. To też raczej stabilna robota, na lata. Dla niektórych: na zawsze.
Jest jednak na tyle różnorodnie (różnice pomiędzy poszczególnymi korpo, ich działami, technologiami...), że spory zakres ludzi może znaleźć coś dla siebie.
edit:
@arrowman:
Jeszcze trochę motywacji, ale takiej prawdziwej. Posłuchaj: większość programistów dość szybko osiada na laurach. Tracą motywacje. Ci w korporacjach tym bardziej :). Z każdym rokiem uczą się coraz mniej. Niektórzy zdają się niczego nie uczyć.
Jeśli Ty chciałbyś naprawdę być dobry, chciałbyś się wyrwać, coś zdziałać... Jeśli inwestowałbyś w siebie sumiennie, jeśli mocno skupiłbyś się na treningu i zdawał sobie sprawę, że to ciężka praca umysłowa, która ma trwać kilka lat (wiem, że w mniejszych miejscowościach się nie przelewa, więc pracy chyba się nie boisz?)... to po prostu tamtych kolesi w końcu dościgniesz. I prześcigniesz. Niezależnie od tego jak duża różnica by nie była na początku. Nadrobić można wszystko szybciej niż myślisz, trzeba tylko się hardcorowo uczyć. Trzeba naprawdę chcieć. I to może być Twoje przewaga. Ale zależy to od Ciebie.
edit2:
Aha, w sprawie "najniższej krajowej" i jeszcze paru stów pod ladą... Nie żartujmy sobie :). Jeśli takie coś w ogóle istnieje szerzej w Poznaniu, to jako totalna dolina, dół łańcucha pokarmowego. Jest dużo raczej kiepskawych firm, którym jednak przez myśl nie przejdzie robić takich wałków. Bo tego to już nawet Comarch studentom nie robi ;). Umowa o pracę i 2k na rękę tutaj to naprawdę niewiele (choć owszem, ludzie i tak zaczynają i nie ma się czego wstydzić).
Dalej: jest też całkiem sporo firm średnich, które płacą już wyraźnie więcej i w których ogólnie nie jest tak źle, a pod wieloma względami jest całkiem fajnie. I są też firmy dobre i bardzo dobre, w których jest... dobrze lub bardzo dobrze. A jakieś minusy zawsze będą. Z drugiej strony, o minusach pracy w moich firmie nie śmiałbym narzekać w moim niewielkim, rodzinnym mieście, bo przy tej szarej rzeczywistości byłoby to po prostu nie na miejscu.