Skąd mam wiedzieć, czy jestem dobrym programistą?

301

Jak większość ludzi, uważam się za trochę powyżej przeciętnego w swojej dziedzinie. Dostaję dobre wynagrodzenie, dostaję awanse i nigdy nie miałem problemu z uzyskaniem dobrych referencji lub znalezieniem pracy.

Ale byłem na tyle zauważony, że wielu najgorszych programistów, z którymi współpracowałem, uważało się za jednych z najlepszych. Źli programiści, którzy są otoczeni przez innych złych programistów, wydają się najbardziej oszukiwać.

Na pewno nie jestem idealny. Popełniam błędy. Nie dotrzymuję terminów. Ale myślę, że wykonuję tyle samo ruchów, co „inni dobrzy programiści”. Problem polega na tym, że definiuję „innych dobrych programistów” jako „ludzi podobnych do mnie”.

Zastanawiam się więc, czy programista może w jakiś sposób dokonać rozsądnej samooceny? Skąd wiemy, czy jesteśmy dobrzy, czy źli w naszej pracy?

Lub jeśli terminy takie jak dobro i zło są zbyt źle zdefiniowane, w jaki sposób programiści mogą uczciwie zidentyfikować swoje mocne i słabe strony, aby mogli skorzystać z tych pierwszych i pracować nad ich poprawieniem?

Kristopher Johnson
źródło
Dlaczego chcesz wiedzieć? Nikt nie może zdefiniować, co jest „dobre”. Jeśli wykonasz pracę zgodnie z oczekiwaniami i dobrze zarobisz, to wystarczy.
Mert Akcakaya,

Odpowiedzi:

325

Dobry programista rozumie, że muszą się uczyć i rozwijać. Starają się dawać z siebie wszystko przy każdym wysiłku, przyznawać się do porażek i uczyć się od nich.

Są niezwykle komunikatywne. Nie tylko potrafią wyjaśnić laikowi skomplikowane terminy techniczne, ale robią wszystko, co w ich mocy, by działać jako adwokat diabła we własnym pomyśle, aby upewnić się, że dają najlepsze opcje swojemu klientowi.

Najlepsi programiści wiedzą i akceptują to, że istnieje więcej niż jeden sposób robienia rzeczy, że nie każdy problem jest gwoździem i że ponieważ zawsze istnieje lepszy sposób na zrobienie czegoś niż planowali, nieustannie szukają nowych technik , technologie i zrozumienie.

Dobry programista uwielbia programować i robi to w wolnym czasie, nawet jeśli spędza ponad 80 godzin tygodniowo na programowaniu.

Dobry programista wie, że nie jest świetnym programistą. Naprawdę wielcy programiści nie istnieją, są tylko ci, którzy twierdzą, że są wielcy, i ci, którzy wiedzą, że nie są wielcy.

Adam Davis
źródło
5
Gwoździsz to prosto w głowę! IMO!
13
I myślę, że bardziej ogólnym następstwem jest to, że jesteś dobry w tym, co robisz, kiedy zależy ci na tym, co robisz.
7
Dobrze powiedziane. Jeśli chodzi o ego / pokorę, przeszedłem przez MIT AI Lab w latach 70. Najlepsi koderzy mieli pewną pokorną pewność siebie. Jeśli uważasz, że robisz coś ważnego, możesz się mylić, ale jeśli tego nie zrobisz, prawdopodobnie masz rację.
Mike Dunlavey,
4
Częściowo zgadzam się z ust. 2: „Nie tylko potrafią wyjaśnić laikatowi skomplikowane terminy techniczne ...” Znam kilku dobrych programistów. Ale nie mogli nic wytłumaczyć nikomu spoza ich kręgu. Nie mogli też zrozumieć, co laik próbował powiedzieć. Oboje patrzą na siebie oczami „jelenia w świetle reflektorów”. Powiem, że są wyjątkowo komunikatywni. Resztę twoich punktów podsumuję, mówiąc, że dobry programista jest pokorny i chętny do dzielenia się swoją wiedzą w najlepszy możliwy sposób.
IAbstract
101
„i robią to w wolnym czasie, nawet jeśli spędzają już ponad 80 godzin tygodniowo na programowaniu”. Pozbądź się tego głupiego stwierdzenia, a ja całkowicie zgodzę się z resztą. Naprawdę „dobry programista”, zdaje sobie sprawę, że podczas pracy w ponad 80 godzinnym tygodniu robienie czegoś innego niż programowanie (w wolnym czasie) jest niezbędne dla zdrowia fizycznego i psychicznego oraz wydajności w pracy.
91

