Přejít k navigační liště

Zdroják » Různé » Deset přikázání neegoistického programování (Jak býti seniorním inženýrem 2)

Deset přikázání neegoistického programování (Jak býti seniorním inženýrem 2)

Články Různé

Překlad populárního článku se dostal do druhé části. Najdete v ní desatero přikázání a také srovnání nováčků s experty.

Nálepky:

Kolem akademických titulů a názvů pracovních pozic se toho zbytečně moc nadělá. Kdekdo se nazývá senior vývojářem, ale co to skutečně znamená býti seniorním inženýrem? S laskavým svolením Johna Allspawa jsem přeložil jeho článek On Being A Senior Engineer.

Před týdnem jste si mohli přečíst první část, nyní vám nabídnene závěr celého článku.

Deset přikázání neegoistického programování

Původně jsem zaznamenal zmínku, že toto desatero pochází z knihy The Psychology of Computer Programming (z roku 1971), ale v jejím textu jsem ho nenašel. Přesto tady uvádím Deset přikázání neegoistického programování, které jsem našel na blogu @wyattdanger v příspěvku o přijímání rad od jeho otce.

  1. Smiř se s tím, že děláš chyby. Důležité je najít je včas, předtím než se dostanou do produkce. Naštěstí jsou chyby v našem průmyslu zřídkakdy fatální (kromě těch několika v JPL vyvíjejících naváděcí systém raket). Můžeme, a měli bychom, se poučit, zasmát a jít dál.
  2. Nejste váš kód. Pamatujte, že hlavní smysl review je najít problémy, a problémy se objeví. Neberte si to osobně, když se nějaký najde.
  3. Nezáleží kolik „karate“ umíš, někdo další bude vždycky vědět víc. Když se zeptáš, tak tě ten někdo může naučit nové chvaty. Hledej a přijímej připomínky jiných, obzvláště pokud si myslíš, že to není potřeba.
  4. Nepřepisuj kód bez konzultace. Existuje tenká hranice mezi „opravou“ a „přepsáním“. Měj na paměti tenhle rozdíl a věnuj se stylistickým změnám v rámci code review, nebuď rebel.
  5. Respektuj lidi, kteří toho vědí méně než ty, a měj s nimi trpělivost. Netechničtí lidé, kteří každý den jednají s vývojáři, se skoro celosvětově shodnou na tom, že jsme přinejlepším primadony a přinejhorším uřvaná děcka.
  6. Jediná konstanta na světě je změna. Buďte otevření a přijímejte ji s úsměvem. Raději se dívejte na každou změnu vašeho požadavku, platformy nebo nástroje jako na novou výzvu než na vážnou nesnáz, proti které je potřeba bojovat.
  7. Jediná opravdová autorita plyne ze znalostí, nikoliv z pracovní pozice. Znalosti plodí autoritu, autorita plodí respekt. Takže jestli chcete respekt v neegoistickém prostředí, rozvíjejte znalosti.
  8. Bojujte za to, čemu věříte, ale kultivovaně přijímejte porážku. Rozumějte tomu, že vaše nápady budou někdy přehlasované. I když budete mít pravdu, tak se nemstěte ani neprohlašujte: „Já to říkal.“ Nikdy ze svého tragicky zesnulého nápadu nedělejte mučedníka nebo kvůli němu nevolejte do zbraně.
  9. Nebuďte „sklepní programátor“ Nebuďte osoba v temné kanceláři, která se objeví, jen když si jde do kuchyňky pro vodu. Programátor ve sklepě sešel z očí, sešel z mysli a sešel z kontroly. Tato osoba nemá hlas v otevřeném, spolupracujícím prostředí. Zapojte se do konverzace a buďte účastníkem ve vaší kancelářské komunitě.
  10. Kritizujte kód místo lidí – buďte na ostatní programátory milí. Snažte se o pozitivní komentáře a směřujte je ke zlepšení kódu nejvíc, jak jen to je možné. Vztahujte komentáře k vašim standardům, specifikaci, zvýšení výkonu atd.

Nováčci versus experti

Moc nechápu výzkum na téma získávání znalostí, ale je těžké ho ignorovat. Jedna zajímavá analýza pochází od pánů Dreyfus a Dreyfus v jejich přednášce Pětistupňový model mentálních aktivit nutných pro osvojení dovedností, ve které podrobně osvětlují typické rysy různých úrovní odbornosti.

Nováček
  • Rigidní dodržování pravidel a plánů
  • Slabé vnímání situace
  • Žádný (nebo omezený) vlastní úsudek
Pokročilý začátečník
  • Instrukce založené na samostatných a sobě rovných hlediscích
  • Omezené vnímání situace
