Tváře softwarového inženýrství

Člověk má po tolika letech čtení Hacker news a jiných informačních kanálů pocit, že už o programování četl snad ze všech úhlů pohledu, které existují. Probírá se tam skutečně úplně všechno. Alespoň se to tak zdá.

Přesto mě setrvale překvapují setkání s aplikacemi programování, které jsem nejen neznal, ale které jsou jen špičkami ledovce reprezentujícími rozlehlé programovací světy existující zcela paralelně k těm mainstreamovým.

Slyšeli jste například o systémech SCADA? Možná. Ale víte, že už třicet let víceméně duplikují kompletní stack informačních technologií? Od uživatelského rozhraní, přes funkce operačního systému až po síťový protokol. V druhé polovině svého vývoje sice začínají s mainstreamem konvergovat, ale odlišnost priorit, rizik, cílů a řešení v tom světě je stále jako objevovat život vzniklý a rozvíjející se miliony let na jiné planetě.

Nebo přemýšleli jste někdy o tom, co se vlastně počítá na superpočítačích? Asi mlhavě víte, že nějaké vědecké náročné výpočty. Ale co je to za výpočty, které nejde optimalizovat standardními nástroji softwarového inženýrství jako indexy, paralelizací, kompresí a podobně a pustit na mnohem jednodušších komoditizovaných výpočetních zdrojích, jak je v mainstreamu běžné? Některé úlohy superpočítače skutečně vyžadují, ale už jsem viděl několik případů, jejichž běh by se dal zkrátit ze dnů na minuty aplikací některé ze zmíněných technik.

K čemu v takových případech došlo je, že vědci a jiní autoři těchto úloh se nepovažují za softwarové inženýry a ani netuší, kolik by pro ně znalost softwarového inženýrství mohla změnit. Každý, kdo takovou úlohu vypracovává, prostě šáhne po nástrojích, které jsou mu nejbližší. Místo b-stromu nebo map reduce tak vědec šáhne po superpočítači a hardwarář po širší sběrnici, FPGA nebo dokonce po vlastním silikonu. Vidět takto vzniklá řešení je jako vidět co se vyvinulo ze špíny na rukou po deseti letech v kultivačním agaru.

A to jsme stále jen u případu, kdy šíření informací nestojí v cestě nic, než samotná neznalost, že nějaké informace existují, nebo že jsou důležité. Snaha odbourávat tuto překážku je jedním ze základních kamenů akademické kultury od jejího začátku a čím dál více ji řeší i mainstreamová komerční sféra v podobě různých developer evangelistů a konferencí až po některé téměř úplatky vývojářům. Co by takhle zmlsaným vývojářům mohlo uniknout je, že to rozhodně neplatí pro všechny aplikace programování.

Například při obchodování na burzách je klíčovým atributem úspěchu to, aby nikdo nedokázal odhadnout, co a proč děláte. To se původně vztahovalo hlavně na ty obchody jako takové, ale se zvyšující se důležitostí způsobu samotné exekuce nějakého obchodu se to začíná vztahovat i na použité technologie. Jak říkal zkušenější kolega, algoritmický trading se přesunul od parazitování na neefektivitě trhů k parazitování na neefektivitě jednotlivých zúčastněných technologií a algoritmů.

Pokud prostředí, kde šíření informací nikdo nebrání, dokáže i tak vyprodukovat spoustu divokých alternativ mainstreamu, tak prostředí, kde je zatajování všeho klíčovou podmínkou úspěchu, vede k řešením, která se s intuicí mainstreamu zcela míjí. A to jak v pozitivním, tak negativním slova smyslu, jen není nikdo, kdo by posoudil, co je co.

Člověk má po tolika letech čtení Hacker news nebezpečný pocit, že už přehlédl celý široký oceán svého oboru. Sem tam tou jistotou ale probleskne poznání, že to celé byla ve skutečnosti jenom bahnitá louže na okraji oceánu skutečného.