Co to znaczy być dobrym programistą?

3

cześć
od jakiegoś czasu zastanawiam się czy sam siebie mogę nazwać dobrym programistą.
W sumie nie wiem, raczej przychylam się do tego, że jeszcze nie mogę tak o sobie powiedzieć.

Na swojej drodze zawodowej spotkałem trochę ludzi, wśród nich byli:

  • kolega bardzo dobrze ogarniający biznes, ale technicznie taki sobie, nie podążający za nowinkami nawet w obrębie wykorzystywanej technologii, ale logikę biznesową znał chyba najlepiej patrząc się na ludzi z projektu
  • kolega cichy spokojny,wręcz wycofany, bardzo wolny, ale jak już coś zrobił, to nie było się do czego przyczepić
  • kolega gdburowaty i opryskliwy, strach było z nim gadać (bo lubił zjebać jak burą sukę), ale jak się odezwał w sprawach technicznych to na 100 razy 99 miał rację
  • kolega mający szeroką, ale co najwyżej średnią wiedzą z przeróżnych technologii, zagłębiał się jak musiał, ale mógł być spokojnie rzucony na każdy odcinek i sobie radził
  • kolega c++ wymiatacz, współorganizator konferencji, udzielajacy się bardzo w c++ świecie, jak była c++ wątpliwość to był taką żywą encyklopedią (wciąż uzupełnianą)
  • kolega szczególarz, musiał zrozumieć każdą linijkę, zdarzało się, że zawalał terminy, ale rzadko miał regresje, a kod pisał bardzo ładny
  • kolega fanatyk testów, nawet jak nie było to wymagane otestowywał wszystko co można (dzięki niemu zrozumiałem czym są unit testy i czemu są potrzebne itd)
  • kolega mentor, taki ojciec czy tam starszy brat, zawsze miał czas wyjaśnić pomóc, może nie był technicznie wybitny, ale pracując, pomagając komuś, umiał przekazać wiedzę tak, że np świerzak czuł się pewniej, mniej było regresji, wiedza i umiejętności nowicjuszy szybciej rosły itd

wszystkich ich uważałem i uważam za dobrych (nawet bardzo) programistów, bo mieli jakąś wyróżniającą ich cechę, która robiła ogromną wartość dodaną ich pracy

Niby nie ma się co porównywać z innymi, ale mimo, że lata lecą, to u siebie nie widzę jakiejś wyróżniającej mnie cechy, dzięki której mogę powiedzieć, że jestem dobrym programistą. Bywam nieuważny, zdażają się regresje (bywa, że bardzo głupie, gdyby tylko pomyśleć to można by je za wczasu wyeliminować), czasmi kod jest taki, że tylko iść i ręce po nim umyć. Pracuję w tym fachu parę lat, płacą nienajgorzej, ale czasmi mam poczucie, że jestem jak Rocky, w treningu na plaży z Apollem (Rocky 3) i jedyne co przemawia na moją korzyść to koniunktura w branży (czyli lepszy taki niż żaden), a nie jakieś moje osobiste cechy, dzięki którym jestem "pożądany".

Kim wg Was jest dobry programista: ma być raczej bezbłedny, czy raczej szybki i odważny w kodowaniu, geek, dobry kolega?

jesteście dobrymi programstami?

22

Wiesz, to zależy z czyjego punktu widzenia. Dla pracodawcy jesteś dobrym programistą jeśli generujesz mu zysk. Dla kolegów jesteś dobrym programistą jeśli dzielisz się wiedzą i doświadczeniem. Dla ludzi grzebiących w Twoim kodzie jesteś dobrym programistą jeśli piszesz czysty kod. A dla mamy jesteś dobrym programistą zawsze :D

0

Nie rozumiem postu, jak jesteś świeży to jesteś juniorem, potem jak ogarniasz czyli w twoim rozumowaniu dobry programista to powinien być senior albo lead. Jak nie jesteś seniorem to znaczy, że jeszcze nie jesteś dobrym programistą więc się ucz i pracuj.