Kompetentní
  • Vědomé a promyšlené plánování
  • Standardizované a rutinní postupy
Velmi schopný
  • Vidí situaci spíš jako celek než z jediného hlediska
  • Vnímá odchylky od obvyklého vzoru
  • Ve vedení užívá životních pravidel, jejichž smysl vyplývá ze souvislostí
Expert
  • Už nespoléhá na pravidla, instrukce nebo desatera
  • Intuitivní porozumění situaci
  • Analytický přístup použit pouze pro nové situace

Přednáška pokračuje prohlášením:

Nováčci pracují s výslovně uvedenými pravidly a se znalostmi jiných. Jsou rozvážní a analytičtí a tudíž pomalejší v jednání, kdy se musí rozhodnout nebo vybrat.

(což znamená, že nováčci jsou vystaveni lokální racionálnosti)

Experti pracují se zralými, holistickými, dobře vyzkoušenými znalostmi, intuitivně a bez vědomého rozhodování. To je úloha zkušeností. Nevidí problémy jako jednu věc a řešení jako druhou, ale jednají.

Nutně nezastávám názor, že jsou mezi jednotlivými úrovněmi dovednosti tak jasné hranice, protože si myslím, že je mnohem víc stupňů a stránek odbornosti než ty, které byly nastíněny výše. Ale mám za to, že je užitečné být si vědom nešťastně přespříliš zjednodušených kategorií.

Tajemství: zralí inženýři znají důležitost (někdy neracionálních) pocitů, které lidé mají

Jak lidé smýšlí o technologiích, technologických rozhodnutích a instrukcích, je stejně důležité (ne-li více) jako samotné detaily. Zralí inženýři to vědí a přizpůsobí se tomu. Opakuji, že být empatický může pomoct porozumět tomu, co a jak ostatní členové týmů cítí o technických rozhodnutích, ačkoliv pro ně není snadné to jasně vyjádřit.

Lidská důvěra v software, architekturu nebo vzory je silně ovlivněna předchozí zkušeností a může vést k pozitivní nebo negativní reakci na jejich použití. Pracovali jste na e-shopu v mod_perl, který měl nepochopitelné výpadky? Tak nemůžete být překvapení, že se zdráháte použít to v jiné firmě, ačkoliv to bude úplně jiný případ použití. Prostě si pamatujete, že z mod_perl=major vás bolela hlava, takže příště budete velmi ostražití použít to v jakýchkoliv souvislostech.

Zralí inženýři rozumí tomuto jevu, když předkládají argument k použití technologie, která má kouli na noze, ačkoliv je to iracionální. Přesvědčit skupinu, aby použila nástroj nebo vzor, se kterým nejsou za dobře, není přímočará úloha. Zásada „správný nástroj pro práci“ má (občas neměřitelně) ono „být za dobře“ jako podmínku.

Pro představu, jaké emoce pohání technická rozhodnutí a názory, si přečtěte libovolný flame war (příliš ohnivá diskuse) o čemkoliv.

„Je úžasné, čeho můžete dosáhnout, když se nestaráte o to, komu budou připsány zásluhy“

Tento citát je obvykle připisován Harry S. Trumanovi, ale vypadá to, že ho mohl poprvé a v jiné podobě vyřknout nějaký jezuita. V každém případě se jedná o další známku toho, že pracujete se zralým inženýrem. Cení si úspěchu projektu mnohem víc než možné osobní pochvaly, kterou by mohli dostat. Přisuzování zásluh může být zdrojem špatného fungování v organizaci řízené inženýrsky. Věřím, že je to proto, že je to převážně neviditelné.

Představa je to osvobozující. Až jí všichni porozumí a vnitřně se s ní ztotožní, svět pokroku a inovativního myšlení může vzkvétat. Inženýr totiž nebude mít přílišné obavy, že se staví na roveň práce a jeho kariérní úspěch.

To není konec

Mám to štěstí, že teď pracuji v Etsy s několika zralými inženýry, a cítím se celkem pokorně. Jsme vskutku mladé odvětví, a přestože si myslím, že se můžeme mnoho naučit od jiných inženýrských odvětví, tak si rovněž myslím, že máme výhodu. Web je nevyhnutelně svázán s představou globálního zveřejňování a sdílení informací. Pakliže doufáme, že se náš obor vyvine v opravdovou disciplínu, musíme pokračovat v poukazování na to, co to znamená být „seniorní“ a „zralý“ inženýr.

Komentáře

Subscribe
Upozornit na
guest
0 Komentářů
Inline Feedbacks
View all comments

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.