Archivo para 2005

Patrones de diseño

O’Reilly nos sorprende de vez en cuando con libros diferentes.
Uno de los últimos libros que estoy leyendo es Head First Design Patterns.
Lo que me llamó la atención es el nuevo enfoque da la serie a los libros técnicos. La serie Head First , dirigida por Kathy Sierra y Bert Bates, está basada en las últimas teorías del aprendizaje. El libro utiliza un lenguaje muy visual y un estilo de redacción personal y directo. Hace al lector reflexionar sobre cada uno los conceptos que trata, al tiempo que propone la resolución de problemas de una manera algo lúdica. Pero lo más sorprendente es que uno de los objetivos de la serie es provocar las emociones del lector. Obviamente me refiero a emociones de sorpresa, curiosidad, etc., que nadie se asuste.

Cuando leí el resumen, me pareció que la mejor manera de comprobar la efectividad de este tipo de libros era ponerme como conejillo de indias, y así lo hice.

La verdad es que es un libro agradable de leer, a pesar de lo denso de los patrones de diseño, y como quien no quiere la cosa ya he leído las primeras 80 páginas.

Por lo pronto los patrones Strategy ,Observer y Decorator, los ha tratado de manera muy clara y nada pesada. Este tipo de libros recuerda un concepto básico: la POO no consiste simplemente en la herencia, y aunqe sea una obviedad es muy frecuente ver diseñadores que no parece que lo tengan tan claro.

Así que por ahora mi valoración del libro es positiva.

El libro presenta cada capítulo con un ejemplo de programación, tras describir el problema a resolver propone al lector que obtenga por si mismo el diseño orientado a objetos que mejor se adapta. Comenta pros y contras, principios básicos de POO y conceptos clave que repite machaconamente con el objeto de que se recuerden.

Los conceptos los van presentando diferentes personajes, entre los que se encuentran el programadro, el maestro meditante, el pequeño aprendiz, etc.

Si bien el libro es adecuado para cualquier lenguaje de programación, el lenguaje utilizado para implementar los diferentes ejemplos que plantea es Java… ¿porqué será? ;-)

Esta serie demuestra que los buenos libros no siempre tienen que ser 850 gr de celulosa densamente cubiertos de párrafos somnolientos y aburridos.

Comments off

El tiempo

Un mes en blanco…
Desde que inicié este blog, allá por abril, han pasado más de dos meses sin escribir nada. La razón, fundamentalmente falta de tiempo.
No me han faltado ganas ni temas sobre los que escribir, pero la verdad es que no he podido. En cuanto a tecnología Java, dos conocidos frameworks que estoy analizando (Spring y Tapestry), Hibernate, que ya lo estamos incorporando a algún proyecto. Espero escribir algo al respecto dentro de poco, así como acerca de los libros que estoy leyendo relacionados, alguno muy reciente.
Pero lo que más me preocupa actualmente es incrementar nuestra productividad, y además de las herramientas que puedan infuir más o menos en ello, es muy probable que donde más se puede actuar es a nivel personal.
Mi trabajo hace ya tiempo que pasó de ser únicamente técnico a ser cada vez más de dirección de proyectos. Y esto implica personas, presupuestos, gestión pura y dura, relación con cliente… en fin más gestor.
Combinar tareas y responsabilidades tan dispares no es sencillo, y la verdad es que hay días en los que cuando se acaba el ruido y pienso en lo que he hecho, en lo poco que cunde el día… en fin… ¿os suena?
Hace tiempo que leí muy por encima un resumen del método de David Allen: GTD Getting Things Done y me he propuesto ponerlo en práctica. Su filosofía es muy simple: nuestra productividad es directamente proporcional a nuestra capacidad de relajarnos (que peligro ;-) ). Para ello Allen propone un sistema de gestión del trabajo que permite liberar nuestra mente de aquello que no aporta valor alguno, y sin embargo bloquea nuestra capacidad creativa: registrar y almaenar todo aquello que tenemos pendiente de hacer.
Por supuesto GTD ofrece un sistema en el que no debemos dejar nada pendiente sin proponer una próxima acción. Como bien dice D. Allen, no se gestiona el tiempo sino las acciones, por lo tanto todo nuestra capacidad se debe centrar en:

  1. Recopilar
  2. Procesar
  3. Organizar
  4. Evaluar
  5. Hacer

La gestión del tiempo es un asunto que me ha preocupado desde hace años, la mayoría de los libros/sistemas que he leído insiten sobre la conveniencia de disponer de un enfoque de arriba a abajo, es decir grandes objetivos que finalmente convertimos en tareas muy sencillas. Quizás el libro paradigmático es el de Stephen R. Covey: Los 7 Hábitos de la Gente Altamente Efectiva. Este es un clásico, denso, con mucho sentido común pero denso, y con un punto de vista muy elevado. Por cierto, por lo visto Covey ha encontrado un filón y ya va por el octavo hábito ;-) .

