miércoles, marzo 28, 2007

Amazon, de vender libros a vender su infrastructura

miércoles, marzo 28, 2007 por Martín

Parece que Amazon lo está haciendo bien, pero que muy bien. Leyendo el blog de Ben Hugues sobre la keynote de Werner Vogels CTO de Amazon se me hace la boca agua esperando a que publiquen las transparencias o las charlas (esperemos que lo hagan).

Werner Vogels has been with Amazon.com since the beginning, when the strategy was "Get Big Fast". This left Amazon with the most unwieldy, unmanageable architecture - the whole platform ran using one executable, with a 2 tier stateless architecture (web server, database) horizontally scaled. In its last incarnation, the executable took four days to build - making it completely unmanageable to test or fix.

"Get Big Fast", uno de los problemas más grandes que puede afrontar una pequeña empresa de software, ya sea por la presión de los accionistas para obtener resultado, ya sea por el malgasto de capital de riesgo que ha caido del cielo o ya sea porque un super-cliente te ha ofrecido un contrato que no has podido rechazar pero que sabes que no vas a poder cumplir. Morir de éxito, pero eso es otro tema.

Y es que a Amazon le ha ido tan bien que se pueden permitir ser un modelo para todos y ofrecer sus sistemas para empresas. Es realmente asombroso el ver que han llegado a un nivel de escalabilidad en el que pueden ofrecer su infraestructura para servir negocios tan diversos como pueda ser el de Marks & Spencer o Mothercare.

The Amazon.com platform is breaking new ground with application service provision, offering pay as you go infrastructure, in an on demand model, offering horizontal scaling at the application level (e.g only running (and paying) for 5 application servers at night, but scaling up to 30 for daytime trading) and almost unlimited storage using their S3 service.

Pues sí, pay as you go, y se quedan tan anchos. Incluso se permiten el lujo de ofrecerse como proveedores de mensajería cobrando 0.10$ por 1000 mensajes, y 0.20$ por giga de datos; o ofrecer almacenamiento y servicios web para tratamiento de esos datos por 0.15$ el giga; no contentos, abren un mercado para tareas que sólo humanos pueden hacer.

Algunos ya nombran la tecnología de Amazon como el mayor avance tecnológico en los últimos 10 años. Personalmente encuentro asombroso el giro que ha dado esta compañía en los últimos años de ser una simple tienda online (ok, no tan simple :) ) a pasar a competir con los líderes mundiales en cuanto a provisión de servicios.

¡Qué publiquen la charla ya!

lunes, marzo 26, 2007

Emulador x86 en Java

lunes, marzo 26, 2007 por Martín

Investigadores de Oxford han creado un emulador x86 en Java. El sistema además es capaz de emular otros sistemas como Commodore 64, Atari ST, Nintendo o ZX Spectrum. Hay demo online. La utilidad más reseñable que apuntan los investigadores es la de experimentar con programas maliciosos en sistemas virtuales controlados.

Lo interesante aquí es ver DOS ejecutándose en un applet, es decir en un navegador web remoto. Evidentemente, sería mucho más interesante ejecutar Windows o Linux, por ejemplo. Seguramente, con los avances que se están haciendo en virtualización, en unos años podremos ejecutar imágenes de nuestros sistemas operativos en la web. Será cuestión de tiempo.

Por ahora, nos podemos conformar con jugar a los lemmings con el emulador. :-)

viernes, marzo 23, 2007

Oracle compra Tangosol

viernes, marzo 23, 2007 por Martín

La noticia sorpresa de la semana para mi se ha sabido hoy y es que Oracle ha comprado Tangosol. Oracle planea reforzar su línea de soporte de sistemas grid con esta adquisión.

Tangosol Coherence es un producto de cache distribuida creado por Cameron Purdy (que ya blogeaba sobre Coherence allá por el 2002) y que en mi opinión es un ejemplo de empresa saludable, y bien llevada desde unas raices muy técnicas. Según tengo oido y leido a la empresa le va bastante bien, y no me extraña porque su mayor fuente de negocio son las compañías financieras en las que los sistemas de caching y los grids se hacen prácticamente imprescindibles para tratar el volumen de datos que se maneja.

Tampoco se puede decir que tengan demasiada competencia. El negocio del caching está copado por tres o cuatro compañías como Gigaspaces o IBM con su ObjectGrid, o Gemstone. Nosotros hemos estado evaluando estos productos recientemente, y Tangosol parece aparentemente una de las mejores opciones.

Será interesante ver el futuro que le espera a esta compañía dentro de Oracle. La compañía es lo suficientemente solvente como para que Oracle le haya garantizado un espacio propio sin integrarlo dentro de ningún otro producto. Habrá que ver si sigue así la cosa, si pasan a incorporarle funcionalidades propietarias, o si le pasa como TopLink y lo hacen Open Source, aunque me temo que para que pasase eso tendría que haber un Hibernate en el mundo del data grid, y en estos momentos no lo hay.

jueves, marzo 22, 2007

Terracotta, clustering y JBossCache

jueves, marzo 22, 2007 por Martín

Ari Zilka, fundador de terracotta y Filip Anik PMC the Apache Tomcat y Apache Tribes han publicado un interesante webinar en el blog del primero.

El webminar explica como ayudaron a uno de sus clientes a migrar su solución de Caching desde JBossCache a Terracotta y como la escalabilidad se multiplico en factores sorprendentes. Estos estudios se los hay que tomar siempre como anécdotas porque a lo mejor hay otros casos que no publican y que los resultados no son tan buenos, pero de todos modos resulta interesante. Lo mejor del webinar es que hace una introducción a la arquitectura de clustering utilizada por terracotta. Así que si queréis verlos pues os podéis saltar el primer 40% y seguir hacia adelante desde ahí :)

