V prvních dvou částech naší série jsme mluvili o prvních krocích v profesi programátora a o tom, co se opravdu vyplatí učit na začátku kariéry.
Teď přicházíme do okamžiku, kterého se bojí téměř každý junior.
První Code Review. První komentáře ke kódu. První opravy.
A první myšlenka: "Opravdu jsem ten kód napsal tak špatně?"
Klid.
Každý z nás tím někdy prošel.
Code Review není zkouška
To je asi největší nedorozumění mezi začínajícími programátory.
Mnoho juniorů bere komentáře ke svému kódu velmi osobně. Objevuje se stres. Nejistota. Někdy i frustrace.
Přitom cílem Code Review není dokázat někomu, že udělal chybu. Naopak. Je to jeden z nejdůležitějších prvků procesu vytváření kvalitního softwaru.
Díky Code Review:
- snižujeme riziko chyb,
- zlepšujeme čitelnost kódu,
- učíme se navzájem,
- dbáme o konzistenci celého projektu,
- předáváme znalosti mezi členy týmu.
Nejlepší týmy neberou Code Review jako kontrolu. Berou ho jako každodenní výměnu zkušeností.
"Máš 37 komentářů"
Zní to hrozivě? Na začátku ano.
První Pull Request často vypadá právě takto:
- Komentář.
- Oprava.
- Ještě jeden komentář.
- Další oprava.
Po hodině máte pocit, že celý kód stojí za nic. To je normální.
Pamatujte na jednu věc. Senior neopravuje kód proto, aby ukázal svou nadřazenost. Dělá to proto, že za několik měsíců budete psát mnohem lepší kód.
A přesně o to jde.
Dobrý senior neříká jen "špatně"
Nejlepší programátoři, se kterými jsme pracovali, vždy vysvětlovali:
- proč něco stojí za to udělat jinak,
- jaké budou důsledky současného řešení,
- jaké existují alternativy,
- které řešení bude snazší udržovat za rok nebo dva.
To je obrovský rozdíl.
Protože lze říct: "To je špatně."
A lze říct: "To bude fungovat, ale pokud za půl roku budeme rozvíjet tento modul, bude mnohem snadnější ho udržovat v této struktuře."
V druhém případě se učíte něco mnohem cennějšího než jen samotnou opravu. Učíte se způsobu myšlení.
Clean Code neznamená hezký kód
To je další pojem, který je často špatně chápán.
Clean Code neznamená kód, který vypadá efektně. Nejde o počet prázdných řádků. Nejde o délku funkce. Nejde ani nutně o konkrétní designové vzory.
Jde o něco mnohem jednoduššího - kód by měl být čitelný.
Pokud za půl roku otevřete vlastní projekt a nebudete si pamatovat, co jste měli na mysli...
...pak pravděpodobně kód nebyl dostatečně čitelný.
Je takové přísloví: Kód píšeme pro lidi. Kompilátor jen kontroluje syntax.
A v tom je hodně pravdy.
Nezamilovávejte se do vlastního kódu
To je jedna z nejdůležitějších lekcí.
Kód není umělecké dílo. Není obraz. Není socha.
Je to nástroj k řešení konkrétního problému.
Když někdo navrhne lepší řešení...
...je dobré ho zvážit.
Ne proto, že má někdo větší autoritu. Proto, že možná opravdu je lepší.
Nejvíce se učí ti programátoři, kteří umějí říct: "Máš pravdu. Udělejme to jinak."
"U mě to funguje"
Dobře. Nakonec jsme se dostali k tomu slavného výroku. Každý software house má svou verzi tohoto vtípku...
Představte si tuto situaci.
Tester nahlásí chybu.
Programátor odpoví: "U mě to funguje."
Tester zkontroluje znovu. - Nejde to.
Project Manager se podívá. - Nejde to.
Klient také zkontroluje. - Nejde to.
Ale... u autora kódu to stále funguje.
Zní to povědomě?
Nejčastěji problém nespočívá přímo v samotném kódu.
Příčin může být mnoho:
- jiná verze dat,
- jiné prostředí,
- cache,
- konfigurace,
- oprávnění,
- prohlížeč,
- operační systém,
- případ, který nikdo dříve nepředpokládal.
Proto profesionální programátor nekončí analýzu větou: "U mě to funguje."
Ptá se dál.
Proč u mě to funguje a jinde ne?
A právě tehdy začíná opravdové ladění (debugging).
"To je jen malá změna"
To je další věta, která v mnoha software housech vyvolává lehký úsměv.
Klient říká: "Je to jen drobná úprava."
Programátor už ví, že za chvíli otevře soubor, kterého se nikdo nedotkl šest let.
A ta "drobnost" se může ukázat jako změna v pěti modulech, třech integracích a dvou databázích.
Proto zkušení programátoři velmi opatrně přistupují k slovu "jen".
Nejznámější hlášky z branže
Každé povolání má svá rčení. Programátoři také.
Několik z nich zná asi každý:
- "U mě to funguje."
- "To je jen pět minut."
- "To není bug. To je feature."
- "Vždyť jsem nic neměnil."
- "Na produkci se to sesypalo."
- "Ještě jen jeden deploy."
- "Určitě cache."
- "Rychlá oprava před víkendem."
- "To by mělo fungovat."
A asi nejnebezpečnější: "Hodíme to na produkci v pátek po 16:00."
Pokud pracujete v IT...
...pravděpodobně se teď usmíváte.
Programátor nepracuje sám
To je téma, které se často opomíjí. Ve skutečnosti většina projektů je týmová práce.
Programátor spolupracuje s:
- UX designéry,
- UI designéry,
- project managery,
- testery,
- DevOpsy,
- administrátory,
- analytiky,
- klienty.
Proto je stejně důležité jako znalost technologie i:
- komunikace,
- schopnost naslouchat,
- předávání znalostí,
- odpovědnost,
- vzájemný respekt.
Ten nejlepší kód nezachrání projekt, pokud tým neumí spolupracovat.
Slovníček pojmů
Code Review
Proces kontroly kódu jinými programátory před jeho nasazením. Má za cíl zlepšit kvalitu kódu, odhalit chyby a sdílet znalosti.
Pull Request (PR)
Návrh na zavedení změn do projektu. Právě v této fázi se nejčastěji provádí Code Review.
Clean Code
Přístup k psaní kódu, jehož hlavním cílem je čitelnost, jednoduchost a snadná udržovatelnost, nikoli počet použitých návrhových vzorů.
Debugování (Debugging)
Proces hledání a odstraňování příčin chyb v aplikaci.
Cache
Mechanismus dočasného ukládání dat za účelem zrychlení aplikace. Často je také zdrojem záhadných problémů při testování.
Shrnutí
Čím déle pracujeme jako programátoři, tím více docházíme k jednomu závěru. Nejlepší developeři nejsou ti, kteří dělají nejméně chyb.
Nejlepší developeři umí:
- rychleji najít příčinu problému,
- vyvozovat závěry,
- učit se od ostatních,
- přijímat konstruktivní kritiku,
- neustále rozvíjet své dovednosti.
Code Review tedy není překážkou. Je to jedna z nejcennějších lekcí, kterou můžete na začátku své kariéry dostat.
V poslední části naší série probereme, jak vypadá cesta od juniora k seniorovi. Vysvětlíme, proč Senior Developer není ten, kdo má deset let praxe, ale ten, kdo umí vzít odpovědnost za projekt, myslet byznysově a pomáhat ostatním členům týmu růst.