1
romanlo

Jak nie jesteś seniorem to znaczy, że jeszcze nie jesteś dobrym programistą więc się ucz i pracuj.

jak to kiedyś ktoś napisał
można mieć 5 lat doświadczenia albo rok powtórzony 10 razy
z jednym i drugim można być seniorem

2

Dobry programista to leniwy programista.

1

Kim wg Was jest dobry programista: ma być raczej bezbłedny, czy raczej szybki i odważny w kodowaniu, geek, dobry kolega?

Nie ma bezbłędnych programistów (może jacyś geniusze co najwyżej). poza tym co złego w byciu błędnym programistą? Robienie pomyłek jest fajne, bo można się uczyć i rozwijać. Albo zapobiegać podobnym błędom w przyszłości.

Bywam nieuważny

To oznaka raczej braku dyscypliny niż braku umiejętności.

Programista może być nieuważny, jeśli jest odpowiedzialny (bo nieuważny, ale odpowiedzialny programista będzie korzystał z takich narzędzi jak statyczna analiza kodu czy napisze testy jednostkowe, albo podda swój kod do code review - właśnie dlatego, że wie, że jest nieuważny i nie wszystko zobaczy i jest na tyle odpowiedzialny, że nie będzie polegał tylko na własnych umiejętnościach osądu).

zdażają się regresje (bywa, że bardzo głupie, gdyby tylko pomyśleć to można by je za wczasu wyeliminować)

Zdarzają się regresje, okej. A czy zdarza się również pisanie testów? (zbyt dużo regresji świadczyć może właśnie o ich braku - chociaż niestety testowanie np. regresji graficznych w GUI może być dość trudne)

2

Dobry programista ma robić swoje i robić to tak żeby reszta zespołu nie chciała się go pozbyć przy pierwszej najbliższej okazji - a wręcz broniła go i nawet groziła odejściem jeśli to jego "góra" chciałaby się pozbyć. Co ci po tym że jesteś mistrzem kodu, geekiem, purystą TDD, pierwszej klasy rozkminiaczem skoro cała reszta odnosi wrażenie żeś gbur/kłótnik/uparty idiota albo twojego eleganckiego kodu nikt nie ogarnia - lub co gorsza psuje co powoduje kwasy. Owszem zespół/firmę zmienisz ale smród pozostanie - a nigdy nie wiesz na kogo trafisz po tej grubszej stronie biurka ;)

To ludzie cię zatrudniają, to z ludźmi pracujesz a nie z kodem (inaczej niż by się mogło wydawać). Umiejętności techniczne to szczegół który może ci pomóż na jakimś etapie kariery ale dobre kontakty pomagają zawsze. Tak więc zasada jest prosta: dobry programista to gość którego lubią i z którym da się wyskoczyć na piwko.

0

To jest przykład dobrego programisty :>

2

Zamiast filozofowac o tym jak byc dobrym programista lepiej zaczac pisac programy a nie dysputy nt kto jest kim

0
Wybitny Lew napisał(a):

Zamiast filozofowac o tym jak byc dobrym programista lepiej zaczac pisac programy a nie dysputy nt kto jest kim

a co jak takie rozkminy nachodzą po latach w zawodzie?

3

Każda metryka próbująca opisać dobrego/złego programisty jest jakościowa, a więc subiektywna.

Dla team-leadera dobry programista w jego zespole pracuję sprawnie, w sposób niezależny i dzieli się wiedzą z innymi. Dla mnie dobry programista to taki, który pisze elegancki i idiotoodporny kod, którego czytanie jest przyjemnością podobną do czytania poezji. Dla menadżera mojego menadżera prawdopodobnie dobry programista to będzie tani programista, który pracuje dla dobrze płacącego klienta.

0

Jeszcze od kontekstu zależy.
Przy zatrudnianiu nowego pracownika, dobry programista (patrząc z perspektywy firmy!) to najlepiej obiecujący (np. z doświadczeniem, ze znajomością frameworków, z dobrym CV, portfolio, sprawiający dobre wrażenie na rozmowie rekrutacyjnej itp.)

