Saturday, April 29, 2006

"no va a afectar nada"

sobre reglas basicas de desarrollo: no suponer que algo va a pasar (o dejar de pasar)

cuando te vas a dormir pones la alarma del reloj y asumes que funcionara y que te despertara en la mañana, en algunos casos talvez pongas 2 alarmas suponiendo que si una no funciona (si se va la luz por ejemplo) que la otra si funcionara (al menos yo si hago eso cuando voy a viajar a la mañana siguiente), cuando estas manejando y pasas un semaforo en verde, asumes que nadie vendra de los lados porque ellos tienen el semaforo en rojo, vivimos suponiendo muchas cosas!

cuando estamos desarrollando no cambia mucho la cosa, asumimos muchas cosas y lo malo es que muchas veces esas suposiciones se traducen a software que funciona muy pobremente o usuarios que terminan usando el software en una manera que no se esperaba, y esto a su vez se traduce en una mala experiencia porque escribiste el software para ser usado de una manera (asumiendo que seria usado de cierta manera)

asi que todo se revuelve con suposiciones, suponemos que existira una conexion, que un archivo estara ahi, que un query correra...

piensa por un momento en las suposiciones que haces y trata de evitarlas, esto es MUCHO mas facil decir que hacer, pero con el solo hecho de estar alerta a esta situacion, ya estaras un paso adelante. yo he vivido (no solo desarrollando) por este concepto por varios años, y aun hago muchas suposiciones que me *cuestan* errores en el software que escribo, pero son definitamente muchos menos errores

una suposicion muy grande que los desarrolladores hacen comunmente es:
"no va a afectar nada"

esa es MUY grande, todos la han hecho muchas veces, asi que piensa cuantas veces haz dicho "no va a afectar nada" y terminaste quebrando el sistema completo, echando a perder la base de datos, etc

por supuesto que para eso se hacen pruebas, pero, primero: si metiste mas errores al sistema, vas a perder mas tiempo del que era necesario y segundo: no todos tienen un equipo de pruebas, y si tu pruebas tu mismo sofware, no vas a probar suficientemente bien porque estas seguro de que "no va a afectar nada"

aqui esta una lista de cosas muy comunes que NO DEBES asumir
- que tu aplicacion puede usar toda la MEMORIA que necesita
- que tu aplication puede usar todo el DISCO que necesita
- que un archivo existira
- que la aplicacion tendra permisos para hacer X o Y (especialmente en aplicaciones web, accesando archivos, etc)
- que tu aplicacion correra con permisos de administrador (esta es muy comun)
- que una coneccion estara presente (TCP, HTTP, SQL, etc)
- que una coneccion no se rompera en medio de una operacion
- que "no va a afectar nada"

esa es una pequeña, pero muy buena lista yo creo... empieza evitando suposiciones, te garantizo que seras un mejor desarrollador, que crea mejor software mas rapido

No comments: