Anotaciones de Enero de 2008

Clases de programación, los chistes malos son gratis

Hoy he dado una clase de PHP. Es una clase particular a un amigo-colega que hasta ahora se había manejado con sitios hechos en Flash, pero que tiene inquietudes y además ya le van pidiendo proyectos más complejos. Hacía años que no daba clases, y no es que ahora me vaya a dedicar a ello, pero en cierto modo tenía ganas de parlotear un rato sobre programación sin necesidad de que hubiera un proyecto por en medio.

Es una clase a la semana, de hora y media, sin guión ni temario, limitándome a explicar el proceso que más o menos sigo en cada proyecto, sopesando por donde puede flojear, y avisando que en el lote se incluyen manías personales y filias y fobias varias, como la elección de un determinado editor de textos o por qué uno debería crearse un mini-framework. La realidad es que ha sido bastante entretenido, y salvo algunos conceptos básicos sobre orientación a objetos, en general el nivel es mejor de lo que esperaba, más de trabajar sobre los fundamentos que explicar cosas nuevas.

La idea es complementar un curso que viene siguiendo en la Universidad de Alicante. Un curso de verdad, con profesor, alumnos, temario, ejemplos, explicaciones y ejercicios prácticos. Me ha enseñado el abultado temario, en varios archivadores, con letra gorda y colorines. Me ha parecido muy completo, y habla de todo, desde la programación en PHP y teoría de bases de datos hasta la implementación en el cliente con hojas de estilo y lenguajes de navegador.

Me comenta que le cuesta asentar toda esta información, que quizás se echa en falta más ejemplos prácticos, o llevar a cabo algún desarrollo. Le digo que no se preocupe, que el curso da una visión general, y que será trabajando en cada proyecto donde se dará cuenta de para qué servía esto y aquello. Y que entonces los problemas serán otros, muchos relativos a como organizar la estructura de la aplicación para que no se vaya de madre, y otros más sutiles y desesperantes, como resolver por qué demonios se descuadra el diseño en tal navegador.

Pero lo que más me ha llamado la atención es la cantidad de herramientas de las que se rodea uno cuando empieza, como suites que te instalan el LAMP de un plumazo y te instauran una especie de controlador en la consola del DOS, entornos específicos para PHP, exóticas y coloridas opciones de resaltados de sintaxis, modos de autocompletado de código algo alocados, etc. Quizás esté equivocado, pero creo más conveniente herramientas lo más sencillas posibles, y a ser posible editar manualmente los archivos de configuración. De algún modo dan más sensación de control y te obliga a pensar qué estás haciendo, además de forzar a cometer tus propios errores en lugar de depender de las limitaciones de un entorno de desarrollo.

En fin, después de todo parece que ha sobrevivido a mis extravagancias. La semana que viene más.

Cómo mantener un programa en la cabeza

Your code is your understanding of the problem you’re exploring.

Paul Graham, Holding a program in one’s head

Presupuestos y propuestas

No ha empezado nada mal el año. Además de la reorganización, me ha dado tiempo para remitir tres presupuestos, reunirme con un estudio de diseño gráfico de la zona para una posible colaboración, y enviar un prototipo-pantallazo-propuesta de web inmobiliaria para el cliente de una empresa de posicionamiento con la que colaboro.

El tema de los presupuestos para desarrollos web es bastante delicado, y supongo que cada cual aplicará su manual de instrucciones particular, más o menos moldeado por la experiencia y por la intuición de qué es lo que realmente persigue el cliente.

En mi caso, y antes de enviar presupuesto alguno, hablo un rato y tanteo para hacerme una idea de su nivel de conocimientos, con tal de no hacer un presupuesto demasiado complicado hablando de hierbas como plugins o mysql. Aunque, por otra parte, creo necesario explicar con suficiente precisión cada una de las tareas que se realizarían.