Jednak po zatrudnieniu powyższe rzeczy przestają mieć znaczenie, a zaczynają mieć bardziej przyziemne typu wyrabianie się w terminach, jakość kodu, umiejętność współpracy z innymi itp. natomiast gdzie pracowałeś wcześniej i czy masz rok czy 10 lat doświadczenia, małe będzie mieć już znaczenie.

No ale to perspektywa "wyobrażonej oraz rzeczywistej korzyści dla firmy" (wyobrażonej podczas rekrutacji, rzeczywistej po zatrudnieniu), natomiast wiadomo, że patrząc z perspektywy nie pracy, a ogólnie programowania, moglibyśmy ocenić same umiejętności techniczne, takie jak np. czysty kod, czy umiejętność zaprojektowania architektury albo ogarnięcie w algorytmach (chociaż jak wiadomo, bycie dobrym programistą niekoniecznie czyni z ciebie dobrego pracownika).

4

Ja zatrudniam programistow ktorzy:
a) myślą samodzielnie
b) jaraja sie tematem i lubia poszerzać swoja wiedzę
c) nie gwiazdorza
d) rozumieją techniki których uzywaja, a nie tylko ich używają
To jest dla mnie z perspektywy pracodawcy jest najważniejsze. To jest dla mnie definicja dobrego programisty. To ile potrafi na ten moment ma mniejsze znaczenie, bo nawet jak mu wiedzy brakuje to z tymi cechami szybko te braki nadrobi. W druga stronę to tak nie dziala.

0

Dobry temat:) sam się często nad tym zastanawiam.
Ja jestem tym który lubi dokładność, czytelność, zrozumienie kodu dookoła miejsca zmian i dzielenie informacji z innymi (+zbieranie opinii innych odnośnie danego rozwiazania). Czasami dokładność i czysty kod nie idzie w parze z czasem...nie mniej jednak wiem, że jeżeli czas goni a kiedyś wrócę do tego miejsca to czas na przypomnienie i zrozumienie mojego kodu znacznie się wydluzy. Jedyna rzeczą jaką bym w sobie zmienił, to brak pewności. Nabawiłem się tego pracując w dużych projektach. Czasami ktoś mnie pyta jak coś działa...czytam kod...mówię a i tak na końcu okazuje się że gdzieś był jakiś haczyk, którego nie wziąłem pod uwagę bo ktoś coś zawile napisal i na nic moja teoria...Nie mniej jednak wydaje mi się, że to wina źle zaprojektowanego systemu i klejenie wszystkiego jak się da aby tylko działało...

1

Dla mnie dobry programista nie tylko zna framework, w ktorym operuje, ale tez zna bardzo dobrze swoj jezyk programowania (jak slysze, ze ktos nigdy nie widzial czystego Rubyego, bo od razu sie uczyl Railsow to mnie az boli w srodku...), orientuje sie w algorytmach (nie tlumaczy 'to nikomu niepotrzebne', bo ciezko budowac dom bez fundamentow), oraz zna przynajmniej dobrze cale 'otoczenie' swojej aplikacji (to juz zalezy od tego, jaka to aplikacja). Co wazne - umie sobie skonfigurowac optymalne srodowisko do pracy oraz uzywac szybko i sprawnie swojego edytora/IDE. No i pisze tak, ze pozniej nie musze wylapywac jego bledow ;)

2

Dobry programista to ktoś taki jak Mirosław Zelent

0

Co to znaczy być dobrym programistą?

Będziesz wiedział jak już będziesz (jeśli będziesz) dobry.


Widzę, że na forum idzie ostry hejt Pana Mirosława Z. Nie mówię, że jego kursy są super profesjonalne, bo oczywiście nie są (sam dostrzegam w nich błędy), ale na tle "youtubowej sieczki" nie wypadają tak tragicznie. A na YT jestem często, oglądałem już sporo kursrów i rzadko jest coś na dobrym czy wyższym poziomie, może poza ALTKOM-em i kilkoma podobnymi firmami, które organizują szkolenia stacjonarne, właściwie większość tutoriali, kursów, itp prezentuje średni lub niski poziom.

