SlideShare uma empresa Scribd logo
1 de 40
Urychlovače vývojářova
profesního růstu




Robert Dresler

www.robertdresler.cz
@rdresler
Jak hodnotíme dobrého vývojáře?

   Příjemný, kamarádský a charakterní člověk
   Píše přehledný a čitelný kód
   Vyřeší rychle kaţdý problém
   Má programovací jazyk / technologii v malíčku,
    vţdy umí poradit
   Jeho aplikace vykazuje minimum chyb
   Týmový hráč
   Je vysoce produktivní
   Jeho odchod můţe firmu významně ohrozit
Produktivita vývojářů

Vynikající
 vývojář

Průměrný
 vývojář

Špatný
vývojář

                     Produktivita
             0




                 >
Povahové vlastnosti podle McConnella



         Zvědavost                      Kreativita

             Skromnost                  Syrová inteligence *

     Zkušenosti

                  Duševní upřímnost                      Kuráţ

                          Neústupnost
      Lenost                            Disciplína
Skromnost
Buďme skromní
   „Nejlepšími programátory jsou lidé, kteří si
    uvědomili, jak malé jsou jejich mozky. Jsou
    skromní.“
   „Špatným programátorům brání jejich ega v
    tom, aby se stali dobrými.“
   „Čím skromnější jste, tím rychleji se budete
    zlepšovat.“
            Edsger Dijkstra, Skromný programátor
Mějme sloţitost pod kontrolou




                         >
    Sloţitost aplikace       Mentální kapacita
Sloţitý = špatný

   Sloţitý = špatný, náchylný k chybám, s nízkou
    vnitřní kvalitou
Techniky zvládání sloţitosti
   Odstupňovaný návrh
   Abstrakce
   Zapouzdření implementace
   Dědičnost
   Udrţování volných vazeb
   Návrhové vzory
   Testy řízený návrh (TDD)
   Čistý kód (Clean Code)
   …
Odstupňovaný návrh




                     Zdroj: Code Complete, McConnell
Abstrakce
   Je schopnost věnovat se určité koncepci při
    současném ignorování části detailů
   Na úrovni rozhraní k metodám, třídám,
    balíčkům
Zapouzdření implementace

   Začíná tam, kde abstrakce ukrývá detaily
   Jeden ze základních principů OOP
   Známe CO, ale nevíme JAK
   Minimalizuje dosaţitelnost tříd a jejich členů
   Programování proti rozhraní
Dědění
   Abstrakci určuje bázová třída
   Příliš hluboká hierarchie sloţitost zvyšuje
Udrţování volných vazeb
   Vazby = sloţitost => minimalizovat
   Malý počet přímých, viditelných a flexibilních
    vztahů = volná vazba
   Snadné propojení a odpojení
   Pozor na sémantické vazby
Návrhové vzory
   Hotová konvenční zobecnění (abstrakce)
   Heuristická hodnota v naznačení návrhových
    alternativ
   Zefektivnění komunikace o návrhu
Čistý kód
   Principy čistého kódu (clean code)
   Krátké metody, významové názvy, málo
    argumentů, …
   Kódovací styly a standardy
   Konvence pojmenování
   Minimalizace doby na pochopení významu
   Rychlejší ladění
Připusťme si omylnost
   Potlačení ega, spolupráce s kolegy
   Revize, inspekce, testy
   Extrémní programování
   Zpětná vazba
Zvědavost
Buďme zvědaví

   Časté změny technických informací,
    specifikací, technologií
   Vysoce konkurenční trh
   Jsou Indové a Číňané zvědavější?
   Nezájem = programátorský „domov důchodců“
Brusme pilu
   Praktikování x přemýšlení o řemesle
   Diskuze, sebepoznávání, studium
   Názory jiných lidí
   Jedna nová zkušenost z kaţdé aktivity
   Zdokonalování ovládání nástrojů
   Sledujme zajímavé informační zdroje, Twitter *
   Cizí kód, úspěšné projekty
   Přílišné broušení = prokrastinace