Saco algunas notas interesantes:
  • Server centralizado donde se registran los mapeos entre objetos en diferentes máquinas virtuales.
  • Posibilidad de congelar el estado de tu heap y rearrancar el servidor central (me entran muchas dudas sobre las consecuencias de esto).
  • Posibilidad de tener un heap virtual mucho mayor del que permite el SO (no entran en detalle)
  • El propio servidor central soporta clustering.
  • Posibilidad de persistir grafos completos de objetos o subgrafos.
  • Dos niveles de locking: read y write. Se especifican muy al estilo AOP diciendo que métodos van con "read" y cuales van con "write".
  • Se puede depurar el código que ha sido "modificado". En 2001 una serie de JSRs ya especificaron como las modificaciones de bytecode no deberían influir en los números de líneas y todo esto, de forma que sigue siendo posible depurar una aplicación cuyo bytecode ha sido cambiado.


Como nota aparte en una de las pregutnas se descubre que todos sus benchmarks se realizan sin HA (ok, dicen que algo de HA porque soportan el persistir el heap a disco y cuando rearrancan el servidor vuelven a leer el heap, pero eso para mi no es HA, lo podriamos dejar en MA :-) ). Habría que ver los números con el servidor centralizado en modo HA real.

La verdad es que es una tecnología que me gustaría probar. En nuestra empresa tenemos que migrar un sistema de Caching y estamos evaluando que herramienta utilizar. Teniendo en cuenta el precio de las alternativas, terracotta no parece mala idea, lo malo es que toda la transaccionalidad la tienes que implementar tú manualmente.

Ya veremos.

martes, marzo 20, 2007

¿Por qué Google abre un centro de desarrollo en Polonia?

martes, marzo 20, 2007 por Martín

En USA Today publicaron hace seis días un artículo muy interesante en el que se exponen algunas de las razones por las que muchas compañías de software, entre ellas Google, están moviendo sus centros de desarrollo a los países del Este.

Hay una serie de párrafos en el artículo que va mas allá de cualquier argumento típico sobre que los países del Este son más baratos (que obviamente lo son, pero el artículo habla de investigación y desarrollo y no de perfiles bajos) y que te hacen pensar seriamente en el futuro en Europa occidental. Me permito traducir:


Los países del Este han dominado las competiciones de programación internacionales en años recientes, atrayendo la atención de firmas internacionales. En el último torneo para universitarios de TopCoder había 21.000 inscritos de todo el mundo, pero la mitad de los 48 finalistas provenían de naciones soviéticas, incluyendo el ganador, Petr Mitrichev de Rusia, quien también ganó el año pasado el Global Code Jam, competición esponsorizada por Google.


Tomasz Czajka, que se graduó en el 2004 por la Universidad de Varsovia, se convirtió en una celebridad nacional después de ganar tres competiciones TopCoder entre 2004 y 2005, consiguiendo más de 100.000$ en ganancias.


El artículo continua algo más abajo...

Todo el mundo conoce a Tomasz Czajka y todo el mundo quiere ser como él, dice Artur Hibner que se gradua este año en Cracovia habiendo ganado también una competición internacional de matemáticas. La última vez que estuve en Varsovia, había un cartel inmenso de él en el centro de la ciudad.

Una de las cosas que más te hace pensar es el párrafo anterior. En España, y yo diría en muchos países occidentales, a alguien que consiguiese ganar estos concursos durante varios años como mucho lo llevarían a algún programa de televisión para posar con los diferentes frikis.

El artículo habla sobre muchos otros temas interesantes como que las compañías ya no encuentran tran atractivo el subcontratar a la India porque Europa del Este está cada vez más cerca, o que muchas Universidades de estos países ven como las compañías les roban talentos y deben buscar formas de negociación con ellas.

Por cierto, hablabamos aquí en el trabajo (y se da la casualidad que un compañero mio ha trabajado con una de las personas nombradas en el artículo, Krzysztof Zielinski) sobre si realmente todas estas personas son mejores que los programadores irlandeses o españoles. Está claro que no. Pero el caso si en España o en Irlanda tienes una proporción de 1/10 de fueras de serie, en estos países quizás te encuentres con un 4/10. ¿Dónde se quedan los otros tres en España? Probablemente quemados, pisados, no reconocidos, explotados, en una obra, o simplemente no estudiarán informática porque prefieren dedicar su tiempo a algo que realmente les vaya a dar de comer.

En fin... que el artículo da que pensar.

lunes, marzo 19, 2007

Ya se ha pasado el San Patricio

lunes, marzo 19, 2007 por Martín

El pasado sábado se celebraba el St. Patrick´s day aquí en Dublín (y en el resto del mundo donde haya irlandeses), el día en el que amigo San Patricio murió.

La verdad es que oído y leído tanto sobre los excesos de este día aquí en Dublín, que si el panorama era very disgusting, los de mi trabajo diciendo que casi era mejor irse a fuera, pues sinceramente... me esperaba mucho más. En fin, que sí, que se veía ambientillo, y la gente iba algo más pasada de lo normal, pero... vaya, que ni punto de comparación con mis amados caneiros :-)

Si es que yo cada vez estoy más convencido que aquí no saben hacer fiestas. O es que quizás a mi me gustan más las fiestas de pueblo, pero es que por ejemplo ni atracciones había, casi. Te podías subir a la noria y a cuatro atracciones más, y punto. Hasta mis queridas fiestas de Betanzos parecen el apogeo tecno-atraccionístico comparado con esto.

