{"id":188,"date":"2022-03-29T21:57:33","date_gmt":"2022-03-30T02:57:33","guid":{"rendered":"https:\/\/lafilosofiadelsoftware.com\/?p=188"},"modified":"2022-06-08T10:24:15","modified_gmt":"2022-06-08T15:24:15","slug":"encontrando-errores-en-tu-codigo","status":"publish","type":"post","link":"https:\/\/lafilosofiadelsoftware.com\/index.php\/2022\/03\/29\/encontrando-errores-en-tu-codigo\/","title":{"rendered":"Encontrando errores en tu codigo"},"content":{"rendered":"\n<p>Hacer software no es tarea f\u00e1cil, dominar y ejecutar este arte es tarea ardua y digo arte porque al final termina siendo el ejemplo m\u00e1s pr\u00f3ximo de lo que hacemos los ingenieros de software. Arte en el momento que convertimos sentencias if\/else\/while en complejos sistemas inform\u00e1ticos. Para llegar a dominar este arte primero es necesario dominar la t\u00e9cnica y para lograr el dominio de la t\u00e9cnica es necesario la ejecuci\u00f3n repetitiva durante horas y horas de pr\u00e1ctica en la cual nos enfrentemos a diversos ejercicios que nos permitan llegar a dominarla. <\/p>\n\n\n\n<p>El ejemplo m\u00e1s claro para entender esto es lo que sucede con los deportes, piensen en el deporte que m\u00e1s les gusta (en mi caso el tenis), pueden haber visto miles de partidos, entender de qu\u00e9 se trata, conocer las reglas de arriba abajo, conocer los movimientos, pero el ejecutarlo ya es otra cuesti\u00f3n, encontrar el swing perfecto para el golpe, el movimiento de rodillas, cadera y brazos tomar\u00e1 horas, semanas e incluso a\u00f1os en lograr dominarlo, es por esto que conocer de algo no es igual a saber ejecutarlo. Por lo anterior, es preciso empezar primero con cientos de ejercicios diferentes que nos permitan conocer la t\u00e9cnica y una vez domines la t\u00e9cnica podr\u00e1s empezar a perfeccionar tu arte; este arte ser\u00e1 el que te haga distinguirte de los dem\u00e1s o ser uno m\u00e1s del mont\u00f3n que aprendi\u00f3 hacer algo y se qued\u00f3 ejecutando el mismo trabajo los \u00faltimos 20 a\u00f1os, ser\u00e1 la perfecci\u00f3n de tu arte que permita que las personas digan \u201cll\u00e1menlo a \u00e9l, \u00e9l sabr\u00e1 c\u00f3mo resolverlo\u201d y no es porque necesariamente ya lo hayas resuelto antes sino tu capacidad de resolver problemas te da un factor diferenciador.\u00a0<\/p>\n\n\n\n<p>Quiero compartir contigo un par de tips para la resoluci\u00f3n de problemas. Lo siguiente lo considero mi mantra para la resoluci\u00f3n de problemas o bugs, no considero que es la mejor, se que no es la \u00fanica, simplemente es la m\u00eda y quiero compartirla contigo y pueda servirte en alg\u00fan momento:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Debes empezar a leer detenidamente y compilar mentalmente que es lo que est\u00e1 sucediendo, compilar mentalmente consiste en leer l\u00ednea a l\u00ednea el c\u00f3digo e ir reemplazando las variables por sus valores, esto es conocido como <strong><a href=\"https:\/\/aztlek.org\/2014\/08\/11\/como-hacer-una-prueba-de-escritorio\/#:~:text=Una%20prueba%20de%20escritorio%20es,cual%20te%20muestro%20a%20continuaci%C3%B3n.\" title=\"prueba de escritorio\">prueba de escritorio<\/a><\/strong>.<br>En lo posible ejecuta tu depuraci\u00f3n (debug) con voz alta la cual ayudar\u00e1 a tu cerebro a aclarar las ideas, ver\u00e1s que leyendo l\u00ednea a l\u00ednea y pregunt\u00e1ndote si est\u00e1 bien o no es una ayuda invaluable.<\/li><li>Si el problema de compilaci\u00f3n o runtime a\u00fan no se soluciona empieza a eliminar l\u00edneas de c\u00f3digo que hayas<strong> <\/strong>hecho recientemente y no hayas a\u00fan verificado que funciona, esto te permitir\u00e1 ir descartando errores de lo \u00faltimo que acabas de agregar y una vez encuentres el error podr\u00e1s agregar nuevamente el c\u00f3digo eliminado.<\/li><li>Una t\u00e9cnica que considero infalible consiste en echarle la culpa algo de tu c\u00f3digo y verificar si es esto lo que falla y en caso de no ir descartando, un error muy frecuente que cometen las personas es pensar que algo tiene el problema y quedarse dando vueltas en el mismo punto durante horas, considero es mucho mejor si empiezas a culpar a un if, luego al else y de esta forma vas verificando funcionamiento y descartando potenciales errores que no son.<\/li><li>Usa el m\u00e9todo de depuraci\u00f3n del <a href=\"https:\/\/es.wikipedia.org\/wiki\/M%C3%A9todo_de_depuraci%C3%B3n_del_patito_de_goma\">patito de goma<\/a> el cual consiste en tratar de explicarle a alguien que es lo que sucede en tu c\u00f3digo, muy parecido a lo que hiciste en la l\u00ednea uno pero ahora tratando de explicarlo a un ser imaginario o si tienes un compa\u00f1ero que te escuche mucho mejor, ya ver\u00e1s que en el momento que est\u00e9s haciendo la explicaci\u00f3n l\u00ednea a l\u00ednea de lo que est\u00e1 haciendo tu c\u00f3digo, tu solo encontrar\u00e1s la respuesta. Lo anterior tiene una explicaci\u00f3n psicol\u00f3gica, al tratar de explicar a alguien que no sabe que est\u00e1 sucediendo debes desenredar primero el nudo mental que tienes que no te deja avanzar para poder hacerle entender. Desenredando este nudo la soluci\u00f3n se presentar\u00e1 ante ti.<\/li><li>Si nada de lo anterior funcion\u00f3, para! no contin\u00faes, si continuas caer\u00e1s en un estado de frustraci\u00f3n el cual no te ayudar\u00e1 en nada a tu problema,&nbsp;&nbsp;una ida a tomar cafe y continuas al rato te ayudar\u00e1.<\/li><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Hacer software no es tarea f\u00e1cil, dominar y ejecutar este arte es tarea ardua y digo arte porque al final termina siendo el ejemplo m\u00e1s pr\u00f3ximo de lo que hacemos los ingenieros de software. Arte en el momento que convertimos sentencias if\/else\/while en complejos sistemas inform\u00e1ticos. Para llegar a dominar este arte primero es necesario &#8230; <a title=\"Encontrando errores en tu codigo\" class=\"read-more\" href=\"https:\/\/lafilosofiadelsoftware.com\/index.php\/2022\/03\/29\/encontrando-errores-en-tu-codigo\/\" aria-label=\"Leer m\u00e1s sobre Encontrando errores en tu codigo\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[11,19],"class_list":["post-188","post","type-post","status-publish","format-standard","hentry","category-software-engineer","tag-ingeniera-de-software","tag-software-engineer"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/posts\/188"}],"collection":[{"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/comments?post=188"}],"version-history":[{"count":5,"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/posts\/188\/revisions"}],"predecessor-version":[{"id":207,"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/posts\/188\/revisions\/207"}],"wp:attachment":[{"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/media?parent=188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/categories?post=188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lafilosofiadelsoftware.com\/index.php\/wp-json\/wp\/v2\/tags?post=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}