Det finns fyra kategorier av system, indelade efter hur lätt eller svårt det är att handskas med dem:

* Enkla system: Som namnet antyder är dessa lätta att förstå, använda och förändra på ett förutsägbart sätt.

* Komplicerade system: De går fortfarande att förstå på djupet och handskas med på ett förutsägbart sätt, men det finns en inlärningskurva och det krävs en viss kognitiv förmåga för att greppa dem.

* komplexa system: Dessa går inte längre att förstå, men de går att handskas med på ett utforskande och interaktivt sätt, och deras beteende kan delvis förutsägas genom en blandning av intuition, analys och erfarenhet.

* Kaotiska system: Dessa går inte att handskas med på något rationellt sätt. Man interagerar inte med komplexa system; man drabbas av dem.

Överfört på området mjukvaruutveckling är det uppenbart att man vill skapa så enkla system som möjligt, eftersom de sparar både tid, pengar och hjärnceller hos alla inblandade. Och lika givet är att man till varje pris vill undvika att bygga kaotiska system och att även komplexitet bör undvikas i möjligaste mån.

Tyvärr är min erfarenhet att de flesta system är komplexa, och att många av dem befinner sig på det sluttande planet mot rent kaos. Faktum är, tror jag, att det är denna skala mellan enkelhet och komplexitet/kaos som mer än något annat bestämmer ett systems framgång och livslängd.

Varför bygger vi då komplexa system, när vi vill ha enkla system? Jo, jag tror det finns ett linjärt omvänt förhållande mellan programmerarnas kompetensnivå och systemens grad av komplexitet:

- Geniala programmerare bygger enkla system.

- Duktiga programmerare bygger komplicerade system i sin hopplösa strävan efter enkelhet.

- Medelmåttiga programmerare, som har svårt att förstå komplicerade system och inte ens kan föreställa sig de enkla, bygger komplexa system.

- Svaga programmerare skapar mest bara oreda och bygger in kaos i systemen.

Eftersom medelmåttan är tongivande i programmerarvärlden, precis som i alla andra mänskliga verksamheter utom de allra mest reglerade och elitistiska, så blir resultatet därefter: komplext.

Min slutsats av den här analysen är att vi borde identifiera genierna bland oss och göra dem till ledare eller orakel (beroende på deras kommunikativa förmåga). Vidare borde vi skilja på duktiga och mediokra programmerare och ge dem olika uppgifter, så att de mediokra inte påverkar systemens grad av komplexitet. Och de svaga programmerarna bör uppmuntras att söka lyckan på någon annan del av arbetsmarknaden.

(Alla sätt att avreagera sig efter en komplexitetstyngd dag på jobbet är bra utom dom dåliga).

 

Kommentera

Publiceras ej