V dvoch predchádzajúcich častiach našej série sme hovorili o prvých krokoch v povolaní programátora a o tom, čo sa naozaj oplatí učiť na začiatku kariéry.
Teraz prichádzame k momentu, ktorého sa obáva takmer každý junior.
Prvé Code Review. Prvé komentáre ku kódu. Prvé opravy.
A prvá myšlienka: "Naozaj som tak zle napísal tento kód?"
Pokojne.
Každý z nás tým kedysi prešiel.
Code Review nie je skúška
To je asi najväčšie nedorozumenie medzi začínajúcimi programátormi.
Mnohí juniori berú komentáre ku svojmu kódu veľmi osobne. Objavuje sa stres. Neistíota. Niekedy aj frustrácia.
A predsa cieľom Code Review nie je dokázať niekomu, že urobil chybu. Práve naopak. Je to jeden z najdôležitejších prvkov procesu tvorby kvalitného softvéru.
Vďaka Code Review:
- zmenšujeme riziko chýb,
- zlepšujeme čitateľnosť kódu,
- učíme sa navzájom,
- starame sa o konzistenciu celého projektu,
- prenášame vedomosti medzi členmi tímu.
Najlepšie tímy neberú Code Review ako kontrolu. Vnímajú ho ako každodennú výmenu skúseností.
"Máš 37 komentárov"
Znie desivo? Na začiatku áno.
Prvý Pull Request často vyzerá práve takto:
- Komentár.
- Oprava.
- Ešte jeden komentár.
- Ďalšia oprava.
Po hodine máš pocit, že celý kód sa hodí do koša. To je normálne.
Pamätaj len na jednu vec. Senior nekoreguje kód preto, aby ukázal svoju nadradenosť. Robí to preto, lebo o pár mesiacov budeš písať oveľa lepší kód.
A práve o to ide.
Dobrý senior nepovie len "zle"
Najlepší programátori, s ktorými sme pracovali, vždy vysvetľovali:
- prečo niečo stojí za to urobiť inak,
- aké budú dôsledky súčasného riešenia,
- aké existujú alternatívy,
- ktoré riešenie bude ľahšie udržiavateľné o rok či dva.
To je obrovský rozdiel.
Lebo môžeš povedať: "To je zlé."
A môžeš povedať: "Toto funguje, ale ak o pol roka budeme rozvíjať tento modul, bude oveľa jednoduchšie ho udržiavať v takejto štruktúre."
V druhom prípade sa naučíš niečo oveľa cennejšie než samotnú opravu. Učíš sa spôsob myslenia.
Clean Code neznamená pekný kód
To je ďalší pojem, ktorý sa veľmi často nesprávne chápe.
Clean Code neznamená kód, ktorý vyzerá efektně. Nejde o počet prázdnych riadkov. Nejde o dĺžku funkcií. Nejde ani nutne o konkrétne vzory.
Ide o niečo oveľa jednoduchšie - kód by mal byť čitateľný.
Ak o pol roku otvoríš vlastný projekt a nebudeš si pamätať, čo si mal na mysli...
...pravdepodobne kód nebol dostatočne čitateľný.
Je také príslovie: Kód píšeme pre ľudí. Kompilátor len kontroluje syntax.
A v tom je veľa pravdy.
Nebuď zamilovaný do vlastného kódu
To je jedna z najdôležitejších lekcií.
Kód nie je umelecké dielo. Nie je obraz. Nie je socha.
Je to nástroj na riešenie konkrétneho problému.
Ak niekto navrhne lepšie riešenie...
...oplatí sa ho zvážiť.
Nie preto, že má niekto väčší autorytet. Preto, že možno je to naozaj lepšie.
Najviac sa učia tí programátori, ktorí vedia povedať: "Máš pravdu. Urobme to inak."
"U mňa funguje"
Dobre. Museli sme sa konečne dostať k tej slávnej vete. Každý software house má svoju verziu tohto vtipu...
Predstav si situáciu.
Tester nahlási chybu.
Programátor odpovedá: "U mňa funguje."
Tester to skontroluje ešte raz. - Nefunguje.
Project Manager pozerá. - Nefunguje.
Klient tiež kontroluje. - Nefunguje.
Ale... u autora kódu to stále funguje.
Znie to povedome?
Najčastejšie problém nespočíva priamo v kóde.
Príčin môže byť veľmi veľa:
- iná verzia dát,
- iné prostredie,
- cache,
- konfigurácia,
- oprávnenia,
- prehliadač,
- operačný systém,
- prípad, ktorý nikto predtým nepredvídal.
Preto profesionálny programátor neskončí analýzu vetou: "U mňa funguje."
Položí ďalšiu otázku.
Prečo u mňa funguje a inde nie?
A práve potom začína skutočné debugovanie.
"To je len malá zmena"
To je ďalšia veta, ktorá vyvoláva úsmev vo väčšine software house-ov.
Klient hovorí: "To je len drobná oprava."
Programátor už vie, že o chvíľu otvorí súbor, ktorého sa nikto nedotkol šesť rokov.
A tá "drobné oprava" sa ukáže byť zmenou v piatich moduloch, troch integráciách a dvoch databázach.
Preto skúsení programátori k slovu "len" pristupujú veľmi opatrne.
Najznámejšie frázy z branže
Každé povolanie má svoje riekanky. Programátori tiež.
Niekoľko z nich pozná asi každý:
- "U mňa funguje."
- "To je len päť minút."
- "To nie je bug. To je feature."
- "Veď nič som nemenil."
- "Na produkcii sa to sypalo."
- "Ešte len jeden deploy."
- "Určite cache."
- "Rýchla oprava pred víkendom."
- "To by malo fungovať."
A asi najnebezpečnejšie: "Hodíme to na produkciu v piatok po 16:00."
Ak pracuješ v IT...
...pravdepodobne sa ti práve usmialo.
Programátor nepracuje sám
To je téma, ktorá sa často prehliada. V skutočnosti väčšina projektov je tímová práca.
Programátor spolupracuje s:
- UX designérmi,
- UI designérmi,
- project managermi,
- testermi,
- devopsmi,
- administrátormi,
- analytikmi,
- klientmi.
Preto rovnako dôležité ako znalosť technológií sú:
- komunikácia,
- schopnosť počúvať,
- odovzdávanie vedomostí,
- zodpovednosť,
- vzájomný rešpekt.
Najlepší kód nezachráni projekt, ak tím nedokáže spolupracovať.
Slovníček pojmov
Code Review
Proces prehliadky kódu inými programátormi pred jeho nasadením. Má za cieľ zlepšiť kvalitu kódu, odhaliť chyby a zdieľať vedomosti.
Pull Request (PR)
Návrh zavedenia zmien do projektu. Práve na tomto kroku sa najčastejšie robí Code Review.
Clean Code
Prístup k písaniu kódu, ktorého hlavným cieľom je čitateľnosť, jednoduchosť a ľahká udržateľnosť, nie počet použitých návrhových vzorov.
Debugovanie (Debugging)
Proces hľadania a odstraňovania príčin chýb v aplikácii.
Cache
Mechanizmus dočasného uchovávania dát za účelom zrýchlenia aplikácie. Často je tiež zdrojom záhadných problémov pri testovaní.
Zhrnutie
Čím dlhšie pracujeme ako programátori, tým viac dospejeme k jednému záveru. Najlepší developeri nie sú tí, ktorí robia najmenej chýb.
Najlepší developeri vedia:
- rýchlejšie nájsť príčinu problému,
- vyvodiť závery,
- učiť sa od iných,
- prijímať konštruktívnu kritiku,
- stále rozvíjať svoj remeselník.
Code Review teda nie je prekážka. Je to jedna z najcennejších lekcií, ktorú môžeš dostať na začiatku svojej kariéry.
V poslednej časti našej série porozprávame o tom, ako vyzerá cesta od Juniora k Seniorovi. Vysvetlíme, prečo Senior Developer nie je človek s desaťročnou praxou, ale někto, kto vie prevziať zodpovednosť za projekt, myslieť biznisovo a pomáhať rozvíjať ostatným členom tímu.
