Awans z średniego programisty na wybitnego

0

Cześć,

Jak myślicie, czy jest szansa na wybicie się ze średniego programisty na takiego wybitnego, o którego będą się biły największe firmy informatyczne na świecie?
Czy może pracując już te 10-12 lat (lub więcej) jest na to marna szansa i jeżeli miało by się zostać takim super programistą to już dawno się by nim było, a tak do końca pozostanie już nudne korpoklepanie o ile chatGPT nie zabierze pracy?

6

Trzeba by było najpierw zdefiniować wybitnego programistę i największe firmy informatyczne - bo np IBM, Intel czy Google (jedne z największych firm informatycznych) w Polsce chcą zatrudnić po prostu każdego kto przejdzie u nich proces, a przechodzi się wtedy, jak się przygotowujesz pod to żeby ten proces przejść xd

0

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy
  2. pisze bardzo (wydajny) dobry i czysty kod szybko
  3. ma dobrą pamięć do kodu

Największe firmy informatyczne to właśnie te, które wymieniłeś czyli IBM, intel, Google, Facebook, Apple itp..

1

Zagadnienie dość poważne, dotyczy Twojej przyszłości, więc poświęciłbym na nie trochę czasu i wyszukałbym takie osoby (np. Tomasz Czajka), a później pooglądał z nimi wywiady (prawdopodobieństwo, ze dostali takie pytanie oceniam na > 50%), a następnie - po poświęceniu czasu na wywiady, nigdy wcześniej - może napisanie do kilku z nich treściwego maila/wiadomość na Linkedin.
Na forum istnieje większa szansa niż u tych programistów, że dostaniesz radę od niewybitnej osoby o tym jak być wybitnym i może być ona po prostu błędna mimo szczerych.

2
itou123 napisał(a):

Na forum istnieje większa szansa niż u tych programistów, że dostaniesz radę od niewybitnej osoby o tym jak być wybitnym i może być ona po prostu błędna mimo szczerych.

Ja właśnie taką radę piszę, ale wysnutą na podstawie obserwacji osób, które uważane są za wybitne i pracują w znanych firmach. Przy czym moja opinia jest skrzywiona przez to, że patrzę tylko przez pryzmat tych programistów, o których w ogóle wiem, czyli tych, którzy się udzielają mocno w społeczności (Twitter, popularne projekty open source itp.). Czyli może to być błąd przeżywalności.

snakeomeister napisał(a):

Jak myślicie, czy jest szansa na wybicie się ze średniego programisty na takiego wybitnego, o którego będą się biły największe firmy informatyczne na świecie?

Ważniejsze jest, kogo znasz. Np. we frontendzie kółeczko wzajemnej adoracji widać na Twitterze ludzi pozatrudnianych przez najlepsze firmy (teraz choćby Facebook i Vercel są wyznacznikiem bycia fajnym). Zwykle to było tak, że ktoś jakoś się udzielał np. miał projekt open source, powystępował trochę na konferencjach, popisał na Twitterze i później mu się udało wkręcić.

na takiego wybitnego

Moim zdaniem oni mają wiedzę seniorską, ale nie róbmy z nich nie wiadomo kogo. Jak się prześledzi historię niektórych programistów (którzy dostali się do firm pokroju Facebooka), to okazuje się, że często byli to po prostu w miarę zdolni i udzielający się w społeczności devowie, którym za pomocą wypracowanej sławy udało się wkręcić do niezłych firm, a potem to już spirala w górę, ponieważ pracując nad czymś ważnym i mając do czynienia z trudnymi problemami, tacy ludzie nabierają więcej seniority. I stają się powoli coraz większym autorytetem (co się nie bierze znikąd, ale to taka samonakręcająca się przepowiednia. Ktoś staje się coraz lepszy, bo pracuje w dobrej firmie i ma podsuwane przez nos ciekawe problemy).

3
snakeomeister napisał(a):

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy
  2. pisze bardzo (wydajny) dobry i czysty kod szybko

