Cuando alguien se dispone a programar debe saber que las herramientas básicas pretenden dar la libertad total al programador para que desarrolle sus ideas. Por ello el proceso de creación del software puede ser todo lo abierto o cerrado que quiera uno. Esta posibilidad de hacer lo que uno quiere puede ser perjudicial si el proyecto se va realizando sin unas reglas homogéneas.
Ser ordenado, buscar la eficiencia en los procesos y aplicar unas reglas básicas harán que no pierdas tiempo realizando tareas que en ocasiones son innecesarias.
Algunos motivos más frecuentes de perdida de tiempo son:
-
No encontrar el código necesario o ciertos nombres para utilizarlo obligando a memorizar todo.
-
Errores por valores incomprensibles y a veces no perceptibles a la vista.
-
Hacer y rehacer la misma funcionalidad.
-
Tareas manuales o procesos lentos muy repetitivos.
-
Estar pensando en las avutardas.
Por ello, he preparado una lista que desde mi punto de vista pueden ser soluciones para evitar estas perdidas de tiempo.
Evita que tu código sea sensible a mayúsculas
Cada vez más se desarrolla utilizando lenguajes o configuraciones xml en el que se vinculan los datos o campos únicamente por el nombre. En ocasiones, en este vinculo poner letra en mayúscula o minúscula puede ser la diferencia entre que funcione o no. Además este tipo de errores en ocasiones son difíciles de encontrar. Evita que tu aplicación dependa de errores por el case sensitive utilizando herramientas o algoritmos que no sean sensibles.
Utilizar reglas mnemotécnicas
Utiliza prefijos en tus clases para encontrarlas en el menú contextual
En una aplicación normal pueden llegar a existir tantas clases que sea imposible memorizarlas. Algunos lenguajes permiten la agrupación utilizando packages o directorios. Sin embargo, en tiempo de diseño, abrir el menú de posibles clases y encontrar la que necesitas puede ser algo laborioso. Haz que los nombres de tus clases inicien con letras que tu reconozcas para no tener que memorizarlas y diferenciarlas de las clases del IDE o algún otro framework. Del mismo modo, dentro de tus clases puedes utilizar diferentes prefijos según el tipo de funcionalidad que disponga.
Utiliza prefijos en tus tablas también
En las tablas también es recomendable agruparlas utilizando prefijos de manera que queden cercanas las que tengan relaciones y dependencias muy fuertes. El objetivo es conseguir ver que clases tienen cierta relación funcional sin estar subiendo y bajando el scroll. De esta forma cuando se construya o se modifique una funcionalidad en una zona del programa una vez encontrada una tabla tendrás las otras juntas.
Reutilizar y abreviar las funciones básicas
La reutilización en realidad es una regla que se enseña desde primero donde se explica que si algo se repite hay que ponerla en un método o función. Pero lo importante a destacar es reutilizar hasta lo más sencillo pero ampliamente utilizado. Cuando vayas a comprobar por ejemplo una validación no tengas que crear varios objetos para poder indicar si un campo es numérico. Para funciones que se utilizan mucho, lo ideal sería poderlas llamar usando el menor código posible (en una única línea). Es importante que estas funciones sigan una regla mnemotécnica para encontrarlas enseguida sin memorizarlas.
Controla las fechas
Otro problema habitual es el tratamiento de fechas en multitud de formatos. Normalmente, esto es porque el usuario lo puede escribir de muchas maneras. Otras veces es por el uso de diferentes bases de datos.
Hacer un algoritmo que a partir de una cadena contemple guiones y barras o incluso que detecte donde está el año comprobando donde están los 4 caracteres numéricos continuos puede ser una buena práctica para evitar fallos por las fechas. Algunos lenguajes si soportan esta funcionalidad automáticamente. Otros lamentablemente no.
Crear un log
Crear un log es algo básico en una aplicación. En este podrás ver que se está ejecutando. Almacenar un registro indicando donde se ha producido el fallo te puede ayudar a evitar bastante para conocer el motivo del error. También hay que tener cuidado con la cantidad de información que se pone en el log por la capacidad del disco duro.
Olvídate de los null
Recuerdo que en el 2009, Tony Hoare dio una charla con título “Null References: The Billion Dollar Mistake”. Existen profesores que me dijeron que la diferencia entre null y dejarlo vacío consiste en no conocer el dato a no tenerlo.
Sin embargo, de cara al usuario final, explicar esto tiene poca relevancia ya que el usuario siempre verá que el campo está vacío. Desde mi punto de vista, olvidarse de trabajar con nulls, siempre que se pueda, te evitará errores tontos.
Si puedes utiliza UTF8
Un último consejo es darle importancia al formato de caracteres a utilizar. Normalmente se suele perder mucho tiempo por perder caracteres al desconocer el formato con el que se trabaja. Pierde un poco de tiempo para conocer como configurar tus herramientas para trabajar con el mismo formato de caracteres.
Automatiza lo que utilices a menudo (aunque el tiempo sea poco)
Al igual que se pierde mucho tiempo desarrollando una y otra vez lo mismo. También se pierde mucho tiempo haciendo tareas que aunque son pequeñas se realizan muchas veces. No dar por hecho que las pequeñas tareas por el hecho de ser pequeñas no son merecedoras de optimizarlas ya que una tarea de 1 minuto ejecutada 120 veces en un día puede ahorrarnos una hora de trabajo si la conseguimos optimizar a 30 segundos.
Por ejemplo, si ejecutar la aplicación desplegándola en un servidor te cuesta un minuto pero lo haces a menudo intenta reducir el número de veces o busca la forma de que sea más eficiente ese despliegue. Dos soluciones a esta perdida de tiempo serían probar las clases en entornos más ligeros o desplegar en servidores más eficientes o que permitan desplegar en caliente. Del mismo modo, debes evaluar donde se te va más tiempo y automatizarlo o evitarlo con tareas alternativas.
Utiliza una metodología apropiada
En ocasiones no se sabe si se conocen los objetivos o no. Existen diferentes metodologías tanto ágiles como tradicionales que nos pueden ayudar a desarrollar mejor según tus necesidades. Elegir una u otra depende de cada proyecto.
El problema surge cuando las necesidades y la metodología son incompatibles. En muchas ocasiones, con una reunión de unas horas o con un vago correo indicando que se quiere, se espera que por “telepatía“ se conozcan todas las necesidades y gustos de la persona que dicta los requisitos. Evitar desarrollar varias veces todo el proyecto te ayudará a tener un código más limpio.
Estar a gusto con lo que haces
El desarrollo del software es una tarea creativa como norma general. Estar concentrado y entretenido con el código es vital para avanzar. Para ello, pensar que desarrollar es un juego, como puede ser un videojuego de lógica, puede ser una gran idea para tomarte el trabajo con una actitud más positiva.
Si no estás feliz con lo que estas haciendo, tu mente se llenará de ideas diversas de insatisfacción y comprobarás que se pierde mucho tiempo físicamente en la silla pero mentalmente en otros lugares diversos. Además, discusiones con compañeros, clientes o jefes, promociones que no se cumplen, cotilleos, comparaciones en la jerarquía, etc. pueden ser un caldo de cultivo para desmoralizarte y/o distraerte.
Conclusión
Hasta aquí algunos consejos que abarcan tanto temas técnicos (organizativos y de evitar bugs) como de metodología. Claramente cada uno tendrá consejos propios que le hayan venido bién. Por otra parte esto no significa que se puedan aplicar estos en todas las situaciones. Muchas veces, código heredado u otras circunstancias hacen imposible la aplicación de algunos de estos consejos.
Foto | ImagesFree