Entrevista: Daniel Latorre, de Jobsket
martes 16/06/2009
Hace unos días que Jobsket ha abierto sus puertas al público, tras un período de pruebas con usuarios invitados. Para los que no la conozcan, se trata de una web en la que puedes publicar tu currículum y hacerlo visible al mundo por distintos medios. Y como está desarrollada con Grails, hemos querido invitar a Daniel Latorre, uno de los fundadores del proyecto, a charlar sobre el desarrollo.
Cuéntanos un poco sobre tí, a qué te dedicas
Soy Daniel Latorre, uno de los fundadores de jobsket, actualmente estoy trabajando a tiempo completo en el proyecto junto a Martín Pérez y Jordi Monné que son los otros dos fundadores, tras un año compatibilizándolo dando servicios como programador freelance casi siempre relacionado con el desarrollo web.
¿Qué es Jobsket? ¿Cómo surgió la idea?
Jobsket es una aplicación web para subir tu currículum y hacerlo accesible a quienes buscan empleados. En jobsket el currículum recibe un valor estimado a partir del análisis del mercado laboral, se puede consultar el estado del mercado laboral y recibir alertas de ofertas de portales de anuncios de empleo que coincidan con tu perfil.
La idea surgió mientras colaboraba con Martín en el desarrollo de la interfaz web de jlibrary, Martín tenía en mente un proyecto relacionado con el análisis del mercado laboral y la valoración de currículums, al poco tiempo le comentamos a Jordi la idea que también le pareció interesante, y no tardamos mucho en ponernos a trabajar en ello. Cuando teníamos una primera versión más o menos funcional, Mamen Pradel nos hizo un rediseño más que necesario de la interfaz de usuario, que nos servía también como base para nuevas funcionalidades.
Como curiosidad, Martín, Jordi y yo nos conocimos a raíz de colaborar en una pequeña comunidad llamada javaconganas, por eso no puedo dejar de recomendar el participar en comunidades profesionales, ya que además de aprender se conoce a gente interesante :)
¿Por qué decidísteis usar Grails?
Llevábamos un tiempo leyendo acerca de las bondades de Grails, un framework web del que se estaba hablando muy bien y que ya estaba cerca de la versión 1.0, a la vez también queríamos aprender algo nuevo con esta aventura y vimos en Grails una opción interesante. Sabiendo que estaba basado en frameworks Java muy conocidos y probados, nos decidimos a empezar a trabajar con él, ya que en cualquier caso muy probablemente Hibernate y Spring hubieran estado entre nuestras elecciones. Además, como todos esos frameworks y librerías ya viene integrados podíamos ponernos a desarrollar al momento sin tener que hacer trabajo previo de infraestructura.
Una vez abierto al público, ¿qué tal ha sido la experiencia?
La experiencia está siendo buena, sobre todo en lo que tiene que ver con las capas de control y vista, donde la convención sobre configuración ahorra mucho trabajo repetitivo, a la vez que en momentos dados podemos modificar la convención sin dificultades, el uso de taglibs permite crear componentes reutilizables fácilmente, el sistema de filtros es bastante sencillo de utilizar y se le puede dar bastantes aplicaciones(seguridad, logs, caché...).
Por otro lado, nos hemos ido encontrando algunas situaciones extrañas, ya fuera por desconocimiento y no haber encontrado documentación o por bugs en algún plugin(recuerdo problemas con Quartz), por lo que el camino más rápido resultaba pasar código específico para Grails a Java e integrarlo con Spring.
¿Cuál es el reto más importante que presentaba la aplicación?
Hemos encontrado varios retos importantes durante el desarrollo del proyecto, posiblemente ninguno relacionado directamente con Grails y Groovy tras llevar una temporada programando con ambos. La extracción de información de otras webs, de los currículums, la importación desde hResume, el visor flash... aunque por encima de todos está el reto que presenta el algoritmo de valoración, ya que está en constante mejora.
¿Cuáles son las lecciones que habéis aprendido con este proyecto (sobre Groovy y Grails)?
Poco a poco hemos ido creando más taglibs propios para la lógica de presentación, en los inicios lo hacíamos usando sólo templates reutilizables que terminaban resultando un tanto complejos y provocaban que repitiéramos más código en los controladores. Usar taglibs es una solución más potente y DRY, sobre todo para los casos en que hay elementos de la presentación resultan más complicados.
La facilidad de integración con clases Java vía Spring, teníamos muchos servicios Grails que terminamos reescribiendo a Java y no fué necesario tocar los controladores.
Ver y aprovechar algunas capacidades dinámicas de Groovy, primero viéndolo usando por ejemplo los finders dinámicos de GORM, luego usando Meta Object Protocol para añadir dinámicamente algún método para escribir menos código, o incluso modificar tags estándar de Grails.
Y aunque no tenga relación directa con Grails, el escribir tests que termina ahorrando trabajo y disgustos, además con Grails es bastante sencillo realizar tests de integración.
¿Qué plugins habéis utilizado? ¿Por qué habéis elegido esos y no otros?
Estamos utilizando algunos de los componentes de Grail UI, que es más ligero que Rich UI y permite incluir sólo las dependencias CSS y Javascript necesarias para los componentes utilizados en cada página. Aunque tengo que decir que mi relación con estos plugins es de "amor-odio", son muy fáciles de usar y ahorran trabajo pero generan el javascript embebido en el html y suele resultar intrusivo.
Mail plugin para el envío de emails, que hemos ido sustituyendo a una solución más a medida basada en Spring y Freemarker.
El plugin Avatar para los avatares de usuarios, pero como gravatar no está muy extendido entre usuarios "normales" lo terminaremos cambiando.
Webtest para hacer tests de aceptación, no hay grandes diferencias con el plugin Functional tests, hay algo de documentación sobre ello.
Posiblemente en un futuro la lista se alargará, ya que para alguna nueva funcionalidad seguramente nos apoyaremos en plugins creados por la comunidad, y quizás nosotros también acabemos publicando algún plugin :)
¿Qué entorno/IDE habéis utilizado?
Los tres somos usuarios Eclipse, que por otro lado tiene peor soporte de Groovy/Grails que Idea o Netbeans. Seguimos utilizando Eclipse porque estamos muy acostumbrados al IDE y somos más productivos con su ayuda, aunque también hay que tener en cuenta que la mayoría de nuestro código está escrito en Java.
¿Qué consejo darías a quienes están empezando con Grails?
Yo creo que la mejor manera de empezar es leer acerca del framework, participar en foros o listas de correo, leer algún libro que ayude a ir paso a paso y que sirva como referencia. Tras esto sin duda, empezar a desarrollar algún proyecto, "mancharse las manos" es la mejor manera de aprender que hemos encontrado, y por el camino tratar de ser crítico con uno mismo para buscar formas mejores de hacer las cosas.
¡Muchas gracias Dani! ¿Quieres añadir algo más?
Simplemente agradecerte la entrevista y como no, animar a los lectores a que se registren y prueben jobsket ;)
Saludos!
Entrevista: Daniel Latorre, de Jobsket
jaro_ - martes 16/06/2009
Una entrevista interesante, de la cual estoy muy de acuerdo Daniel en varios puntos. Escuché el podcast de debugmodeon acerca de jobsket y la idea me gustó, estáis haciendo un trabajo digno de admiración y así que os animo a que sigáis por el mismo camino.
Saludos