Czy istnieje coś takiego jak super programista? [Zamknięte]

14

Czy spotkałeś super programistę? Co identyfikuje go jako takiego w porównaniu z „normalnymi” doświadczonymi / świetnymi programistami?

Również. jak radzisz sobie z osobą w zespole, która uważa, że ​​jest super programistą? Zarówno na wypadek, gdyby rzeczywiście był, czy nie?

Edycja : Ciekawe dane wejściowe, dzięki. Można zebrać kilka rzeczy:

Pojawiło się kilka definicji. Pomijając zbyt zlokalizowane definicje (które identyfikowały autorów lub ich znajomych jako superprogramistów), spodobało mi się kilka definicji:

  1. Definicja Thorbjørna : osoba, która przez długi czas konsekwentnie reprezentuje dobry zespół.

  2. Wolny elektron, powiązany z odpowiedzią Henry'ego . Bardzo produktywna osoba o wyjątkowych zdolnościach. Wyjaśnienie jest dobra lektura.

    Wolny elektron może zrobić wszystko, jeśli chodzi o kod. Mogą napisać kompletną aplikację od zera, nauczyć się języka w weekend, a co najważniejsze, mogą zanurzyć się w ogromną kupkę kodu spaghetti, zrozumieć go i faktycznie uruchomić. Możesz zbudować całe firmy wokół wolnego elektronu. Są takie dobre.

    Kontrastujący z ostatnią definicją jest punkt związany z Jamesem na temat mitu genialnego programisty ( wideo ). Ten sam pomysł wyraża się w komentarzu rwong jako programowanie bez ego. Przedstawiają przeciwne opinie, jak zoptymalizować pod kątem tak wyjątkowego programisty czy zespołu.

Te definicje są zdecydowanie różne, więc byłbym wdzięczny, jeśli masz wkład w to, co jest lepsze. Lub dodaj własne, jeśli chcesz, ale pomogłoby to powiedzieć, dlaczego różni się od nich.

Muhammad Alkarouri
źródło
3
Tak, a on nazywa się John Carmack .
Gary Willoughby
1
Mam listę 4 wolnych elektronów na małej kartce papieru zamkniętej w szufladzie na biurku.
Henry
Jeśli „super programista” == „genialny programista”, kliknij google.com/events/io/2009/sessions/MythGeniusProgrammer.html
James
Zobacz odpowiedź Jeffa na temat programowania bez ego .
rwong
Chciałbym tylko dodać myśl z książki The Mythical Man-Month, en.wikipedia.org/wiki/The_Mythical_Man-Month , cytowano artykuł badawczy, który wskazuje, że wielki programista jest wiele razy lepszy niż dobry. Nie pamiętam wszystkich szczegółów, ale oczywiście w kimś, kto potrafi wyprodukować w zespole, jest duża wartość, o rząd wielkości większa niż u innych.
Travis,

Odpowiedzi:

17

Rozważałbym termin „super programista” tylko dla tych, którzy mogą wykonywać pracę, która zwykle wymaga zespołu dobrych programistów i wykonują to konsekwentnie przez długi czas.

Dotyczy to zarówno pisania wysokiej jakości kodu (dokumentacji, testów itp.), Jak i rozwiązywania bardzo trudnych problemów wymagających dużej wiedzy i talentu do rozwiązania.

Ale wymaga to wysokiej wydajności na wszystkich kontach przez długi czas. Dla tych, którzy piszą tony kodu, których nikt nie może zrozumieć i utrzymać, ten termin nie ma zastosowania.

Jak sobie poradzić z? Jeśli naprawdę masz taką osobę, zrób wszystko, co w jej mocy, aby zapewnić rusztowanie potrzebne do doskonałości. Oznacza to odsunięcie na bok nieistotnych rzeczy i zapewnienie potrzebnych zasobów. Pamiętaj, że zauważyłem, że bardzo dobrzy wykonawcy są zwykle pokorni.

