urychlovače vývojářova profesního růstu
DESCRIPTION
Přednáška z DevFest 2012TRANSCRIPT
Robert Dresler
www.robertdresler.cz
@rdresler
Urychlovače vývojářova
profesního růstu
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ářů
Produktivita0
Vynikající
vývojář
Průměrný
vývojář
Špatný
vývojář
>
Povahové vlastnosti podle McConnella
Zvědavost
Skromnost
Duševní upřímnost
Kreativita
DisciplínaLenost
Syrová inteligence *
Zkušenosti
Neústupnost
Kuráţ
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č