Experimentujme
   Efektivní studijní metoda programování
   Krátké testovací programy, izolované problémy,
    rysy programovacího jazyka / technologie
   Prototypy jsou levnější
   Zpětná vazba
   Poučení z chyb
Praktikujme
   Code-kata
   Code Retreat
   Párové programování
   Hackathon
Sdruţujme se s ostatními odborníky

   Znalosti a schopnosti jedinců se v týmu velmi
    rychle zlepšují
   Sdílení znalostí
   Vývojářská setkání, konference, networking,
    firemní workshopy
Duševní upřímnost
Přiznejme chybu

   „Jakýkoli hlupák může obhajovat své chyby –
    a většina z nich to také dělá.“ – Dale Carnegie
   Nepřiznání chyby = ztráta kreditu
   Přiznejme se rychle, rozhodně a poučme se
   Obvykle se jedná o naši chybu
Nebuďme falešní experti
   Nepředstírejme, ţe rozumíme určité oblasti,
    pokud to není pravda
   Přiznejme si skutečný stav znalostí
   Pozor na narcismus
   Naslouchejme druhým a učme se od nich
Informujme pravdivě o aktuálním stavu

   Přiznejme skutečný stav a postup projektu
   Manaţer je na informacích od programátorů
    závislý
   Paretovo pravidlo 80/20
Rozumíme svému kódu?
   V kódu, kterému autor nerozumí, se často
    skrývají bugy
   Pouţijme refaktorizační a zjednodušující
    techniky
Lenivost
Buďme „leniví“
   Vytvářejme nástroje a pomůcky, které za nás
    vykonají nepříjemnou práci - „Dlouhodobá
    lenost“
   Klávesové zkratky, makra
   Code snippety, šablony, generování kódu
   Automatizace spouštění buildů, testů,
    generování reportů
Komunikační dovednosti
Zlepšujme komunikační dovednosti

   Programátoři jsou obvykle introverti
   Vyjádřit názor, mlčet, naslouchat
   Stručnost a jednoznačnost
   Progres: Obhájení názoru před kolegou, v
    týmu, ve fóru, na blogu, na veřejné přednášce
Další tipy
Zlepšujme angličtinu
   Lingua franca vývojářů software
   Číst, psát, mluvit
   Větší profesní moţnosti, mezinárodní týmy
   Globální trh
   „Anglicky raději špatně neţ vůbec“ od @adent
   Programovací jazyky se lokalizovat nebudou :)
   Pozor na anglicko-českou polévku v kódu
Nepřeceňujme zkušenosti
   Zkušenosti nejsou vţdy zásadní
   Dřívější návyky se mohou stát handicapem
   10 let zkušeností nebo 10 x 1 rok zkušeností?
Braňme se vyrušování
   Kratší soustředěný blok práce je efektivnější
    neţ dlouhý přerušovaný
   Vyhýbejme se paralelismu činností
   Pomůcky: RescueTime, Pomodoro, sluchátka,
    růţová desetiminutovka
Osobní management
   Time management
   Stanovování priorit podle důleţitosti
   Návyky efektivního chování (Covey)
Pečujte o své zdraví
   Sezení = likvidace těla, zátěţ zad, srdce, …
   Sport, pravidelný pohyb, sex
   Zdravé jídlo
   Smích, neberme se moc váţně
   Resetovačky hlavy, koníčky
Ţivot ≠ Práce
Ceník odpovědí 


Typ dotazu                 Cena odpovědi

S odpovědí typu Ano / Ne   Zdarma

S krátkou odpovědí         5 Kč
S dlouhou odpovědí         10 Kč
Na který neznám odpověď    100 Kč

Mais conteúdo relacionado

Semelhante a Urychlovače vývojářova profesního růstu

Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019
Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019
Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019Jan Kvasnička
 
Jak najmout UXáka
Jak najmout UXákaJak najmout UXáka
Jak najmout UXákaSherpas
 
Jak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informaceJak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informaceMartin Paták
 
Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]
Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]
Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]Marketingová Plzeň
 
Kisked - prezentujte ten projekt!
Kisked - prezentujte ten projekt!Kisked - prezentujte ten projekt!
Kisked - prezentujte ten projekt!Lukas Hrdlicka
 
Komplexitu analyzou neubijete_skpr_20171122
Komplexitu analyzou neubijete_skpr_20171122Komplexitu analyzou neubijete_skpr_20171122
Komplexitu analyzou neubijete_skpr_20171122Karolina Smejkal
 
Úvod do analýzy - 2 část
Úvod do analýzy -  2 částÚvod do analýzy -  2 část
Úvod do analýzy - 2 částMartin Paták
 
Simplexity | prezentace komplexních témat
Simplexity | prezentace komplexních tématSimplexity | prezentace komplexních témat
Simplexity | prezentace komplexních tématTomáš Zykán
 
DK2: Komunikace a spolupráce
DK2: Komunikace a spolupráceDK2: Komunikace a spolupráce
DK2: Komunikace a spolupráceMichal Černý
 
Jak nastartovat vývojový projekt
Jak nastartovat vývojový projektJak nastartovat vývojový projekt
Jak nastartovat vývojový projektJiří Knesl
 
On-line nástroje pro plánování, projektový management a time management + sof...
On-line nástroje pro plánování, projektový management a time management + sof...On-line nástroje pro plánování, projektový management a time management + sof...
On-line nástroje pro plánování, projektový management a time management + sof...Allix
 
Šablona prezentace pro obhajobu diplomové práce
Šablona prezentace pro obhajobu diplomové práceŠablona prezentace pro obhajobu diplomové práce
Šablona prezentace pro obhajobu diplomové práceOlga Zbranek Biernátová
 
Žijeme s uživateli
Žijeme s uživateliŽijeme s uživateli
Žijeme s uživateliPetr Stedry
 

Semelhante a Urychlovače vývojářova profesního růstu (19)

Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019
Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019
Funkční projektové řízení pro e-shop | Reshoper 29. 1. 2019
 
Jak najmout UXáka
Jak najmout UXákaJak najmout UXáka
Jak najmout UXáka
 
Mýty copywritingu
Mýty copywritinguMýty copywritingu
Mýty copywritingu
 
Jak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informaceJak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informace
 
Obhajoba diplomové práce
Obhajoba diplomové práceObhajoba diplomové práce
Obhajoba diplomové práce
 
CHI: planovani kariery, sebeprezentace
CHI: planovani kariery, sebeprezentaceCHI: planovani kariery, sebeprezentace
CHI: planovani kariery, sebeprezentace
 
Trable programatora
Trable programatoraTrable programatora
Trable programatora
 
Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]
Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]
Jan Kvasnička - projektové řízení prakticky [Marketingová Plzeň 26. 2. 2020]
 
Kisked - prezentujte ten projekt!
Kisked - prezentujte ten projekt!Kisked - prezentujte ten projekt!
Kisked - prezentujte ten projekt!
 
DDD kurz - 1. přehled
DDD kurz - 1. přehledDDD kurz - 1. přehled
DDD kurz - 1. přehled
 
Komplexitu analyzou neubijete_skpr_20171122
Komplexitu analyzou neubijete_skpr_20171122Komplexitu analyzou neubijete_skpr_20171122
Komplexitu analyzou neubijete_skpr_20171122
 
Úvod do analýzy - 2 část
Úvod do analýzy -  2 částÚvod do analýzy -  2 část
Úvod do analýzy - 2 část
 
Moderování testů použitelnosti - Jakub Franc
Moderování testů použitelnosti - Jakub FrancModerování testů použitelnosti - Jakub Franc
Moderování testů použitelnosti - Jakub Franc
 
Simplexity | prezentace komplexních témat
Simplexity | prezentace komplexních tématSimplexity | prezentace komplexních témat
Simplexity | prezentace komplexních témat
 
DK2: Komunikace a spolupráce
DK2: Komunikace a spolupráceDK2: Komunikace a spolupráce
DK2: Komunikace a spolupráce
 