Jak Paul Graham wymownie wymawia w tej obsadzie kapsuły , nie możesz. Tylko twoi współpracownicy mogą ci powiedzieć.

malach
źródło
4
Ta odpowiedź jest o wiele lepsza niż zaakceptowana ...
125
Twoi współpracownicy nie mogą powiedzieć, czy jesteś kompetentny, jeśli są niekompetentni. Pomyślą, że masz dziwne opinie i z pasją kłócą się o nieistotne tematy.
2
Zgadzam się, keysersoze. Nikt ci nie powie, a nigdy się nie dowiesz, chyba że zdobędziesz nowych współpracowników. Myślę, że praca na dłuższą metę nie jest satysfakcjonująca, jeśli nikt nie jest kompetentny.
1
@keysersoze, ale jeśli faktycznie jestem niekompetentny, moi współpracownicy mogą być kompetentni i jestem po prostu zbyt głupi, żeby to zrozumieć;)
1
Paul Graham napisał również esej o wielkich programistach, wskazując, że nie umie nazwać wielkich, ponieważ nigdy tak naprawdę nie pracował z oczywistymi wyborami (jak Richard Stallman, Linus Torvalds i in.).
David Thornley,
59

Zawsze uważałem, że najłatwiej jest ocenić wydajność, robiąc dwie rzeczy.

  1. Otocz się innymi dobrymi programistami
  2. Zobacz, ile narzekają na Twój kod.

Problemem jest oczywiście znalezienie dobrych programistów, a bycie dobrym programistą nie polega tylko na kodowaniu. Musisz być w stanie dobrze pracować w grupach, ale także dobrze pracować samodzielnie.

Teraz, aby odejść od tematu, zacytuję Roberta A. Heinleina i jego zdanie na ten temat:

„[Prowokujący programista] powinien być w stanie zmienić pieluchę, zaplanować inwazję, zarzynać wieprza, podłączyć statek, zaprojektować budynek, napisać sonet, zrównoważyć konta, zbudować ścianę, postawić kość, pocieszyć umierającego , przyjmuj rozkazy, wydawaj rozkazy, współpracuj, działaj sam, rozwiązuj równania, analizuj nowy problem, rozrzucaj obornik, programuj komputer, gotuj smaczny posiłek, wydajnie walcz i umieraj dzielnie. Specjalizacja dotyczy owadów. ”
- z Zeszytu Łazarza Longa.

icco
źródło
12
poniekąd przypomina mi cytat: „Głupi ludzie otaczają się inteligentnymi ludźmi. Inteligentni otaczają się inteligentnymi ludźmi, którzy się z nimi nie zgadzają”.
Sam Hasler,
Zaryzykuję stwierdzenie, że jest to najlepszy cytat Heinleina na SO.
1
Problem polega na tym, że inni programiści mogą, ale nie muszą być na twoim poziomie, ale nie chcą cię obrażać. Nie otrzymałem wiele na temat opinii od trzech programistów, z którymi pracowałem, i bardzo minimalnie od 2 innych, które uważam za „dobre” ...
4
... chociaż jesteśmy steryotypowani jako antyspołeczni, inni programiści mogą uprzedzić obronę kodu, po prostu nie informując go o problemach. Które mogą faktycznie przeoczyć rzeczywiste problemy z kodem, aby nie stwarzać problemów społecznych.
55

