{"id":225,"date":"2019-02-20T09:00:20","date_gmt":"2019-02-20T12:00:20","guid":{"rendered":"http:\/\/desarrollo-agil.ml\/blog\/?p=225"},"modified":"2019-02-20T23:25:21","modified_gmt":"2019-02-21T02:25:21","slug":"la-culpa-no-es-del-chancho","status":"publish","type":"post","link":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/","title":{"rendered":"La culpa no es del chancho"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Mir\u00e1 lo que es este c\u00f3digo. Es un chiquero!!! Esto en [lenguaje favorito] no pasa!!!<\/h3>\n\n\n\n<p>Siempre me gust\u00f3 participar de peque\u00f1os debates que se arman en el ambiente de sistemas. Uno de los que vuelven recurrentemente vuelve es si \u00abX lenguaje es mejor que Y\u00bb. Existen muchas bromas y memes acerca de los lenguajes de programaci\u00f3n, y la verdad, es que como dice el refr\u00e1n, en gustos no hay nada escrito. Para pensarlo juntos, les propongo que hagamos un ejercicio. Vamos a compilar y ejecutar mentalmente el siguiente c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">String lenguajeElegido = \"Java\";\nboolean codigoBueno = heVistoCodigoBuenoEn(lenguajeElegido);\nboolean codigoMalo = heVistoCodigoMaloEn(lenguajeElegido);\nboolean resultado = codigoBueno and codigoMalo;\nprintln(resultado);<\/pre>\n\n\n\n<p>Vayan cambiando el valor de lenguajeElegido. C\u00f3mo les di\u00f3 el resultado? A mi me di\u00f3 siempre true, sin importar que lenguaje consider\u00e9. <\/p>\n\n\n\n<p>Entonces? Qu\u00e9 quiere decir?  Que no hay lenguajes mejores que otros? Son todos iguales? Y si son todos iguales, por que no seguimos codeando en Assembler y nos dejamos de joder? Bueno, no es tan as\u00ed. Hay lenguajes que nos gustan m\u00e1s, o que nos gustan menos. Hay lenguajes que se adaptan m\u00e1s a lo que necesitamos hacer, y lenguajes un poco m\u00e1s r\u00edgidos. Hay lenguajes cuya sintaxis nos gusta m\u00e1s, y hay otros que nos gustan menos. Pero hasta ah\u00ed llega el tema del lenguaje. Podemos escribir buen c\u00f3digo independientemente del lenguaje que elijamos (si, hasta en ese lenguaje que mir\u00e1s de costado)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Est\u00e1s por cambiar de lenguaje porque tu c\u00f3digo est\u00e1 ilegible?<\/h3>\n\n\n\n<p> Par\u00e1! Te tengo una noticia. Probablemente el lenguaje no sea el problema. Si tenemos c\u00f3digo ilegible, cambiar de lenguaje no nos va a salvar. El c\u00f3digo no se escribe solo. Lo escribimos los programadores. Somos nosotros los que hacemos que algo sea legible o un asco. Un equipo que produce c\u00f3digo mantenible, probablemente escriba c\u00f3digo mantenible independientemente del lenguaje en que lo haga. Y lo mismo al rev\u00e9s: un equipo que escribe c\u00f3digo de mala calidad, probablemente lo haga independientemente del lenguaje. Todo c\u00f3digo es, entre otras cosas, hijo de un determinado contexto, y normalmente el c\u00f3digo ilegible es consecuencia de otros factores que no necesariamente son las herramientas. Si realmente nos interesa tener c\u00f3digo legible, tenemos que enfocarnos en otras cuestiones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3mo hacemos para que nuestro c\u00f3digo empiece a ser m\u00e1s mantenible? <\/h3>\n\n\n\n<p>Bueno, lamentablemente la f\u00f3rmula m\u00e1gica y secreta no existe (o al menos no la conozco), sino que son distintas opiniones, que algunas pueden servirnos m\u00e1s, y otras menos. Algunas cosas que nos pueden ayudar:&nbsp;<\/p>\n\n\n\n<p>Escribir menos test unitarios y m\u00e1s tests que validen el comportamiento de nuestra aplicaci\u00f3n (de componentes e integraci\u00f3n) lo que nos va a permitir hacer refactors m\u00e1s frecuentes con la confianza de no romper nada. Los tests unitarios resultan poco flexibles para los refactors.&nbsp;<\/p>\n\n\n\n<p>Hacer revisiones de c\u00f3digo peri\u00f3dicas, incorporando cambios al c\u00f3digo productivo e implementar pull-requests para que todo el equipo est\u00e9 al tanto de los cambios en la aplicaci\u00f3n&nbsp;<\/p>\n\n\n\n<p>Usar herramientas de an\u00e1lisis est\u00e1tico de c\u00f3digo, que nos van a se\u00f1alar las cosas \u00abturbias\u00bb que a veces no nos damos cuenta.&nbsp;<\/p>\n\n\n\n<p>Dise\u00f1ar en equipo. Hacer Pair programming.<\/p>\n\n\n\n<p>Verificar que todo el c\u00f3digo \u00abhabla el lenguaje del negocio\u00bb. Nuestros m\u00e9todos y clases deber\u00edan expresar lo que hacen en funci\u00f3n del negocio. Si esto no sucede, es se\u00f1al de que quiz\u00e1s estemos escribiendo c\u00f3digo que podr\u00eda ser de una librer\u00eda.<\/p>\n\n\n\n<p>Como norma general, deber\u00edamos empezar por preocuparnos por escribir c\u00f3digo que ande. Una vez que tenemos c\u00f3digo andando, con tests que verifiquen que hace lo que tiene que hacer, podemos preocuparnos por hacerlo m\u00e1s extensible. Una vez que tenemos c\u00f3digo que anda, y extensible, y s\u00f3lo en caso de que sea necesario, preocuparnos por que sea performante. En ese orden. Invertir el orden de esos factores normalmente redunda en tener c\u00f3digo incomprensible y rebuscado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mir\u00e1 lo que es este c\u00f3digo. Es un chiquero!!! Esto en [lenguaje favorito] no pasa!!! Siempre me gust\u00f3 participar de peque\u00f1os debates que se arman en el ambiente de sistemas. Uno de los que vuelven recurrentemente vuelve es si \u00abX lenguaje es mejor que Y\u00bb. Existen muchas bromas y memes acerca de los lenguajes de\u2026 <span class=\"read-more\"><a href=\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/\">Leer m\u00e1s &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,9,14],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>La culpa no es del chancho - Desarrollo \u00c1gil<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"La culpa no es del chancho - Desarrollo \u00c1gil\" \/>\n<meta property=\"og:description\" content=\"Mir\u00e1 lo que es este c\u00f3digo. Es un chiquero!!! Esto en [lenguaje favorito] no pasa!!! Siempre me gust\u00f3 participar de peque\u00f1os debates que se arman en el ambiente de sistemas. Uno de los que vuelven recurrentemente vuelve es si \u00abX lenguaje es mejor que Y\u00bb. Existen muchas bromas y memes acerca de los lenguajes de\u2026 Leer m\u00e1s &raquo;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/\" \/>\n<meta property=\"og:site_name\" content=\"Desarrollo \u00c1gil\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-20T12:00:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-02-21T02:25:21+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@emilianotebes\" \/>\n<meta name=\"twitter:site\" content=\"@emilianotebes\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Emiliano\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/52.201.184.187\/blog\/#website\",\"url\":\"http:\/\/52.201.184.187\/blog\/\",\"name\":\"Desarrollo \\u00c1gil\",\"description\":\"Sofware por y para humanos\",\"publisher\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/52.201.184.187\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#webpage\",\"url\":\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/\",\"name\":\"La culpa no es del chancho - Desarrollo \\u00c1gil\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#website\"},\"datePublished\":\"2019-02-20T12:00:20+00:00\",\"dateModified\":\"2019-02-21T02:25:21+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"http:\/\/desarrollo-agil.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"La culpa no es del chancho\"}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#webpage\"},\"author\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"headline\":\"La culpa no es del chancho\",\"datePublished\":\"2019-02-20T12:00:20+00:00\",\"dateModified\":\"2019-02-21T02:25:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#webpage\"},\"wordCount\":675,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"articleSection\":[\"Buenas practicas\",\"Conformaci\\u00f3n equipos\",\"experiencias\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\",\"name\":\"Emiliano\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/52.201.184.187\/blog\/#personlogo\",\"inLanguage\":\"es\",\"url\":\"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g\",\"caption\":\"Emiliano\"},\"logo\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#personlogo\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/emilianotebes\/\",\"https:\/\/twitter.com\/emilianotebes\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"La culpa no es del chancho - Desarrollo \u00c1gil","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/","og_locale":"es_ES","og_type":"article","og_title":"La culpa no es del chancho - Desarrollo \u00c1gil","og_description":"Mir\u00e1 lo que es este c\u00f3digo. Es un chiquero!!! Esto en [lenguaje favorito] no pasa!!! Siempre me gust\u00f3 participar de peque\u00f1os debates que se arman en el ambiente de sistemas. Uno de los que vuelven recurrentemente vuelve es si \u00abX lenguaje es mejor que Y\u00bb. Existen muchas bromas y memes acerca de los lenguajes de\u2026 Leer m\u00e1s &raquo;","og_url":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/","og_site_name":"Desarrollo \u00c1gil","article_published_time":"2019-02-20T12:00:20+00:00","article_modified_time":"2019-02-21T02:25:21+00:00","twitter_card":"summary_large_image","twitter_creator":"@emilianotebes","twitter_site":"@emilianotebes","twitter_misc":{"Escrito por":"Emiliano","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/52.201.184.187\/blog\/#website","url":"http:\/\/52.201.184.187\/blog\/","name":"Desarrollo \u00c1gil","description":"Sofware por y para humanos","publisher":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/52.201.184.187\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"WebPage","@id":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#webpage","url":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/","name":"La culpa no es del chancho - Desarrollo \u00c1gil","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/#website"},"datePublished":"2019-02-20T12:00:20+00:00","dateModified":"2019-02-21T02:25:21+00:00","breadcrumb":{"@id":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"http:\/\/desarrollo-agil.com\/blog\/"},{"@type":"ListItem","position":2,"name":"La culpa no es del chancho"}]},{"@type":"Article","@id":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#article","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#webpage"},"author":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"headline":"La culpa no es del chancho","datePublished":"2019-02-20T12:00:20+00:00","dateModified":"2019-02-21T02:25:21+00:00","mainEntityOfPage":{"@id":"http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#webpage"},"wordCount":675,"commentCount":0,"publisher":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"articleSection":["Buenas practicas","Conformaci\u00f3n equipos","experiencias"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/52.201.184.187\/blog\/experiencias\/la-culpa-no-es-del-chancho\/#respond"]}]},{"@type":["Person","Organization"],"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851","name":"Emiliano","image":{"@type":"ImageObject","@id":"http:\/\/52.201.184.187\/blog\/#personlogo","inLanguage":"es","url":"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g","contentUrl":"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g","caption":"Emiliano"},"logo":{"@id":"http:\/\/52.201.184.187\/blog\/#personlogo"},"sameAs":["https:\/\/www.linkedin.com\/in\/emilianotebes\/","https:\/\/twitter.com\/emilianotebes"]}]}},"_links":{"self":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/225"}],"collection":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/comments?post=225"}],"version-history":[{"count":14,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":241,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/225\/revisions\/241"}],"wp:attachment":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/media?parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/categories?post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/tags?post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}