Ale że te warunki muszą być spełnione łącznie? Obawiam się, że to często może nie iść w parze tzn. niekoniecznie wygrywanie konkursu algorytmicznego idzie w parze w utrzymywanym kodem, tak samo jak pisanie wydajnego kodu z czystym kodem.

3
snakeomeister napisał(a):

Czy może pracując już te 10-12 lat (lub więcej) jest na to marna szansa i jeżeli miało by się zostać takim super programistą to już dawno się by nim było

Osobiście to mając 12 lat, i znając wybitnego o połowę mniej starego to dochodzę do wniosku że jeśli masz 12 i nie jesteś wybitny to już nie będziesz.

Sam sobie odpowiedz na pytanie dlaczego i czy warto.

2

Realniejsza strategia to znaleźć swoją niszę i być w tej niszy wybitnym. I niech się biją o Ciebie na przykład startupy.

0
itou123 napisał(a):

Zagadnienie dość poważne, dotyczy Twojej przyszłości, więc poświęciłbym na nie trochę czasu i wyszukałbym takie osoby (np. Tomasz Czajka), a później pooglądał z nimi wywiady (prawdopodobieństwo, ze dostali takie pytanie oceniam na > 50%), a następnie - po poświęceniu czasu na wywiady, nigdy wcześniej - może napisanie do kilku z nich treściwego maila/wiadomość na Linkedin.

Jest to jakiś pomysł, dzięki, wiem kto to jest Tomasz Czajka i właśnie ostatnio oglądałem z nim jeden wywiad o ChatGTP i to skłoniło mnie do założenia poniekąd tego wątku.
Wątpie, żeby tego typu osoby odpisywały anonimowym internautom, ale spróbować może nie zaszkodzi.

LukeJL napisał(a):

Moim zdaniem oni mają wiedzę seniorską, ale nie róbmy z nich nie wiadomo kogo. Jak się prześledzi historię niektórych programistów (którzy dostali się do firm pokroju Facebooka), to okazuje się, że często byli to po prostu w miarę zdolni i udzielający się w społeczności devowie, którym za pomocą wypracowanej sławy udało się wkręcić do niezłych firm, a potem to już spirala w górę, ponieważ pracując nad czymś ważnym i mając do czynienia z trudnymi problemami, tacy ludzie nabierają więcej seniority. I stają się powoli coraz większym autorytetem (co się nie bierze znikąd, ale to taka samonakręcająca się przepowiednia. Ktoś staje się coraz lepszy, bo pracuje w dobrej firmie i ma podsuwane przez nos ciekawe problemy).

Właśnie o to chodzi, żeby dostać się do tego typu firmy, żeby mieć do rozwiązywania ciekawe problemy a nie tylko jakieś bugfixy albo małe/średnie/duże, ale ogólnie wtórne featury.

marian pazdzioch napisał(a):
snakeomeister napisał(a):

Czy może pracując już te 10-12 lat (lub więcej) jest na to marna szansa i jeżeli miało by się zostać takim super programistą to już dawno się by nim było

Osobiście to mając 12 lat, i znając wybitnego o połowę mniej starego to dochodzę do wniosku że jeśli masz 12 i nie jesteś wybitny to już nie będziesz.

Sam sobie odpowiedz na pytanie dlaczego i czy warto.

Moja odpowiedź na to jest taka, że jest to niemożliwe z kilku powodów.

  1. Tego typu programiści nie są tacy od dzisiaj, to efekt wielu lat ciężkiej pracy
  2. Cały czas się rozwijają

Można co najwyżej próbować do nich aspirować i dzięki temu stawać się lepszym, ale tego typu ludzi dogonić prawie nierealne.

froziu napisał(a):
snakeomeister napisał(a):

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy
  2. pisze bardzo (wydajny) dobry i czysty kod szybko

Ale że te warunki muszą być spełnione łącznie? Obawiam się, że to często może nie iść w parze tzn. niekoniecznie wygrywanie konkursu algorytmicznego idzie w parze w utrzymywanym kodem, tak samo jak pisanie wydajnego kodu z czystym kodem.

Ok, to racja.

Lukxxx napisał(a):

Realniejsza strategia to znaleźć swoją niszę i być w tej niszy wybitnym. I niech się biją o Ciebie na przykład startupy.

