{"id":90,"date":"2017-12-18T12:15:23","date_gmt":"2017-12-18T17:15:23","guid":{"rendered":"http:\/\/blogs.gentoo.org\/chrisadr\/?p=90"},"modified":"2019-11-01T03:35:27","modified_gmt":"2019-11-01T08:35:27","slug":"el-80-20-tambien-afecta-la-programacion","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/chrisadr\/2017\/12\/18\/el-80-20-tambien-afecta-la-programacion\/","title":{"rendered":"El 80\/20 tambi\u00e9n afecta la programaci\u00f3n"},"content":{"rendered":"<p>Todos hemos\u00a0o\u00eddo sobre la regla del 80\/20, aquella que dice que el 80% de nuestro \u00e9xito (efectos) proviene tan solo del 20% de nuestras acciones (causas). Pues bien, esta universal verdad tambi\u00e9n afecta al desarrollo de software, y en este art\u00edculo vamos a desgranar un poco de los fundamentos de esta afirmaci\u00f3n.<\/p>\n<h3>BPM<\/h3>\n<p>Business Process Managment, por su siglas en ingl\u00e9s, es una disciplina de gesti\u00f3n (entre otras cosas) que permite comprender de manera visual los procesos que deben realizarse en un negocio (o en muchos otros lugares). Entre sus cualidades principales est\u00e1 el hecho de poder analizar procesos complejos y hacerlos &#8220;simples&#8221;.<\/p>\n<p>Existen muchas herramientas open source que permiten desarrollar diagramas BPM, la que yo he usado para este art\u00edculo es <a href=\"https:\/\/www.bonitasoft.com\/\">BonitaSoft<\/a>. Si desean aprender un poco m\u00e1s sobre la gesti\u00f3n de procesos existen muchos tutoriales en internet y libros referentes al tema. Ahora volvamos al tema central.<\/p>\n<h3>Proyectos de software<\/h3>\n<p>Hoy en d\u00eda existen muchas metodolog\u00edas para desarrollar proyectos, est\u00e1n las \u00e1giles, las tradicionales, las mixtas, etc, etc. Un punto que todas tienen en com\u00fan es la\u00a0<strong>preparaci\u00f3n<\/strong>. \u00bfQu\u00e9 quiero decir con esto? Que el 80% de tu \u00e9xito en este proyecto de software se basar\u00e1 en el primer 20% de todo el proceso,\u00a0<strong>la preparaci\u00f3n.\u00a0<\/strong><\/p>\n<h4>La preparaci\u00f3n de un proyecto<\/h4>\n<p>Esto es algo l\u00f3gico que en la realidad se aplica muy poco (como muchas otras cosas l\u00f3gicas que son il\u00f3gicas en la pr\u00e1ctica). Cuando hablamos de preparaci\u00f3n debemos entender la capacidad de comprender el problema, entender la soluci\u00f3n y sobre todo,\u00a0<strong>el proceso<\/strong>\u00a0que la soluci\u00f3n aplica. Una de las cosas que menos se encuentran en proyectos de software poco profesionales es la falta de documentaci\u00f3n sobre dicho tema. Esto normalmente aparece en empresas privadas puesto que el deseo de vender supera al proceso de creaci\u00f3n.<\/p>\n<p>Como muchos de los que leen estos art\u00edculos trabajan o est\u00e1n relacionados con la tecnolog\u00eda, no est\u00e1 de m\u00e1s mencionar que si en alg\u00fan momento de sus vidas laborales se encuentran con una empresa\/proveedor que no cumple con una buena preparaci\u00f3n, es casi 80% seguro :P que el proyecto <strong>no va a salir bien<\/strong>.<\/p>\n<h3>La abstracci\u00f3n es la clave<\/h3>\n<p>Esto es algo que he aprendido de mi tiempo usando GNU\/Linux, y que demuestra una y otra vez ser clave en el proceso de creaci\u00f3n de software. La capacidad de <em>abstraer\u00a0<\/em>problemas para convertirlos en cosas m\u00e1s &#8220;simples&#8221; es vital para poder generar c\u00f3digo elegante, y sobre todo <b>duradero<\/b>. Y tal vez esta es una de las principales diferencias de los grandes proyectos profesionales y los proyectos que crecen sin control alguno. Los primeros piensan, comprenden y estructuran\u00a0<strong>el proceso<\/strong> mientras que los segundos lo <em>mantienen<\/em> <em>funcionando sin necesidad de entenderlo<\/em>.<\/p>\n<h3>Stager<\/h3>\n<p>Este es el nombre del proyecto que desarrolla el instalador de Gentoo, como pueden imaginar, este es un proceso bastante complejo, puesto que soporta una gran cantidad de arquitecturas. Otro factor a tener en cuenta es la cantidad de configuraciones que soporta, a nivel de kernel, init system, etc. Y les cuento todo esto porque adem\u00e1s es mi proyecto de tesis, el cual debo acabar antes de terminar de estudiar. Evidentemente no puedo hacer un programa que contemple absolutamente todas las opciones posibles en tan poco tiempo ( hasta julio del pr\u00f3ximo a\u00f1o), pero al menos puedo generar uno que permita instalar de manera muy b\u00e1sica un sistema funcional.<\/p>\n<h4>Entendiendo el proceso de instalaci\u00f3n<\/h4>\n<p>Gracias a las herramientas de BPM, se puede generar un diagrama de proceso que nos permite entender los pasos necesarios para la instalaci\u00f3n exitosa de Gentoo en un equipo.<\/p>\n<figure id=\"attachment_78057\" aria-describedby=\"caption-attachment-78057\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"wp-image-78057 size-medium\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2017\/12\/Captura-de-pantalla-de-2017-12-18-11-06-47-420x181.png\" alt=\"proceso de instalaci\u00f3n de Gentoo\" width=\"420\" height=\"181\" \/><figcaption id=\"caption-attachment-78057\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>A pesar de contener varios procesos y subprocesos, evidentemente se ha resumido bastante y se puede apreciar que contamos con 18 pasos lineales. Esto es importante porque una aplicaci\u00f3n que cuenta con una estructura lineal es sencilla de implementar, y al mismo tiempo se puede generar paralelismo en alguno o varios de los subprocesos en caso de ser necesario.<\/p>\n<p>Otro factor importante es que nos permite\u00a0<strong>abstraer<\/strong> conjuntos de procesos por tipo, por ejemplo, definir un subproceso kernel nos permite saber que existen tareas espec\u00edficas dentro del mismo que est\u00e1n directamente relacionadas con el proceso de instalaci\u00f3n de un kernel de manera exitosa.<\/p>\n<figure id=\"attachment_78058\" aria-describedby=\"caption-attachment-78058\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"wp-image-78058 size-medium\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2017\/12\/Captura-de-pantalla-de-2017-12-18-11-57-43-420x73.png\" alt=\"Sub-proceso &quot;kernel&quot;\" width=\"420\" height=\"73\" \/><figcaption id=\"caption-attachment-78058\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>De esta manera cada paso &#8220;complejo&#8221; se convierte en uno &#8220;simple&#8221; de manera global, sin perder los detalles necesarios. Esto facilita la visibilidad del conjunto sin disminuir el nivel de especificaci\u00f3n necesario para cumplir el proceso de manera exitosa. Y tampoco podemos negar que es m\u00e1s sencillo ver la imagen que leer todo el Handbook de golpe :)<\/p>\n<h4>Ahorra tiempo<\/h4>\n<p>Otra ventaja evidente es que al no contar con un lenguaje de programaci\u00f3n directamente conectado, es posible realizar el an\u00e1lisis de la l\u00f3gica sin necesariamente perder tiempo en la implementaci\u00f3n del lenguaje. Esto es una ventaja comparado con la cantidad de tiempo que se puede invertir en implementar una funcionalidad para al final descubrir que va a ser descartada porque existe una soluci\u00f3n m\u00e1s eficiente. Como lo que ser\u00edan las soluciones en pseudo-c\u00f3digo (algo que tambi\u00e9n es ignorado por muchos &#8220;desarrolladores&#8221; pero que no deber\u00eda serlo).<\/p>\n<h3>Dirigir proyectos se hace f\u00e1cil<\/h3>\n<p>Teniendo en cuenta estos conceptos, la direcci\u00f3n de proyectos (de cualquier \u00edndole) se hace m\u00e1s sencilla, porque enfocamos los esfuerzos donde realmente son necesarios, y si esta parte es hecha de manera correcta, el resto cae por su propio peso. Espero que les ayude a la curiosidad y los motive a investigar sobre el BPM, la algoritmia y qui\u00e9n sabe, tal vez los anime a ayudarme con mi tesis :P Muchas gracias por llegar hasta aqu\u00ed y ya nos estamos viendo pronto. Saludos<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Todos hemos\u00a0o\u00eddo sobre la regla del 80\/20, aquella que dice que el 80% de nuestro \u00e9xito (efectos) proviene tan solo del 20% de nuestras acciones (causas). Pues bien, esta universal verdad tambi\u00e9n afecta al desarrollo de software, y en este art\u00edculo vamos a desgranar un poco de los fundamentos de esta afirmaci\u00f3n. BPM Business Process &hellip; <a href=\"https:\/\/blogs.gentoo.org\/chrisadr\/2017\/12\/18\/el-80-20-tambien-afecta-la-programacion\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">El 80\/20 tambi\u00e9n afecta la programaci\u00f3n<\/span><\/a><\/p>\n","protected":false},"author":169,"featured_media":91,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[3,13,17,18],"jetpack_featured_media_url":"https:\/\/blogs.gentoo.org\/chrisadr\/files\/2017\/12\/8020.jpg","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/90"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":1,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":92,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/90\/revisions\/92"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media\/91"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}