Lo peor es que aquí el tiempo fue pésimo. Incluso nevó unas cuantas veces (ahora mismo puedo ver la nieve en las montañas desde mi ventana). Pero lo peor fue el viento que obligó a cancelar el Skyfest y alguna cosilla más. Y es que aquí el viento pega de verdad. ¿Alguna vez te ha dolido la lluvia? Entonces estás en Dublín.

He subido algunos videos de la parade a YouTube. No se ven demasiado bien porque había mucha gente, pero podéis imaginaros el ambientillo que había. Estuvo bastante entretenido, aunque lo más difícil era encontrar un sitio donde ver algo.

Aquí dejo algunas fotillos.










viernes, marzo 16, 2007

Análisis de repositorios de Subversion con StatSVN

viernes, marzo 16, 2007 por Martín

StatSVN es una herramienta que permite analizar repositorios creados con Subversion. El funcionamiento es muy simple y solo requiere ejecutar dos comandos: svn log y ejecutar StatSVN con ese log como parámetro. No requiere conexión al repositorio, tan sólo que te hayas descargado el código fuente desde Subversion ya que trabaja siempre con los directorios .svn locales.

Lo he estado probando y funciona bastante bien, aunque con algún proyecto me ha fallado, pero quizás sea que algún .svn estuviese corrupto. En su página tienen algunas demos

Por cierto viendo algunas de las demos se descubren cosas interesantes, como que aparentemente el 60% de las líneas de Hibernate 3 fueron enviadas al repositorio por dos personas (la realidad es que si miras los detalles no es así y el mayor commiter está ahí porque es el que crea la documentación), que en subversion hay un montón de desarrolladores con un porcentaje decente de líneas, que el 90% the Grails lo ha hecho un único desarrollador, ... Interesante :-)

jueves, marzo 15, 2007

Nueve lecciones aprendidas en Google

jueves, marzo 15, 2007 por Martín

En Nine Lessons Learned about Creativity at Google Marissa Mayer de Google habla sobre nueve lecciones que ha aprendido en sus siete (ahora quizás ocho ya que la charla es de Junio del año pasado) años en Google.

Muchas de las cosas que habla han sido ya de sobra difundidas en Internet en diversas fuentes, pero siempre está bien guardarse algunas notas y hacer repaso.

  • Las ideas vienen de todas partes. Usuarios, ingenieros, otros proyectos, etc. Explica como Google Maps surgió fruto de la adquisición de una compañía australiana, o como Google News surgió fruto de un proyecto personal de uno de los ingenieros en la compañía que era adicto a las news.
  • Comparte todo lo que puedas. Cultura abierta. Números y cifras abiertas. Converger hacia una organización plana. Ellos tienen departamentos con cincuenta o sesenta empleados y un único manager.
  • Contratar gente brillante. Rodearse de gente extremadamente ingeligente.
  • Licencia para soñar. 20% de tiempo para lo que quieras, o lo que es lo mismo un día a la semana haces lo que te de la gana. En el último año (2005) analizaron el porcentaje de nuevas funcionalidades y lanzamientos que provenían del 20% de tiempo libre. El 50% de los lanzamientos fueron creados en ese tiempo libre. Cool things que pueden ser creadas fuera de agenda.
  • Buscar la innovación, no la perfección. Si cometes un error, iterar para innovar y mejorar el producto. Levantarte. Apple era cool hace 20 años, tuvo muchos errores pero sigue siendo igual de cool. Basarte en el feedback de tus usuarios. Google ha cometido muchos errores también. Las news al principio se ordenaban por localización, y no por fecha. Google videos no mostraba videos. Los usuarios dirigieron la innovación.
  • Los datos son apolíticos. Toda la compañía se rige por datos y métricas. No hay favoritismos. Los proyectos deben estar respaldados y demostrar su solvencia, no hay favores personales.
  • La creatividad ama las restricciones. Restringe tu pensamiento y encontrarás el camino a la innovación. Mantente enfocado. Restringe el rango de funcionalidades y sistemas que intentas abarcar. Todo será más sencillo.
  • Usuarios, no dinero. El mejor modelo de negocio es conseguir una cantidad masiva de usuarios. Los usuarios atraen al dinero. Una vez que tengas consumidores, encontrarás maneras para generar dinero a partir de ellos.
  • No mates proyectos, mejóralos. Si un proyecto ha conseguido salir a la luz normalmente es porque existía algo de verdad detrás de él. Gente inteligente ha gastado su tiempo en ese producto. Probablemente pueda tener fallos o no esté siguiendo la dirección adecuada, pero matarlo no es la solución. Reempaquetar, rejuvenecer.

lunes, marzo 12, 2007

Podcasts sobre y para emprendedores

lunes, marzo 12, 2007 por Martín

El otro día sufría de envidia sana al ver que muchos de los emprendedores a los que suelo leer y admiro se reunían en Madrid en una comida de amigos. Después de eso, hoy para urgar un poco más en la herida, he descubierto una de estas fuentes de sabiduría que de vez en cuando aparecen.

A muchos os suena el programa de MIT OpenCourseWare. Es un programa fenomenal, pero seamos realistas, seguir uno de estos cursos es algo que requiere mucha dedicación y fuerza de voluntad.

Ahora bien, Stanford ha ido un poco más allá. Desconozco si es algo ya conocido pero he dado con un espectacular conjunto de podcasts publicados por el Standford Education Center y englobados bajo la serie Entrepeneurial Thought Leaders, que tocan muchísimos temas relacionados con el emprender proyectos como son casos de éxitos, conseguir capital de riesgo, etc.

