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 està de més esmentar 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 de manera reeixida. I tampoc podem negar que és més senzill veure la imatge de 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 tipus) 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ísmia i qui sap, potser els animi a ajudar-me amb la meva tesi 😛 Moltes gràcies per arribar fins aquí i ja ens estem veient aviat. Salutacions


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Alexander majorga Muñoz va dir

    Hola. Gràcies per compartir els teus conocinientos. Em sembla que és un tema apacionante però que exigeix ​​molta feina d'investigació i posada en pràctica dels conceptes per poder arribar a interioritzar-los. Al principi el tema és confús perquè un tendeix a associar més pel costat de la identificació dels requisits per a un sistema i no necessàriament amb els processos de negoci de l'empresa, és a dir, com funciona l'empresa. A la fin, crec que tracta mes de el paper que tenen els desenvolupadors de programari en la modelació de l'negoci de l'empresa, per tal de fer més eficient i eficaç l'operació de el negoci de la mateixa.

    1.    ChrisADR va dir

      Hola Alexander, moltes gràcies per compartir. En realitat si és un tema una mica complex per tractar de resumir-ho tot en tan poc espai, però si puc aportar una mica per sortir de confusions amb el teu comentari 🙂 és cert que els sistemes han de tractar de resoldre requeriments, això és el nivell més bàsic possible de funcionalitat, i en aquest punt és veritat que un desenvolupador s'hauria de centrar en un nivell més elevat.
      El coneixement dels processos permet als desenvolupadors presentar sistemes més que suficients, entenent suficient com una cosa que compleix a l'mínim els requeriments possibles.
      L'elegància de el codi resideix en poder comprendre el procés complet, i generar-d'una manera més profunda, on s'aplica la millor solució possible, i això només és possible a l'comprendre realment el procés més que el requeriment, com tu bé esmentes 🙂
      Si el modelem una mica al voltant de l'FOSS, implica no només conèixer el requeriment de programari, sinó la filosofia que va darrere d'aquest, i saber com serà mantingut, per qui, i tot aquest coneixement de l'procés que no només genera una solució eficient , sinó que serà possible mantenir al llarg de el temps 🙂
      Moltes gràcies de nou i salutacions.