A přitom co jiní tvořili týden, on stihl za odpoledne.
Rychlost tvorby rozhodně není tím nejdůležitějším při hodnocení kvality programátora. Nemá to moc daleko od hodnocení podle napsaných řádek kódu… Důležité je také to, zda výsledný kód dělá, co má, zda to nedělá zbytečně neefektivně, zda je srozumitelný.
čím větší guru, tím méně mu záleželo na IDE
Ono to také může být tím, že takový guru řeší nějaké zapeklité případy, které jsou soustředěné na jedno místo v kódu.
rovná stavbě pětipatrové budovy bez podrobných plánů … Jinými slovy, má-li někdo potřebu příliš často refaktorovat, znamená to, že při práci dost nepřemýšlí.
To jste ovšem nepochopil výchozí situaci. Přemýšlet o tom, abyste pak nemusel refaktorovat, můžete u něčeho tak jednoduchého, jako je pětipatrová budova. Dnešní software je ale mnohem komplexnější – a kdybyste chtěl mít na všechno předem podrobné plány, bude váš projekt beznadějně zastaralý už v okamžiku, kdy začnete kódovat.
Agilní vývoj si nevymysleli vývojáři sami od sebe. Agilní vývoj vznikl jako reakce na skutečnost, že požadavky zákazníka se pořád mění, že zákazník neví, co chce, a teprve s tím, jak systém používá, zjišťuje, co by vlastně ještě měl umět. Ostatně u budov je to stejné, i u nich se mění zařízení a vybavení a přestavují se.
U mě například tvoří refaktoring velmi zanedbatelnou část práce. Většinu práce strávím přemýšlením, čmáráním na papír, případně laděním, ale rozhodně ne bušením kódu.
Myslíte, že by tím přemýšlením a čmáráním vznikla ta spousta blogů, redakčních systémů, e-shopů, ERP a prostě všechen ten software, co dnes existuje? Dneska velkou část „objemu“ software tvoří jen poměrně jednoduché spojování již hotových částí a komponent. Většina programování není žádná složitá věda, je to řemeslo. A jako u jiných řemesel, je důležité používat správné nástroje. Do panelu taky můžete vrtat příklepovou vrtačkou a nakonec nějaký důlek vyhloubíte, ale dobrý řemeslník použije pneumatické kladivo – protože kvalita toho řemeslníka je jinde, než že bude zápasit s jednou dírou do panelu. Většina kódu je nezajímavý kód, u kterého záleží právě na tom, jak dobře ovládáte nástroje a používané komponenty, a nějaké přemýšlení není tak důležité.
Je to vidět třeba i na Linuxovém jádru, u kterého byste nejspíš řekl, že je tam potřeba důkladně přemýšlet. Ano, to, co je na linuxovém jádru intelektuálně zajímavé, o čem se píšou články, to jsou věci, o kterých musí autoři pořádně přemýšlet. Ale jestli se nepletu, největší objem změn v jádru pravidelně představují ovladače zařízení – což je z hlediska kódu přesně ta nezajímavá práce, kdy prostě někdo musí napsat kvanta kódu, kterým poslepuje existující komponenty (a zároveň je na tom vidět, že to „slepování“ nemusí být zas tak jednoduchá práce, protože pochopit a vysledovat, jak funguje nějaký hardware, nemusí být nic jednoduchého, co by zvládla motivovaná opice).
Takže nesouhlasím - často refaktorovat potřebuje průměrný, či spíše podprůměrný programátor. Ale v žádném případě ne dobrý programátor.
Dobrý programátor musí být schopen vzdát se svého kódu a pochopit, v čem jeho kód nesplňuje aktuální požadavky. Podprůměrný programátor často refaktorovat nepotřebuje, protože mu špatný kód nevadí. Dobrý programátor naopak refaktoruje, protože když před třemi roky důkladně přemýšlel a naplánoval kód na tři roky dopředu, dnes už ten kód nemá žádnou budoucnost a je potřeba ho zase připravit na ty další tři roky. A dobrý programátor se neustále zlepšuje, takže se mu těžko stane, že dnes už nevymyslí nic lepšího, než co vymyslel před těmi třemi roky.