Tienen una pinta fenomenal, pero si alguien ya los ha oido alguna vez se agradecería algún feedback antes de empezar a quemar el mp3 :-)

Fin de semana en Belfast

lunes, marzo 12, 2007 por Martín

Uno sobre Irlanda que tenía el tema aparcado.

Este fin de semana hemos hecho una escapada a Belfast. Al contrario de lo que alguno pueda pensar, se trata de una ciudad bastante acogedora, y segura. Es cierto que hay (esta semana pasada por las elecciones) y ha habido disturbios, pero normalmente parece que se queda todo en casa y no va mucho con los visitantes.

Lo que sí que es cierto es que se nota su agitada historia. En muchos edificios puedes ver alambradas, pintadas, carteles de protesta, etc. Es una ciudad muy diferente a Dublín, empezando claro porque es mucho más pequeña. Desde casi cualquier parte del centro puedes ver las colinas que la rodean, y te da la sensación de que la ciudad se acaba ahí, delante de ti. El centro es muy compacto y te lo puedes recorrer en una hora de lado a lado y eso a un ritmo bastante lento. En unas cuantas horas pudimos ver todos los lugares más importantes, y sin ir con prisas.

Una de las cosas que más nos llamó la atención es que al pasar de las seis de la tarde, las calles se quedaban desiertas. Hay muy poca vida, al menos hasta más tarde donde ya vas viendo más gente joven saliendo por ahí. Eso sí, en el centro no hay tantos pubs como Dublín, y no tienes esa sensación de bullicio constante. En cierto modo era algo triste y hacía parecer más fea a la ciudad de lo que probablemente es.

Os dejo alguna foto por eso de que os hagais una idea de como es.




viernes, marzo 09, 2007

Sobre Software Libre y las nuevas formas de encontrar trabajo (y III)

viernes, marzo 09, 2007 por Martín

Este es el último post de la serie, y prometo que va a ser muy rápido :-)
Posts anteriores:
Sobre Software Libre y las nuevas formas de encontrar trabajo (I)
Sobre Software Libre y las nuevas formas de encontrar trabajo (II)

Unirse a un proyecto

La otra forma de encontrar trabajo de la que quería hablar es unirse a un proyecto. Unirse a un proyecto es una opción más fácil y que realmente conlleva menos responsabilidades. A día de hoy existen miles y miles de proyectos Open Source que buscan desarrolladores y contribuidores de todo tipo. Desde cracks que puedan dedicarse a tiempo completo al proyecto hasta personas que sólo le puedan dedicar una hora a la semana. Cualquiera puede unirse de algún modo a un proyecto Open Source e intentar ayudar. Eso sí, es importante dejar claro en un principio el nivel de involucración que se va a tener en el mismo. De hecho, lo ideal es comenzar poco a poco, y no prometer maravillas para después dejar a la gente colgada. A pesar de que haya muchos proyectos Open Source, y de que no te normalmente nadie te vaya a exigir cuentas, lo cierto es que debe mantenerse una cierta ética a la hora de involucrarse en este tipo de proyectos, de otro modo nuestra reputación puede salir malparada.

Muchos de los puntos que comenté en el post anterior son igualmente aplicables a este. Es decir, se puede encontrar trabajo a través de compañeros, te pueden ofrecer trabajo porque hayan visto que participas en ese proyecto, etc. Así que estos puntos ya no los mencionaré.

A la hora de unirnos a un proyecto debemos tener en cuenta los puntos de los que hablaba también en el post anterior. Nos conviene apuntarnos a un proyecto que tenga una tecnología novedosa, de modo que como mínimo siempre tendremos esos conocimientos que hemos adquirido, y a mayores podremos poner en nuestro curriculum una tecnología que esté poniéndose de moda. Por ejemplo, si pensamos que queremos aprender Ruby, podemos directamente leernos un libro y listo, o leernos un libro e intentar ayudar en algún proyecto Open Source. Lo primero nunca irá al curriculum, lo segundo si que irá. O por decirlo de otro modo, si pones en el curriculum "conocimientos de Ruby" una persona se lo puede o no se lo puede creer; sin embargo, si a mayores pones miembro del proyecto Ruby on Acme, entonces ya tienes una referencia que demuestra que al menos algo sabes.

Aún así no os vayáis a pensar que unirse a un proyecto Open Source es siempre sencillo. La mayoría de proyectos Open Source serios no aceptan que alguien llegue y se ponga directamente a modificar el producto. Por ser un proyecto Open Source no implica que sea un proyecto incontrolado. Normalmente suele haber un ciclo de vida oficioso para lo que sería la incorporación al proyecto:

  • Documentarse sobre el proyecto. Descargárselo. Aprender a utilizarlo.

  • Descargar el código fuente. Construirlo. Entender su estructura. Es importante no molestar al resto de desarrolladores con cuestiones que suelen ser triviales.

  • Comenzar a participar en los foros y listas de usuarios. Exponer opiniones. Hacer pruebas de lo que se comenta, tests, estadísticas, etc.

  • Comenzar a desarrollar los primeros parches. Esos parches serán aplicados por otras personas que controlarán su calidad. Eventualmente pueden ser rechazados si no cumplen su objetivo.

  • Poco a poco se irá cogiendo confianza con el proyecto, los desarrolladores te conocerán, confiarán en ti y finalmente es muy probable que pases a ser un desarrollador oficial del proyecto.