Tak, mam już taką niszę, ale mnie nudzi.

5

programista - wykwalifikowany pracownik biurowy niższego szczebla, tym jest kodziarz z punktu widzenia korpo, niżej od niego to nikogo nie ma, wyżej - cała masa managierów
wybitny programista
i tu się zaczynają schody

  • zna język (technologię)
  • zna biznes
  • ma gadane
  • umie robi sobie zajebisty PR
  • czegoś dokonał

można czegoś dokonać, stworzyć apkę, liba, która będzie mega popularna, a być średnim w języku, algo itd
można być zajebistym w języku, a nawet linijki kodu nie napisać, a żyć ze szkoleń i prezentacji/konsultacji (znałem takiego jednego, żył ze szkoleń)
można mieć gadane i robić sobie PR, oczarowywać managierów gadką, tak że będą spijali z twoich ust - ale poza tym ślizgać się w robocie

znałem też kolesia co robił naście lat w projekcie i jak coś się kwasiło to patrzył na ekran i mówił - sprawdź w tej i tej metodzie, pewnie tam coś nie gada - był podziwiany, ale jak sam mówił, że od zera to raczej by takiej apki nie zrobił (zresztą na tym forum był wątek o gościu co ma około 10 lat doświadczenia ale od zera apki/serwisu nie napisze)

moim zdaniem korpy nie potrzebują wybitnych, a zbliżonych ludzi - aby w razie W można było go zastąpić, aby nie być zależnym, aby nie miała taka osoba zbyt wielkiej władzy w rękach
a taki wybitny, naprawdę mega gigant - to co by się zadowolił kolejnym taskiem z JIRY (swego czasu czytałem artykuł, o frustracji pracowników Googla, brali tzw A-playerów, ale nie zapewniali im A-roboty, a że tak powiem - śmieci ktoś też musi sprzątać i wywozić, życie, no i uciekali z firmy)

poza tym po co chcesz być wybitnym?
dla zaspokojenia ego?
dla kasy?

bo firma może nie docenić, tego, że jesteś wielki, bo nie potrzebuje na tym stanowisku kogoś mega, a kogoś tak zwyczajnie dobrego - to czemu ma płacić za umiejętności z których nie będzie korzystać. Na zasadzie, fajnie, że umiesz piec pączki, ale my tu pizzę robimy i póki co nie zamierzamy robić czegoś innego nawet w tłusty czwartek

Jedyną, moim zdaniem, zaletą bycia ponadprzeciętnym jest to, że dajesz radę na rozmowach, bo to jest taki czas w którym pokazujesz niemalże 100% swoich umiejętności, a w pracy jak to w pracy (memy z serii tech interview vs real work)

Firma chce średniaka, który by za bardzo nie fikał, łatwo zastępowalnego, fajnie jakby się dało go zamknać w złotej klatce
pracownik chce - wpływu, rozwoju, jak najmniej rutyny itd
cele przeciwstawne

także bycie wybitnym dla pracy w korpo to może skutkować poczuciem zmarnowania potencjału własnego

3

a ja napiszę inaczej - nie ma czegoś takiego jak wybitny programista (z opisu pytacza wynika, że raczej powinien on się nazywać wybitny klepacz) - programista, który osiąga jakiś tam poziom przestaje być programistą a staje się kimś więcej. Może wybrać ścieżkę oficjalną - architekt/projektant albo ścieżkę nieoficjalną - magik cudotwórca (wydaje mi się, że taką osobą stąd jest np. @jarekr000000 :p) - czyli taki gość, który wchodzi, namierza problem, naprawia go i oddala się ku zachodzącemu słońcu (tak, są też tacy ludzie).

