Vlastnosti dobrého programátora
Před časem jsem odkazoval na desatero jak správně programovat. Teď jsem narazil na další z podobného ranku: 10 vlastností dobrého programátora.
- Programuje rád
- Dotahuje věci do konce
- Kód průběžně refaktoruje (doplňuju: aniž by se dostal do konfliktu s bodem #2)
- Používá návrhové vzory (čti: nevymýšlí kolo)
- Píše testy
- Využívá existujícího kódu (opět čti: nevymýšlí kolo)
- Stará se o použitelnosti svých výstupů (tedy ví, že praktický vývoj software není zkouška z implementance algoritmu)
- Píše čitelně (i s ohledem na budoucí kolegy, kteří nemusí dosahovat jeho geniality)
- Je schopen psát v jakémkoli jazyku
- Má nějaké teoretické základy
Ad 1) To je někdy dost na škodu.
Ad 3) Ne každý projekt nutně potřebuje refaktoring.
Ad 4) Souvisí pouze s jazyky umějící jen OOP paradigma - tudíž nemohou být obecnou vlastností programátora. - Tedy konflikt v bodem 9)
Ad 9) Toho není schopen nikdo na světě.
MP: Ad 1) Myslím, že bod 1 je na škodu pouze pokud zároveň není splněn bod 2
Ad 9) jasně, nadsázka.
K ostatním by se samozřejmě pro přesnost dalo dodat “when applicable”
MP: ad 1) Chcete naznačit, že jsou případy, kdy je výhodné, že někdo programuje, ale programování se mu přitom protiví?
ad 3) Každý projekt potřebuje refaktoring. Výjimkou jsou copy&paste projekty (např. stejná nebo téměř stejná webová apliakce pro jiného zákazníka), ale zde těžko hovořit o programování.
ad 4) Návrhové vzory nejsou jenom GoF. Některé ze vzorů GoF kromě toho spíš řeší objektová omezení staticky typovaných jazyků typu C++, Java apod. (např “Factory” je zbytečný vjazycích, kde jakákoliv třídy je zároveň i objekt). Návrhový vzor může být v jakémkoliv jazyce - v SQL, řekl bych, se používaly dávno před GoF. A rozumný programátorský tým si nějaké vzory najde nebo vytvoří.
ad 9) IMHO, tím je myšleno, že se programátor bude snažit pochopit programování, jazykové konstrukce a přístupy k programování (např. imperativní, funkcionální) do hloubky (pak třeba lehce přejde z C++ do Javy nebo z Javy do C#) a nikoliv, že se mechanicky naučí syntaxi. Kromě toho obvykle nedělá problém vlastní jazyk, protože příkazů je jen pár a až na menší či větší syntaktické odlišnosti je to furt na jedno brdo.
ad1) opravdu je nekdy na skodu kdyz programatora bavi programovat. On totiz pak nekdy vymysli porad dokola, dela to stale jen lepsi, proste si s tim kodem hraje a vlastne nechce aby ten projekt byl u konce, protoze mu tim vezmou jeho “dite”. Toto se da potlacit tim ze pracuje na nejakych open source projektech kde se proste realizuje, ale to pak zase hrozi ze se mu nebude chtit delat v praci
ad9) kazdy normalne dobry programator umi programovat v jakemkoliv jazyku. Programovani neni o jazycich, ale o mysleni a algoritmech. Novy jazyk se dokazu naucit za par tydnu, myslet se nekdo neni schopny naucit ani ze nekolik desetileti. (samozrejme predpokladam ze programator ma nejake zaklady z proceduralnich, funkcionalnich, OOp jazycich aby mel v novem jazyce jasne zakladni principy a jenom se naucil syntaxi a nejake nove ficury.