Este camino puede variar según muchos factores, pero se podría decir que este es un camino tipo.

Aún así, yo recomendaría realmente el mantenerse alejado de determinados proyectos que por su madurez y porque se han empresarializado (por inventarse una palabra) no van a permitir realmente que contribuyas. Como comenté antes, Software Libre no significa software sin control. Hay proyectos que en lugar de estar gestionados por comunidades están gestionados por empresas. Estos proyectos no van a permitir que un desarrollador se una, de hecho va a ser difícil incluso que publiquen parches realizados por un desarrollador externo, por muy buenos que sean, ya que pueden no encajar con sus objetivos comerciales. Ejemplos típicos en el mundo de Java serían Hibernate, JBoss, etc.

A continuación expongo algunas de las oportunidades que pueden surgir al colaborar en proyectos Open Source. Recalco de nuevo que muchas ya han sido comentadas en el post anterior así que ya no las nombraré aquí.

Oportunidades: Obtener un trabajo gracias a mejoras en tu CV

Si colaboras en proyectos Open Source, estás siempre aprendiendo cosas. Un proyecto Open Source es como un trabajo, que aunque puede que muchas veces no te proporcione dinero (nunca se sabe) siempre te proporcionará referencias. Esas referencias van en forma de proyectos en los que has participado y además certifican que tienes determinados conocimientos. De hecho, en muchas comunidades como Apache tu nombre quedará para siempre en la lista de contribuidores para determinado producto, lo que además no deja de ejercer un efecto placebo :-)

Si vas avanzando en la jerarquía del proyecto puede que llegaras a adquirir incluso conocimientos de management y dirección de proyectos, ya que los proyectos Open Source son proyectos de software (esto era evidente, verdad) y como tales necesitan también su dirección, su gestión de recursos, su gestión de tareas y problemas, su gestión de timeline y releases, etc. Resulta en cierto modo sorprendente pero la triste realidad es que si tu compañía no te da las oportunidades para ser manager, entonces el Open Source te las puede dar. Obviamente que el Open Source te de esta oportunidad no quiere decir que vayas a ser un buen manager :-)

Oportunidades: Obtener un trabajo porque se crea una compañía

Siempre que un proyecto tiene mucho éxito acaban creándose empresas a partir de él. Obviamente, esas empresas contratarán a las personas que han están trabajando con el proyecto. Normalmente estos trabajos suelen ser muy buenos y a menudo a distancia, ya que es la forma en la que siempre se ha estado trabajando.

Oportunidades: Obtener un trabajo porque una empresa adquiere el proyecto

A menudo, si el proyecto es exitoso puede que entre en los planes de alguna compañía. Para una empresa interesada en un producto es mucho más atractivo el absorber directamente el proyecto que el contratar desarrolladores para que trabajen con él. Absorbiendo el proyecto adquieren el control sobre su ciclo de vida y eso significa que lo pueden adaptar mejor a sus necesidades. Sea como sea, si una compañía adquiere un proyecto en el que estás trabajando tienes todos los boletos para convertirte en trabajador de su plantilla.

Oportunidades: Crear tu propia empresa

Esto enlaza un poco con el post anterior. Simplemente decir que una vez que te conviertes en experto en un determinado proyecto, en especial si es novedoso, es muy posible que te surjan novedades para crear tu propia empresa, ya sea de consultoría, ya sea creando tu propio proyecto, etc. Muy a menudo también, si el proyecto es muy exitoso, es común que se creen centros de soporte locales, con consultores locales que cubren determinadas zonas del mundo. Es otra forma de encontrar trabajo.

Oportunidades: Crear tu propio proyecto

Trabajar en proyectos Open Source te permite ganar experiencia, conocer nueva gente y hacer amistades. De todo eso suelen surgir nuevas ideas, nuevos proyectos, nuevas mejoras o extensiones, etc. Tu propio proyecto te puede llevar a nuevas oportunidades (ver post anterior).

Oportunidades: Participar en alguna iniciativa remunerada

Otra opción interesante es unirse a alguna iniciativa remunerada alrededor del mundo del Open Source. Sin duda la más importante en estos momentos es el Google Summer of Code. Este tipo de iniciativas no dejan de ser trabajos en si mismos, ya que te están pagando, y a mayores te permiten introducirte en una comunidad, en la que probablemente seguirás involucrado cuando termines la beca. Definitivamente, es algo muy recomendable si todavía estás estudiando.

Bueno, creo que no olvido nada. Espero que os haya gustado todo este tema y no os haya aburrido demasiado :-)

Suerte a todos los que se animen a seguir por el camino del Open Source. Como ya he dicho, a veces está bien darse un respiro e intentar algo diferente, aunque sea por eso de decir que lo has intentado. Como he explicado, creo que es una forma de aprender tan buena como cualquier otra y que además puede reportar beneficios muy interesantes. Así que .... ánimo!!

miércoles, marzo 07, 2007

Sobre Software Libre y las nuevas formas de encontrar trabajo (II)

miércoles, marzo 07, 2007 por Martín

Crear tu propio proyecto

En mi anterior post comentaba que una de las nuevas formas para encontrar un trabajo hoy en día es iniciar un proyecto Open Source. En realidad no se trata sólo de una forma de encontrar trabajo sino que puede convertirse en una forma de ganarse la vida, aunque para eso hace falta sobre todo suerte. Suerte para encontrar la idea adecuada, en el momento adecuado, en el lugar adecuado, y seguramente sobre todo con los amigos e inversores adecuados.

