Apríl 28, 2010

Softvérová archeológia

Na SE-Radiu som narazil na jeden veľmi dobrý diel podcastu – Software Archeology s Daveom Thomasom, hovoril o softvérovej archeológii. Tento diel je podľa mňa esenciálny a softvérová archeológia by mala byť súčasťou vývojárskych kurzov.

Dave rozdelil softvérovú archeológiu na dve skupiny. Prvá skupina sa zaoberá výhradne len čítaním a snahám porozumieť dávno zaniknutým vývojárskym civilizáciam. Vyžaduje to trpezlivosť, znalosť jazykov a technológii.  Druhá skupina zahŕňa už aktívny prístup ku kódu a jeho modifikácie.

Softvérová archeológia je celkom nešťastne zamieňaná za prístup Indiana Jonesa, teda zahrabať sa do kódu a víťazoslávne z neho vytiahnuť artefakty. Artefakty sú dôležité. Avšak tak ako v archológii, to podstatné spočíva v snahe porozumieť kontextu a pochopiť kultúru.

Dave spomínal jednu zaujímavú techniku: zobrať zdrojový kód, otvoriť ho v editore a zmenšiť písmo na 2px. Stratí sa síce čitateľnosť, ale na povrch vypláva štruktúra kódu. Dokonca je ľahko odpozorovateľné, ktorý kód bol skopírovaný. Pri tak malom písme začnú byť zjavné opakujúce sa vzory v štruktúre kódu.

Dobrá bola aj jeho poznámka k písaniu dokumentácie. Pri archeologickej výprave je dôležité si uvedomiť, že dokumentácia klame. Často sa stane, že po zmene kódu už nie je aktualizovaná. Siahodlhé litánie v docstringu funkcie sú absolútne zbytočné, pretože sa nikto neunavuje to opravovať.

A teraz jeden veľmi zlomový postreh k písaniu dokumentácie v kóde: Pokiaľ dokumentujete ČO funkcia robí, tak je to zbytočné, tieto informácie odvodíte z kódu a z parametrov. Samozrejme krátky náčrt sa hodí, ale nemá význam popisovať všetko a podrobne. Dôležité je dokumentovať PREČO funkcia robí, to čo robí. Relatívne malý rozdiel v písaní textu, kompletné mení jeho kvalitu.

Pokiaľ neviete napísať PREČO funkcia má vôbec niečo robiť, nie je náhodou zbytočná? Nemáte náhodou nejasné zadania? Viete vôbec prečo to celé píšete? Tento prístup veľmi pripomína knihu od Simona Sineka – Start with Why.

Podľa Davida sú veľmi dôležité testy. Pretože testy, na rozdiel od dokumentácie, tak výrazne neklamú.

Pokiaľ sa niekto vydáte na púť archeológa, jednoznačne musíte byť vyzbrojený grepom. Asi najdôležitejší parameter grepu je pre archeológa -v, ktorý neguje výsledok vyhľadávania.

grep -r artefakt * | grep -v Indiana

Uvedený príklad vám pomôže násť všetky riadky so slovom artefakt, pričom tam nebude slovo Indiana.

Pokiaľ aktívne modifikujete kód, tak ako správny archeológ si najskôr nachystáte svoje prostredie a dáte kód do version control (napríklad Git).

Teraz sa môžete pustiť do modifikácii a testovania. Pokiaľ softvér vyžaduje veľa závislostí, uistite sa, že máte bootstrap skript, ktorý vám umožní OPAKOVANE vytvoriť prostredie pre archeologické pokusy. Ak takýto skript neexistuje, je vašou úlohou ho zostaviť. Vývojár/archeológ, ktorý príde po vás, vám nechá vyrobiť minimálne sochu na vašu počesť.

Kód je síce digitálny, ale hnije. Pokiaľ necháte rok stáť kód bez údržby, tak vám proste zhrdzavie.  Je veľmi dôležité si tento fakt uvedomiť. Rozbehnutie zhrdzaveného a zhnitého kódu môže stáť niekoľko dní práce. Dokonca v prípade, že neexistuje bootstrap skript, tú starú herku ani nerozbehnete.

Dave odporučil začínajúcim arechológom, aby si prešli kód interpretera pre jazyku, v ktorom píšu. Napríklad Perl, Python, Ruby alebo PHP. Takáto znalosť umožní lepšie pochopiť fungovanie a štrukturovanie kódu.

Z podcastu som vypichol tie body, ktoré ma najviac zaujali. Určite odporúčam, aby ste si vypočuli tento diel o Softvérovej arecheológii. Ušetrí vám to hodiny frustrácií z nezrozumiteľného kódu.

Niekedy to v archeológii môže dopadnúť aj takto – utekajúci developer opúšťa na svojom prskolete rútiace sa dátové centrum.

August 17, 2009

Se-radio.net

Sledovať dianie na poli softvéru, nie je úplne jednoduché. Nové koncepty, myšlienky, implementácie a humbuk okolo technológie (hype) sa objavuje každý tretí deň. Nájsť kvalifikovaný názor odborníka dá chvíľku zabrať. Veľmi zaujímavou aktivitou na poli IT je Software Engineering radio. Jedná sa o podcast, ktorý vychádza v dvojtýždenných cykloch. Obsahom sú rozhovory s osobnosťami, ktoré zmenili svet IT. Je tu možné nájsť napríklad rozhovor s Jimom Meltonom, jedného z ľudí, ktorý zostavili jazyk SQL. Prípadne rozhovor s Lindou Rising o technike retrospektívy pri riadení softvérového produktu.

Tém je skutočne veľa. V archíve je momentálne už 142 dielov podcastu. Každý z dielov má cca 1 hodinu. Kvalita nahrávok je výborná, až na niektore diely, ktoré boli nahrávané cez skype. Hovorenému slovu sa dá dobre rozumieť, aj keď niektoré anglické prízvuky poslucháča trochu potrápia. Podcast se-radio.net rozhodne odporúčam.

Júl 15, 2009

Zmena bez strachu

Objavil som veľmi zaujímavý diel podcastu na stránkach Software Engineering rádia. Podcast súvisí so vzormi, o ktorých som doteraz písal a hlavne s adaptáciou na zmenu.

Tento diel podcastu je rozhovor s Lindou Rising. Okrem iného je aj autorkou knihy Fearless Change: Patterns for Introducing New Ideas. Pokiaľ ste sa pokúšali niekedy do organizácie zaviesť zmenu, je viac ako isté, že ste sa stretli s odporom ľudí. Linda v podcaste popisuje rôzne vzory správania a vysvetľuje, prečo je zmena tak veľký problém. Hovorí o postupoch, pomocou ktorých je možné lepšie riadiť adaptáciu na zmenu.

Možno si poviete, ale veď to nemá nič spoločné so softvérom. To je však omyl. Môžete vytvoriť aj ten najdokonalejší kus softvéru v celej galaxii. Pokiaľ ho však nikto nebude použivať, je zbytočný. Na to, aby sa softvér mohol používať ho musia používatelia akceptovať. V tomto mieste sa softvérarčina začína stretávať s psychológiou. Spoločnou platformou pre obe disciplíny sú práve vzory.

Určite odporúčam nájsť si čas na tento podcast.

  • Preklady

  • Odkazy

  • Twitter

    Follow @jurajmichalek on twitter.

  • Štítky

  • Rubriky

  • Komentáre