Debugging lo que realmente debes saber
Published: 2021-06-20 02:50:39


*"Debuggear"* como decimos coloquialmente usando la palabra de origen inglés, al proceso de depurar que sería la traducción adecuada.

Y sencillamente para mi:

> *"El Debuggeo es todo "*


Sea que este empezando y su nivel sea junior 👶🏻 o tenga mucha experiencia nivel senior 👴🏼 , siempre se verá enfrentado a depurar errores tanto si está en el área de programación (aquí + 😂), base de datos, infraestructura, soporte, redes, etc. 

Estos errores no solo vendrán de algo que usted mismo haya realizado, puede ser de un proceso anterior que intervenga con el que usted está realizando actualmente, código innecesario, configuraciones, versiones y muchas causas más, el punto aquí es que siempre debemos darle solución, para eso estamos💪🏼


Y la pregunta clave es ¿ Cómo depuramos ? Pueden existir técnicas, herramientas, consejos, todos estos básicos y también avanzados de como hacerlo pero puede que en ocasiones se nos pasen por alto o estamos contra el tiempo y queremos solucionarlo cuanto antes 🏃‍♂️.

Si bien la depuración es un proceso técnico que puede requerir de estrategias y herramientas en la mayoría de casos influye también nuestra personalidad, estos problemas son como cualquier otros en el mundo real y a continuación detallaré las cosas que considero importante para realizar el *"debuggeo"*


#  Para empezar: la ACTITUD lo es todo

Cuando estamos depurando errores nuestra **actitud** importa y mucho. Manejar errores e intentar descubrir porque suceden y no lograrlo en principio puede resultar frustrante pero cuando por fin logramos solucionarlo la satisfacción es enorme, y deberíamos empezar por aquí con una firme creencia en que vamos a tener éxito

Teniendo una mala actitud 🙁 podemos caer en el pensamiento de: "No puedo entender como esto funciona, es muy difícil o complicado, intentaré soluciones aleatoriamente👾" Y empezamos realizando las siguientes acciones:

- Realizar cambios aleatoriamente en el código.
- Intentar probar cosas que encontramos en publicaciones de blogs / stackoverflow sin entender que hacen realmente.

Puede que de esta forma lleguemos a la solución pero a menudo los errores solucionado de esta manera puede volver a aparecer y tardaremos mucho más tiempo.

En su lugar una buena actitud 😄 y pensar: "Solo necesito saber lo básico de este tema y usar la lógica 🧩 , la computación se trata de lógica" . Esta afirmación se siente y funciona bien al menos para mí.

Por lo tanto debemos adoptar una mentalidad de crecimiento y estar dispuesto a aprender cosas nuevas y superar los retos a los que nos vemos enfrentados, casi nunca te pedirán algo imposible o fuera de tu alcance, más bien se desea verte utilizando tu maravilloso talento al máximo y desarrollando las habilidades que necesites para conseguir tus objetivos.


> Recuerda: los errores pasan por una razón lógica, los lenguajes de programación, frameworks, herramientas, etc han sido probadas y es casi imposible que tengan errores, entonces revisa lo que tu haz hecho


## Siguiente paso: Confia en ti
Antes podías pensar: Tal vez esto sea muy difícil.

Ahora piensa: Bien he arreglado muchos errores difíciles antes.

## Conoce tus herramientas 

A diario trabajamos con muchas herramientas dependiendo del área o stack de tecnologías que usemos siempre van a variar, empezando por ejemplo desde el sistema operativo, puedes usar Windows, Mac o Linux (cualquier distro), si haces desarrollo web cualquier navegador, editores de código, sistemas gestores de bases de datos, clientes rest, consolas, debuggers tools, etc ⚙️🔩🛠️🧰. 
Por ejemplo si usas una herramienta de debug del lenguaje de programación en tu editor de código, deberías aprender a usar los breakpoints, las funciones de editar, parar, continua y demás.

En este punto mi consejo es trata de usar la que use tu equipo en primera instancia debido a que si surge un problema tendrás a quien recurrir después podrás elegir alguna otra interesante que viste por ahí.

