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?
źródło
Odpowiedzi:
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.
źródło
Jak Paul Graham wymownie wymawia w tej obsadzie kapsuły , nie możesz. Tylko twoi współpracownicy mogą ci powiedzieć.
źródło
Zawsze uważałem, że najłatwiej jest ocenić wydajność, robiąc dwie rzeczy.
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:
źródło
To macierz kompetencji programisty dla Ciebie: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm
źródło
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”.
źródło
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.
źródło
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.
źródło
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.
źródło
Możesz spróbować konkurować w konkursach algorytmów TopCoder .
źródło
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.
źródło
Jeśli spojrzysz na kod z, powiedzmy rok temu, i pomyślisz, Jezu, mógłbym to zrobić o wiele lepiej, prawdopodobnie jesteś dobry :).
źródło
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)
b)
do)
re)
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.
źródło
instance
pole nigdy nie jest przypisane doType
instancji, dlatego zawsze pozostajenull
=)Jest kilka rzeczy, które możesz wypróbować, aby uzyskać lepszy obraz tego, jak się układasz.
(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).
źródło
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
źródło
Rozumiesz to?
:-)
źródło
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.
źródło
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ę.
źródło
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.
źródło
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).
źródło
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ą!
źródło
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ś.
źródło
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ę.
źródło
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.
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:
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.
źródło
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
źródło
... doszedłem do wniosku, że dobrzy programiści zarządzają niską pensją i nie hałasują ... :)
źródło
Najlepszy programista: Wykonaj zadanie z najniższą liczbą instrukcji kodu na czas.
źródło
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.
źródło
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ń.
źródło
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.
źródło
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. :-)
źródło