To co opisał pytacz to może być też wybitny junior (wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy, ma dobrą pamięć do kodu, pisze bardzo (wydajny) dobry i czysty kod szybko). Nie bardzo wiem po co ta pamięć do kodu. Mam też wątpliwości co do dobrego/wydajnego kodu - na jakim poziomie? - mikrooptymalizacji? No bo jak ktoś mi posortuje tablice QSem zamiast bąbelkowym to to jest optymalizacja czy po prostu nie bycie idiotą? Obecnie (ZAZWYCZAJ) dużo ważniejsza jest szybkość napisania danego kodu, możliwość jego rozszerzenia oraz stabilność niż szybkość czy pamięciożerność (oczywiście w granicach rozsądku ale nikt nie będzie się bił o różnice rzędu kilku procent jeśli ich poprawa zajmie 10x więcej czasu).

11

Takimi programistami są hobbyści co każdy wolny czas przeznaczają na programowanie. Robią to dlatego, że programowanie im się bardzo podoba i przez to są siłą rzeczy najlepsi.
Nie da się stworzyć planu do tego, aby się takim stać.

0
sobbek napisał(a):

można czegoś dokonać, stworzyć apkę, liba, która będzie mega popularna, a być średnim w języku, algo itd

Nie wydaje mi się, że jesteś w stanie stworzyć coś popularnego będąc średnim.

można być zajebistym w języku, a nawet linijki kodu nie napisać, a żyć ze szkoleń i prezentacji/konsultacji (znałem takiego jednego, żył ze szkoleń)

To czysty teoretyk, a nie wybitny programista.

można mieć gadane i robić sobie PR, oczarowywać managierów gadką, tak że będą spijali z twoich ust - ale poza tym ślizgać się w robocie

To raczej przepis na przetrwanie dla kogoś słabego.

znałem też kolesia co robił naście lat w projekcie i jak coś się kwasiło to patrzył na ekran i mówił - sprawdź w tej i tej metodzie, pewnie tam coś nie gada - był podziwiany, ale jak sam mówił, że od zera to raczej by takiej apki nie zrobił (zresztą na tym forum był wątek o gościu co ma około 10 lat doświadczenia ale od zera apki/serwisu nie napisze)

To jest właśnie imho jedna z cech wybitnego programisty.

moim zdaniem korpy nie potrzebują wybitnych, a zbliżonych ludzi - aby w razie W można było go zastąpić, aby nie być zależnym, aby nie miała taka osoba zbyt wielkiej władzy w rękach

Tak, zgadzam się z tym w 100%, nawet zadania są przypisywane losowo z różnych obszarów, żeby nie mieć za głębokiej wiedzy w jednym z nich.

poza tym po co chcesz być wybitnym?
dla zaspokojenia ego?
dla kasy?

Dla dwóch powyższych, ale także dlatego żeby stworzyć coś własnego oraz uciec od korpoprojektów.

Jedyną, moim zdaniem, zaletą bycia ponadprzeciętnym jest to, że dajesz radę na rozmowach, bo to jest taki czas w którym pokazujesz niemalże 100% swoich umiejętności, a w pracy jak to w pracy (memy z serii tech interview vs real work)

Ja widzę jeszcze inną zaletę, pracujesz przez to szybciej i możesz sobie wziąć np. 3 równoległe etaty :)

także bycie wybitnym dla pracy w korpo to może skutkować poczuciem zmarnowania potencjału własnego

Tak, pełna zgoda, ale nie taki jest mój cel.
Ogólnie właśnie czuję, że korpo mnie nie rozwija i marnuje mój potencjał. Siedzę w złotej klatce, ale nie rozwijam się wcale technicznie, biznesowo to inna historia. Tak, więc jedyną możliwością jaką dostrzegłem to właśnie stanie się wielkim ogarem :)
Tj. w pewnych obszarach już nim jestem, ale w pewnych nie.

2

Tak, jest szansa - pod warunkiem, że zaczniesz faktycznie inaczej się zachowywać. Zmiana wymaga nie tylko ogarnięcia technicznego, ale przede wszystkim nauki umiejętności miękkich, a tak naprawdę korpo nadaje się do tego jak nic innego.
Druga sprawa jest taka, że jeśli jesteś zwykłym developerem to musisz szukać bardziej odpowiedzialnego stanowiska. Na pewno musisz przejść z developera na software engineer'a, a najlepiej na takiego ważniejszego. Obecnie są tzw. principal software enginner, jest jeszcze ścieżka architekta - najlepiej takiego, który potrafi prowadzić zespół.

