10. December 2009

Príručka vývojárskeho evangelistu

Na WebExpe 2009 som si nenechal ujsť prednášku Christiana Heilmanna – Cleverly lazy (Jak z vás lenost může udělat lepšího vývojáře). Bola skutočne vydarená.

Christian zastáva rolu vývojárskeho evangelistu (developer evangelist) vo firme Yahoo.  Developer evangelist je dôležitá rola, ktorá umožňuje premostiť bariéry medzi technickou časťou firmy a netechnickými ľuďmi. Veľmi častým problémom je, že tieto dve strany nevedia medzi sebou komunikovať. Prípadne im kompletne uniká pointa toho, čo sa druhá strana snaží povedať. To je samozrejme veľmi drahé, neefektívne a unavujúce.

Developer evangelist je vlastne niečo ako prekladateľ. Prekladá správy z jazyka domorodcov technického kmeňa, do jazyka zákazníka a naopak. Nie je to jednoduchá úloha. Vzhľadom na rastúce množstvo zmien a technologických pokrokov, je táto rola kľúčová.

Prečo spomínam Christiana? Na webe developer evangelism je možné nájsť jeho publikáciu The Developer Evangelism Hanbook, ktorá sa zameriava práve na oblasť softvérovej evangelizácie. Jej obsah je zdarma on-line k dispozícii. Veľmi dobre sa číta. Odporúčam.

1. December 2009

Bizi days

Pšššt. Počkaj. Chvíľku postoj a sleduj. Nie, neboj sa. Tvoja práca ťa počká. Proste stoj a sleduj.

Vidíš to? Počuješ to? Cítiš to?

Počkaj ešte chvíľku. Neutekaj za prácou, počká ťa. Aj tak jej je viac ako dosť. Sleduj. Skúsime spomaliť film.

Ľudia sa ponáhľajú z jednej kancelárie do druhej. Daj pozor, aby do teba navrazili. Spomaľujeme. Obraz sa zafarbil tmavofialovo. Zvuky sa zmenili na hlboké.

Všimni si, všetci sa niekam ponáhľajú. Spraviť svoju prácu. Tak, ako aj ty. Počkaj ešte, neutekaj. Vydýchni a ukľudni sa.

Nemáš pocit, že to všetko stráca význam? Respektíve, že to nemá vôbec žiadny význam? Krysí závod, hnaný vysokou rýchlosťou? Škrečok behajúci v koliesku? Nemáš čas ani na vychutnanie kávy?

Kto za to môže?

Šéf! Spoločnosť! Kolegovia! Zákazníci! Spadnutá americká burza! Predajcovia párkov v rožku!

Sleduj tmavofialový obraz spomaleného sveta a skús odpovedať znova na položenú otázku.

Skutočne môže šéf za to, že nemáš čas? Že nestihneš  nič, čo ťa baví? Alebo je to spôsobené tvojím ochablým ego, ktoré šéfovi nedokáže povedať, že toto proste už robiť nebudeš, a namiesto toho ho ohováraš kade chodíš?

No, ale predsa spoločnosť a štát a dane musím platiť a musím tu pracovať za kolegov, lebo…!

Skutočne musíš? Skutočne to všetko robíš, len preto, že musíš? Nie je to smutné? Nie si náhodou v pasci, ktorému sa hovorí stereotyp?

Je kríza! Musíme znižovať ceny a pracovať viac! Nemám čas na tieto nezmysly!

Vhuiii. Pop.

Svet sa vrátil do pôvodných obrátok. Už si za rohom. Tvoja krátkodobá pamäť stihla zabudnúť na všetko, čo bolo práve povedané. Rýchlo, čaká ťa ďalšia práca.

Nechám ti však jednu myšlienku: Nedovoľ ostatným, aby plytvali tvojím časom. Nedovoľ sebe plytvať časom iných. Neplytvaj ani svojím časom.

2. June 2009

Ako myslí vývojár?

Synchrónne.

A to je zle?

Áno, veľmi zle.

To nie je možné!

Áno je to možné a naviac spôsobuje problémy sebe aj spolupracovníkom.

:-) Tak ako to teda je?

Zoberme si nasledujúcu modelovú situáciu, na ktorej sa mladý a nádejný developer učí v škole myslieť. Algoritmus je mu podaný, akože je to niečo ako repcet:

  • múku nasypeme na pracovnú dosku, pridáme cukor a citrónovú kôru
  • do stredu rozbijeme vajce a po bokoch navrstvíme nakrájané maslo
  • pomocou noža zmes premiešavame a sekáme, kým nevznikne hrudkovitá zmes
  • potom veľmi rýchlo rukami zmes spracujeme …
  • rúre vyhriatej na 180°C pečieme asi 10 minút
  • upečené vajíčka zložíme z plechov a necháme dobre vychladnúť…

Už vidíte, v čom je problém? Tak ešte raz. Tvrdím, že veľkým problémom vývojárov je ich sklon k synchrónnemu mysleniu. Ešte stále to nie je jasné? Tak pokúsme sa recept naprogramovať.

from com.samoobsluha import flour, sugar, lemonPeel
from my.refrigerator import egg, butter

def pecenieJeHrou():
   desk.add(flour.pour())
   desk.add(sugar.pour())
   desk.add(lemonPeel.getPiece())
   desk.add(egg.smash())
   desk.add(egg.smash())
   ...
   sleep(60*10)
   eggCollection = owen.getBackedEggs()
   while(eggCollection.isHot()):
       sleep(10)
   ...

Veď ale ten program funguje, tak kde je problém? Tak si to skúste na vlastnej koži. Dajte koláč do trúby a zaspite pri nej na 10 minút. Potom keď koláč vytiahnite, tak ho pravidelne čo 10 sekúnd testujte, či už je chladný. A pozor nesmiete robiť nič iné, pretože myslíte synchrónne.

Každá gazdniká by vás s takouto implementáciou pečenia presmerovala cez okno smerom na hnoj k sliepkam. Pretože keď už sa pečie, tak si predsa nastaví minutky a popri tom ide robiť niečo ďalšie. Napríklad umyje riady, ktoré sa pri pečení použili. A keď zazvoní minutka, tak skontroluje stav koláča, vytiahne ho z trúby a vráti sa späť k upratovaniu.

Áno, pozorný čitateľ, správne identifikoval v texte o gazdninke rafinovane ukrytý inotaj vo forme minutky a zvukového signalu. Jedná sa o Event Listener.

A čo z toho pre nás plynie: Každý deň napíšeme o jednu sychnrónnu funkciu menej a o jednu asynchrónnu viac.

  • Babel fish

      Translate from:

      Translate to:

  • Where’s the fish?

  • Starfish

  • Fish for you

  • Further info

  • Badges

  • Video channel

  • Learning

    Grow your brain.
  • Tags

  • Topics

  •  

    February 2012
    M T W T F S S
    « Jan    
     12345
    6789101112
    13141516171819
    20212223242526
    272829  
  • Comments