Jeszcze dodam jedną rzecz: Polecam książkę "Zrozumieć programowanie" która może jeszcze nie zrobi z nikogo dobrego programisty, ale na pewno lepszego! Bardzo dobra pozycja.

Bogaty Rycerz

0
Bogaty Rycerz napisał(a):

Co to znaczy być dobrym programistą?

Będziesz wiedział jak już będziesz (jeśli będziesz) dobry.


od kogo
ale serio pytam
Będę częściej pytany o radę o technikalia?
szef sam z siebiecda podwyżkę?

kiedyś słuchałem audycji w radio o lekarzu, rodaku naszym który jeździ do Kazachstanu pomagać w leczeniu. Gdy go zapytano czy sam siebie uważa za dobrego powiedział że jak był młodym lekarzem to udało mu się parę oreparacji i czuł się jak Bóg. Przez to rozleciało się jego pierwsze małżeństwo bo mówił że jak wracał ze szpitala gdzie każdy patrzył na niego z podziwem, do domu gdzie żona chciła aby posprzątał lub wyniósł śmieci to nie mógł tego znieść. Potem miał chudszy okres,w którym paru pacjentów nie uratował, ciężko to przeżył bo myślał, że dla niego nie ma rzeczy niemożliwych i zaczął popijać. W końcu doszedł do ładu sam se sobą jak zrozumiał że to nie on jest ważny ale pacjent. Skończył że jak tak patrzy na swoją pracę to nie wie, bo są momenty i takie z których jest dumny i których się wstydzi.
Tak czy siak wydaje mi się że z programistami jest podobnie. Też wielu za bardzo skupia się na sobie.

0
andrzejklusiewicz napisał(a):

Ja zatrudniam programistow ktorzy:
a) myślą samodzielnie
b) jaraja sie tematem i lubia poszerzać swoja wiedzę
c) nie gwiazdorza
d) rozumieją techniki których uzywaja, a nie tylko ich używają
To jest dla mnie z perspektywy pracodawcy jest najważniejsze. To jest dla mnie definicja dobrego programisty. To ile potrafi na ten moment ma mniejsze znaczenie, bo nawet jak mu wiedzy brakuje to z tymi cechami szybko te braki nadrobi. W druga stronę to tak nie dziala.

Taki ktoś to raczej kandydat na dobrego programistę, a nie dobry programista.

Dla mnie dobry programista to taki, który ma bardzo szeroką wiedzę, znacznie wykraczającą poza IDE.
Nie da się znać wszystkiego, no ale jednak ktoś kto wyznaje zasadę "jak będę potrzebował to znajdę" nie jest dobrym programistą.
Nie jest nawet dobrym pracownikiem. Bo po prostu nie wie, czego będzie potrzebował i czy już tego nie potrzebuje.

0

Moim zdaniem dobry programista to taki który bierze na siebie odpowiedzialność za projekt & zespół.

0

warto zajrzeć: http://sijinjoseph.com/programmer-competency-matrix/
chociaż pewne pozycje już się zdezaktualizowały(np. pozycja o SVN, kto tego używa w 2016) albo umiejscowienie ich na określonej pozycji budzi wątpliwości (np. znajomość dziwacznego Basha ma być niby czymś łatwiejszym od znajomości Pythona?).

1

@Robakowy: Oj coś dziwnie myślisz moim zdaniem. Jak będę potrzebował to znajdę - skoro tego nie stosujesz tzn. że każdy system znasz na wylot i każdą funkcję w np. systemie bankowym (załóżmy że przy takim pracujesz) byś musiał znać jeszcze zanim podejmiesz pracę przy danym tasku. Piszesz, że nie da się wiedzieć wszystkiego - skoro tak - to kiedy mamy czegoś się nauczyć jak nie w przypadku "potrzeby"? Jedno przeczy drugiemu.