Este desglose de conceptos técnicos pienso que también debería reflejar todos los puntos intermedios necesarios para cumplir cada tarea. Por ejemplo, el concepto diseño web debería explicar que habrá un prototipo preliminar que tendrá que validar y dar el visto bueno, que después pasará a ser maquetado, estilizado con colores, tipos de letra y fondos y motivos gráficos, y que finalmente se le inyectará el código que permita ejecutar las funcionalidades requeridas.

Tampoco se trata hacer listas, pero siempre intento introducir cierto nivel de detalle. Para proyectos no demasiado largos ni complicados, un presupuesto no me ocupa más de una hora ni excede de dos páginas. De lo contrario, y en caso de no aceptarse, estaría perdiendo dinero. Además, aunque no es un contrato que deba cumplirse a rajatabla, sí debería aproximarse lo máximo posible al coste final.

Todo esto lo digo porque a veces, desde fuera, puede dar la impresión de que no parece justificado el número de horas que empleamos en completar cada una de las fases. Y en realidad casi siempre lo son. Es más, en ocasiones puedes confiarte en exceso -ya sabéis, nada es tan simple como parece- y estimar menos horas de las necesarias, lo cual puede convertirse en un grave problema, ya no solo de plazos de entrega, sino de credibilidad de cara al cliente, o lo que es peor, contigo mismo.

¿Qué voy a hacer ahora?

No, no me refiero a que no tenga nada que hacer o sin proyectos a la vista, o que me haya pasado algo gordo que me dejara mal parado, aunque entre las cenas de navidad y el año nuevo -menos mal que me he tomado una semanita de vacaciones preventivas para aguantar el tipo en estas fiestas- la vuelta al trabajo empieza a adquirir tintes épicos.

Pero de lo que quería hablar es de uno de los propósitos comunes de año nuevo, que no es otra cosa que la mejora en la productividad personal, profesional, o en lo que sea que tenga que hacer. Simplificando, a lo bruto, lo he enfocado de dos formas. Por una parte reducir al mínimo el número de papelorios y notas sueltas que pueblan -poblaban- mi escritorio. Menos los documentos legales, un bloc de notas y algunas impresiones para tener a mano de este magnífico calendario 2008, todas las anotaciones prescindibles han acabado en la basura, otras clasificadas en archivadores y las que correspondía se han convertido a formato de bit.

Por la parte que toca a darle a la tecla, me he puesto a reestructurar las carpetas de proyectos, crear un nuevo planning de backups más prudente y realista conforme crece la cartera de clientes en Asimétrica, hacer limpieza en el agregador teniendo más en cuenta mis prioridades de lectura y, en general, quitar de en medio todo aquello que por repetición, desuso o mala clasificación pueda convertirse en una fuente de ruido.

Esta limpieza física y lógica me ha llevado día y medio, al principio a regañadientes, pensando en si es tiempo perdido, aunque ahora la conclusión es que mayor es la suma de pequeños tiempos perdidos generados por una mala organización. Afilar la sierra, creo que lo llaman, en el famoso libro de los 7 hábitos, por cierto mucho más entretenido de leer que de ponerlo en práctica.

Pero lo mejor ha sido Tudumo, una aplicación de escritorio orientada a la gestión de tareas. Lo descubrí en Avemundi y, lo reconozco, si la crítica no hubiera sido buena ni siquiera me habría molestado en descargarlo. Son ya muchas aplicaciones de este tipo las que he ido probando y el resultado, en general, ha sido decepcionante. O demasiado complicadas. O estorban. O introducir una simple tarea toma demasiado tiempo en decidir cómo clasificarla. O me lío y no encuentro el botón que toca.

Tras dos días probando Tudumo, la verdad es que me está haciendo la vida más cómoda. Basada en los principios del GTD, Tudumo permite la introducción rápida de tareas, organizarlas en grupos, asignar un estado de realización, marcado de tags, etc.

Nada nuevo, me temo. Tampoco es on-line ni conlleva la fanfarria de la Web 2.0. Pero pertenece a ese tipo de aplicaciones austeras donde no te ahogan las funcionalidades y cumplen su cometido con precisión y sencillez.

Bueno, parece que ya he terminado este post. Voy al darle un click al filtro de estado y ver qué voy a hacer ahora.