Un año de freelance

Después de un año, y ahora que me empiezo a tomar unos meses sabáticos de mi actividad freelancer para meterme a la de entrepreneur, creo que es un buen momento para recopilar un poco lo que ha sido este año de independencia en el que he aprendido bastante a muchos niveles, ya que en este tiempo, he trabajado yo sólo para clientes finales, junto a otros freelancers, como con empresas de desarrollo; casi siempre girando entorno al desarrollo web. Y quería compartir mi humilde experiencia, por si a alguien le puede ayudar a lanzarse(o no XD).

No es ninguna novedad que una de las mejores cosas de trabajar como profesional liberal es la flexibilidad horaria: Poder salir a hacer recados en horario "de maruja", no tener excesiva preocupación del reloj... incluso permitirme algún viernes resacoso :P.
Pero no es oro todo lo que reluce, esa flexibilidad en ocasiones me ha provocado no diferenciar entre horas de trabajo y de descanso, trabajar sábados y/o domingos; y en picos de trabajo(a.k.a. marrones colados por uno mismo) no tener prácticamente tiempo para descansar y despejar la mente, quitando horas de sueño, antes de acostarte estar trabajando y nada más despertar retomar el trabajo de nuevo. También he tenido un par de noches sin dormir incluídas...
Ah! Y vacaciones las justas, ya no recuerdo que es eso de tener una semana seguida de vacaciones para cargar las pilas.

Otra ventaja es la flexibilidad de localización. He trabajado en casa, en bares(sobre todo en el Penguin Row y en el Ángel Azul), bibliotecas, en mi pueblo, en parques... casi en cualquier lugar con una conexión a internet. Se suele recomendar tener también un espacio de trabajo habitual para ayudar a diferenciar horas de trabajo y descanso, cosa con la que estoy muy de acuerdo, pero desgraciadamente para mi el mío es mi propia habitación.

The Penguin Row

Para mi lo más duro es la falta de contacto con otras personas. Aunque las herramientas de comunicación online ayudan: gtalk, twitter, jaiku, campfire, skype... falta el contacto humano con gente con un perfil parecido, por eso me gusta quedar de vez en cuando con amiguetes con los que puedes contarte batallitas :).

También mi ha sido muy difícil reunirme y hacerme entender con posibles clientes sin muchos conocimientos acerca de lo que estaban pidiendo. La típica situación de pequeña empresa/organización, que quiere una web con muchas funcionalidades que realmente no necesitan, o por el contrario no saben lo que quieren y esperan que tú lo inventes, ninguno de los extremos han resultado fáciles de manejar.

Algo que no me esperaba, es que no me ha sido necesario salir a vender, que seguramente me hubiera tocado hacer si no hubiera estado metido en el lío de Jobsket o colaborando durante muchos meses con Linking Paths. Evidentemente sí he hecho presupuestos/propuestas, pero siempre bajo petición, y lo que es darme a conocer no ha sido más que algo de boca a boca a través de amigos y conocidos y poco más.

En resumen: Una gran experiencia, tanto por los momentos buenos como por los malos(donde se aprende todavía más).

Todavía me queda una duda, como empecé a trabajar como freelance ya con la crisis económica encima no he conocido otra cosa XD y he oído un poco de todo, ¿para los freelancers/microempresas que trabajamos en el sector IT esta crisis ha sido buena, mala o no se ha notado excesivamente?

Acerca del Sun Open Communities Forum

Los pasados 18 y 19 de Junio, estuve en Madrid para asistir al Sun Open Communities Forum, mi opinión sobre el evento es que hubieron más oscuros que claros, aunque tampoco me sorprendió demasiado vista la web del evento y la agenda publicada.

Sobre las charlas, opino como Abel Mendivil, se pueden agrupar en fuera de lugar, falta de profundidad y las que tenían fundamento.

Como suele ser habitual en estos eventos, los patrocinadores tenían charlas y algunas eran paja en un evento para programadores, o lo parecían, ya que el segundo día no fuí a ninguna de las que tenían esa pinta: la mesa redonda sobre open source, la de redes sociales, madridonrails... al menos para mi no son productivas. Otras me resultaron aburridas, un tanto básicas, y sobre todo en las que eran en inglés, desconectaba con facilidad. Por lo que, como ya he dicho, me pegué parte del segundo día trabajando en unas mesas fuera de las salas, que en algunos momentos casi se quedaban hasta pequeñas.