Niestety jest o wiele bardziej prawdopodobne, że masz osobę, która myśli, że jest super programistą, a nie jest. Sposób na radzenie sobie z nimi polega na moim doświadczeniu, aby ich wyniki były mierzalne. „FindBugs może nie znajdować żadnych problemów”, „Cały kod musi mieć testy odpowiadające przypadkom użycia”, „Recenzja”.

Jeśli kod jest naprawdę trudny do zrozumienia, rozważ cotygodniowe spotkania, na których niezbyt super programista wyjaśnia każdy kod, który napisał od czasu ostatniego spotkania, o które każdy może poprosić anonimowo o wyjaśnienie, a każdy może odrzucić anonimowo, aby zaakceptować w podstawa kodu, aby był nie do utrzymania. Przynajmniej podzieliłeś sposób myślenia i pozwoliłeś przyszłym opiekunom zawetować fragment kodu. Będzie to również silnie wskazywać programiście, jaki rodzaj kodu spowoduje, że będzie musiał wykonać dodatkową pracę.

(EDYCJA: Przyczyną tego anonimowego bitu jest uniknięcie sytuacji, w której niezbyt super programista zemści się na tych, którzy mu się sprzeciwiają).


źródło
2
Doskonałe punkty, z wyjątkiem anonimowego wkładu. Jeśli zespół ma się naprawdę zjednoczyć, a „superprogramista” zrozumie, czy rzeczywiście spełnia on definicję, będą musieli poznać swoje mocne i słabe strony, aby współpracować na rzecz sukcesu zespołu i oprogramowania i budować zaufanie. Jest to kwestia otwarcia się na krytykę innych (tak jak dzieje się to tutaj do pewnego stopnia), aby ktoś mógł znaleźć i naprawić swoje niedociągnięcia jako superprogramista.
Huperniketes
@Huper, anonimowość ma na celu uniknięcie tego na początku. Jeśli uważasz, że jesteś nadludzki, możesz nie przyjąć zbyt dobrze krytyki (w przeciwnym razie nie zadałoby się tego pytania).
2
@Thor, to już sprawa osobista, gdy masz do czynienia z tym, co ktoś o sobie wierzy. Anonimowość znacznie utrudnia budowanie zaufania. Członkowie zespołu muszą ufać, że mogą być uczciwi, że krytyka jest mile widziana, a ważne opinie są jawne.
Huperniketes
Czy superprogramista może łatwiej lub trudniej wytłumaczyć kod młodszemu programiście? Jeśli różnica jest duża, wyjaśnienie może być trudne. Prawda?
Muhammad Alkarouri
1
@Mamhammad, biorąc pod uwagę, że moja definicja jest taka, że ​​superprogramista pisze czysty, łatwy do utrzymania kod z dobrą dokumentacją, który nawet młodszy programista może zrozumieć (z wyjątkiem bardzo złożonych algorytmów, które są rzadziej potrzebne w Javie ze względu na rzeczy dostępne w środowisku wykonawczym, więc ich nie rozważam). Pomyślałbym, że byłoby to równie łatwe, ale może potrwać dłużej, aby wyjaśnić młodszemu programistowi.
5

Superprogramer to każda osoba, która potrafi wygenerować kod szybciej niż kompilator przyspieszający, potężniejszy niż funkcja rekurencyjna i zdolna przeskoczyć stosy FIFO w jednym wiązaniu.

Sposób, w jaki postępujesz z osobą w zespole, która uważa, że ​​jest superprogramerem, polega na wystawieniu go na jedyną słabość - światło słoneczne.

