Logo

O perspektivě

Vložil Miroslav Bodeček, 5. Březen 2008 - 22:16

Nedávno mě zaujal článek vydaný na Computerworldu. Je to útržek z první kapitoly knihy Secrets of the Rock Star Programmers.

Ed Burns zpovídá Roda Johnsona a řeč přijde na to, jaké jsou vlastnosti úspěšných vývojářů. Není bez zajimavosti, že se tu baví šéf architekti dvou velmi rozšířených webových frameworků pro Javu: JSF a Spring MVC, podle všech měřítek oba úspěšní programátoři.

Podle Roda Johnsona úspěšným vývojářům nechybí:

  1. Konstantní pocit, že jejich kód potřebuje vylepšit. Úspěšní vývojáři většinou nemají pokoj, dokud jejich kód není perfektní. A i když někdy ví, že další refactoring se jim nevyplatí, nedokonalost kódu je stejně štve.
  2. Nadprůměrná zásoba energie a zápal do práce.
  3. Vidění věci z perspektivy. Nedostatek perspektivy je zdroj nejrůznějších problémů.
  4. Zdravé sebevědomí.
  5. Inteligence.

Já s tím naprosto souhlasím, nicméně:

  • bod 2, 4, a 5 je těžko ovlivnitelný
  • bod 1 považuju za důsledek 2 a 5
  • bod 3 je zajímavý. Nedostatek perspektivy člověka na klíčovém místě určitě přináší tolik problémů, že se s úspěchem vylučuje.

Jaké že jsou typické probĺémy způsobené nedostatkem perspektivy?

Předčasná optimalizace

Kolik chyb bylo zavlečeno do fungujících programů, protože jejich autoři se nedokázali odprostit od několika tisíc cyklů CPU navíc, které proběhnou za celý běh programu právě jednou? V 99% případů opravdu nedává smysl lokálně optimalizovat. Raději naimplementuji bezchybný pětiřádkový O(n3) algoritmus než chybami prolezlý a ušmudlaný O(log n) na 50 řádků. Vidět věci z perspektivy = pochopit, že mezi odezvami 0.00001s a 0.01s uživatel rozdíl nepozná.

Tím chci říct, že optimalizovat jsem ochoten, ale teprve když je rychlost problém. Také si svoje „tušení“ o vlivu toho škaredého suboptimálním algoritmu musím podložit reálnými daty, například výstupem z profileru.

Přehnaná složitost kódu

Někteří lidé neví kdy přestat psát „obecný“ kód. Čistý a udržovatelný kód je především jednoduchý. Obecné řešení často jednoduché je, ale pokud není, obecnost nedává žádný smysl. Perspektiva mi umožní vidět, kdy je obecnost samoúčelná.

Vynalézání kola

Příliš mnoha programátorům chybí perspektiva k pochopení, že jejich problém není ojedinělý, a pravděpodobně už ho někdo před nimi prozkoumal a vyřešil.

Mírně pozměněná varianta předchozího je „použití šroubováku, když potřebuju kladivo“. Vývojář rádi používají technologie, které už znají. Měli by ale také použít jinou perspektivu, která jim umožní pochopit, že technologie se kterou si už rozumí, se nehodí na vše. Jinak budou dál spokojeně zatloukat hřebíky šroubovákem.

Syndrom kuchyňského dřezu

Analytikovi bez perspektivy uniká, že vlastnost, kterou bude pravidelně používat 1% lidí, se nezaplatí. Jednou jsem byl ve firmě, kde šéf firmy, rozhodoval o nových funkcích na základě odezvy od právě jednoho zákazníka („čirou náhodou“ svého kamaráda).

Projekty, které trpí syndromem kuchyňského dřezu (také tzv. featuritýdou) jsou často odsouzené k pomalé a bolestivé smrti. Přitom stačí perspektiva a prosté kupecké počty.

© 2005-2008 oXy Online s.r.o., všechna práva vyhrazena.