Dobry programista to taki, który nawet jeśli nie wie jak dany problem rozwiązać - to znajdzie rozwiązanie właśnie w razie potrzeby (bo po co szukać rozwiązania jeśli nie ma potrzeby?). Skoro taki programista raz znajdzie rozwiązanie - to następnym razem nie będzie go szukał - tylko będzie je znał i być może dzielił się tą wiedzą ze współpracownikami.

0
axelbest napisał(a):

@Robakowy: Oj coś dziwnie myślisz moim zdaniem. Jak będę potrzebował to znajdę - skoro tego nie stosujesz tzn. że każdy system znasz na wylot i każdą funkcję w np. systemie bankowym (załóżmy że przy takim pracujesz) byś musiał znać jeszcze zanim podejmiesz pracę przy danym tasku. Piszesz, że nie da się wiedzieć wszystkiego - skoro tak - to kiedy mamy czegoś się nauczyć jak nie w przypadku "potrzeby"? Jedno przeczy drugiemu.

Dobry programista to taki, który nawet jeśli nie wie jak dany problem rozwiązać - to znajdzie rozwiązanie właśnie w razie potrzeby (bo po co szukać rozwiązania jeśli nie ma potrzeby?). Skoro taki programista raz znajdzie rozwiązanie - to następnym razem nie będzie go szukał - tylko będzie je znał i być może dzielił się tą wiedzą ze współpracownikami.

No właśnie, ciężko zdefiniować co trzeba wiedzieć, a czego można nie wiedzieć.

Aby bardziej zobrazować o co mi chodzi przywołam zasady zdawania matury z matematyki za moich czasów.
Można było mieć ze sobą tablice matematyczne, a nawet kalkulator.

A wyniki egzaminu pokazywały właśnie "googlujących" programistów :)

Oczywiście, że wiedzę trzeba uzupełniać, także na szybko w razie potrzeby.
Ale dobry programista ma już pewien zasób tej wiedzy i nie musi szukać wszystkiego.
Z moich obserwacji wynika, że wielu programistów jest bardziej przyuczonych do wykonywania określonych czynności, a nie wykształconych do pracy i poza ten teren nie wykraczają.

Czy ja jestem dobrym programistą ?
Tak !
Żartuję, znam swoje słabości i staram się je zmniejszać, ale nawet sam Satya Nadella powiedział o sobie "There's always room for improvement".
:)

To jak u mnie, mogę już iść na prezesa :) :D

0

A z mojego doświadczenia najlepszy programista a raczej pracownik to taki który ogarnia projekt. Pracowałem przy 2 naprawdę dużych i skomplikowanych kobyłach i czy ktoś piszę lepiej lub gorzej nie miało większego znaczenia, bo i tak ktoś to review zrobi. Ważniejsze jest że ze od strony biznesowej ktoś to ogarną szybko, miało to sens i niczego nie popsuło.
Również w większych projektach jakiś już odgórny styl 'kodowania' narzucony i często wystarczy użyć finda aby znaleźć to co chcemy i dopasować kod do innych. No i komunikacja idzie mocno w tym w parze.

Sytuacja jest często taka (rozmowa z bardziej doświadczonym kolegą) : *'No bo tutaj widzisz przez ten serwis idzie request do tego webserwisu który po xx minutach zwraca async odpowiedz i wtedy trigger chodzi na bazie powinien to ogarnąć i ta akcja powinna już przestawić ten status na inny, i na wejdź jeszcze w setup zobacz czy 5 checkboxów jest zaznaczone i czy ten item ma 3 inne itemy, no i teraz lecisz 40 punktowy scenariusz przez 20 ekranów i zobacz w debugu co tam się dzieje, jak jednak nie zaskoczy to tam to ja bym tutaj do ifa dodał bym warunek że jak x to y" i powinno hulać. *

Być może tyczy się to utrzymanek, ale dużo tego na rynku więc taka moja opinia.

0
Świetny Kret napisał(a):

