Nehmatatelné je těžké

Kdy je hotové něco, na co si nejde sáhnout? Kdy je dokončené něco, co se stále mění?

Řeč je o vývoji softwaru. A je to téma, které se mi převaluje v mysli už několik měsíců. A vlastně nevím, jak ho uchopit, proto mi také tak dlouho trvalo sednout a začít o něm psát. A ani teď ještě tak úplně nevím, jestli nakonec článek publikuji. Možná si potřebuji jen ujasnit myšlenky a to mi bude stačit.

Co je na softwaru tak těžké?

Nejde o to, že “není vidět” a “nejde si na něj sáhnout”, on totiž vidět je a i “sáhnout” se na něj dá velmi dobře, jen ne rukama, jak jsme zvyklí. V něčem je to ta nejinteraktivnější věc vůbec. To, že při debuggování můžu změnit hodnotu nějaké proměnné za běhu a ovlivnit tak běh programu, je jako čirá magie. V tu chvíli si svou myslí ohmatávám software zevnitř a jsem v něm ponořený. Vyžaduje to dlouhé soustředění, cit pro detail, technickou intuici a zároveň něco jako vkus. Zdrojový kód programu jsou sice “jen příkazy pro počítač”, ale na druhou stranu, ten, kdo ho čte, není počítač, ale druhý člověk. Někdy ten druhý člověk jsem já sám za půl roku, kdy už nevím, že jsem ty řádky psal. Programování je přetavení myšlenky nebo
chcete-li záměru do formy, která je srozumitelná pro stroj a zároveň je úsporná, přehledná a elegantní. Což se ne vždy daří, stroj to nakonec vždycky nějak pochopí, s přehledností a elegancí je to horší. Ale v úsporně a přehledně vyjádřené myšlence je určitá krása. Hůře uchopitelná než vizuální krása obrazu nebo sluchový zážitek z hudby, ale je tam.

Takže, co je na tom tak těžké? To, že software není nikdy hotový. Možná to neplatí pro malé hobby projekty nebo redesign jednoduché webové stránky, ale když pracujete na rozsáhlejším projektu, kde je celý ekosystém navzájem komunikujících programů vyvíjených více lidmi, tak jste v prostředí, které není nikdy hotové, nikdy není vše naprosto opravené, za každou opravenou chybou se skrývá další, s každou novou přidanou částí se zvyšuje vzájemná provázanost a nečekané nepřímé interakce vzdálených částí systému, které je těžké odladit. Čím více pohyblivých částí systém má, tím více se podobá mnohohlavé sani z pohádky, kdy jedna hlava neví, co dělá druhá a kouše ji do krku.

Pokud je to navíc systém, který jste převzali po někom, kdo nebyl moc zkušený, tak budete průběžně nacházet různé hnijící kostlivce a chvílemi si zoufat. Kostlivce odstraníte, nelogické chování opravíte a systém se někde na druhé straně nečekaně vysype, protože jiná stará část evidentně očekávala data v tom zpraseném, chybovém formátu.

Ale práce na dálku je přeci práce snů, ne?

Nepochopte mě špatně, práce na dálku je super. A jen tak bych ji neměnil. Ale má to svoje stinné stránky. Jak se soustředit na práci v prostředí, ve kterém jsem zvyklý dělat i kupu jiných věcí? Jak poznáte, že pracujete dost? Jak poznáte, že pracujete málo? Jak to poznají ostatní kolegové? Jak poznáte vy, že oni pracují dost? Ono to samozřejmě všechno jde, ale tím, že se navzájem nevidíte, tak je to takové schované. Je to obtížnější.

Když pracujete na dálku z domova, je obtížnější si udržet hranice, kdy práce končí a kdy začíná. Počítač běží skoro pořád, jde na něm dělat cokoliv. Takže omezit tu širokou paletu možností, co s počítačem dělat v pracovní době, kdy na vás nikdo nedohlíží, vyžaduje vnitřní disciplínu. Není tu nikdo vedle mě, kdo by mohl vidět, jestli si čtu zprávy nebo prokrastinuji. Osobně mám spíše opačný problém: pocit, že to není dost. Že přeci ještě nemůžu skončit, když to není hotové. Ještě jsem nepřišel na to, proč ta hloupá věc nefunguje. Mysl zakousnutá do problému se odmítá pustit a kolečka se točí a točí. Práci z domu si nosíte domů. Nikdy nekončí. To, že můžete pracovat kdykoliv, zároveň znamená, že budete.

Časem jsem se naučil s tím pracovat, nejtěžší byl první rok, kdy jsem zároveň měnil práci, způsob práce, byt a rozcházel se.

Kapacita mysli

Vývoj softwaru v něčem připomíná budování vzdušných zámků. Stavíte si mentální modely, kreslíte si na papír grafy závislostí, přidáváte další a další proměnné a závislosti. Je to komplexní, do hlavy se to už nevejde a přetéká to do papírů všude kolem. A pak do toho přijdou děti a něco chtějí. BUM! A můžete začít stavět znovu…

Naštěstí už mám děti docela velké a i ony se naučily s mojí prací žít. Vědí, že dokud neřeknu “přišel jsem domů”, tak tu pro ně ještě nejsem, i když mě vidí. Většinou to funguje, někdy ne. Tím spíše, že “chodím domů” v různou dobu. Když jde vše hladce, tak skončím brzy a můžu se jim rovnou věnovat. Jindy mám mysl přeplněnou problémem, který se snažím rozlousknout, a v tu chvíli se mi tam nevejdou. Pak bývám podrážděný a nejsem plně přítomný, cítím, jak značná část mysli stále zpracovává nějaký technický oříšek.

Závěrem

Nestěžuji si, jen to tak je. Patří to k tomu. Během času jsem se naučil s tím dost dobře pracovat. Článek jsem sepsal v době, kdy jsem řešil frustraci z toho, že software není nikdy hotový, a že na konci dne nemám nic fyzicky hmatatelného. Svým způsobem někdy trochu závidím třeba truhlářům, stůl je prostě stůl, a je vždy jasně poznat, kdy je nebo není hotový. Ke stolu nejde přidávat nové a nové funkce a zásuvky, a jeho specifikace se nemění pod rukama. Dá se někomu ukázat, někdo si ho může odnést, dívat se na něj a těšit se z něj.

Před pár dny jsem se vrátil z malířské výpravy na Rujánu a znovu to ve mě žahehlo touhu malovat. Chvílemi to byl velmi meditativní stav, hodně jsem si odpočinul, a získal určitý kontrast vůči programování. O tom ale zase příště …

Video

Před několika měsíci jsem viděl video na stejné téma z konference WeAreDevelopers, která se mnou silně rezonovala. Doporučuji.

Dejte vědět svým přátelům, jaké pěkné obrázky jste našliShare on Facebook
Facebook
Share on Tumblr
Tumblr
Tweet about this on Twitter
Twitter
Share on Google+
Google+
Pin on Pinterest
Pinterest
Share on LinkedIn
Linkedin
Buffer this page
Buffer

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *


CAPTCHA Image
Reload Image