To macierz kompetencji programisty dla Ciebie: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm

Omega
źródło
Mam 3-4 na około 90% tych przedmiotów i nie mogę kodować gówna. Przynajmniej niezbyt szybko.
-1 dla listy zakupów.
6
-1 - znajomość algorytmów jest dobra, ale nie ma mowy, aby wszystkie te rzeczy były przechowywane w twojej głowie, gdy ktoś przeprowadzi z tobą wywiad. Do tego służy wikipedia, google i stackoverflow.
1
Zgadzanie się, że ta lista jest w większości bezużyteczna; jest to dobre źródło pomysłów, jeśli szukasz ćwiczeń, ale nie jest to zbyt przydatne, jeśli chodzi o ustalenie, że jesteś „dobrym programistą”. „Dobry programista” to bardziej nastawienie niż dowolna lista.
2
+1. Chociaż nie zgadzam się z tym, co powiedziano powyżej, nadal uważam, że jest to bardzo dobra lista. Dziękujemy za opublikowanie go. Są to zdecydowanie kryteria, na podstawie których oceniłbym programistę ubiegającego się o pracę. I @macnnicken, to idzie tylko do poziomu 3. :)
EMP
38

Jeff ma jeden z moich ulubionych postów na blogu na ten temat ... Dlaczego jestem najlepszym programistą na świecie

„... naszym zadaniem nie jest być lepszym niż ktokolwiek inny; musimy być po prostu lepsi niż rok temu”.

codeConcussion
źródło
3
Podoba mi się ten cytat, bardzo dobrze. I na tym właśnie polega programowanie. „Bądź lepszy w tym, co robisz i znasz każdego dnia”.
1
Co roku przez ostatnie 12 lat patrzyłem na kod, który napisałem rok wcześniej i myślałem, że to zupełnie gówno. Może robię coś dobrze! Nie ma nic gorszego niż zastały programista.
28

Myślę, że pytanie, które zadajesz, dowodzi, że nie jesteś złym programistą, więc moim zdaniem jesteś w połowie drogi. :)

Z mojego doświadczenia, źli programiści zawsze myślą, że są świetnymi programistami.

Nick Berardi
źródło
ile masz doświadczenia?
1
Moje doświadczenie zgadza się z twoim doświadczeniem i dlatego martwię się, gdy zaczynam myśleć, że jestem dobry.
Kristopher Johnson
21

Oświadczenie Nicka „Źli programiści zawsze myślą, że są świetnymi programistami ...” tłumaczy Efekt Dunninga Krugera , który uogólnia, że ​​ludzie, którzy wiedzą trochę na dany temat, często przewyższają to, ile naprawdę wiedzą.

Będąc trochę żartobliwym ... im mniej myślisz, że wiesz, tym więcej prawdopodobnie robisz ... chyba że jesteś naprawdę samoświadomym idiotą.

Odpowiadając na pierwotne pytanie, chociaż zwykle uważam, że większy wpływ (nie kontrola) masz ogólnie dobry wskaźnik. Jeśli widzisz, że inni podążają za tobą lub zbierają twoje praktyki, oznacza to, że jesteś na dobrej drodze.

Mark Nold
źródło
Efekt Dunninga-Krugera jest strasznie upokarzający. Lubię starać się o tym pamiętać, gdy czuję się dobrze z tym, co zrobiłem!
Dobrzy programiści nie zadają pytań, a następnie głosują na odpowiedzi, ponieważ ich nie lubią. Nie zachowują się, jakby wiedzieli wszystko w nowym temacie, a kiedy ekspert odpowie na pytanie, nie głosuje na nie, ponieważ nie jest to to, czego chcieli.
Chciałbym mieć pojęcie o DK w college'u, kiedy byłem dobrym przykładem jednego końca spektrum!
DarenW,
18

