El 80/20 també afecta la programació

Tots hem sentit sobre la regla de l'80/20, aquella que diu que el 80% del nostre èxit (efectes) prové tan sols de el 20% de les nostres accions (causes). Doncs bé, aquesta universal veritat també afecta el desenvolupament de programari, i en aquest article anem a desgranar una mica dels fonaments d'aquesta afirmació.

BPM

Business Process Management, per la seva sigles en anglès, és una disciplina de gestió (entre altres coses) que permet comprendre de manera visual els processos que s'han de fer en un negoci (o en molts altres llocs). Entre les seves qualitats principals hi ha el fet de poder analitzar processos complexos i fer-los «simples».

Hi ha moltes eines Open Source que permeten desenvolupar diagrames BPM, la qual jo he fet servir per a aquest article és BonitaSoft. Si desitgen aprendre una mica més sobre la gestió de processos hi ha molts tutorials a internet i llibres referents al tema. Ara tornem a el tema central.

Projectes de programari

Avui dia hi ha moltes metodologies per desenvolupar projectes, hi ha les àgils, les tradicionals, les mixtes, etc, etc. Un punt que totes tenen en comú és la preparació. Què vull dir amb això? Que el 80% del teu èxit en aquest projecte de programari es basarà en el primer 20% de tot el procés, la preparació. 

La preparació d'un projecte

Això és una cosa lògica que en la realitat s'aplica molt poc (com moltes altres coses lògiques que són il·lògiques en la pràctica). Quan parlem de preparació hem d'entendre la capacitat de comprendre el problema, entendre la solució i sobretot, el procés que la solució s'aplica. Una de les coses que menys es troben en projectes de programari poc professionals és la manca de documentació sobre aquest tema. Això normalment apareix en empreses privades ja que el desig de vendre supera el procés de creació.

Com molts dels que llegeixen aquests articles treballen o estan relacionats amb la tecnologia, no cal dir que si en algun moment de les seves vides laborals es troben amb una empresa/proveïdor que no compleix amb una bona preparació, és gairebé 80% segur  que el projecte no sortirà bé.

L'abstracció és la clau

Això és una cosa que he après del meu temps fent servir GNU / Linux, i que demostra una vegada i una altra ser clau en el procés de creació de programari. La capacitat de abstreure problemes per convertir-los en coses més «simples» és vital per poder generar codi elegant, i sobretot durador. I potser aquesta és una de les principals diferències dels grans projectes professionals i els projectes que creixen sense cap control. Els primers pensen, comprenen i estructuren el procés mentre que els segons ho mantenen funcionant sense necessitat d'entendre-.

Escenificador

Aquest és el nom de el projecte que desenvolupa l'instal·lador de Gentoo, com poden imaginar, aquest és un procés força complex, ja que suporta una gran quantitat d'arquitectures. Un altre factor a tenir en compte és la quantitat de configuracions que suporta, a nivell de nucli, init system, etc. I els explico tot això perquè a més és el meu projecte de tesi, el qual he de acabar abans d'acabar d'estudiar. Evidentment no puc fer un programa que contempli absolutament totes les opcions possibles en tan poc temps (fins a juliol de l'any vinent), però al menys puc generar un que permeti instal·lar de manera molt bàsica un sistema funcional.

Entenent el procés d'instal·lació

Gràcies a les eines de BPM, es pot generar un diagrama de procés que ens permet entendre els passos necessaris per a la instal·lació reeixida de Gentoo en un equip.

procés d'instal·lació de Gentoo

Disseny propi. Christopher Díaz Riveros

Tot i contenir diversos processos i subprocessos, evidentment s'ha resumit bastant i es pot apreciar que comptem amb 18 passos lineals. Això és important perquè una aplicació que compta amb una estructura lineal és senzilla d'implementar, i a el mateix temps es pot generar paral·lelisme en algun o diversos dels subprocessos en cas de ser necessari.

Un altre factor important és que ens permet abstreure conjunts de processos per tipus, per exemple, definir un subprocés nucli ens permet saber que hi ha tasques específiques dins el mateix que estan directament relacionades amb el procés d'instal·lació d'un nucli de manera reeixida.

Sub-procés "nucli"

Disseny propi. Christopher Díaz Riveros

D'aquesta manera, cada pas «complex» es converteix en un «simple» de manera global, sense perdre els detalls necessaris. Això facilita la visibilitat del conjunt sense disminuir el nivell d'especificació necessari per complir el procés amb èxit. I tampoc podem negar que és més senzill veure la imatge que llegir tot el Handbook de cop 

Estalvia temps

Un altre avantatge evident és que a el no comptar amb un llenguatge de programació directament connectat, és possible realitzar l'anàlisi de la lògica sense necessàriament perdre temps en la implementació de l'llenguatge. Això és un avantatge comparat amb la quantitat de temps que es pot invertir en implementar una funcionalitat per a al final descobrir que serà descartada perquè hi ha una solució més eficient. Com el que serien les solucions en pseudo-codi (cosa que també és ignorat per molts «desenvolupadors» però que no hauria de ser-ho).

Dirigir projectes es fa fàcil

Tenint en compte aquests conceptes, la direcció de projectes (de qualsevol índole) es fa més senzilla, perquè enfoquem els esforços on realment són necessaris, i si aquesta part és feta de manera correcta, la resta cau pel seu propi pes. Espero que els ajudi a la curiositat i els motivi a investigar sobre el BPM, l'algorítmia i qui sap, potser els anime a ajudar-me amb la meva tesi  Moltes gràcies per arribar fins aquí i ja ens estem veient aviat. Salutacions