Vinnupallarnir sem við fjarlægjum
Með reynslunni lærist að aflæra. Ég þurfti að hætta í „goto“ forritun því næst komu „while“ setningar og „for“ lykkjur - það varð mikilvægt að gera hlutina skýrari. Það að geta lesið forrit ofan frá og niður er mikils virði. Á einhverju tímabili var hægt að finna main() fallið og skoða tréð undir því til að skilja hvað var að gerast.
Svo komu forrit sem byggðu á viðburðum „Events“ og við vorum að skoða skilaboðabiðraðir og reyna að sjá hvaða „Handler“ gerði hvað. Flækjustigið kom aftur.
Núna er flækjustigið í „devops“. Við höfum skipt út flækjustiginu sem fylgir því að eltast við DLL forritasöfn, fyrir YAML skrár í Kubernetes. Linker villur eru orðnar að þjónustum sem tala illa saman.
Hver kynslóð ræðst á flækjustigið, heitir því að brjóta það undir sig og það gengur svona - svona.
Hjá okkur eru þrjár tegundir af kaffihylkjum - espresso, lungo, og kaffeinlaust. Hylkin koma í vel merktum kössum og hver tegund er með sínum lit - en einhver blandar þeim öllum í skál hjá kaffivélinni og hendir kössunum. Þeir sem koma nýir inn vita ekki hvaða litur þýðir hvað. Þetta er dæmi um tilviljanaflækjustig.
Annað dæmi: Þar sem ég vinn eru allir ljósarofarnir við innganginn - þeir eru hluti af smart ljósastýringu. Enginn veit hvað takkarnir gera því þeir eru ekki merktir. Fyrst þarf að ýta á einhvern takka, svo labba fram í eldhús og sjá hvort ljósið þar er kveikt. Sá sem vildi fá smart ljósastýringu vildi örugglega ekki þetta, en hann var sennilega með í að gera upp húsnæðið áður en við fluttum inn. Miðstýring er aðlaðandi hugmynd en þetta getur verið dæmi um slæma útkomu úr henni. Notendur ljósanna voru hvergi nærri þegar þetta kerfi var hannað. Þeir hefðu sennilega viljað fá slökkvara í eldhúsið. Sá sem ákvað þetta þarf ekki að lifa með afleiðingunum og er sennilega farinn annað.
Flækjustig
Fred Brooks gerði greinarmun á flækjustigum. Alvöru flækjustig endurspeglar vandann sem á að leysa. Hvernig virkar quicksort? Hvaða reglur gilda í viðskiptum? Kerfi sem höndlar ekki alvöru flækjustig ræður ekki við verkefnið.
Slysa flækjustigið er næst. Það kemur þegar við veljum vitlaus verkfæri, til dæmis goto basic (sem hefur ekki endurkvæmni) til að skrifa quicksort (sem þarfnast hennar). Útkoman er forrit sem er algerlega ólæsilegt, eins og quicksort er nú elegant.
En svo kemur tilviljanaflækjustigið sem bara safnast upp vegna andlegrar leti. Einhver fjarlægir upplýsingar sem þeir sem á eftir fara þurfa að vita. Nýliðar verða að læra að svona séu hlutirnir bara, og oft er þetta ástæðan fyrir því að þeir vilja fara í „startup“ fyrirtæki - til að geta byrjað á hreinum grunni. Þetta flækjustig kalla sumir á ensku „Cruft“. Ég ætla að þýða þetta „hrúðurkall“ því þeir safnast undir skipskili og hægja á þar til skipið þarf að fara í slipp.
Vinnupallarnir
Besta skjölunin er ekki skrifuð, heldur er hún byggð inn í kerfið sjálft sem leyfir nýliðum að kynnast því. Skýr skráa- og breytunöfn sem segja hvað hver hlutur gerir. Villuboð sem leiðbeina hvað á að gera næst í stað þess að segja „computer says no“. Góð sjálfgefin gildi sem virka fyrir nýliða en hægt er að breyta seinna. Þetta er skjölun sem getur ekki elst illa því hún er kerfið sjálft.
Þetta eru vinnupallar sem má ekki fjarlægja. Einhver styttir breytunöfnin eða velur þau illa af því allt er honum/henni svo augljóst þar og þá. Það er eitt að fá hnút sem er bundinn í reipi og hægt er að skoða og leysa og annað að fá hnút í tannþráð sem er búið að rígherða.
Góð hönnun skilur eftir eyður - pláss fyrir nýliða að læra, pláss fyrir óvænt not, pláss fyrir það sem við sáum ekki fyrir
Kubernetes
Fyrir ekki löngu síðan keyrðu processar og dll forritasöfn og stýrikerfið var allur heimurinn sem þau hrærðust í.
Svo komu net tengdar tölvur. Uppsetning á forritum varð áskorun svo forritum var pakkað í „gáma“ („docker containers“) svo forritið, uppsetningin á því og dll söfnin fylgdust að. Gott og vel.
Google þurfti að stjórna tölvukerfum sem þjónaði hundruðum milljóna manna og þeir fundu upp Kubernetes til að halda utan um endurræsingar þegar gámar fara niður og ræsingar á fleiri gámum eftir auknu álagi. Kubernetes er gert fyrir fyrirtæki sem eru með tölvuver í mörgum löndum. Mikið alvöru flækjustig.
Til að lýsa kerfinu eru skrifaðar yaml skrár en þær reyndust of flóknar og ósveigjanlegar svo „Helm Charts“ og „Kustomize“ forsnið eru látin þýða yaml skrárnar áður en Kubernetes fær þær. Til að einfalda keyrsluna á kustomize skrifar svo einhver Python forrit til að búa til kustomize forsniðin. Stýrikerfið er komið fjórar hæðir niður undir þessi lög.
Fyrirtæki sem notar þetta verkfæri þarf að fara í ansi mikla lærdómsbrekku. Ef fyrirtækið er lítið þá er þetta eins og að leggja á borð í Versölum til að fá sér eina með öllu. En yfirmenn og nýliðar lesa á miðlum að allir noti Kubernetes og þá er freistandi að hoppa á vagninn. Sá sem skrifaði það gleymdi að segja „your mileage may vary“.
Svo fer skilningurinn. Sá sem reisti þennan turn fer að gera annað og nýliðar taka við án þess að hafa grunninn og söguna.
Stýrikerfið sem nemendur lærðu að forrita fyrir í háskóla er orðin þunn sneið í gámi í pod í cluster. Allt sem stýrikerfið kunni að gera, utanumhald um processa, tölvusamskipti, netkerfi, diskastýring er útfært á næstu hæðum fyrir ofan, og með hugtökum sem HÍ og HR kenna ekki. Það er ekki auðvelt að aflúsa forrit sem er að keyra í cluster á skýinu.
Sá sem þarf að sjá um yaml fyrir Kubernetes er svo oft ekki tölvunarfræðingur heldur einhver sem lærði á það hjálparlaust meðan hann var sysadmin og hafði verið að setja upp tölvur og prentara áður. Hann er oft með úfið hárið og viðskotaillur því flækjustigið er orðið mikið. Fyrir honum er yamlið bara enn ein bash scripta sem þarf að skrifa. Hann er ekki þjálfaður til að sjá að global breytur eru algert eitur og dæmi um „illa lyktandi kóda“ eins og við sögðum um þær þrjátíu árum áður. Það eru margir valkostir sem þurfa að vera rétt settir upp áður en kerfið hrekkur í gang.
Steve Jobs
Hr. Jobs var mjög harður á því að gefa notendum ekki óþarfa valkosti því þeir geta lamað. Hann vildi halda fókusnum og segja „nei“, ekki bara við vondum hugmyndum heldur líka við hundruðum góðra hugmynda. Mac tölvur eru frægar fyrir það sem þær hafa ekki. Það er ekki ethernet tengi á þeim. Þær losnuðu fyrstar tölva við floppy diskinn og geisladrifið. (Bíllinn minn var framleiddur 2016 og hann var með sígarettukveikjara og öskubakka. Ég hefði síður vilja borga fyrir það). Jobs skildi að krafturinn liggur í því að skilja eftir eyður, ekki fylla þær. Eins og Murphy sagði: „Anything that can go wrong will go wrong“ sem er hægt að túlka þannig: „það sem er ekki í kerfinu er laust við bögga“.
Stjórnendur
Það er erfitt að mæla uppsafnað flækjustig. Vinnustundir eru mældar í Jira og sögupúnktar brenndir niður, sem yfirmenn skoða svo á línuriti á fundum. Nýliðar eru lengur og lengur að hoppa á vagninn og stjórnendur sjá ekki hvernig kerfið er að verða erfiðara í viðhaldi, því nýliðarnir geta ekki einu sinni sagt frá því sem þeir upplifa. Þeir hafa ekki bakgrunn til að skilja í hverju þeir eru lentir.
Sá sem vill breyta línu í forriti hjá fyrirtæki sem er komið á legg, þarf að gera nýjan miða í Jira, gera git branch með tilvísun í Jira, tékka inn breytinguna, fá tvo kollega til að samþykkja hana og bíða í 40 mínútur eftir build og sjálfvirkum prófum. Lágmark 90 mínútur að breyta einni línu. Sársauki sem yfirmenn finna ekki á eigin skinni. Fjarlægðin frá ákvarðanatöku til sársaukans er of mikil.
Busavígslan
Í grein um stærðfræðikennslu las ég að það eru tvenns konar nemendur. Þeir sem læra bara utanbókar og þeir sem pirra sig á því hvers vegna hlutir eru eins og þeir eru. Þeir sem sætta sig við áreitið og þeir sem gera það ekki.
Fyrir þeim sem læra utan að er námið eins konar busavígsla, eitthvað sem allir þurfa að fara í gegnum. „Lærðu þetta, ekki spyrja. Svo verður þú meðlimur“. „Þetta var líka erfitt þegar ég lærði það“. Gagnrýni nemandinn er ekki viss hvort flækjustigið er alvöru eða hvort það er verið að gera grín að honum.
„Lærðu utan að hvaða slökkvari stýrir hvaða ljósi, hvaða litur er á kaffihylkjunum og hvernig Kubernets yaml skrárnar eiga að vera. Svo verður þú ómissandi“.
Þetta mynstur er vitaskuld ekki bara í tölvum. Íslenskir tónlistarnemendur læra tónlistarskalann sem CDEFGAH því upphaflegi moll skalinn byrjaði á A en svo varð dúr vinsælla sem byrjar í C, og svo var þýski stafurinn B svo líkur H að fólk fór að skrifa hann þannig. Ég hef meiri samúð með svona uppsöfnuðu flækjustigi frá miðöldum, viðurkenni ég, því hún bætist ekki hratt við.
Það sem ég hef mest á móti þessu mynstri, er að þeir sem leggja hlutina á minnið bera mesta ábyrgð á að viðhalda kerfum sem verða flóknari með tímanum. Þeir sjá ekki flækjustig sem óvin, svo þeir bæta við lögum í viðbót í stað þess að ráðast á það. Þeim var álagt að þetta væri eðlilegt. Það vantar í þá róttæklinginn.
Búddha
Í búddhisma er hugtakið „Shoshin“. Ekki vera viss um alla hluti. Aflærðu sumt. Vertu tilbúinn að leyfa öðrum að komast að, ekki skilja eftir þig óþarfa flækjustig og skapa tækifæri fyrir busavígslur í einhverja prestastétt þeirra sem vita. Vertu sá sem hættir að nota GOTO, ekki sá sem býr þannig lagað til. Yaml skrár og 40 mínútna bið eftir að breyta einni línu mega fara aftur. Ekki verðlauna þá sem gera hlutina ómögulega fyrir þá sem á eftir koma. Þá sem fjarlægja vinnupallana sem þeir þurftu sjálfir að nota.
Eyður
Fyrir tölvuvæðingu voru notuð eyðublöð. Þau voru með fullt af eyðum, og ekki bara í reitunum heldur líka í spássíunni. Þegar sonur minn fæddist var hann tveim staðalfrávikum yfir meðalþyngd barns í Bandaríkjunum þar sem hann fæddist. Hjúkrunarfræðingurinn skrifaði í spássíuna „Father has very large head“.
Það var í lagi að skrifa í spássíur og ef margir gerðu það var nýjum reit bætt í næstu prentun á eyðublaðinu. Hvernig getur starfsmaður í dag komið nýjum reit á skjámynd? Hver er fjarlægðin frá þeim sem fyllir út í eyðublað til þess sem hannar það? Skiljum eftir eyður sem eru pláss fyrir aðra að gera hluti sem við sáum ekki fyrir.
Náttúran
Kerfi sem eru orðin þung og flókin verða það bara ef þau eru góð. Annars hafnar markaðurinn þeim og þau eru tekin úr notkun meðan þau eru ung og frekar laus við hrúðurkalla.
Kerfi sem lifa lengi verða óbærilega flókin. Nafnið „Unix“ byrjaði sem brandari af því stýrikerfið „Multics“ sem höfundar Unix þoldu ekki var orðið svo flókið. Skipunin „ls“ var bara með 3-4 valkosti en nú grínast menn með hvaða bókstafur er eftir sem ls notar ekki. sed, awk, grep, ls og find eru þannig að enginn man hvernig þau eru notuð en þurfa að fletta þeim upp í hvert skipti.
Svar náttúrunnar við hrörnun er að drepa gamla einstaklinga og það er sennilega út af þessu uppsafnaða flækjustigi sem hún gerir það. Hún er mjög grimm og hefur úr aragrúa einstaklinga að velja en það er mjög dýr aðferð og ég legg ekki til að gömlum kerfum verið alltaf hent. Vegurinn
Hvernig getum við fengið rétt viðhorf til að laga til í kerfum þótt yfirmenn kvarti yfir að sögupunktar séu ekki að brenna nógu hratt niður?
Með því að segja „nei“ eins og Jobs heitinn. Hafna hundrað góðum hugmyndum. Ekki láta notandann fá óumbeðna valkosti. Leyfa forriturum að hafa áhrif á þróunarumhverfið. Ekki eltast við tískusveiflur og taka inn fleiri tól, heldur byggja góðan grunn og halda honum við. Gera ekki fjarlægðina frá ákvarðanatöku til sársaukans við afleiðingarnar of mikla. Skilja eftir vinnupalla og eyður til hleypa öðrum að.
Raunverulega áskorunin er ekki að sigra flækjustig heldur neita að taka þátt í að búa það til. Vertu pirraði nemandinn sem spyr óþægilegra spurninga og er róttækur. Fáðu reynslu en spurðu samt eins og barn. Mundu hvernig var að byrja og kenna nýliðum. Leyfðu þeim að spyrja „Af hverju er þetta svona?“
Á 50 árum verða einföld kerfi flókin, það breytist ekki. Verum samt þau sem reyna að einfalda, gera gagnsætt, spyrja spurninga, og kenna í stað þess að vígja busa og múra okkur inni bak við sérfræðistimpil.
Eyður
Skil á efni
Leita í vefútgáfu Tölvumála
Um Tölvumál
Tölvumál - tímarit Skýrslutæknifélags Íslands er óháð tímarit um tölvutækni og hefur verið gefið út frá árinu 1976.
Vefútgáfa Tölvumála birtir vikulega nýja grein á vef Ský og árlega er gefið út veglegt prentað tímarit undir nafninu "Tölvumál" þar sem fjallað er um tölvutækni frá ýmsum sjónarhornum og er þema blaðsins jafnan valið snemma árs og útgáfa að hausti.
Ritnefnd Ský sér um að afla efni í Tölvumál og geta allir sem áhuga hafa sent inn efni.