Odpowiedź, która uzyskała najwięcej głosów, jest naprawdę niepokojąca. Zasadniczo mówi, że nie masz życia poza programowaniem. Co z rodziną? Społeczność? Zainteresowania? W jakim zawodzie jesteśmy, w których musisz być zajęty obsesją, aby być uważanym za „dobrego”? Naprawdę uważam, że potrzebujemy trochę perspektyw.

Jack BeNimble
źródło
2
Zgadzam się. Powinniśmy starać się być świetną osobą, zanim staniemy się świetnym programistą.
Dobre miejsce na określenie programisty 501: hanselman.com/blog/…
ChrisFletcher
9

Nie jestem idealny. Robię błędy. Nie dotrzymuję terminów. Ale myślę, że wykonuję tyle samo ruchów, co „inni dobrzy programiści”.

Już sama ta realizacja czyni cię lepszym programistą niż większość złych programistów.

Wielu najgorszych programistów myśli, że już wie wszystko, co należy wiedzieć i nie są świadomi swoich ograniczeń. W rezultacie nigdy nie doskonalą swoich umiejętności.

17 z 26
źródło
9

Jeśli spojrzysz na kod z, powiedzmy rok temu, i pomyślisz, Jezu, mógłbym to zrobić o wiele lepiej, prawdopodobnie jesteś dobry :).

Morph
źródło
Właśnie spojrzałem na mój program witający świat i pomyślałem, że teraz jest o wiele bardziej wydajny, czy jestem dobry? jks jks
9

Oto kilka przykładów złego programowania z życia. Oczywiście podobny kod był wszędzie kopiowany / wklejany w 100 miejscach. Facet został zwolniony, ale słyszałem, że znowu ma dobrą robotę. Cieszyć się:

za)

if (! TableObject.loadList("sql condition").isEmpty()) {  
    List<TableObject> myList = TableObject.loadList("sql condition");  
    ...  
}

b)

public static Type getInstance() {  
    if (instance == null) {  
        return new Type();  
    }  
    return instance;  
}

do)

getForeignKeyObjectProperty1() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty1();  
}  

getForeignKeyObjectProperty2() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty2();  
}  

...

getForeignKeyObjectPropertyN() {
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getPropertyN();
}

re)

public boolean isHasImage() throws SQLException {
    StringBuilder query = new StringBuilder();
    query.append("select user_name");
    query.append(" from user");
    query.append(" where has_image = 1");
    query.append(" and user_name ='"+getUserName()+"' and user_image is not null");
    Connection c = Database.getInstance().getConnection();
    Statement st = c.createStatement();

    try {
        ResultSet rs = st.executeQuery(query.toString());
        if (rs.hasNext()) {
            return true;
        } else {
            return false;
        }
    } finally {
        st.close();
    }
}

Jeśli stworzysz tego rodzaju kod, przestań programować. Jeśli nie widzisz nic dziwnego w tym kodzie, przestań programować. W przeciwnym razie nie jesteś zły, więc możesz być dobry :)

EDYCJA: Aby odpowiedzieć na komentarze: Dostałem pracę przed ukończeniem studiów, a ten facet miał już kilka lat doświadczenia w programowaniu. Został zwolniony kilka miesięcy po moim zatrudnieniu, więc nie byłem w stanie nikogo uczyć. Powyższe przykłady pochodziły z mojej głowy - każdy dotyk kodu, który dotknął, był wadliwy na różne i pomysłowe sposoby. Większość rzeczy zaczęła wymykać się po odejściu z firmy, ponieważ tylko wtedy inni ludzie widzieli niektóre części kodu. Zasadniczo jest miłym facetem, miłym z nim rozmawiać itp., Ale NIGDY nie będzie dobrym programistą, tak jak ja nigdy nie będę dobrym malarzem, pisarzem czy kimkolwiek innym.