Pero también hubieron charlas interesantes:

  • Las de Jorge Sánchez sobre ESB, que por no haber trabajado mucho en integración me resultaron curiosas.
  • La -no- charla de Francisco Morero, donde nos pedía a los asistentes que comentásemos aplicaciones exóticas desarrolladas con Java, y se acabó regalando un iPod como premio :).
  • La de Javier Ramírez acerca de JRuby on Rails, que aunque para mi no dijo nada nuevo, me gustó el enfoque que le dió a su charla de pasar un poco por Ruby, luego por Rails y finalmente ver como integrar con Java usando JRuby.
  • La de Dave Currie acerca de escalabilidad con MySQL, donde tampoco se dijeron cosas especialmente novedosas que no haya escuchado ya en otros eventos, pero siempre es interesante ver las soluciones tomadas en un caso real concreto(también me resultó gracioso que usara el topicazo de que Ruby on Rails no escala XD).
  • Desarrollo y test de componentes Ajax de Ignacio Coloma, sobre todo la parte de testing es la que más me gustó, y junto a la charla que dió el año pasado, tengo muy claro que sabe mucho de desarrollo web.

En cuanto a los talleres, el primer día asistí al de Spring 3.0 que impartía Sergi Almar, donde hubieron problemas de espacio en la sala, no habían suficientes tomas de corriente y los usuarios de Mac no pudimos seguir el taller por un problema de última hora, una pena que ante tantos problemas nos quedáramos sin tiempo para ver finalizar el taller completo, tal y como pasó el año anterior :S. El segundo día, fuí al de Grails que impartían conjuntamente Nacho Brito y Álvaro Sánchez-Mariscal, donde de nuevo nos quedamos sin concluir el taller completo, realmente había mucho que decir y el tiempo se terminó consumiendo :S.

Desarrollo y test de componentes Ajax

Sobre el tema puramente organizativo, hubieron algunos detalles mejorables: Las salas estaban bien pero no habían enchufes, nada más llegar al campus Montepríncipe no había ningún cartel ni indicación, tampoco se nos dieron identificaciones a los asistentes y ponentes, la tarde del segundo días se cambió la sala de las charlas del track 1 y no se pudieron emitir por streaming...
Pero lo que más eché en falta fué más tiempo para charlar/saludar/conocer a otros asistentes y ponentes, que hubiera sido fácilmente solucionable "convocando" a quien quisiera a quedar en algún lugar a tomar unas cervezas(lo que los modernos llaman networking :P), cosa que sí pude hacer con unos pocos y a otros no pude más que saludarlos y poco más :S.

Como podéis ver, un poco de todo en el evento. Veremos si Sun/Oracle siguen celebrando un evento de estas características en España, y si lo hacen, esperemos que intenten organizarlo para que resulte más interesante.

Primeros días de Jobsket en abierto

Como supongo que ya sabréis los que os pasáis por aquí(o deberíais :P), hace un par de semanas que jobsket ha salido de la beta cerrada, durante este tiempo hemos recibido bastante feedback de los usuarios(muchas gracias a todos!).

Nos ilusiona mucho la repercusión que hemos visto por internet, y que incluso acabara nombrándose en la sección Espai Internet del Telenotícies cap de setmana de TV3(evidentemente, en catalán). Por otro lado, para los técnicos :), también me hizo una pequeña entrevista Nacho Brito para groovy.org.es acerca de como usamos Groovy y Grails en Jobsket.

A seguir trabajando!

Plugin de easyb para Grails 1.1

Hace unas semanas que me suscribí a la lista de correo de easyb, un framework de testing para la plataforma Java, más exactamente para realizar behavior driven development.

Pues resulta que hace unos días se anunció un plugin para integrar easyb con Grails 1.1.

Sólo he hecho alguna pequeña prueba para ir conociendo easyb, pero por lo que he leído en la lista parece que tienen la intención de que un futuro se puedan integrar el plugin de testing por defecto de Grails con easyb.

Ahora mismo, tras instalar el plugin, puedes crear tus Stories o Specifications con la sintaxis estándar de easyb, tenerlos en el mismo directorio que tus test unitarios o de integración(con el sufijo Story o Specification en vez de Tests) y al ejecutar los tests con el script de easyb se ejecutan los propios de easyb junto al resto de tests "legacy" que tengamos, por lo que nos podríamos ahorrar la traducción de los tests ya escritos.

La única pega ahora mismo, es que por defecto no es amigable con los sistemas de integración continua, al ejecutar grails test-app se da a alegir a ejecutar entre dos scripts, el de por defecto y el del plugin, aunque se puede solucionar simplemente cambiando el de easyb a otro nombre(test-app-all, easyb-test...).

Y aquí viene un ejemplo chorras de test de integración ;) :

before "initialize", {
given "CountryController", {
controller = new CountryController()
}
}
scenario "countries list", {
given "a country", {
country = new Country(name:"Spain")
country.save(flush:true)
}
when "go to index", {
countries = controller.index().countries
}
then "should have one country", {
countries.size.shouldEqual 1
}
}

Aunque creo que se entiende mejor el código XD: teniendo un controlador CountryController para todos los escenarios, con un escenario que es un listado de países, que tiene un país y cuando vamos a la acción index, entonces debería haber un país.