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

Post on 05-Jul-2015

379 views 2 download

description

Přednáška z DevFest 2012

transcript

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č