Dla kontrastu z innym przykładem, facet, który przyszedł go zastąpić, również był wówczas studentem. Studiował college bardziej znany z zarządzania niż programowania. Nie jest zbyt maniakiem w tym sensie, że zaprogramował coś dla zabawy lub siedział w domu i czytał o Javie lub programowaniu, a jednak ma się dobrze. Szybko się dostosował i zaczął produkować użyteczny i łatwy do utrzymania kod. Niektórzy mogą to zrobić, inni nie - po prostu zapytaj dailywtf.

Slartibartfast
źródło
11
Każdy może opublikować dowolny kod i twierdzić, że ci, którzy go nie rozumieją, są głupi. Ja stanę w głupiej linii.
20
Dobry programista poświęciłby czas (może 2 minuty?), Aby wyjaśnić swojemu współpracownikowi, co jest nie tak z takim kodem.
4
Zgadzając się, dobry programista zauważyłby, dlaczego ten kod był „zły” i pomógłby jego koledze stać się lepszym, zamiast wyśmiewać go.
7
Mam nadzieję, że ten facet znalazł pracę, w której jego współpracownicy pomogli mu raczej dorastać niż go skarcić.
Robert S.
8
@ Morph: instancepole nigdy nie jest przypisane do Typeinstancji, dlatego zawsze pozostaje null=)
missingfaktor
8

Jest kilka rzeczy, które możesz wypróbować, aby uzyskać lepszy obraz tego, jak się układasz.

  • Porównaj recenzje kodu. Zobacz, czyja opinia ujawniła więcej problemów.
  • Zapytaj, kiedy po raz ostatni czytali książki na marginesie normalnego toku nauki. Następnie zadaj sobie to samo.
  • Zapytaj siebie, kto wprowadza nowe pomysły do ​​firmy (i jak dobrze działają).
  • Wreszcie (czy najmniej), czy istnieje jakaś forma uznania firmy?

(Odłożyłem ten ostatni, ponieważ w mojej ostatniej firmie jeden programista otrzymał „programistę roku” dwa razy w ciągu trzech lat. Po jego odejściu znaleźliśmy co najmniej 20 fragmentów kodu wartych TDWTF. Opracował kod szybko , ale niekoniecznie dobrze Zarządzanie po prostu nie znało różnicy).

Adam V.
źródło
1
+1 za „porównaj recenzje kodu”. To wydaje się nowatorską i bardzo praktyczną rzeczą do zrobienia.
j_random_hacker
6

Pozwól innym programistom, z którymi szanujesz, pracę z kodem lub jego przeglądanie.

Niech ludzie faktycznie używają tego, co lubisz i zobaczą, co myślą.

- Kevin Fairchild

Kevin Fairchild
źródło
6

Rozumiesz to?

if(rp->p_flag&SSWAP) {
	rp->p_flag =& ~SSWAP;
	aretu(u.u_ssav);
}

:-)

Iain Holder
źródło
Zmodyfikowany ??!?!?!?! Ktoś nie zna ich historii. :-)
Iain Holder
5
Nie musisz tego rozumieć
Czy to jest odniesienie do czegoś? W każdym razie, jeśli jest to kod C / C ++, prawdopodobnie oznaczałeś „& =” zamiast „= &” w drugim wierszu. (Mówię „prawdopodobnie”, ponieważ przeciążając operatora ~ () w C ++, możesz skompilować powyższą kompilację ... Ale jestem całkiem pewien, że nie tak zamierzałeś.)
j_random_hacker
1
@j_random_hacker Podejrzewam, że = i ma rację, ponieważ ten kod został napisany przez Dennisa Ritchiego. Zobacz cm.bell-labs.com/who/dmr/odd.html
Iain Holder
1
@IndMH, dmr przyznaje również, że był to błąd.
4

Już sama myśl, że musisz dokonać samooceny, daje ci przewagę nad resztą.

Jednym ze sposobów, w jaki zawsze oceniam siebie, jest słuchanie tego, co mówią o mnie moi współpracownicy. Sztuczka polega na znajdowaniu odpowiednich ludzi.