Chetan
źródło
5
@Chetan: Co to jest stos FIFO?
rwong
3
@Chetan: to jest nieprzydatna odpowiedź. Być może nie pracowałeś z programistami, którzy są tak niesamowici, zaczynasz się zastanawiać, czy jesteś w ogóle godny.
JBRWilkinson
Superprogramista powinien żyć w chmurze i zapewniać publiczny interfejs API dla swojego języka zapytań umysłowych .
rwong
Stos @rwong pierwszy na wejściu, znany również jako kolejka.
alternatywnie
1
@mathepic: jeśli możesz nazwać kolejkę stosem, czy oznacza to, że LIFO i FIFO są tym samym? (parafrazując Lincolna)
rwong
3

Poproś osobę o napisanie rozdziału o sobie w stylu Coders at Work . Prześlij go do wydawcy. Jeśli zostanie odrzucony, osoba ta nie jest super programistą.

rwong
źródło
Czy odwrotność twojego stwierdzenia jest prawdziwa? (Jeśli zostanie zaakceptowane, czy możesz założyć, że jest on super programistą?) Myślę, że można by to wyjaśnić.
alternatywny
Straciłem szacunek, jaki mogłem mieć dla autora tej książki, gdy tylko przeczytałem, że był on kiedyś „architektem opartego na Javie systemu wiadomości transakcyjnych”. No cóż, przynajmniej miał poczucie, że rzuci tę pracę.
Dan Molding
1
@Dan Molding: Tak długo, jak się zamyka i pozwala programistom, z którymi rozmawia w tej książce, na mówienie, nie obchodzi mnie, co twierdzi. (Właśnie kupiłem tę książkę i nie mogę się doczekać jej przeczytania. Mam nadzieję, że jest tak dobra, jak mi się wydaje). =)
gablin
Pomysł jest dobry, ale wydawcy zwykle akceptują znanych programistów, a nie super programistów. Poprawny?
Muhammad Alkarouri
@Alkarouri: jeśli super ma takie samo znaczenie jak w superstar , to tak, bycie superprogramistą oznacza również bycie sławnym.
rwong
2

Są tacy, którzy mogą wytworzyć więcej produkcji niż inni.

Są tacy, którzy mogą wytwarzać produkt o niższym wskaźniku defektów niż inni.

Ci, którzy ZAPEWNIAJĄ KONSEKWENTNIE większą wydajność, przy niższych niż normalnie wskaźnikach defektów, mogą być godni, aby zostać powołanym na stanowisko Superprogramisty.

Bycie znanym lub uważanym za takiego jest zwykle widoczne tylko dla oświeconego menedżera z korzyścią dla widzenia z tyłu.

Ktoś, kto jest superprogramistą, prawdopodobnie ma duże ego i uważa, że ​​są dobrzy. To nie czyni ich dobrymi.

Postawa <> Zdolność.

szybko
źródło
1

Super programista: osoba o ponadprzeciętnej inteligencji z dużym zaangażowaniem w programowanie. Mówię o osobie, która spędza dużo czasu na programowaniu, nie poddaje się łatwo i jest zdeterminowana, aby rozwiązać konkretny problem. Ta osoba rzadko idzie spać, jeśli występuje nierozwiązany problem / błąd. Super programista pisze efektywny, szybki i niezawodny kod. Super programista ma rozległą i dogłębną znajomość co najmniej jednego języka programowania (i technologii), jest biegły w kilku innych i może szybko nauczyć się wszystkiego, co jest potrzebne.

Maggie
źródło
0

Czy spotkałeś super programistę? Co identyfikuje go jako takiego

Z programów / projektów, które stworzyły , kodu źródłowego, badań, które wykonały.

uważa, że ​​jest super programistą

Jak mówisz, w to wierzy, bardzo trudno jest go zmusić, by w to nie uwierzył. Najgorsze jest to, że ta osoba przestała być lepszym programistą, ponieważ uważa, że ​​wszystko jest gotowe, jest super i powstrzymuje ewolucję. Co gorszego niż w programowaniu. W każdym razie zawsze możesz poprosić o dowód ... i zapytać go, z kim on / ona porównuje go do siebie, aby założył, że jest super.

Arystos
źródło