De cualquier modo, jamás ha sido tan fácil emprender en la red como lo es hoy en día. Cualquiera puede ir a sourceforge.net y crear su proyecto. No sólo eso, muchas empresas ofrecen servicios gratuitos para todo el que desee desarrollar Open Source, como por ejemplo Atlassian o JetBrains por citar algunos.

De cualquier modo, crear un proyecto es el camino más difícil. Es el camino que seguí yo. Aunque realmente aquí tendría que corregir mis palabras: crear un proyecto sólo es el camino más complicado. Al principio, trabajar sólo es muy cómodo ya que tienes toda la libertad del mundo para dirigir los pasos de tu proyecto, pero la realidad es que conforme la idea va madurando, conforme empiezan a aparecer los usuarios y conforme empiezas a tener menos tiempo, entonces te das cuenta que ir en solitario es un error. De todos modos, discutir esto no es el objeto de este artículo, pero si alguien escoge el camino de crear un proyecto entonces tiene una oportunidad fenomenal para involucrar gente e intentar navegar en grupo.

Sea como sea, además de ser la opción más complicada, es fácil comprender que es la opción que más satisfacción personal crea. El crear un proyecto es algo que conlleva muchos sufrimientos pero también muchas alegrías. Unas pequeñas, otras más grandes: ver que la gente se descarga tu creación; ver que empiezan a preguntar cosas sobre como funcionan; ver que te llegan cumplidos de partes recónditas del mundo; o ver que tras pasados varios meses te comentan que lo han implantado en una empresa y lo llevan usando durante un año. Todo eso son pequeñas recompensas.

Todo esto está muy bien, pero ¿cómo me ayuda a encontrar trabajo? Buena pregunta. En mi opinión no es algo que sea inmediato, y requiere cierto sacrificio. Sobre todo no se empieza a ver el fruto hasta que tienes una base de usuarios decente (al menos cientos), comienza a haber movimiento en los foros o listas de correos, y la cantidad de descargas es respetable. En ese momento comenzará todo el proceso de interacción social, o networking, y empiezan a surgir las oportunidades.

Elegir la tecnología adecuada

Para maximizar la cantidad de oportunidades, o incluso para intentar saborear la fama, lo mejor es crear un proyecto que sea innovador. Es decir, siempre será más sencillo el llamar la atención creando un proyecto con alguna tecnología o API novedosa que el irse a algo tradicional. Por poner un ejemplo, seguramente tenga mayor posibilidad de éxito el crear una red social para desarrolladores de Ruby on Rails que un lector RSS de noticias en Java. A fin de cuentas, la realidad es que pocos desarrolladores pueden permitirse el adoptar nuevas tecnologías y APIs, así que los que tienen tiempo para crear algo con esas tecnologías siempre estarán mucho mejor posicionados.

Voy a poner un ejemplo personal que muchos ya conoceréis, y que es el que utilizaré en adelante. jLibrary. jLibrary no es la mejor aplicación del mundo, de hecho tiene muchas cosas que ahora mismo las veo y se me suben los colores. Sin embargo puedo decir que ha tenido mucha repercusión en su pequeño entorno. Este proyecto nació como un reto personal para aprender tecnologías interesantes (hibernate, lucene, axis, etc.) y en su momento decidí que podía ser una buena idea el orientar el producto hacia el escritorio (por llevar la contraria) así que escogí Eclipse RCP. Eclipse RCP por esas fechas estaba en beta!!

Tras mas o menos un año, todo el mundo de la comunidad Eclipse conocía jLibrary, simplemente porque era la única aplicación de un tamaño considerable desarrollada con el nuevo API. Todo esto le dio visibilidad al proyecto, le dio contribuidores, le dio personas que se interesaron por él y lo comenzaron a utilizar. En fin, le dio por decirlo de algún modo "familla". Si hubiera escogido Swing, no habría pasado lo mismo, porque hay miles y miles de aplicaciones Swing. Pasado otro año, decidí cambiar el backend del sistema para usar Apache Jackrabbit, la implementación de referencia del JSR-170, y nuevamente volvió a suceder lo mismo. Otra vez esta aplicación era de las pocas que utilizaban Jackrabbit, y nuevamente volvió a coger bastante familla, hasta el punto que incluso la gente lo utilizaba porque era la única herramienta que les permitía navegar por repositorios de Jackrabbit de una forma visual y más o menos sencilla.

Lo más importante de todo esto es tener en mente que aunque fracases, siempre habrás aprendido tecnologías nuevas, lo que significa por si mismo un retorno del tiempo que has invertido en forma de conocimiento.

Ahora bien, imaginémonos que escogemos una tecnología novedosa, que obtenemos una base de usuarios y que el producto coge cierta familla. ¿Qué oportunidades pueden aparecer?

Oportunidades: convertirte en tu propio jefe

Probablemente la mejor es que tu producto se haya vuelto tan popular que al final puedas dedicarle todo tu tiempo. Esto es lo que sueñan todas las personas que arrancan un proyecto. Unas veces se cumple, y otras no. Cuanto más tiempo le puedas dedicar, más posibilidades tendrás ya que podrás desarrollarlo mejor y tendrás tiempo para promocionarlo. Quien sabe, a la larga te puedes convertir en el nuevo Linus Torvalds o Marc Fleury.

Oportunidades: que te contrate alguien que utilice tu producto

Esto no es tampoco una opción descabellada. Si las empresas comienzan a utilizar tu producto, y lo ven útil, es probable que quieran invertir su dinero en obtener soporte de primera mano. Y quien mejor va a dar soporte que el creador del producto en sí. Otra posibilidad alternativa a esta es que la empresa directamente absorba tu producto y lo integre en su stack de aplicaciones. Ahora bien, llegado este momento cabe preguntarse: ¿es realmente esto lo que quieres? Porque a veces esto significará que perderás todo el control sobre algo en lo que has gastado tu tiempo.