czy ktoś piszę lepiej lub gorzej nie miało większego znaczenia, bo i tak ktoś to review zrobi. (...)
Również w większych projektach jakiś już odgórny styl 'kodowania' narzucony i często wystarczy użyć finda aby znaleźć to co chcemy i dopasować kod do innych.

Zgadzam się, że tak to w wielu przypadkach wygląda.
Właśnie o tym napisałem powyżej - wielu ludzi jest przyuczonych do wykonywania pewnych czynności, a nie wykształconych do pracy :)

1

@Świetny Kret

Sytuacja jest często taka (rozmowa z bardziej doświadczonym kolegą) : 'No bo tutaj widzisz przez ten serwis idzie request do tego webserwisu który po xx minutach zwraca async odpowiedz i wtedy trigger chodzi na bazie powinien to ogarnąć i ta akcja powinna już przestawić ten status na inny, i na wejdź jeszcze w setup zobacz czy 5 checkboxów jest zaznaczone i czy ten item ma 3 inne itemy, no i teraz lecisz 40 punktowy scenariusz przez 20 ekranów i zobacz w debugu co tam się dzieje, jak jednak nie zaskoczy to tam to ja bym tutaj do ifa dodał bym warunek że jak x to y" i powinno hulać.

To zależy. Jeśli po takim opisie jesteś w stanie usiąść i mając jasność umysłu napisać swój kawałek kodu, to jest to win-win. Jednak mi się już zdarzało, że koleś doświadczony w projekcie zarzucił mi podobną wiązankę, a potem i tak usiadłem i nie miałem jasności do tego co zrobić.

Czy jestem słabym programistą? Być może, ale również należy rozważyć to, że koleś nie umiał czegoś jasno przetłumaczyć (umiejętność komunikacji to też umiejętność - a wielu programistów jest słabych w przekazywaniu innym ważnych informacji). W pewnych projektach również zdarza się tak, że architektura jest nieprzemyślana (coś co powinno być proste wymaga know-how projektu i odwoływania się do 5 różnych modułów), albo styl pracy jest dość partyzancki (ostatnie zdanie: " zobacz w debugu co tam się dzieje, jak jednak nie zaskoczy to tam to ja bym tutaj do ifa dodał bym warunek że jak x to y" - pachnie sporą partyzantką i jak podobne stwierdzenia słyszę to ogarnia mnie czasem krwica. Tj. nie mówię oczywiście o twojej sytuacji, bo zarzuciłeś przykładem wyrwanym z kontekstu, tylko odnoszę do swoich własnych doświadczeń).

Również w większych projektach jakiś już odgórny styl 'kodowania' narzucony i często wystarczy użyć finda aby znaleźć to co chcemy i dopasować kod do innych. No i komunikacja idzie mocno w tym w parze.

To ma sens, przy założeniu, że projekt ma narzucony odgórny styl kodowania, również przy założeniu, że wystarczy użyć finda, żeby znaleźć to co chcemy (czyli, że rzeczy w projekcie są dobrze nazwane) i tak dalej. Innymi słowy - zakładasz na wstępie, że projekt jest dobrze napisany i jest "discoverable" dla nowej osoby. JEŚLI tak jest to okej, ale często projekty są pisane byle jak, nawet bez dobrego nazewnictwa czy struktury zależności modułów od siebie nawzajem - czy więc dobry programista to taki, który ogarnia spaghetti kod?

Może, ale ja wziąłbym to co napisałeś i odwrócił trochę kota ogonem - dobry programista to nie taki, który umie znaleźć sobie pewne rzeczy w dużym projekcie, ale raczej taki który pisze jasny prosty, łatwy do zrozumienia kod i stosuje takie nazewnictwo oraz tego typu struktury w kodzie, które ułatwią potem wyszukiwanie i łatwą modyfikację.

To nie tyle ktoś, kto umie utrzymywać stary kod, ale raczej ktoś, kto pisze nowy kod z myślą o tym, żeby ułatwić utrzymywanie projektu w przyszłości. Ew. refaktoryzuje stary kod, tak żeby polepszać jego jakość chociaż trochę.

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