Gulzar
źródło
4

Zawsze jest subiektywny, kto jest dobrym programistą. Zgadzam się z Nickiem, że samo pytanie jest krokiem we właściwym kierunku. Myślę, że ciągłe pragnienie uczenia się i doskonalenia jest tym, co czyni dobrego programistę.

Ryan Lanciaux
źródło
4

Dla mnie najlepsi programiści nigdy nie szukają pracy. Mają stałe oferty na nowe stanowiska oparte na ich reputacji. Dobry programista może więc mieć oferty od poprzednich pracodawców, aby powrócić, jeśli chcą. Albo dobry programista zapytałby byłych współpracowników o przyjazd do pracy w nowej firmie.

Jeśli chodzi o mocne i słabe strony, prawdopodobnie już je znasz. Jeśli nie, poproś osobę starszą w zespole. To nawet nie musi być programistą. Dobry kierownik projektu zna mocne i słabe strony programistów. Poza tym cechy definiujące dobrego programistę nie ograniczają się tylko do kodu. Zrozumienie biznesu, umiejętności komunikacyjne, osąd itp. Są wykonywane poza Twoim IDE.

MattH
źródło
2
Możesz być świetnym programistą i okropną osobą. Czy wolisz pracować z miłą osobą, która może nie wie zbyt wiele, ale chętnie się uczy, czy z całkowitym palantem, który jest fantastycznym programistą pod każdym względem? To, co opisujesz, czyni dobrego pracownika, a nie dobrego programistę. ;)
2
Nie rozumiem, skąd pochodzi ten komentarz. Dwa główne pytania, na które zwracam się, to: „Jak WIEDZIEĆ, jeśli jestem dobrym programistą?” oraz „Jak poznać swoje mocne i słabe strony?” Co to za gadanie o palantach i okropnych ludziach. Mam opinie na temat tych rzeczy, ale nie sądzę, że odnoszą się one do mojej odpowiedzi.
2
Uzyskiwanie reputacji jest często bardziej kwestią PR i zaufania niż faktycznych umiejętności.
David Thornley,
Zakładając, że „umiejętność” jest zdolnością techniczną, to bycie dobrym programistą to więcej niż „faktyczna zdolność”. Umiejętności techniczne to tylko część układanki.
3

Myślę, że chodzi tu o zastanawianie się, skąd możesz wiedzieć, czy jesteś miłą osobą.

Myślę, że niestety odpowiedź brzmi: tylko inni wiarygodni ludzie mogą ci to powiedzieć. Nie sądzę, że jest to coś, co można dokładnie ustalić dla siebie (przynajmniej jest to bardzo trudne - ale myślę, że może to być niemożliwe).

Ben Collins
źródło
3

powiedziałbym po prostu: jeśli jesteś pasjonatem (mam na myśli NAPRAWDĘ pasję) o tym, co robisz, jeśli jesteś elastyczny (inny język, nowa technologia, kompletna przeróbka starego projektu - zróbmy to!), jeśli będziesz się uczyć i doskonalenie swoich umiejętności i nigdy, nigdy nie myśl, że jesteś wystarczająco dobry, aby się zatrzymać - to jesteś dobrym programistą!

agnieszka
źródło
3

95% wszystkich programistów uważa, że ​​należą do 5% najlepszych programistów, pozostałe 5% to menedżerowie. Więc jeśli jesteś menedżerem, prawdopodobnie nie jesteś dobrym programistą, w przeciwnym razie prawdopodobnie jesteś.

Hallgrim
źródło
... i 25% WIEM, że są w topie 1%;)
3

Myślę, że to bardziej kwestia tego, co robisz ze swoimi umiejętnościami programistycznymi. Bycie świetnym programistą jest w porządku, ale co ważne, jeśli programujesz oprogramowanie bankowe przez cały dzień (bez obrazy). Po prostu się nie sumuje.