Seguro que muchos conocéis ejemplos de ambos casos, ya que es muy habitual verlos en el mundo Open Source. En su momento, un proveedor Open Source de software de portales (está en lista pública, pero tampoco quiero poner nombres de estas cosas aquí) me ofreció la posibilidad de unir jLibrary a su producto, pero tras analizar las repercusiones yo decidí rechazar la oferta. ¿Decisión adecuada? Nunca lo sabré. Estoy contento con que jLibrary siga siendo un único producto, pero seguramente si hubiese aceptado sería mucho más importante en estos momentos. Pero la cuestión es, ¿seguiría siendo algo tuyo o sería algo que ha perdido toda su identidad?

Oportunidades: que un compañero te ofrezca trabajo

Esto también es muy habitual. Si muestras dedicación y las personas que forman tu grupo ven que eres trabajador te saldrán oportunidades. Estas oportunidades pueden estar asociadas a tu producto o simplemente pueden ser oportunidades para trabajar en otros productos de otras compañías. Por ejemplo, durante el año pasado mis compañeros en jLibrary me hicieron varias ofertas. Todas ellas muy interesantes, y alguna realmente importante. Estas ofertas suelen ser realmente buenas porque son muy seguras, tienes un contacto dentro de la empresa, y en resumen que la integración es mucho más sencilla.

Oportunidades: que vengan de miembros de las comunidades en las que participas

También es bastante probable. Una vez que te integras en alguna comunidad comenzarás a hacer amistades. Se empiezan con preguntas, se sigue con charlas, acabas realizando parches y contribuyendo a esos productos, y al final acabas por obtener cierta relación de confianza. Esas relaciones pueden derivar en ofertas de trabajo.

Oportunidades: que la competencia te quiera fichar

Esto puede parecer extraño, pero suele pasar. Especialmente cuando la competencia son compañías importantes que por cualquier razón se han quedado atrás, o tienen productos retrasados, o que simplemente desean tener gente con experiencia en una cierta área. En mi caso personal me llegó alguna oferta de ese estilo. La verdad es que nunca podría decir que eran mis competidores, porque se trataba de empresas que juegaban en otras divisiones. Sea como sea lo importante es que te ven, llamas su atención, y te pueden intentar contratar.

Oportunidades: que vengan de terceras partes

Quizás incluso más común que las anteriores. Si las tecnologías que usas son pioneras y hay pocas personas en el mercado que las conozcan, es realmente muy fácil que algún cazatalentos se ponga en contacto contigo ofreciéndote trabajo o preguntándote si conoces alguien que pueda trabajar con esa tecnología. Personalmente me ha pasado en varias ocasiones. La razón es que al no haber personas en el mercado, los recruiters se tienen realmente que esforzar para buscar gente así que terminan buscando en google, en blogs, en comunidades de desarrolladores, etc. A ellos les interesa porque normalmente las tarifas para este tipo de tecnologías novedosas son muy buenas, y las comisiones son mejores, así que hacen esfuerzos adicionales.

Conclusiones

Conclusión: menudo rollo que ha soltado. No, ahora en serio. Este post puede parecer realmente pedante, ya que me utilizo sólo a mi mismo como ejemplo, pero es que ciertamente es el caso más normalucho que puedo encontrar. Podría hablar de Rod Johnson o de Gavin King, pero no tendría demasiado sentido ya que lo que quiero expresar con estos artículos es que las personas normales disponen hoy por hoy de oportunidades para encontrar trabajo que antes no existían.

Crear un proyecto en alguna tecnología interesante es algo arriesgado pero que como mínimo te va a aportar conocimientos en esa tecnología. Sólo por eso, ya vale la pena. Pero además tienes la ventaja de que pueden aparecer oportunidades. No siempre aparecerán, pero lo que está claro es que al que nunca le aparecen es al que nunca lo intenta. Así que ánimo si alguien decide seguir este camino.

El siguiente será el último post de esta serie.

martes, marzo 06, 2007

Sobre Software Libre y las nuevas formas de encontrar trabajo (I)

martes, marzo 06, 2007 por Martín

Hace unos días leía una entrada de blog (y me vais a tener que perdonar que no recuerdo la referencia) que hablaba sobre como ha cambiado la forma de encontrar trabajo, o al menos como han aparecido nuevas formas de encontrar trabajo que hace años eran impensables, y todo ello gracias a las comunidades Open Source. Como no podía estar más que de acuerdo con el artículo en sí, y como me veo reflejado en varias de las cosas que se mencionaban voy a intentar reflejar en esta entrada algunas de mis reflexiones sobre el tema.

Os daréis cuenta que el artículo está orientado unícamente a personas que quieran un cambio en su carrera, que busquen trabajo, que estén comenzando, etc. No es un artículo-que-busque-convencer-a-todo-el-mundo. Se basa enteramente en experiencias personales y por lo tanto representa una versión de la realidad que posiblemente sea subjectiva. No pretende ser una guía para encontrar trabajo o para mejorar.. Hecha la advertencia, y evitando cualquier responsabilidad, puedo continuar :-)

