domingo febrero 05, 2006
Estrés, DesperatingException y otros compañeros
No, no voy a hablar de los test de Stress (ver tutorial en jH y proyecto JMeter). DesperatingExcepcion es una clase que instancio con demasiada frecuencia en el comportamiento de mi "sistema software", empiezo a pensar que el nombre de esa clase es erróneo, de excepción tiene poco.
Ayer me sucedió una cosa curiosa. Iba yo al trabajo tranquilamente y me disponía, como hago habitualmente, a coger mi ejemplar de 20minutos, que extraño pensé, la chica que los reparte no está, será porque es viernes. Avanzo unos metros más y pienso en la poca gente que hay por la calle, me da por mirar el móvil y...¡era una hora antes!. Se me quedo la misma cara de gilipollas que el día anterior cuando el examinador me cargo el carné de conducir. Eso si, recomiendo un paseo por Valladolid a las 6:30 un día laborable, si no te importa el frió.
Hace mucho que no escribo por aquí, mitad falta de tiempo, mitad pereza. Pero hoy intentaré hacer un resumen/reflexión de todos los fregados en los que ando metido y aprovechar para ordenar mi mente que se nota que lo necesito
.
Entre otras cosas, "gasto" mi tiempo sacando el Certificado de Aptitud Pedagógica (todo el mundo lo conoce por CAP). He tenido suerte, las prácticas me han tocado en el ciclo formativo de Grado Superior de Desarrollo de Aplicaciones Informáticas (DSI) y más concretamente en el módulo/asignatura de programación.
Oooh, si, enseñar a programar en Java. La verdad es que me gusta, ojala tuviera más tiempo para dejarlo de ver como un compromiso y verlo como una experiencia.
Envidio en cierta manera a los alumnos de ese modulo, a mi nunca me enseñaron a programar en Java, y es más, creo que entre todas las asignaturas de programación de la Técnica y la Superior nadie me ha enseñado a programar, pero ese es otro tema.
Por si a alguien le interesa utilizan las siguientes herramientas:
Ya contaré que tal dando la clase de javadoc. Seguro que dejo la documentación por aquí.
De mi pequeña experiencia laboral hay varias cosas que tengo claras. Una de ellas es que es muy muy conveniente tener:
- Un prototipo de la interfaz de usuario
- Una arquitectura de la aplicación sólida
- Un modelo de datos CORRECTO (que la base de datos tenga sentido)
- Tener claro el workflow del proceso que estas automatizando
Los prototipos siempre son peligrosos, dan al cliente una falsa sensación de la situación del proyecto y lo que queda por hacer. Además hay que tener mucho cuidado reutilizando ese prototipo. La pregunta del millón es ¿los prototipos IU se deben reutilizar?. En mi caso, el interfaz era web y, bueno, la reutilización va bien pero esto no siempre es así.
Sin embargo la información que nos aporta tener el prototipo IU tanto a desarrolladores como al cliente NO si tiene precio.
La arquitectura de la aplicación debe ser sólida, y la elección de tecnologías coherente (conocimiento por parte del equipo de desarrollo, entorno de producción, licencias, estabilidad, madurez...). Para mi este es uno de los puntos cruciales para tener un final feliz y a la vez uno de los mayores quebraderos de cabeza.
El modelo de datos tiene que ser correcto (no hace falta que este en la 5ª Forma Normal
) y se debe pensar en un modelo físico eficiente. Si el sistema hace uso intensivo de una base de datos no esta demás dedicar un tiempo a tareas de optimización y análisis de los planes de ejecución de las consultas más complejas. Se puede mejorar el rendimiento sin necesidad de caches que complican el sistema software.
Lo del workflow es lógico, si no sabes como funciona, el famoso KNOW HOW, como vas a automatizarlo. Aunque ojala fuera todo tan sencillo. Cuidado con clientes que no saben como funcionan las cosas. Esto es muy habitual cuando trabajas para la Administración Pública.
Otra cosa que he aprendido es que para que un equipo de trabajo funcione se deben dar las siguientes condiciones:
- Debe existir una jerarquía, preferiblemente lo más plana posible y dialogante. Además de una jerarquía es necesario definir claramente los puestos, funciones y responsabilidades de cada integrante del equipo.
- Es necesario un "jefe" que realice una supervisión de la marcha del proyecto y que tenga capacidad de decisión para dar la "última palabra". Bueno, hay muchas clases de jefe.
- La comunicación entre los integrantes del grupo debe ser fluida. No se puede ocultar información.
- Tiene que existir "buen rollo" en el equipo, esto facilitará la comunicación y el apoyo entre compañeros a la vez que hace más fácil la vida laboral.
- La documentación es vital. Debe haber un buen análisis, un buen diseño, y seguir unas buenas prácticas a la hora de codificar.
- Es necesario tener el soporte de herramientas como gestores de versiones (cvs, subversion,...).
Y no puedo callarme, tengo que hacer el siguiente comentario. ODIO que la gente haga aplicaciones web para todo. Que nadie entienda mal, pero estoy HARTO de que muchas aplicaciones se tengan que hacer web por narices. Señores, html es html, javascript apesta y el protocolo HTTP esta bien pero tiene muchas carencias (falta de estado,...).
Tan cansado estoy de eso como de RoR, AJAX y similares. Hace unos meses y al hilo de una noticia comentábamos en jH que no hay un framework definitivo para aplicaciones web. El problema no esta en los framework actuales si no en el problemón que intentan resolver para suplicar la carencia de las capas inferiores. Tal vez la respuesta sea XUL o XForms o quien sabe qué.
Supongo que es por todo esto que he comentado anteriormente, por lo que me gustaría apostar por los JavaServer Faces. Mi sueño es poder desarrollar aplicaciones web como desarrollaba las aplicaciones de escritorio con Borland C++ Builder o como parece que se pueden desarrollar hoy día en java con Matisse . Y que luego se "traduzcan" mediante renders en (x)html+javascript (con o sin AJAX) o XUL o lo que toque.
Otra cosa que me gustaría comentar, es el "nuevo mundo" de los microkernels y microcontenedores. Hace tiempo estuve investigando un poco en este mundillo debido a mi faraónico proyecto. Por cierto, la próxima vez, que no habrá próxima vez, propongo el típico proyecto de página web + BD y a correr. Como iba diciendo, esta semana ha vuelto a mi mente gracias al proyecto OCAS.
El concepto no es nuevo ya que en cierta medida es lo mismo que se ha venido haciendo con JMX en los servidores de aplicaciones. ¿Es hora de jubilar JMX para este cometido?. La verdad es que yo no lo tengo muy claro. Los microcontenedores basados en IoC están arrasando a la hora de dar soluciones a POJO, pero parece que los grandes servidores siguen apostando por JMX. Además JMX cada vez esta más integrado en el JSE. ¿JMX esta pensado para ser microkernel?. Yo creo que no, que simplemente ha cubierto un vació que existía y ahora es difícil que los grandes servidores refactoricen sus microkernels a soluciones IoC.
Si a alguien le interesa mi opinión, que hasta puede ser posible, aprovechando el cambio que se esta produciendo en EJB 3 (anotaciones,...) y la importancia y madurez de las soluciones POJO modificaría la arquitectura de los servidores por microkernels IoC + servicios proporcionados mediante aspectos.
Bueno, esta entrada es extremadamente larga y densa al igual que los desvaríos de este pobre "javero" aprendiz de mucho y conocedor de poco. Por último sugerir la lectura de una novela juvenil, que releí el otro fin de semana aprovechando que mi salud no estaba en su momento álgido. Los bonsáis gigantes de Lucía Baquedano es un libro de El Barco de Vapor, si, ya he dicho que es juvenil, interesante de leer a cualquier edad y que no lleva más de dos horas y algo.
Espero que si alguien logra leer todo esto le sirva para algo. Yo por lo menos estoy más tranquilo espiritualmente
. Se agradecería comentarios de cualquier tipo, siempre y cuando sean constructivos.
Posted at 10:30AM feb 05, 2006 by Ricardo Santamaría Bogónez in General | Comentarios[1]
Un nuevo reto
Comienzo este blog con una gran ilusión y con la esperanza de convertirlo en un punto de encuentro con las personas que deseen pasar por aquí. Es posible que la expresión "join point" no sea la más correcta para expresar esta idea, pero es una licencia, un juego de palabras que como "aficionado" a la programación orientada a aspectos me he permitido.
Soy consciente de que mantener este blog con una periodicidad aceptable y unos contenidos que puedan interesar a alguien no es tarea sencilla y requiere tiempo libre, algo que ya no recuerdo lo que es
.
Me gustaría presentarme muy brevemente porque considero que es de recibo. Mi vida discurre en la ciudad del Pisuerga y del Esgueva, en el centro de Castilla y León, en Valladolid. A falta de terminar esa pesada losa que es el proyecto, soy Ingeniero Informático e Ingeniero Técnico en Informática de Sistemas. Actualmente soy analista/programador en una empresa, de cuyo nombre no quiero acordarme, y trabajo para la administración regional.
Supongo que sobra decir que me encanta Java, simplemente diré que para mi es el lenguaje ideal para la mayoría de las situaciones, que no todas. Además siempre he considerado que "el mundo java" es lo suficienteme libre para mi, que me considero un defensor racional del Software Libre.
Actualmente estoy centrado en el mundo de la programación orientada a aspectos e intentando impregnarme del paradigma P2P con JXTA. Esto es así, porque estoy tratando de desarrollar un esbozo de middleware basado en el paradigma AOP, simplificando, un sistema distribuido de gran escalabilidad en el que los servicios los proporcionen aspectos. Un objetivo claro, además de presentar el proyecto no dentro de mucho
, es proporcionar arquitecturas dinámicas descritas mediante un ADL que potencie la SoC.
Realmente me apasionan muchos más temas de este mundillo, como el desarrollo web (spring, JSF,...), la inteligencia artificial,... y otros temas más ingenieriles.
Bueno, no quiero alargarme más en esta primera entrada pero antes de despedirme invitar a todos a pasar por aquí de vez en cuando y a dejar vuestros comentarios. Espero hacer un blog útil para todos. Un saludo y nos vemos aquí...a cualquier hora
.
Posted at 10:07AM dic 18, 2005 by Ricardo Santamaría Bogónez in General | Comentarios[0]