Aby naprawdę udowodnić sobie, że jesteś dobrym programistą, podejmij ciekawy trudny projekt poboczny. To pokazuje kilka rzeczy: jesteś zainteresowany programowaniem w wolnym czasie i naprawdę lubisz ten temat - jest to niezbędne, aby być dobrym programistą. Pokazuje wszechstronność, ponieważ możesz rozszerzyć swoje umiejętności poza to, co robisz w swoim środowisku pracy. Pokazuje także motywację i kreatywność: sam zdefiniowałeś problem i podejmujesz kroki w celu jego rozwiązania.

Wszystkie te aspekty określają dla mnie dobrego programistę.

Joey Robert
źródło
3

Moja odpowiedź będzie politycznie niepoprawna. Jednak w rzeczywistości jestem założycielem start-upu i moim zadaniem jest zatrudnić najlepszych programistów.

Skąd mam wiedzieć, którzy ludzie będą dobrymi programistami lub mogą być dobrymi programistami?

1 słowo: IQ.

IQ służy do programowania, podobnie jak wysokość dla graczy w koszykówkę.

Umieściłbym umiejętności matematyczne jako kolejne bardziej poprawne politycznie wskaźniki. Moi nauczyciele informatyki powiedzieli mi, że istnieje jedno kryterium, które poprawnie przewiduje, kto odniesie sukces na kursach programowania. Wyniki matematyczne w szkole średniej. W każdym razie są to skutecznie IQ.

Może to być zaskoczeniem. Powiedziano nam, że programowanie to praca na studiach. Zgadnij co, nie dbam o stopień. Dbam tylko o 3 rzeczy.

  1. Umiejętności programowania (które można przetestować).
  2. Uzdolnienie.
  3. Umiejętności ludzi zdrowego rozsądku (niezbyt niskich).

Niestety IQ mierzy tylko jedną rzecz. Więc robię testy.

Zadaję ludziom pytania. Proste pytanie Oczekuję, że dziecko ze szkoły podstawowej powinno być w stanie odpowiedzieć.

Zadaję pytania takie jak:

  1. Jaka jest odległość między krótką a długą wskazówką zegara o 7:35
  2. Jeśli jadę z Dżakarty do Semarang i chcę utrzymać prędkość 60 km / godz. Następnie przez pierwsze 2 godziny jadę 100 km / godzinę. Jak szybko powinienem jechać przez resztę podróży, aby moja ŚREDNIA prędkość wynosiła 60 km / godzinę?

Jeśli przyjrzysz się uważnie, te pytania wcale nie wymagają kreatywności. Tylko zdrowy rozsądek. Każde dziecko ze szkoły podstawowej z IQ może na to odpowiedzieć.

NAJBARDZIEJ absolwent college'u nie może. Wyobraź sobie teraz, czy ktoś nie może na to odpowiedzieć? Czy on może programować? Pomyśl o tym. Jak często będziesz musiał określać, co powinien zrobić?

Możesz także zadawać pytania takie jak Microsoft, które wymagają kreatywności. Możesz zadawać pytania, jak zważyć 8 piłek w skali wagi, aby wiedzieć, która z nich jest najcięższa. Problem z takimi pytaniami polega na tym, że wiąże się ze szczęściem. Jednak niektóre są dość łatwe, powinno to być minimalne wymaganie.

Zdobycie wspaniałego programisty może poprawić morale innych programistów. Pozyskanie jednego prawowitego programisty może obniżyć morale wszystkich innych.

Gdy ludzie będą mogli odpowiedzieć na takie pytania, co jest bardzo łatwe, zmusiłbym ich do napisania kodu Google Jam.

Dobrzy programiści potrafią rozwiązać kod dżemu Google i przewidzieć, które problemy są łatwiejsze.

użytkownik4951
źródło
2

imho jesteś dobrym programistą, jeśli

-Masz tło teoretyczne. wynalezienie koła, jak również algorytmu lub frameworku, to przez większość czasu strata czasu.