Natomiast bardzo mało prawdopodobny jest scenariusz, w którym rozwiniesz się wyłącznie technicznie i zaczną się bić o ciebie firmy.

1
Lukxxx napisał(a):

Realniejsza strategia to znaleźć swoją niszę i być w tej niszy wybitnym. I niech się biją o Ciebie na przykład startupy.

Ale po co? Większość startupów i tak nie ma pieniędzy.

3
LukeJL napisał(a):
Lukxxx napisał(a):

Realniejsza strategia to znaleźć swoją niszę i być w tej niszy wybitnym. I niech się biją o Ciebie na przykład startupy.

Ale po co? Większość startupów i tak nie ma pieniędzy.

Jak mają inwestora co nie ogarnia to odbywa się tam klasyczne "za hajs inwestora baluj". Żona pracowała w takiej firmie, ale się inwestor połapał. Teraz znajomy się załapał do takiej firmy. Ale to nie trzeba być dobrym żeby dostać się do takiego stardupu, trzeba mieć znajomości i szczęście

2
snakeomeister napisał(a):

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy
  2. pisze bardzo (wydajny) dobry i czysty kod szybko
  3. ma dobrą pamięć do kodu

To wszystko odpowiada na pytanie ,,jak". Brakuje w tym umiejętności znajdowania odpowiedzi na dużo ważniejsze pytania: "co?" (... ma być zrobione), "po co" (... to ma być zrobione).
Odnośnie 3), najtrudniejszy w utrzymaniu i najbardziej przeinżynierowany kod, z jakim miałem przez te 20 lat do czynienia, był napisany przez ludzi, którzy najpierw sobie to wymyślili w głowie, a potem napisali, bez uwzględnienia konieczności testowania. Po co pamięć do kodu? Kod zazwyczaj utrzymywany jest przez zespół; ludzie zwalniają się i przychodzą nowi; kod powinien być taki, żeby dowolna osoba mogła go zrozumieć i zmienić.

0
Jaime napisał(a):
snakeomeister napisał(a):

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy
  2. pisze bardzo (wydajny) dobry i czysty kod szybko
  3. ma dobrą pamięć do kodu

To wszystko odpowiada na pytanie ,,jak". Brakuje w tym umiejętności znajdowania odpowiedzi na dużo ważniejsze pytania: "co?" (... ma być zrobione), "po co" (... to ma być zrobione).
Odnośnie 3), najtrudniejszy w utrzymaniu i najbardziej przeinżynierowany kod, z jakim miałem przez te 20 lat do czynienia, był napisany przez ludzi, którzy najpierw sobie to wymyślili w głowie, a potem napisali, bez uwzględnienia konieczności testowania. Po co pamięć do kodu? Kod zazwyczaj utrzymywany jest przez zespół; ludzie zwalniają się i przychodzą nowi; kod powinien być taki, żeby dowolna osoba mogła go zrozumieć i zmienić.

Pamięć do kodu moim zdaniem jest potrzebna do tego, że jak dostajesz jakiegoś taska z prośbą o wycenę ile coś zajmie to od razu pamiętasz w którym miejscu w kodzie jest wymagana zmiana i jak ten kod wygląda, dzięki czemu Twoja wycena jest lepsza. Jak rozwijany system jest duży i dostajesz zadania z różnych obszarów to może się to przydać, bo im więcej kodu tym więcej przydałoby się pamiętać.

Mógłbym tutaj dodać kolejny punkt (nie wiem czy nie ważniejszy niż 3 poprzednie):
4) wymyślił własny(e) nietrywialne algorytm(y) przez co ma wkład w rozwój informatyki

5
snakeomeister napisał(a):

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy

Jak już @abrakadaber wspomniał - taki ktoś to bardziej wybitny junior.
Problem w tym, że wygrywanie konkursów informatycznych to domena bardziej uczniów i studentów. Bardziej zaawansowani programiści zwykle zajmują się bardziej praktycznymi sprawami niż rozwiązywanie łamigłówek i nauka algorytmów na pamięć.

  1. pisze bardzo (wydajny) dobry i czysty kod szybko