Jak nastartovat vývojový projekt
Jak nastartovat vývojový projektJak nastartovat vývojový projekt
Jak nastartovat vývojový projekt
 
On-line nástroje pro plánování, projektový management a time management + sof...
On-line nástroje pro plánování, projektový management a time management + sof...On-line nástroje pro plánování, projektový management a time management + sof...
On-line nástroje pro plánování, projektový management a time management + sof...
 
Šablona prezentace pro obhajobu diplomové práce
Šablona prezentace pro obhajobu diplomové práceŠablona prezentace pro obhajobu diplomové práce
Šablona prezentace pro obhajobu diplomové práce
 
Žijeme s uživateli
Žijeme s uživateliŽijeme s uživateli
Žijeme s uživateli
 

Urychlovače vývojářova profesního růstu

  • 1. Urychlovače vývojářova profesního růstu Robert Dresler www.robertdresler.cz @rdresler
  • 2. Jak hodnotíme dobrého vývojáře?  Příjemný, kamarádský a charakterní člověk  Píše přehledný a čitelný kód  Vyřeší rychle kaţdý problém  Má programovací jazyk / technologii v malíčku, vţdy umí poradit  Jeho aplikace vykazuje minimum chyb  Týmový hráč  Je vysoce produktivní  Jeho odchod můţe firmu významně ohrozit
  • 3. Produktivita vývojářů Vynikající vývojář Průměrný vývojář Špatný vývojář Produktivita 0 >
  • 4. Povahové vlastnosti podle McConnella Zvědavost Kreativita Skromnost Syrová inteligence * Zkušenosti Duševní upřímnost Kuráţ Neústupnost Lenost Disciplína
  • 6. Buďme skromní  „Nejlepšími programátory jsou lidé, kteří si uvědomili, jak malé jsou jejich mozky. Jsou skromní.“  „Špatným programátorům brání jejich ega v tom, aby se stali dobrými.“  „Čím skromnější jste, tím rychleji se budete zlepšovat.“ Edsger Dijkstra, Skromný programátor
  • 7. Mějme sloţitost pod kontrolou > Sloţitost aplikace Mentální kapacita
  • 8. Sloţitý = špatný  Sloţitý = špatný, náchylný k chybám, s nízkou vnitřní kvalitou
  • 9. Techniky zvládání sloţitosti  Odstupňovaný návrh  Abstrakce  Zapouzdření implementace  Dědičnost  Udrţování volných vazeb  Návrhové vzory  Testy řízený návrh (TDD)  Čistý kód (Clean Code)  …
  • 10. Odstupňovaný návrh Zdroj: Code Complete, McConnell
  • 11. Abstrakce  Je schopnost věnovat se určité koncepci při současném ignorování části detailů  Na úrovni rozhraní k metodám, třídám, balíčkům
  • 12. Zapouzdření implementace  Začíná tam, kde abstrakce ukrývá detaily  Jeden ze základních principů OOP  Známe CO, ale nevíme JAK  Minimalizuje dosaţitelnost tříd a jejich členů  Programování proti rozhraní
  • 13. Dědění  Abstrakci určuje bázová třída  Příliš hluboká hierarchie sloţitost zvyšuje
  • 14. Udrţování volných vazeb  Vazby = sloţitost => minimalizovat  Malý počet přímých, viditelných a flexibilních vztahů = volná vazba  Snadné propojení a odpojení  Pozor na sémantické vazby
  • 15. Návrhové vzory  Hotová konvenční zobecnění (abstrakce)  Heuristická hodnota v naznačení návrhových alternativ  Zefektivnění komunikace o návrhu
  • 16. Čistý kód  Principy čistého kódu (clean code)  Krátké metody, významové názvy, málo argumentů, …  Kódovací styly a standardy  Konvence pojmenování  Minimalizace doby na pochopení významu  Rychlejší ladění
  • 17. Připusťme si omylnost  Potlačení ega, spolupráce s kolegy  Revize, inspekce, testy  Extrémní programování  Zpětná vazba
  • 19. Buďme zvědaví  Časté změny technických informací, specifikací, technologií  Vysoce konkurenční trh  Jsou Indové a Číňané zvědavější?  Nezájem = programátorský „domov důchodců“
  • 20. Brusme pilu  Praktikování x přemýšlení o řemesle  Diskuze, sebepoznávání, studium  Názory jiných lidí  Jedna nová zkušenost z kaţdé aktivity  Zdokonalování ovládání nástrojů  Sledujme zajímavé informační zdroje, Twitter *  Cizí kód, úspěšné projekty  Přílišné broušení = prokrastinace
  • 21. Experimentujme  Efektivní studijní metoda programování  Krátké testovací programy, izolované problémy, rysy programovacího jazyka / technologie  Prototypy jsou levnější  Zpětná vazba  Poučení z chyb
  • 22. Praktikujme  Code-kata  Code Retreat  Párové programování  Hackathon
  • 23. Sdruţujme se s ostatními odborníky  Znalosti a schopnosti jedinců se v týmu velmi rychle zlepšují  Sdílení znalostí  Vývojářská setkání, konference, networking, firemní workshopy
  • 25. Přiznejme chybu  „Jakýkoli hlupák může obhajovat své chyby – a většina z nich to také dělá.“ – Dale Carnegie  Nepřiznání chyby = ztráta kreditu  Přiznejme se rychle, rozhodně a poučme se  Obvykle se jedná o naši chybu
  • 26. Nebuďme falešní experti  Nepředstírejme, ţe rozumíme určité oblasti, pokud to není pravda  Přiznejme si skutečný stav znalostí  Pozor na narcismus  Naslouchejme druhým a učme se od nich
  • 27. Informujme pravdivě o aktuálním stavu  Přiznejme skutečný stav a postup projektu  Manaţer je na informacích od programátorů závislý  Paretovo pravidlo 80/20
  • 28. Rozumíme svému kódu?  V kódu, kterému autor nerozumí, se často skrývají bugy  Pouţijme refaktorizační a zjednodušující techniky
  • 30. Buďme „leniví“  Vytvářejme nástroje a pomůcky, které za nás vykonají nepříjemnou práci - „Dlouhodobá lenost“  Klávesové zkratky, makra  Code snippety, šablony, generování kódu  Automatizace spouštění buildů, testů, generování reportů
  • 32. Zlepšujme komunikační dovednosti  Programátoři jsou obvykle introverti  Vyjádřit názor, mlčet, naslouchat  Stručnost a jednoznačnost  Progres: Obhájení názoru před kolegou, v týmu, ve fóru, na blogu, na veřejné přednášce
  • 34. Zlepšujme angličtinu  Lingua franca vývojářů software  Číst, psát, mluvit  Větší profesní moţnosti, mezinárodní týmy  Globální trh  „Anglicky raději špatně neţ vůbec“ od @adent  Programovací jazyky se lokalizovat nebudou :)  Pozor na anglicko-českou polévku v kódu
  • 35. Nepřeceňujme zkušenosti  Zkušenosti nejsou vţdy zásadní  Dřívější návyky se mohou stát handicapem  10 let zkušeností nebo 10 x 1 rok zkušeností?
  • 36. Braňme se vyrušování  Kratší soustředěný blok práce je efektivnější neţ dlouhý přerušovaný  Vyhýbejme se paralelismu činností  Pomůcky: RescueTime, Pomodoro, sluchátka, růţová desetiminutovka
  • 37. Osobní management  Time management  Stanovování priorit podle důleţitosti  Návyky efektivního chování (Covey)
  • 38. Pečujte o své zdraví  Sezení = likvidace těla, zátěţ zad, srdce, …  Sport, pravidelný pohyb, sex  Zdravé jídlo  Smích, neberme se moc váţně  Resetovačky hlavy, koníčky
  • 40. Ceník odpovědí  Typ dotazu Cena odpovědi S odpovědí typu Ano / Ne Zdarma S krátkou odpovědí 5 Kč S dlouhou odpovědí 10 Kč Na který neznám odpověď 100 Kč