Luego úsalas adecuadamente y explóralas puedes tomar un curso muy corto o ver un video si deseas para ver si puedes aprender algún truco, pero mejor aún con tu curiosidad 🤔 en la misma herramienta ver las opciones que ofrece y descubrir alguna que te parezca interesante o te resulte muy útil.
Una vez hecho esto ganarás seguridad que conoces lo que estas usando y eso es importante.

## Empezando con el bug 

Hasta ahora no había tocado el tema del error 🐞 como tal pues considero que lo indicado anteriormente tenia mayor relevancia antes de llegar a este tema. 
A menudo los errores se muestran con códigos y una breve descripción de dos o tres palabras que puede variar de acuerdo a la herramienta que estemos usando por ejemplo: 
- -> Hacemos una solicitud http 
- -> 500 internal server error

Aquí  la respuesta no es suficiente para resolverlo así que nuestro trabajo es obtener más información de alguna manera, entonces tenemos un error muy genérico por lo tanto vamos a buscar limitar mas el campo de acción, aquí lo que podemos hacer es construir una versión mas especifica acerca de lo que esta pasando:

Solicitud http a /users/create con un nombre largo 
- -> llamada a func createUser 
- -> llamada func validateUsername 
- -> insertar usuario en la base de datos 
- -> error desde la base de datos porque el nombre de usuario es muy largo

Hasta este momento, no hemos realizado ningún cambio para corregir el error, pero con esta información 📜 es más fácil averiguar qué hacer en este caso.

Adicional a diagramar el proceso de forma especifica, debemos tener en claras cuales van a hacer las entradas y salidas si es que el caso lo requiere.



## Revisar tus suposiciones 

En ocasiones asumimos cosas y después de un tiempo nos damos cuenta que no son ciertas ⁉️ por ejemplo dices: el nombre del archivo debería estar bien no creo que ese sea el problema luego de una hora te das cuenta que estaba mal.
Es difícil saber de antemano cual de las suposiciones que has hecho son incorrectas por lo tanto deberías empezar a revisarlas una a una, aquí podrías hacer una lista anotarlas y marcarlas luego de su revisión ✅

## Toma un descanso
Investigar errores requiere de mucha concentración y dedicación, puede que vayas por la segunda pagina de Google algo que rara vez suele pasar, que sea la séptima búsqueda que haces y estés realmente agobiado, entonces ya estas cansando se sabe que cuando uno esta agotado no hace las cosas bien por lo tanto puedes probar darte un respiro y hacer alguna actividad como:
- Salir a caminar 🚶🏻
- Llamar a un amigo 📞
- Comer algo liguero 🥐
- Tomar una ducha 🚿
- Tomar una siesta  😴
- Observar por la ventana 🌄

Cualquier actividad que distraiga y limpie tu mente, luego de esto tendrás mas energía y muy probablemente obtengas la respuesta a lo que estabas tratando de depurar

## Saber donde recurrir

Podemos estar tan atascados que no sepamos que hacer, en este punto me refiero a personas y sitios, si trabajamos en un equipo preguntar a la persona correcta podría ser clave para solucionar nuestro problema o si somos independientes buscar en el sitio indicado por ejemplo la documentación oficial es muy conveniente esto ultimo puede que suene obvio pero en ocasiones lo olvidamos y empezamos a "googlear" a lo loco 🤪

## Siempre se aprende

Es normal que mientras estamos depurando en ocasiones nos desanímenos pues puede que ya no estemos creando cosas nuevas y pueda resultar aburrido, podemos pasar varios días depurando y sentir que no estamos aprendiendo nada porque no lo completamos pero mientras ocurre este proceso si que estamos aprendiendo y mucho a lo cual también podemos dar seguimiento con una lista de cada cosa que intentamos podemos documentar por que no funciono y cuando este resultado también escribir detalladamente la solución que fue la adecuada ✍🏻.

Finalmente esta es mi opinión con respecto a la depuración de errores y lo he hecho a modo muy general tratando de quitar posiblemente todo lo técnico que hay detrás también creo que estas recomendaciones se pueden aplicar para cualquier área o temática sobre todo tecnológica

> El sociólogo Benjamin Barber dijo una vez: 

> «Yo no divido el mundo entre débiles y fuertes, ni entre éxitos y fracasos...

> Yo divido el mundo entre los que aprenden y los que no»

Si te gusto este post compártelo 💌 !