Hace años, no muchos, quizás cinco o seis, el Software Libre (perdonarme porque usaré los dos términos OS y SL somo si fueran el mismo; ya sabéis que hay diferencias) no estaba tan difundido como ahora. Es cierto que había ya mucho software libre, especialmente en Java estaba realmente comenzando la explosión, pero en las empresas sólo se solían ver las herramientas más comunes (apache, mysql, postgres, linux, ...) y con suerte. En su tiempo, Alberto y yo, nos dedicamos a promover el uso de software libre arquitecturas de empresa.

Muchos de los productos sobre los que hablabamos ahí son ahora líderes de mercado o estándares de-facto, y también han aparecido otros muchos otros como resultado de la evolución de los modelos de programación (ej. Spring, Hibernate, Seam, etc.). En los últimos años, además, podemos ver como el mercado está teniendo en cuenta, o incluso en cierto modo evolucionando, hacia productos más dinámicos, pero en su gran mayoría también Open Source (Ruby, Python, Groovy, RoR, Grails, ...)

Con todo esto quiero expresar que es más que evidente que los stacks de software empresariales han cambiado, y como consecuencia aparecen nuevos requirimientos a la hora de encontrar personas para cubrir puestos de trabajo. Hace años, poner que conocías determinadas tecnologías Open Source no tendría ninguna repercusión en una entrevista laboral (bueno, quizás que el entrevistador se echara unas risas con los compañeros mofándose de "otro friki de Linux" o cosas así). A fecha de hoy, poder incluir nombres clave en un curriculum puede marcar la diferencia a la hora de encontrar un trabajo.

Paralélamente a la aparición de nuevos requisitos, y a la proliferación de comunidades y proyectos Open Source han aparecido nuevas formas de encontrar trabajo. Una de las más típicas sería el autoempleo. Igual que las empresas buscan expertos en SAP, en Siebel, en WebSphere, etc., ahora las empresas buscan expertos en Open Source, así que este es un nicho importante para dar formación, consultoría, etc. Pero no es de esta forma de trabajo de la que quiero hablar, si no más bien de la participación en proyectos Open Source.

Unirse a un proyecto Open Source puede parecer algo descabellado. ¿Qué clase de estupidez es esta? ¿Me estás diciendo que para encontrar un trabajo mejor tengo que trabajar gratis? Pues es una forma de verlo, claro :-) Pero veamos. Si nos ponemos en la situación de una persona que acaba de terminar la carrera, tampoco es tan descabellado el pasarse unos meses intentando colaborar en un proyecto de software. Si nos ponemos en la piel de alguien muy quemado por el trabajo, igual no es tan descabellado el cortar por lo sano y darse unos meses de voy a hacer lo que de verdad quiero hacer (sé que esto es una mala forma de decirlo ya que seguramente acabaríamos todos en la playa). Si nos ponemos en la piel de alquien que no puede dejar el trabajo, quizás no es tan terrible dedicar una hora de la tele, o unas cuantas del fin de semana a un trabajo alternativo. Si después de estas razones todavía alguien piensa no chaval, que tengo una hipoteca, que llego muy cansado, etc. entonces me remito a la nota de aclaración del principio.

Una vez que uno ha decidido dar el arriesgado paso de meterse en el mundo del Software Libre llega el momento de elegir:

  • Crear tu propio proyecto

  • Unirse a otro proyecto



Y como creo que abordar estos dos temas me va a llevar su tiempo creo que voy a cortar aquí, y como en las series de suspense... continuará. En los próximos días escribiré sobre estas dos opciones, sobre mi caso personal, y sobre otras cosillas, si todavía lo soportáis claro.

sábado, marzo 03, 2007

Dublin en second life

sábado, marzo 03, 2007 por Martín

Ya toca poner algo de Irlanda, aunque en esta ocasión va a ser algo virtual. Hace bastante escribía sobre el modelo de negocio de Second Life. Hoy he descubierto que Dublín, la ciudad donde vivo en la realidad, también se encuentra en Second Life.

Se trata de una ciudad virtual que refleja con gran detalle muchos de los sitios más emblemáticos de la capital irlandesa como pueden ser St. Stephen´s Green, O´Connell Bridge o la Guinness Brewery entre otros. También puedes ir de compras o asistir a eventos.

La RTE y la Fox se hicieron eco de la noticia ya hace tiempo (yo me he enterado con retraso, los videos ya son de Diciembre) y sus videos se pueden ver aquí. En fin, que como dicen, si no podéis venir a Dublín y estáis conectados a Second Life, pues siempre podéis pasear por el Dublín virtual.

viernes, marzo 02, 2007

IBM se une a la moda mash-up

viernes, marzo 02, 2007 por Martín

Leo que IBM está trabajando junto a Google y ha contratado sus servicios para incluir Google Gadgets en su portal de WebSphere. La idea es integrar estos gadgets de forma que el usuario los pueda utilizar para crear portales personalizados, como por ejemplo ver en google maps los centro de soporte de atención al cliente.

Adicionalmente, parece que planean también integrar la suite de Google dentro de Lotus Notes, supongo que para hacer cosas parecidas.

Resulta interesante ver como dos gigantes se unen para trabajar juntos.

jueves, marzo 01, 2007

Liberado Tomcat 6 stable

jueves, marzo 01, 2007 por Martín

Comet aquí vamos. Lo que estabamos esperando muchos ha llegado. No es que jetty sea malo, pero es que Tomcat es como quien dice el estándar de facto y ya se echaba en falta soporte de comet por alguna parte. El soporte ya estaba ahí desde hace rato, pero hasta que el producto no fuese oficialmente estable no lo ibamos a utilizar. Ahora por fin ha llegado el momento. A ver si lo puedo/podemos probar y saco/sacamos algunas conclusiones.

El anuncio de la versión estable.