80/20 tamén afecta á programación

Todos escoitamos falar da regra 80/20, a que di que o 80% do noso éxito (efectos) provén de só o 20% das nosas accións (causas). Ben, esta verdade universal tamén afecta ao desenvolvemento de software e neste artigo imos sacar un pouco dos fundamentos desta afirmación.

BPM

Business Process Management, polas súas siglas en inglés, é unha disciplina de xestión (entre outras cousas) que permite comprender visualmente os procesos que se deben levar a cabo nunha empresa (ou noutros moitos lugares). Entre as súas principais calidades está o feito de que pode analizar procesos complexos e facelos "sinxelos".

Hai moitas ferramentas de código aberto que che permiten desenvolver diagramas BPM, a que usei para este artigo é BonitaSoft. Se queres aprender un pouco máis sobre a xestión de procesos, hai moitos titoriais en internet e libros sobre o tema. Volvamos agora ao tema central.

Proxectos de software

Hoxe en día hai moitas metodoloxías para desenvolver proxectos, hai áxiles, tradicionais, mixtos, etc., etc. Un punto que todos teñen en común é preparación. Que quero dicir con isto? O 80% do seu éxito neste proxecto de software basearase no primeiro 20% de todo o proceso, a preparación. 

Preparando un proxecto

Isto é algo lóxico que en realidade aplícase moi pouco (como moitas outras cousas lóxicas que na práctica son ilóxicas). Cando falamos de preparación debemos comprender a capacidade para comprender o problema, comprender a solución e sobre todo, o proceso que se aplica a solución. Unha das cousas que menos se atopan nos proxectos de software non profesionais é a falta de documentación sobre o tema. Isto xeralmente aparece en empresas privadas xa que o desexo de vender supera o proceso de creación.

Como moitos dos que len estes artigos funcionan ou están relacionados coa tecnoloxía, cómpre mencionar que se nalgún momento da súa vida laboral atopan unha empresa / provedor que non cumpre unha boa preparación, está case nun 80% seguro 😛 que o proxecto non funcionará.

A abstracción é a clave

Isto é algo que aprendín do meu tempo empregando GNU / Linux, e demostra unha e outra vez ser clave no proceso de creación de software. A capacidade de abstracto os problemas para convertelos en cousas máis "sinxelas" son vitais para poder xerar un código elegante e sobre todo duradeiro. E quizais esta sexa unha das principais diferenzas de grandes proxectos profesionais e proxectos que crecen fóra de control. Os primeiros pensan, entenden e estruturan o proceso mentres que os segundos manter traballar sen ter que entendelo.

Escenificador

Este é o nome do proxecto que desenvolve o instalador de Gentoo, como podes imaxinar, este é un proceso bastante complexo, xa que soporta un gran número de arquitecturas. Outro factor a ter en conta é a cantidade de configuracións que admite, a nivel do núcleo, sistema init, etc. E cóntovos todo isto porque tamén é o meu proxecto de tese, que debo rematar antes de rematar de estudar. Obviamente non podo facer un programa que contemple absolutamente todas as opcións posibles nun tempo tan curto (ata xullo do ano que vén), pero polo menos podo xerar un que permita instalar un sistema funcional dun xeito moi básico.

Comprensión do proceso de instalación

Grazas ás ferramentas de BPM, pódese xerar un diagrama de proceso que nos permita comprender os pasos necesarios para a correcta instalación de Gentoo nun ordenador.

Proceso de instalación de Gentoo

Propio. Christopher Díaz Riveros

A pesar de conter varios procesos e subprocesos, obviamente foi bastante resumido e pódese ver que temos 18 pasos lineais. Isto é importante porque unha aplicación que ten unha estrutura lineal é fácil de implementar e, ao mesmo tempo, pódese xerar paralelismo nun ou máis dos fíos se é necesario.

Outro factor importante é que nos permite abstracto conxuntos de procesos por tipo, por exemplo, definir un fío do núcleo permítenos saber que hai tarefas específicas dentro del que están directamente relacionadas co proceso de instalación con éxito dun núcleo.

Subproceso "núcleo"

Propio. Christopher Díaz Riveros

Deste xeito, cada paso "complexo" convértese nun "sinxelo" dun xeito global, sen perder os detalles necesarios. Isto facilita a visibilidade do conxunto sen baixar o nivel de especificación necesario para completar o proceso con éxito. E non podemos negar que é máis fácil ver a imaxe que ler todo o Manual á vez 🙂

Aforrar tempo

Outra vantaxe obvia é que ao non ter unha linguaxe de programación conectado directamente, é posible realizar unha análise lóxica sen perder necesariamente o tempo en implementar a linguaxe. Esta é unha vantaxe en comparación coa cantidade de tempo que se pode dedicar a implementar unha función só para descubrir que se descartará porque hai unha solución máis eficiente. Como as que serían as solucións en pseudo-código (algo que moitos "desenvolvedores" tamén ignoran pero que non debería ser).

Dirixir proxectos foi doado

Tendo en conta estes conceptos, a xestión de proxectos (de calquera tipo) faise máis sinxela, porque enfocamos os nosos esforzos onde son realmente necesarios e, se esta parte se realiza correctamente, o resto cae baixo o seu propio peso. Espero que che axude a curiosidade e te motive a investigar sobre BPM, algoritmos e quen sabe, quizais te anime a que me axudes coa miña tese 😛 Moitas grazas por chegar aquí e verémonos en breve. Graciñas

 


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

2 comentarios, deixa os teus

Deixa o teu comentario

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados con *

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.

  1.   Alexander mayorga Muñoz dixo

    Ola. Grazas por compartir os teus coñecementos. Paréceme que é un tema emocionante pero que require moito traballo de investigación e a posta en práctica dos conceptos para poder interiorizalos. Nun principio o asunto é confuso porque se tende a asocialo máis no lado de identificar os requisitos dun sistema e non necesariamente cos procesos comerciais da empresa, é dicir, como funciona a empresa. Ao final, creo que se trata máis do papel que xogan os desenvolvedores de software para modelar o negocio da empresa, co fin de facer o funcionamento do negocio máis eficiente e eficaz.

    1.    ChrisADR dixo

      Ola Alexander, moitas grazas por compartir. A dicir verdade, é un tema un tanto complexo tratar de resumir todo nun espazo tan pequeno, pero se podo contribuír un pouco a saír da confusión co teu comentario 🙂 é certo que os sistemas deben tratar de resolver os requisitos, que é a funcionalidade básica máis posible e nese momento é certo que un desenvolvedor debería concentrarse nun nivel superior.
      O coñecemento dos procesos permite aos desenvolvedores presentar sistemas máis que suficientes, entendendo o suficiente como algo que cumpre os requisitos mínimos posibles.
      A elegancia do código reside en ser capaz de comprender o proceso completo e xeralo dun xeito máis profundo, onde se aplica a mellor solución posible, e isto só é posible entendendo realmente o proceso e non o requisito, como ben mencionou 🙂
      Se o modelamos un pouco ao redor do FOSS, implica non só coñecer a esixencia de software, senón a filosofía que hai detrás e saber como se manterá, por quen e todo ese coñecemento do proceso que non só xera unha solución eficiente. ., pero será posible mantelo no tempo 🙂
      Moitas grazas de novo e saúdos.