To jest możliwe do osiągnięcia, jeśli ktoś już pisał kiedyś podobny program, rozwiązywał podobne problemy.

  • Wie, jak to napisać, żeby było dobrze (więc już ma obmyślony temat, nie musi spędzać masy czasu na eksperymentach i zastanawianiu się, bo już to dawno zrobił)
  • Ale wie też, jak czegoś nie pisać - pewne rozwiązania wydają się dobre, ale grożą wkopaniem się w coś i straceniem masy czasu i później sprawiają problemy z utrzymywaniem projektu. Senior (bo nawet nie osoba "wybitna") to taka osoba, która powinna mieć na tyle doświadczenia, żeby odróżnić dobre rozwiązanie od złego.

Żeby być dobrym w programowaniu trzeba programować, eksperymentować, podpatrywać innych oraz wyciągać wnioski. Wtedy można poznać zarówno dużo dobrych jak i dużo złych rozwiązań.

  1. ma dobrą pamięć do kodu

Jeśli ktoś ma "dobrą pamięć do kodu", to powinien schować ego do kieszeni i założyć, że inni mają złą. Dobra pamięć do kodu to wada, jeśli ktoś jest seniorem w zespole. Wtedy nie ma w projekcie dokumentacji, bo senior wszystko ma w głowie. Czyli bus factor = 1.

0
LukeJL napisał(a):
snakeomeister napisał(a):

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy

Jak już @abrakadaber wspomniał - taki ktoś to bardziej wybitny junior.
Problem w tym, że wygrywanie konkursów informatycznych to domena bardziej uczniów i studentów. Bardziej zaawansowani programiści zwykle zajmują się bardziej praktycznymi sprawami niż rozwiązywanie łamigłówek i nauka algorytmów na pamięć.

Niech będzie, że to wybitny junior, ale z wybitnego juniora może stać się wybitnym seniorem/architektem czy kim tam jeszcze chce.
Żeby zajmować się bardziej praktycznymi sprawami niż rozwiązywanie łamigłówek i nauka algorytmów może warto najpierw trochę ich rozwiązać? Bez znajomości tego co istnieje nie można rozwiązywać bardziej zaawansowanych problemów. Bycie takim wybitnym juniorem otwiera wiele drzwi, które dla zwykłego juniora są zamknięte.

  1. pisze bardzo (wydajny) dobry i czysty kod szybko

To jest możliwe do osiągnięcia, jeśli ktoś już pisał kiedyś podobny program, rozwiązywał podobne problemy.

  • Wie, jak to napisać, żeby było dobrze (więc już ma obmyślony temat, nie musi spędzać masy czasu na eksperymentach i zastanawianiu się, bo już to dawno zrobił)
  • Ale wie też, jak czegoś nie pisać - pewne rozwiązania wydają się dobre, ale grożą wkopaniem się w coś i straceniem masy czasu i później sprawiają problemy z utrzymywaniem projektu. Senior (bo nawet nie osoba "wybitna") to taka osoba, która powinna mieć na tyle doświadczenia, żeby odróżnić dobre rozwiązanie od złego.

Mam tu na myśli bardziej coś w rodzaju kreatywnego myślenia tj. pomimo tego że nie pisał kiedyś podobnego programu to i tak potrafi się zastanowić i rozwiązać problem w optymalny sposób.

Żeby być dobrym w programowaniu trzeba programować, eksperymentować, podpatrywać innych oraz wyciągać wnioski. Wtedy można poznać zarówno dużo dobrych jak i dużo złych rozwiązań.

Tak, tutaj się zgadzam.

  1. ma dobrą pamięć do kodu

Jeśli ktoś ma "dobrą pamięć do kodu", to powinien schować ego do kieszeni i założyć, że inni mają złą. Dobra pamięć do kodu to wada, jeśli ktoś jest seniorem w zespole. Wtedy nie ma w projekcie dokumentacji, bo senior wszystko ma w głowie. Czyli bus factor = 1.

Dobra pamięć do kodu nie wyklucza dokumentacji w projekcie :) Dokumentacja dokumentacją, ale warto może nie zawsze do niej zaglądać, żeby sobie coś przypomnieć.