- czasami widzisz rzeczy i problemy z przekrzywionej perspektywy. może to doprowadzić do znalezienia innowacyjnych rozwiązań.

- poświęcasz czas i wysiłki na aktualizację najlepszych narzędzi i umiejętności.

- Twój kod można łatwo modyfikować. jeśli zaprojektujesz czysty, elegancki i zrozumiały kod, modyfikowanie go nie będzie bolesne.

-jeśli twój kod / wskaźnik błędów jest dość wysoki. Wiem, że może to wydawać się trywialne, ale znam wielu kreatywnych i wykwalifikowanych programistów, którzy mimo to są bardzo podatni na trywialne błędy. znacznie obniża to ich skuteczność i przydatność.

- ludzie wokół ciebie wiedzą, że możesz pomóc w podjęciu decyzji

-Możesz rozwiązać problemy za pomocą różnych narzędzi. źli programiści wciąż używają tego samego narzędzia (czy to języka, technologii, architektury itd.) do każdego problemu

- ciągle się uczysz, jesteś ciekawy.

- Po tylu latach dobrze się bawisz programowaniem

pomarc
źródło
2

„Sir, przeszedłem przez to od Alfy do Omaha i mówię wam, że im mniej człowiek wie, tym większy hałas wydaje i tym wyższa pensja, którą dowodzi.” Mark Twain

... doszedłem do wniosku, że dobrzy programiści zarządzają niską pensją i nie hałasują ... :)

Lub ja
źródło
2

Najlepszy programista: Wykonaj zadanie z najniższą liczbą instrukcji kodu na czas.

Naveed
źródło
1

Ile błędów zawiera Twój kod na dane? (tj. błędy w wierszu) Jaka część twojego kodu musi zostać przekodowana, aby dodać nowe funkcje? Czy Twoi współpracownicy mają problemy z modyfikacją Twojego kodu?

Ostatecznie pytanie jest prawie niemożliwe do udzielenia odpowiedzi, biorąc pod uwagę, że pytanie „co to jest kod jakości” jest nadal przedmiotem gorących dyskusji po tylu latach.

Torlack
źródło
1

Naprawdę podoba mi się to, co powiedział Adam V.

Oprócz tego, co powiedzieli inni, spójrz na historię konserwacji i wsparcia swojej pracy. Jeśli Twój kod ma wysokie wymagania konserwacyjne i jest stale naprawiany lub trudno go zmienić, mogą to wskazywać na jego jakość. Ale mogą to być również wskaźniki złych wymagań.

Bernard Dy
źródło
1
„Ale mogą to być również wskaźniki złych wymagań”. najprawdopodobniej nasza sprawa tutaj. słabe wymagania zmusiły nas do przepisania całego modułu.
1

Bardzo trudno jest dokonać samooceny. Niekompetentni ludzie mają szalenie zawyżone oceny własnych umiejętności.

Dobrym miernikiem jest to, czy inne osoby, które szanujesz jako programiści, chcą pracować nad / z kodem, który napisałeś. Czy mając szansę na bezpośrednią współpracę z tobą lub odziedziczenie napisanego przez Ciebie kodu, to go odrzuci? Zgadzasz się niechętnie? Lub skorzystać z okazji, aby uczyć się z pracy? Ta technika działa jeszcze lepiej, jeśli jest rówieśnikiem, a nie podwładnym lub kimś, kto uważa, że ​​może przynieść im jakiekolwiek korzyści z poprawy samopoczucia.

Larry Gritz
źródło
1

Jeśli naprawdę chcesz się dowiedzieć, prześlij trochę kodu swoim rówieśnikom i poproś o (konstruktywną) weryfikację kodu. W najgorszym przypadku czegoś się uczysz. Sam fakt, że jesteś tutaj na tej stronie, szukając oświecenia, odróżnia cię już od niemytych mas. (chyba że jesteś tu tylko po głaskanie ego. :-)

Układ limbiczny
źródło