Cómo resolver un problema ( de programación )

by Gastón Ramos

Cómo algunos de uds saben me dedico a la programación de computadoras, esta actividad requiere tener habilidades para resolver problemas y considero que los mejores hackers programadores son los que saben hacer muy bien justamente esto, ahora bien, creo que hay dos grandes caminos a tomar, uno es el del “hacker” y consiste en ir probando cosas en base a suposiciones a veces con fundamento y otras no tanto. Un ejemplo de esta forma de resolver podría ser, imaginensé que tenemos un programa que ( no importan los detalles ) tiene un formulario que el usuario debe completar, después de enviar el formulario se deben crear 3 o 4 objetos en la base de datos, y uno de ellos por algún motivo no se está creando, entonces suponemos que este objeto no está pasando alguna validación y sin probar mucho deshabilitamos la validación y probamos de nuevo, el problema persiste entonces hacemos otra supocisión de que tal vez el objeto se deba guardar en el último paso y ponemos un objeto.save en la última línea de nuestro programa. Como hemos podido observar es manera de resolver las cosas a veces nos puede ayudar a hacer algo rápido si tenemos suerte, pero después de uno o dos intentos necesariamente debemos tomar el camino serio o más pensante y acudir a nuestro yo teorico que todos tenemos dentro y el proceso sería más o menos este:

  1. Revisar los logs de la aplicación mientras reproducimos el error.
  2. Escribir un tests que reprodusca el problema.
  3. Escribir el código para que el test pase.

The Fix Is In

Ahora bien, el paso 3 require muchas veces de una investigación al detalle de que es lo que está pasando y en el medio puede haber algunas o muchas cosas que desconocemos entonces es útil por ejemplo hacer algunos dibujos en un papel para entender por ejemplo la jerarquía de objetos/clases que estamos usando, las llamadas a API si es que las hay ver que bibliotecas están involucradas, sino las conocemos es bueno leer la documentación para poder tener mejor contexto de dónde estamos parados.

Sí después de todo estos seguimos sin solucionar nuestra cuestión, es bueno tomar un descanso y pensar en mostrarle el problema a alguien más, muchas veces nos damos cuenta de algo con la simple tarea de explicarseló a otro.

Este fué mi post de cómo resolver problemas, vos que técnica tenés?