Archivo para la categoría "Programación"
El arte de programar
Estamos acostumbrados a pensar por comparación y a aprender con parábolas. Esto a menudo es de gran ayuda, pero a la larga nos impide dar el salto cualitativo del aprendiz al maestro. En informática esta advertencia tiene un profundo significado. Tendemos a comparar los ordenadores con personas o con máquinas, luego aplicamos estas comparaciones para intentar comprender lo que es un ordenador, pero un ordenador no es ni una cosa ni otra y no podremos entenderlo (y por tanto dominarlo) hasta que no dejemos de lado esas comparaciones, esas muletas que nos ayudan a aprender.
Quien escribe esto se haya muy al principio de ese camino de aprendizaje, a veces he tenido un vislumbre de la magia de un algoritmo o de la potencia de un paradigma informático, en esos momentos se queda uno asombrado ante la elegancia y la simplicidad que subyacen en un simple fragmento de código. Pero pronto me ofusco de nuevo y tengo que volver a las comparaciones y las parábolas para seguir avanzando. En estas páginas uso muchas comparaciones, pero no quedaros con ellas, no penséis que todo puede ser aprendido así, tampoco penséis que vosotros no podréis aprenderlo, si nos lo proponemos en firme y actuamos en consecuencia algún día daremos ese salto. Entonces dominaremos el arte de programar.
Algunos consejos rápidos
- Aprende bien el lenguaje: no te quedes con las cuatro estructuras que conoces y las veinte funciones que manejas, hay mucho más hay dentro, cada estructura tiene su lugar, de cada función puedes aprender algo. Intenta aprender algo nuevo cada día.
- Lee mucho código. ¿Te imaginas un novelista que nunca leyera libros? Lee código, mejor si es bueno, pero hasta del malo se aprende. Intenta entenderlo, pregúntate porqué está hecho así. Una buena fuente de código son los frameworks abiertos.
- No dejes de practicar: entre proyecto y proyecto practica con piezas pequeñas, crea pequeños algoritmos o programas que hagan esto o aquello. Un buena idea es ir creando tus propias herramientas. Primero algo modesto, que resuelva pequeñas tareas tediosas, pero no tienes porqué quedarte ahí, puedes crearte tu propio editor, o, quien sabe, algún día tu propio lenguaje, al fin y al cabo así suelen empezar la mayoría de los proyectos de código abierto.
- Aprende y aplica nuevos conceptos: no hagas siempre lo mismo, te quedarás atrás y te aburrirás.
- Conoce y utiliza nuevas herramientas: no digo que cambies de editor cada día, pero, ¿sabes lo que es un gestor de versiones?¿te suenan de algo los tests unitarios?¿usas alguna herramienta para validar html o css?
- Aprende más de un lenguaje: esto es algo más a largo plazo, pero no lo pierdas de vista. Sólo manejando varios lenguajes llegarás algún día al fondo de la cuestión.
Enlaces recomendados
- Sobre la crueldad de verdaderamente enseñar ciencias de la computación- Edsger W Dijkstra
- Code Reading: The Open Source Perspective – Un libro sobre como leer código ajeno.
Código samurai: como programar mejor
Este artículo es un resumen de los consejos ofrecidos en el artículo Free Programming Tips are Worth Every Penny (Consejos gratuitos para programadores que valen su peso en oro) por Will Shipley.
Sigue el Código Samurai
Los antiguos samurais, cuando luchaban, se pasaban horas observándose mutuamente hasta que repentinamente uno de ellos lanzaba un sólo golpe y derrotaba al contrincante.
Cuando vayas a programar, antes de nada, piensa, luego piensa un poco más, hasta que tengas una idea de conjunto de todo el proyecto. Luego piensa en un problema concreto con el que vayas a comenzar a programar, piensa de nuevo en el conjunto y en como encaja esta pieza en él. Entonces comienza a escribir código. No escribas una sola línea de código hasta que no tengas claro que es lo que vas a hacer.
Si eres de los que necesitan escribir para pensar: escribe en una carpeta aparte, crea tantas nuevas carpetas como bocetos necesites y cuando ya tengas el dibujo completo entonces escribe en la carpeta o proyecto definitivo; reutilizando los fragmentos de código que son de calidad y reescribiendo de nuevo lo que haya salido emborronado.
Escribe todo el código “en limpio” la primera vez que lo escribas. No hagas una chapuza pensando que lo arreglarás más tarde, de hecho nunca lo arreglarás. Utiliza clases para todos. Usa tipos enumerados.
Escribe código robusto y “a prueba de balas” desde el principio. Piensa en todo lo que podría causar un fallo y toma medidas preventivas como si el fallo ya hubiera ocurrido.
Cada vez que retoques tu código para añadir funcionalidades o corregir un fallo aprovecha para hacer limpieza. Haz limpieza todo el rato. Pasa el paño cada vez que veas una mota de polvo afeando tu código.
Menos código casi siempre es mejor. Mejor para depurar, mejor para que lo entiendan otro programadores o tu mismo en el futuro, menos código son menos fallos. No añadas funciones adicionales a una clase pensando que las necesitarás en el futuro. Escribe sólo lo que necesites ahora. Cuando necesites contemplar nuevos casos escribe una función más genérica, que admita parámetros, pero no lo hagas hasta que no estés usando esa función en dos o más lugares de tu aplicación.
No te obsesiones con la velocidad y la eficiencia de tu código al principio. Tu tiempo de programador es caro, el hardware es rápido y barato. Cuando tu código funcione y esté depurado podrás hacer test de rendimiento y encontrar los cuellos de botella que merece la pena optimizar.