0

Taki wgląd w historię.
Na wybitność musi się złożyć talent, i do tego praca.
Historia zna wielu pisarzy,kompozytorów, owszem o nich nie zapomina, ale nie uznanych za wybitnych, tylko bardzo pracowitych.
ILOŚĆ wystarcza do bycia odnotowanym, ale nie do zaliczenia do wąskiej grupy

2
snakeomeister napisał(a):

Żeby zajmować się bardziej praktycznymi sprawami niż rozwiązywanie łamigłówek i nauka algorytmów może warto najpierw trochę ich rozwiązać?

Można rozwiązywać prawdziwe problemy tworząc faktyczny software, wtedy też trzeba czasem rozwiązać jakąś łamigłówkę, tylko że rozwiązując ją, osiągnie się coś konkretnego, a nie tylko "rozwiązałeś, dostałeś punkty".

No i nie napisałem, że nauka algorytmów nie jest praktyczna. Napisałem nauka algorytmów na pamięć.. Jest różnica między poznawaniem algorytmów, żeby zrozumieć, a poznawaniem, żeby je odtworzyć bezmyślnie z pamięci, czyli nauka pod maturę, rekrutację czy konkurs.

snakeomeister napisał(a):

Mam tu na myśli bardziej coś w rodzaju kreatywnego myślenia tj. pomimo tego że nie pisał kiedyś podobnego programu to i tak potrafi się zastanowić i rozwiązać problem w optymalny sposób.

Jak ktoś dużo pisze, to potem potrafi dostrzec analogie i kontrasty tak, że nawet coś, co się wydaje nowe, w rzeczywistości można sprowadzić do podobnych zasad i zrobić podobnie jak poprzednie rzeczy.

Czyli trochę, że jak masz młotek, to wszystko jest gwoździem. Tylko z tą różnicą, że nie masz tylko młotka, ale masz młotek i różne rodzaje śrubokrętów. I dobierasz narzędzia do problemu.

Stephen King porównał kiedyś warsztat pisarza do skrzynki z narzędziami i coś w tym jest.

0

Ja jestem wybitnym programistą a nikt się o mnie nie bije, więc i tak możesz skończyć (choć ja jestem zdania, że dopiero zaczynam)

5
snakeomeister napisał(a):

Ok, więc wybitny programista to taki ktoś kto:

  1. wygrywa konkursy programistyczne typu olimpiady informatyczne, TopCoder, SPOJ i tego typu sprawy
  2. pisze bardzo (wydajny) dobry i czysty kod szybko
  3. ma dobrą pamięć do kodu
  1. Kwestia predyspozycji i ciężkiej pracy. Jeżeli nie masz któregoś z tych elementów, to się nie da. Dodatkowo, bardzo dyskusyjną kwestią jest, czy akurat te kawałki sprawiają, że ktoś jest "wybitnym programistą".
  2. Trzeba pisać dużo złego kodu, wyciągać wnioski dlaczego jest zły, pisać trochę lepszy kod. Co ważne, a rzadkie, najpierw myśleć, później pisać.
  3. Nie wiem co to pamięć do kodu, nie wiem po co pamiętać kod

Największe firmy informatyczne to właśnie te, które wymieniłeś czyli IBM, intel, Google, Facebook, Apple itp..

Te firmy nie zatrudniają wybitnych programistów. Zatrudniają dobrych. Natomiast biją się o tych, którzy mają doktoraty w interesujących ich dziedzinach. Niepojęte, ale doktorat z computer vision da ci w Google wyższą pozycję niż biegłość w pisaniu CRUD'ów. Tym część tych firm różni się od "typowego korpo"

Nie bardzo zgadzam się też z utworzoną przez ciebie definicją "wybitnego programisty", czy zwyczajnie dobrego. Koncentrujesz się na kodzie, jego jakości, czystości, wydajności, a kod, to jedynie narzędzie do rozwiązywania problemów. Taka top firma z chęcią przygarnie sprawnego programistę, jeszcze chętnie przygarnie kogoś, kto potrafi efektywnie zaprogramować obsługę macierzy rzadkich, ale równie to na czym im zależy, to znalezienie ludzi, którzy są w stanie dostrzec realny problem i zaoferować rozwiązanie, które ten problem rozwiązuje.

3

Najlepszy programmers to taki, który bierze mało hajsu, a dobrze robi

0
piotrpo napisał(a):
  1. Nie wiem co to pamięć do kodu, nie wiem po co pamiętać kod

Znajomość kodu chyba większe ma znaczenie.
Tylko to wynika z doświadczenia i włożonej pracy w to, żeby poznać kod, a nie z tego, że ktoś ma "pamięć do kodu".

Ktoś kto zna kod danego projektu może ileś razy szybciej coś zrobić niż ktoś, kto dopiero wchodzi w projekt.
Znajomość kodu frameworków/technologii, z których się korzysta, też może się opłacić, bo wtedy wiesz, jak coś działa pod spodem, i jak coś ci nie działa, to już nie jest to taką czarną skrzynką. Plus studiowanie kodu źródłowego to też fajna przygoda edukacyjna. Jak spojrzysz na zaawansowanych użytkowników jakiejś technologii (np. frameworka), to zwykle będą mieli jakieś pojęcie o tym, jak to działa pod spodem (czy nawet w której wersji jak coś było zaimplementowane, a jak jest teraz). I odwrotnie - beginner będzie próbował coś na zasadzie czarnej skrzynki i będzie popełniał banalne błędy wynikające z braku głębszego zrozumienia.

I nawet nie musi zawsze chodzić o sam kod źródłowy, ale o internale, to może być wiedza na poziomie koncepcyjnym, ale sięgająca głębiej niż tylko to, co jest opisane w dokumentacji w pozycji "getting started".

2

Niestety to nie dziala w ten sposob ze jestes wybitny to zatrudni Cie jakas super hiper firma za 100k/mc na rękę. Po prostu 99% firm szuka ludzi zeby placic im tyle co rynek (lub mniej jesli sie da - Janusze, czasem moze i wiecej) i zebyś zrobił zadaną robotę w zadanym czasie. Jeżeli czujesz ze jesteś trochę lepszy i za łatwo Ci to idzie to proponuję OE, na poczatek 2 firmy. Wtedy hajs podwojny, szybciej wypełnisz i ciekawiej czas, robotę obrobisz szybko a i robiac w 2 projektach też mozna cos tu podpatrzec, tam podpatrzec i rozwój może być chwilowo lepszy. Oczywsicie obydwa projekty musza byc umiejetnie dobrane. 2 chłamy nie przyniosą Ci wiecej rozwoju. Dwa januszeksy rowniez bo sie zajedziesz. Trzeba samemu to wyczuć i znaleźć balans.

Sam chętnie poszedłbym do takiej super firmy za super pieniadze zeby moc pracowac z super wybitnymi ludzmi za godziwy hajs. Wolałbym to zamiast OE dla 2 firm, ale jakoś nie napotkałem nigdzie czegoś takiego na swojej drodze życiowej.

A te "najwiesze firmy IT" czyli Google, IBM lub jakies Accenture to jest najwiekszy chlam gdzie ani dobrze nie zarobisz (w porownaniu do kontraktu) a i jest spora szansa ze rozwoju nie bedzie i bedziesz pracował z jakimiś Hindu lub innej maści upośledzonymi ludźmi...

P.S. Może sie mylę, bo nie uważam siebie za "wybitnego programistę", de facto nie jestem nawet stricte "programistą" tylko uzywam programowania po prostu. Ale jak patrzę na poziom innych ludzi z ktorymi pracuje, ich podejscie, jakosc kodu, ogolnie rozumowanie programowania w jezykach typu Python itd, to jednak jestem dużo od nich lepszy.

1
Misiek_Uszaty napisał(a):

Niestety to nie dziala w ten sposob ze jestes wybitny to zatrudni Cie jakas super hiper firma za

Wielu wybitnych ludzi bywa trudnych, warto dodać, grają pod siebie / wg siebie a nie w drużynie / wg strategii drużyny.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.