GTD parte de un enfoque diferente: desde abajo hacia arriba. La razón es sencilla: la mayoría de la gente está tan preocupada en resolver sus compromisos diarios que no dedican tiempo a mirar a un horizonte más lejano. Liberar nuestra mente nos proporciona más capacidad creativa.
Al final, el sistema GTD consiste en unificar el sistema de recopilación y gestión de acciones, no importa el soporte, aunque como es obvio el mío es mi T3.

En definita, tengo la necesidad imperiosa de organizarme mejor y parece que también el camino emprendido. Seguiré informando.

Comments (2)

Karaoke Capitalism, Jonas Ridderstråle y Kjell Nordström

Este es un curioso libro de la pareja de excéntricos Jonas Ridderstråle y Kjell Nordström, unos de esos gurús que milagrosamente no han nacido en Estados Unidos, sino en las frías tierras de Suecia.

“Si le gustó Funky Business tanto como a mí, le encantará Karaoke Capitalism. ¿Excéntrico? Desde luego. ¿Diferente? Sin duda. Pero, si desea re-imaginar su empresa y su carrera es un excelente momento para empezar.”

Tom Peters, autor de Re-imagina!

Este es un libro interesante y fácil de leer. No vamos a encontrar la piedra filosofal de la gestión, pero sí que nos proporciona ideas nuevas y frescas que nos pueden hacer reflexionar.

El libro muestra que experimentar y mostrar la individualidad, ser diferente, es algo que está en el centro de la empresa moderna y de la vida moderna. Es divertido, excitante y anima a reinventarse continuamente.

Es el tipo de libro que ayuda a engrasar los circuitos cerebrales y salir de la esclavitud del cuadrado, en definitiva, y por si no os habiais dado cuenta, me gustó ;-) .

Comments off

¿Con qué desarrollamos?

Esta es una de las preguntas que más frequentemente me hago.

Desde la óptica del arquitecto de sistemas, o al menos desde la mía, las tecnologías candidatas para desarrollar soluciones de calidad serán aquellas que permitan mayor independencia de la plataforma, mayor flexibilidad, herramientas de desarrollo avanzadas que permitan generar código de calidad mediante refactoring, testing, etc. y lo suficientemente implantadas en aplicaciones reales de producción como para poder confiar en su futuro.

En la selección de tecnologías entra el lenguaje, el servidor de bases de datos, el sistema operativo, el framework, el hardware, la tecnología a utilizar para el interfaz de usuario, etc.

Si además nuestro diseño se basa en la programación orientada a objetos, el círculo se hace más pequeño.

Desde este punto de vista, y utilizando la web como interfaz de usuario, lenguajes como Java para grandes aplicaciones y/o PHP para aplicaciones más modestas, la linea de separación siempre es difusa, son a menudo los escogidos.

En la otra acera tenemos la plataforma .NET que, para variar, ha asimilado capacidades de otros lenguajes/tecnologías. Sobre el resto, a mi juicio, destaca por:

  • Posibilidad de programar en varios lenguajes
  • Entornos de desarrollo tremendamente productivos

pero tiene algunas desventajas:

  • Futuro ligado al de una empresa, eso sí, una de las más grandes y voraces.
  • Una única plataforma sobre un sistema operativo, aunque con algunas iniciativas interesantes

Es innegable la capacidad de Microsoft para crear herramientas de desarrrollo de alta productividad con las que generar código de manera semiautomatizada. Eso sí, generando un código no demasiado optimizado que puede maquillarse con un hardware potente.

Para el resto de lenguajes destaca como entorno de desarrollo eclipse, uno de los IDEs más interesantes por su capacidad de extensión, de hecho se presenta como una plataforma de desarrollo para cualquier cosa y ninguna en particular.

Pero el asombro y pasmo generalizado aparece con lenguajes como Ruby o frameworks como Rails. Aunque Ruby tiene ya los sufientes años como para considerarse un lenguaje maduro, los defensores de los Java y PHP afirman que no puede competir, todavía, con el marketing y la base de conocimientos existentepara estos.

Ruby es un lenguaje OOP que permite desarrollar soluciones reales como Basecamp, por lo que la crítica de que es un lenguaje de juguete no es creible.

Por supuesto existen soluciones en el mundo Java para incrementar la productividad, XDoclet, etc., pero ese será motivo de otro post ;-)

Uno de los valores de la programación extrema es el coraje. Aunque nada indica en XP que esto signifique que haya que cambiar de lenguaje de desarrollo, es posible que tengamos que abrir los ojos ante el nacimiento de otra forma de programar.

Comments off

Hola mundo

Se dice que para llegar lejos hay que apuntar alto, porque aunque la piedra no llegue donde se desea, es probable que se quede más cerca.

Pues bien, este weblog es mi primer intento.

Mi nombre es José Sanchis y me dedico profesionalmente a una de mis pasiones.

El objetivo de este sitio es comunicar, compartir conocimientos con otra gente interesada en los mismos temas. Por ello introduciré en el todos aquellos hallazgos, dudas, reflexiones, anhelos, y en general todo aquello que piense que pueda aportar algo a este basto y apasionante mundo del desarrollo de software.

Soy socio de una empresa de desarrollo de software, por lo que mi experiencia en este blog será de lo más real ;-)

Comments off