Ile razy widzieliście ofertę pracy "poszukiwany starszy programista wymagane X lat doświadczenia w technologii Y"? Mniej ważne co naprawdę reprezentujesz, mniej ważne co umiesz. Ważne ile lat pracowałeś na jakimś stanowisku, z jakąś technologią. JAK to robiłeś? A co tam, C# to C#, ASP.NET to ASP.NET.
Aha, pamiętaj - liczy się tylko doświadczenie PO SKOŃCZENIU STUDIÓW. Każdy przecież wie, że pracujący student nie zdobywa doświadczenia, tylko robi wszystko na odwal żeby mieć kasę na chlanie.
Ale ja nie o tym. Z każdym kolejnym odcinkiem serii skupiam się przede wszystkim na nas, programistach, a nie ludziach po drugiej stronie barykady.
Tak więc od początku...
Jak odpowiedziałbyś na pytanie "ile masz lat doświadczenia w tym co robisz?" ? Jeśli myślisz, że nie jest to tak proste jak odjęcie daty rozpoczęcia pierwszej pracy od daty aktualnej - dobrze myślisz. Jeśli myślisz odwrotnie - źle myślisz (...). Czym tak naprawdę jest "doświadczenie zawodowe"? Moim zdaniem to trochę bardziej skomplikowana kwestia.
Spróbuję zarysować (zapewne przesadzając) dwie postawy. Który z tych programistów miałby większe szanse na zdobycie pracy ze wspomnianego ogłoszenia?
I - MEGA DOŚWIADCZONY; PRZECIEŻ ROBIĘ TO SAMO PRZEZ X LAT W TAKI SAM SPOSÓB I DZIAŁA. TO MOJA RUTYNA.
"Jestem programistą C#. To znaczy, że programuję w C#. Nie oczekuj ode mnie nie wiadomo czego. Skończyłem studia kilka lat temu. Coś tam umiałem. Załapałem się w firmie, nauczyłem się robić to czego ode mnie oczekiwali. Robiłem, robiłem, awansowałem. Przecież to nic trudnego - każdy kolejny projekt wygląda tak samo. W końcu po to w Windowsie zrobili ctrl+c/ctrl+v żeby nie musieć się zbytnio wysilać skoro gdzieś wcześniej już coś podobnego mam. Działa, więc kopiuję i wykorzystuję w kolejnym miejscu. Przecież tyle się mówi 'code reuse'. Jeśli nie do końca działa - część wykomentuję (może przyda się kiedyś?) i pozmieniam tak żeby działało. Nie lubię wracać do raz napisanego kodu bo już następnego dnia nie bardzo go rozumiem. Ale czasami coś się psuje i trzeba wrócić. Wtedy komentuję i zmieniam dalej.
Czasami spotykam ludzi, którzy ciągle uczą się nowych rzeczy. Po co? Przecież umiem już to co mi potrzeba. Dlaczego mam robić inaczej to, co robię teraz, skoro działa?
A nowe narzędzia? Jakieś wyskakujące okienka, kolorki, dziesiątki skrótów klawiaturowych. Bez przesady, nie wiem co oni w tym widzą. Nie płacą mi za uczenie się jakichś dziwactw, tylko za programowanie. A to robię od lat i jestem w tym dobry. Gdyby było inaczej nadal byłbym juniorem, czyż nie?"
II - MNIEJ DOŚWIADCZONY; NIE ROBIĘ CIĄGLE WSZYSTKIEGO TAK SAMO. NIEUSTANNIE SZUKAM LEPSZEGO SPOSOBU.
"Jestem programistą. Zdaję sobie sprawę, jaką odpowiedzialność to na mnie nakłada. Tworzenie coraz lepszego oprogramowania wymaga, abym i ja był coraz lepszy. Aby mój kod był coraz lepszy. Raz napisany, działający w danych okolicznościach, kawałek kodu nie jest świętością i rozwiązaniem uniwersalnym. Na pewno można to zaimplementować lepiej - i zrobię to rozwiązując podobny problem następnym razem, wykorzystując zdobyte teraz doświadczenie.
Wiem, że setki ludzi pracują nad rozwiązaniami mającymi ułatwić mi pracę. Dlatego też inwestuję swój czas w zaznajomienie się z nimi, bo prawie na pewno zwróci mi się to. Choćby z szacunku do własnej pracy, do klienta, do pracodawcy, nawet jeśli z ich strony wygląda to na marnotrawstwo.
Nie zamykam się na rozwiązania inne niż moje własne - tyle jest różnych dróg, różnych uzasadnień, różnych podejść! Nie sposób opanować ich wszystkich, ale na pewno z każdego da się zaczerpnąć coś wartościowego.
Najważniejsze jednak, że zawsze krytycznie patrzę na to co zrobiłem. Zauważanie własnych potknięć, szukanie lepszych sposobów, znajdowanie luk we wcześniejszym własnym rozumowaniu... czyż nie stąd czerpie się najcenniejsze doświadczenie?"
Podejrzewam, że ogromna większość czytelników zalicza się do grupy "rozwojowej". Jak jednak myślicie, ilu programistów W OGÓLE można do niej zaliczyć? Moim zdaniem niestety niewielu. Przez "niewielu" nie rozumiem 1%, ale każda liczba poniżej 100% to w tym przypadku "niewielu".
Dlaczego tylu "z nas" uważa koniec studiów za koniec edukacji? Od lekarzy, nauczycieli czy mechaników wymagamy, by byli wciąż na bieżąco ze swoimi kompetencjami. Ale to jest także NASZ obowiązek! Bezmyślnie wykonując rzemieślniczą pracę, zamykając się na rozwój i ignorując nowe technologie, bierzemy na siebie odpowiedzialność za marną jakość wytwarzanego oprogramowania. Oczywiście, nikt nam za to nawet palcem nie pogrozi. Dzisiaj samo zrozumienie pojęcia "klasa" na drugim roku studiów wystarczy do znalezienia dobrze płatnej pracy. Ale czy to jest usprawiedliwienie dla zostania na tym poziomie?
Drogi leniu, wyobraź sobie prawnika, który reprezentując cię powołuje się na prawo sprzed 10 lat. Niemiło? Uświadom sobie, że jesteś takim właśnie prawnikiem.
Wydaje mi się, że w świecie .NET kluczowym "zwrotem" oddzielającym jednych od drugich była premiera C# 3.0. Ilu programistów rozumie jak działają wyrażenia lambda? Ba, ilu chociaż umie je wydajnie zastosować w odpowiedniej sytuacji? Ilu z entuzjazmem ogarnęło LINQ, aby ohydny kod złożonych pętli "foreach" zastąpić czytelnym, zwięzłym zapytaniem? Ech...
A od kiedy są one dostępne? Jeśli dobrze liczę, to od DWÓCH lat!
(w tym konkretnym przypadku dodatkowym warunkiem jest oczywiście "przyzwolenie" z góry na używanie VisualStudio 2008... betonu na stanowiskach kierowniczych i największy zapał nie rozkruszy)
Pozostaje pytanie: co zrobić, aby ten współczynnik wzrósł? Po czyjej stronie leży odpowiedzialność i wina za aktualny stan rzeczy?
Czy to uczelnie źle uczą? Czy to pracodawcy za mało wymagają? Czy to w końcu pełna samouwielbienia mentalność informatyka? "Jestem na tyle zajebisty że więcej umieć nie muszę. Przecież piszę i działa".
A może jednak jest inaczej i to ja mam mylne pojęcie?
Na koniec megamądry cytat z Ayende Rahien:
"Yes, experience matters. No, one year repeated fifteen times does not count."
Ciężko o bardziej trafne podsumowanie. Zatem... do roboty...
UPDATE: w odpowiedzi na część komentarzy zamieściłem drugi post o podobnej tematyce (w skrócie: nie chodzi mi głównie o
nowe technologie);
link.