domingo, mayo 31, 2009

Sobre la crisis, consultoras y el estado de nuestras IT

domingo, mayo 31, 2009 por Martín

Recojo el relevo de Julio César Pérez Árques que comenta en su blog que la crisis está empezando a afectar a las empresas de IT y aunque ya he escrito un comentario ahí, no puedo aguantarme y necesito poner mi opinión muy modesta y personal por aquí.

Algunas veces, las cosas son más sencillas de lo que parecen, y para mi, esta es una de ellas. Hace ya unos años dejaba una pregunta abierta por aquí: ¿Dónde están las empresas de software?. Y sinceramente, sigo sin encontrarlas. O al menos, sigo sin oir sobre ellas, porque esto es como las meigas, haberlas háilas, pero promoción y ayudas parece que se les dan más bien pocas. A bote pronto me encanta seguir lo que hacen la gente de Abiquo, pero por lo demás, poco oímos sobre gente que esté peleando ahí con los grandes de Silicon Valley.

Sí que es cierto que poco a poco las startups que van saliendo, sí lo hacen mirando al exterior. Parece que esta lección la tenemos aprendida. Y algunos servicios que se me vienen ahora a la cabeza como Nuroa, Trovit, Rentalia, etc. parece que están vendiendo fuera. Pero igualmente, se cuentan con las manos. Y tampoco son el tipo de servicio que vayan a hacer las portadas de los diarios de IT y economía internacionales. Chapeau, para los chicos de Abiquo que están recibiendo reseñas en medios de todo el mundo. Pero, y corregidme si me equivoco porque quizás me esté olvidando de gente, pero creo que nos quedamos en eso. O eso, o simplemente nadie se presenta a a informes como este.

¿Cuáles son las razones? ¿Quizás la desregulación de la profesión?, ¿el intrusismo profesional?, ¿o la falta de formación práctica?, ¿universidades?

Sinceramente yo creo que no. Para mi la razón de todo es mucho más simple. ¡Somos Españoles! Ya lo dice el dicho, "Spain is different". En España nos va la sangría, la fiesta, los toros, y sobre todo, el dinero fácil. El pelotazo, en sus más variopintas formas, sea fútbol, sean sellos, sean ladrillos o terreno. Qué más da. Hay que hacer dinero fácil, rapido y sin currar, porque si no serás un fracasado. ¡Quién diablos quiere montar una empresa de hacer programas de ordenador cuando puedes hacer millones juntando ladrillos! Y, ¿por qué va un ayuntamiento a financiar proyectos de emprendedores?, si puede simplemente recalificar y especular con el terreno.

Pero bueno, me estoy desvíando al terreno del ladrillo, y tampoco quería. Volviendo a las consultoras. Pues ya sabemos todos lo que hay, y de qué va el negocio, y es lo que hay. Los tiempos buenos de vender hierro pasaron, y ahora toca vender carne que sigue dando dinerillo. Puedes vender carne de cerdo, puedes vender carne de ternera, o de buey, o dar cerdo por ternera que es más rentable aún. Sea como sea, el negocio es a corto plazo, ningún secreto por aquí.

Me preguntaba Julio que como era la cosa en Irlanda. Que si las grandes consultoras se ganaban todos los contratos como pasa en España. A lo que yo respondo con un no. O al menos esa ha sido mi percepción a raiz de vivir ahí y leer las noticias. La primera razón por la que digo no es porque en Irlanda apenas hay consultoras. Te llegan los dedos de la mano para contarlas. Cierto es que cuando se abren contratos específicos para implementaciones concretas, sí que acuden las consultoras proporcionando gente; y cierto es también que ahí están todas las empresas grandes como las IBM, HP, Oracle, etc. compitiendo a gran escala. Pero también es cierto que cuando los gobiernos necesitan un producto, tienden mucho más a contratar productos de software realizado por empresas autóctonas que buscar, que a buscar una empresa que le haga ese mismo producto y que se quedará ahí criando malvas por los siglos de los siglos. Y es que esto tan simple y de perogrullo, parece que por aquí no lo entendemos. Y que nuestros gobiernos cuando toca hacer algo, prefiere hacerlo 17 veces, y pagar 17 contratos a 17 consultoras diferentes, que hacero una vez. Y eso, me temo que no va a cambiar, y también sería otro tema de discusión.

Por otra parte, yo estuve trabajando en Irlanda en tres empresas diferentes. Las tres irlandesas. Las tres startups que habían ganado contratos importantes con bancos extranjeros y se encontraban en su momento más dulce. Todas ellas recibieron varios millones de euros del gobierno en forma de grants para expandir su negocio. La última, 16 millones de euros, hace sólo unos meses, en plena recesión. ¿Alguna noticia de inversión similar en una empresa de software española?

Hace unos días salieron varios reportajes en La Voz de Galicia sobre lo mal que está Irlanda, lo malas que son sus infraestructuras, y lo que han desperdiciado el dinero. Pues mira, sí, han desperdiciado el dinero, y sus infraestructuras son penosas, pero yo envidio su tejido tecnológico, y yo envidio que cualquier pequeña startup pueda plantarse en Silicon Valley, en Tokyo o en Sydney, vender sus productos sin ningún problema y generar riqueza para su pais.

¿Soluciones? En mi opinión son tan simples como complejas de realizar en este el país del cachondeo:

  • Modificar el modelo de negocio de las consultoras: Y aquí no se trata sólo de pedirles a las consultoras y resto de empresas que cobren menos, y que inviertan en I+D para generar productos exportables. Porque sólo con buenas palabras, las cuentas no salen. Es fácil pedirle a una empresa que cree software, pero por ahora, a falta de que se inventen los robots programadores, la gente necesita comer. Todos tienen que poner su grano de arena.

    Hay que buscar fórmulas más creativas en los contratos. Si una consultora o cualquier otra empresa hace un proyecto para el estado, no tiene sentido que el estado se quede con toda la propiedad intelectual y que ese software quede condenado al ostracismo. Porque eso no genera ninguna riqueza a largo plazo y sí genera enormes costes. Quizás por ejemplo la propiedad se pueda compartir y el estado ser accionista de ese producto poniendo dinero para facilitar el esfuerzo de exportación comercial del mismo, no sé, es una idea. Hay montones de posibilidades, sólo hay que escapar de esa mentalidad de "firma el contrato y corre" que existe ahora mismo.

  • Inversión: En línea de la solución anterior, y ya centrándose en las ayudas, no puede ser que el dinero del gobierno vaya para lo de siempre, que si telefónicas, endesas, ayuda a bancos, ayuda a constructores, etc. No puede ser que el gobierno sólo invierta en proyectos 100% seguros y con muchos años de negocio. Esto, lo comentaba muy sabiamente José Ramón García en el primer iniciador de La Coruña. No puede ser que tengamos esquemas de VC que no arriesguen nada. Lo dicho antes, en Irlanda habrá también mucho ladrillo y poca infraestructura, pero si hay que soltar 16 millones de euros en un proyecto prometedor, se sueltan.

  • Diversificar: Como comenta Álvaro Sánchez-Mariscal, no puede ser que sólo las consultoras o empresas grandes con enorme facturación puedan ganar los concursos públicos. Esto estrangula y anula por completo cualquier posible atisbo de tejido empresarial, ya sea local, autónomico o estatal, y obviamente a largo plazo no ayuda a absolutamente nadie.



Puede que haya más soluciones, pero para mi estas tres son las más importantes. Sin estos pilares básicos, no hay nada que hacer. Seguiremos a la cola tecnológica mundial.

martes, mayo 26, 2009

Test funcionales para todos: Canoo WebTest + Grails.

martes, mayo 26, 2009 por Martín

Hace ya unos meses comentaba que Grails tenía sus cosas buenas y también sus cosas malas.

Pues bueno, el plugin de tests funcionales pasa a engrosar la lista de cosas que me gustan. Se trata de un plugin que integra Canoo WebTest, una fenomenal herramienta de testeo de la capa web.

Lo más importante que quiero destacar del artículo que estoy escribiendo es que no se limita a Grail. Este plugin simplemente se encarga de simular el acceso a páginas web y ejecutar un número de aserciones sobre las páginas. Los tests se escriben en Groovy y se necesita Grails para ejecutar, pero eso es todo. Es decir, podemos utilizar este sistema para testear cualquier aplicación web, ya esté hecha en Grails, en Java o en .NET. Y ya veréis que por lo sencillo que es, vale la pena.

Lo primero de todo es seguir las instrucciones del wiki, e instalar el plugin. Asumiendo que tenemos instalado Grails, tendríamos que:
  • Crear el proyecto: grails create-app tests
  • Instalar el plugin: grails install-plugin webtest
  • Crear la carpeta de tests: grails create-webtest

Una vez hecho esto tendremos una estructura de directorios con la configuración de los tests, los reports y una carpeta "tests" donde se irán colocando los tests funcionales. Crear un tests es insultántemente sencillo, y treméndamente intuitivo. Tan sólo es cuestión de saber como trasladar el conjunto de tareas de WebTest a Groovy. Pero entre los ejemplos, y lo sencillo que es, pues no debería haber ningún problema.

Fijaros en el siguiente ejemplo de un test funcional que tenemos en Jobsket para comprobar que los perfiles de Linkedin se importan correctamente:
def testLinkedinUpload() {

invoke      '/login'
verifyText  'Entra en Jobsket'
setInputField(name:'login',value:"${user}")
setInputField(name:'password',value:"${password}")
clickButton 'Entra'

invoke '/upload/linkedin'

setInputField(name:'profile',value:'http://www.linkedin.com/in/mpermar')
setCheckbox(name:'legalAccepted')
clickButton '!Sube tu CV desde Linkedin!'

verifyText 'Tu CV'
}


¿Es necesario que explique algo del test? Nada de código Java, nada de XML, nada de scripting raro. No os exagero, hacer tests funcionales con Grails y WebTest es una gozada. El código es muy sencillo de leer, y además al ser Groovy sigues teniendo la potencia que te ofrece un lenguaje orientado a objetos y puedes agrupar funcionalidad común a los tests en otras clases. Pues por ejemplo agrupar la parte de login de ahí arriba en un método login que pondríamos en una clase padre. Es un ejemplo.

Quedaría simplemente ejecutar el test:
  • grails run-webtest MiTest

Una vez se ejecutan los tests, los informes se pueden ver desde la web:



Y nada más. Simplemente resaltar lo comentado. Si estás haciendo un proyecto web, y buscas una herramienta para ejecutar tests funcionales, entonces Grails + Canoo WebTest es una opción muy recomendable. Además se integra muy bien con Hudson, pero eso lo dejo ya para otra entrada :)

martes, mayo 19, 2009

Carlos Barrabés: El mundo no es para estudiar, es para probar.

martes, mayo 19, 2009 por Martín


Hoy he estado en el evento Día do Emprendedor en Santiago de Compostela, que ha sido bastante interesante. La charla que más me ha gustado ha sido sin lugar a dudas la de Carlos Barrabés de barrabes.com, caso de éxito en Internet notable y modelo de emprendedor donde los haya.

La conferencia fue más bien una charla por el tono ameno de este hombre que rezumaba sencillez al tiempo que sabiduría, y si no, tomad nota de alguos de sus consejos:


  • El mundo es para probar, no para estudiar. Todo va demasiado deprisa. Puedes pasarte dos años estudiando algo, y cuando lo quieras probar, ya se te habrán adelantado diez. Hay que dejarse de tanta teoría y más práctica. Probar, probar y probar.

  • Si vas por la calle ver el éxito es inmediato, ahi donde hay cola son la leche.

  • Observación. Antes de empezar barrabés.com, el y su hermano se pasaron 6 meses anotando matrículas y viendo lo que hacían en la montaña. Al cabo de ese tiempo llegaron a la conclusión de que la gente no iba a la nieve como todo el mundo pensaba, la mayoría se iba simplemente a la montaña.

  • Favorecer a los hiperusuarios. Los early adopters. Los que más te ayudarán y te darán feedback. Convertir la experiencia del cliente en una experienca diferencial.

  • Buscar el ser tendencia. Eso es lo más importante, porque si eres tendencia hay cosas como la publicidad que de inmediato pasan a tener coste cero.

  • O molas, o eres barato. ¿Ser barato para una pyme? Olvidaros. Es muy difícil ser una low cost.

  • El mundo ya no es para innovar en las empresas. Se va demasiado rápido. Ahora mismo la gente que ha hehco dinero es la que ha comprado e integrado ideas de otros. Gente como Danone, Google, Toyota... Hoy en día si tienes una idea disruptiva, te acabarán comprando. Para una empresa siempre es mejor comprar que intentar hacerlo ellos todo.



Que obvio suena todo cuando vienen de gente tan experta. Buenisima charla.

domingo, mayo 17, 2009

Más sobre Facebook. Esta vez, Hadoop y datawarehousing.

domingo, mayo 17, 2009 por Martín

Hoy, repasando los feeds pendientes de leer, me he encontrado con este artículo sobre Facebook y Hadoop.

El artículo está muy bien hecho y todo su contenido vale la pena, así que recomiendo su lectura. Básicamente comenta como en el 2007 Facebook decidió migrar un datawarehouse (de un vendedor que no menciona) de 15 terabytes a Hadoop. Las razones eran varias: precio de las licencias, menor coste de hardware, más rendimiento al no tener necesidad de transacciones, o la capacidad del equipo de Facebook para contribuir al Open Source.

Para el sistema de datawarehouse utilizaron Hive. Es interesante mencionar que la estabilidad del sistema no es perfecta, pero que parece que a los usuarios no les importan que se caigan nodos o que las consultas puedan tardar hasta 1 hora en devolver datos siempre y cuando no tengan que enviarlas de nuevo.

Por cierto que en otra nota en el mismo blog hablan del uso de compresión gzip que hace Facebook. Me apunto este blog de DBMS2. Parece un gran recurso.

Por cierto que por si os interesa, os dejo enlaces a estos dos posts que ya había escrito anteriormente sobre la arquitectura de Facebook y el uso que Facebook hace de Hadoop:

Notas sobre la arquitectura de Facebook.
Hadoop@Facebook.

jueves, mayo 07, 2009

De BetFair a TradeFair. Historia de un motor transaccional.

jueves, mayo 07, 2009 por Martín


He estado viendo esta charla publicada hace unos días en InfoQ en la que el CTO de BetFair.com comenta como fue evolucionando su sistema de gestión de transacciones y como construyeron un motor capaz de funcionar tanto para apuestas deportivas como para mercados financieros.

El contenido de la charla es bastante interesante, aunque la charla en sí no es nada amena, así que no sabría si recomendárosla. Creo que sólo si os gusta el tema.

Uno de los comentarios interesantes de la charla es que parece que Oracle les comentó que BetFair puede ser una de las cinco aplicaciones más "calientes" del mundo en cuanto a contención de recursos.

En su caso el problema no es tanto la escalabilidad sino más bien el mantener el rendimiento del servidor durante determinadas ventanas de tiempo. En su web normalmente la mayoría de usuarios se concentran únicamente en torno a determinados eventos 'live'. Una vez que esos eventos terminan, los usuarios se mueven a otro evento. Un ejemplo es una carrera de caballos. La carrera empieza, se va sucediendo, termina y los usuarios se mueven a la siguiente carrera.

Todo esto los deja con que el problema pasa a ser un problema de optimización. ¿Cómo conseguir que el sistema se mantenga ejecutándose con un buen rendimiento de manera continua?

La gestión del riesgo y gestión de apuestas es mucho más sencilla ya que se puede dividir en clientes o cuentas, lo que permite fácilmente particionar y procesar en paralelo. La actividad de cada cuenta en estos sistemas suele ser pequeña, es decir, ningún usuario está ahí sentado en su ordenador ejecutando 50.000 apuestas por segundo.

La vista de mercado es read-only lo que les permite una serie de optimizaciones. El multi-casting es común para enviar el estado de las apuestas a diferentes clientes. Eso funciona para sus clientes de escritorio pero en la web tienen problemas. Ahora mismo utilizan polling. Están intentando migrar a una aproximación basada en streaming y comet pero todavía no estaba acabado.

En cuanto a la transaccionalidad, ahí es donde las cosas se tornan complejas. El objetivo de BetFair era pasar de las 500 TPS a las 50000 TPS. Para ello mantuvieron diferentes rondas de entrevistas con equipos y empresas clave, como puedan ser las compañías que desarrollan los mercados de valor por ejemplo. Pero aparentemente ninguna solución se ajustaba exactamente al modelo de BetFair. Les propusieron una especie de competición para conseguir el motor más rápido (asumo que o bien les pagaron o bien compartiron la propiedad intelectual), y BetFair salió ganando.

Todo el modelo de transaccionalidad se basa en el control programático de las transacciones, lo que muchas veces les obliga a compensar transacciones cuando hay que hacer algún rollback; en el uso de mensajería; y finalmente en el mantener enormes registros de auditoría con todas las operaciones. De modo que si algún servidor o algún agente se cae, puedan replicar todas las acciones que había pendientes.

Respecto a la alta disponibilidad, su reto era que si se caia un agente, tener otro listo para continuar sirviendo peticiones. Básicamente una estrategia activo/pasivo. Sólo uno está ejecutando el mercado en un momento dado, pero si algo falla, el segundo tomará el relevo. Evaluaron numerosas posibilidades (relatadas en la charla), pero al final se quedaron con el log tailing, que básicamente viene siendo que el agente pasivo lee los logs del activo y va replicando todas sus acciones.

Ya al final de la charla dedican unos quince minutos a hablar de como evolucionaron de BetFair a TradeFair y los retos que eso suponía. Partían de su motor, FlyWheel, capaz de ejecutar decenas de miles de transacciones por segundo, pero que sin embargo tenía unos niveles de latencia altos y no consistentes, algo no aceptable para los mercados financieros. Ese fue básicamente su principal reto. Entre las soluciones pues básicamente el intentar evitar la escritura a disco, controlar la recolección de basura y la instanciación de objetos, y también regular sus tasas de transferencia (throttling throughput).

miércoles, mayo 06, 2009

Cheerio Ireland! ¡Hola España!

miércoles, mayo 06, 2009 por Martín

Hace hoy justamente unos 33 meses más o menos, anunciaba por estos lares lo que era el cambio más importante hasta el momento en mi vida. Dejaba mi tranquilo trabajo de 8 a 3 y me iba a Irlanda.

Y hoy, después de esos casi tres años, toca anunciar el regreso (así, con todas las letras, como si fuese un acontedimiento). ¡De vuelta a España! Otra vez en casa. En Betanzos, A Coruña.

Este ha sido un período fenomenal. Todavía recuerdo la emoción al recibir la oferta para irme a Irlanda, del que aún estando tan cerca no tenía ni idea. Con mi inglés de instituto, academia, artículos en Internet y conferencias convencido de que no podía ser tan complicado. Ah, cuan diferente era la realidad; pero claro de eso te das cuenta cuando vas a comprar y te atiende esa cajera de Raheny a la que no has entendido ni una sóla palabra y acabas dándole el dinero con un "cóbrame y déjame marchar que no me estoy enterando de nada". En fin, al final coges el acentillo, y acabas con un acento entremezclas de alguien de Cork (resulta increible, pero un gallego hablando inglés suena exactamente como un nativo de Cork) y un Dub.

Probablemente en este tiempo debería haber escrito muchos más posts sobre la vida aquí. Pero bueno, ya hay mucha más gente que lo hace por mi. y tengo que reconocer además que con el tiempo se fue pasando la novedad, y que como casi todos los españoles en la isla, pues poco a poco le vas cogiendo un poco de aversión a la vida en la isla esmeralda. Quizás sea lo repetitivo de los paisajes y la ciudad; quizás sea que Dublin no es la ciudad más atractiva del mundo para vivir (shithole es un adjetivo muy común entre los nativos para denominarla, y no creo que lo tenga que traducir); o quizás sea simplemente lo que muchos llaman morriña.

Como decía la experiencia ha sido increible. Llegaba a trabajar a una compañía que se dedicaba al Foreign Exchange. "Madre mia. Esto debe ser lo más aburrido del mundo. Ya me buscaré algo si no me gusta", pensaba yo. Pues vaya sorpresa. Me encontré con uno de los negocios más emocionantes y dinámicos en los que puedes trabajar. Market trading, computación en tiempo real, buscar el máximo rendimiento, etc. La verdad es que fue muy divertido. Llegaba a trabajar como "Technical Lead". Casi nada. Con dos cojones, y pensando que sabía inglés y todo. Fue bastante duro al principio. No fue fácil ganarse el respeto de la gente. Un extranjero, que llega a ocupar un puesto de mando, con 28 años cuando la media de la empresa es más de treinta, y cuyo inglés era más de libro que de práctica, pues genera mucho recelo. Pero con los meses y bastante trabajo, pues vas consiguiendo ganarte el aprecio y respeto de la gente, y ahora puedo presumir de haber dejado muchos amigos allí.

Al cabo de un año y medio, tocaba cambiar. Al fin y al cabo Irlanda es un país donde hay tantas empresas que jamás encontrarás en España, que había que probar cosas nuevas. Y decidí, que ya de cambiar pues hacerlo a lo grande. Y ala, a montar una empresa. Como si no tuviese ya problemas suficientes. Con el tiempo fuí aprendiendo que eso de trabarjar por tu cuenta tenía sus cosas buenas y sus cosas malas. Pero sobre todo fue una genial forma de aprender. Aprender sobre economía, impuestos, empresas, contractors, de todo, lo que siempre está muy bien.

Como empresa el destino me llevó a trabajar con dos proveedoras de servicios alrededor de los pagos por Internet y las transacciones bancarias y direct debits. Una era una proveedor de pagos y la otra era una empresa que proporcionaba soluciones alrededor del estándar SEPA. Ambos entornos mucho menos excitantes que el del trading, pero también muy enriquecedores. Y ya se sabe que siempre está bien lo de trabajar para entornos bancarios, que quizás en el futuro tengan dinero otra vez y se pague bien ese trabajo. Lo mejor de estos empleos fue sobre todo la gente que conocí. Me llevo muchos amigos de ahí.

En resumen yo le recomendaría a todo el mundo el salto al extranjero. Aprendes tantas cosas que sólo por eso vale la pena. Haces muchos amigos, te enriqueces muchísimo al conocer, vivir y trabajar con gente de culturas tan diferentes, aprendes otros idiomas, y un largo etcétera. Aunque después la ciudad resulte que era un shithole, no pasa nada. Quizás en estos momentos no le recomendaría a la gente ir a Irlanda ya que la situación económica es realmente desastrosa. Aunque en IT sigue habiendo trabajo, especialmente para las personas que tengan experiencia. Pero, vamos, si tenéis la oportunidad, yo os animaría a dar el paso. Sobre todo si ya tenéis algo de experiencia, lo que os permite coger un puesto un poco mejor pagado, y vivir con algo más de holgura.

Respecto al futuro, pues por ahora ya se verá. Mis objetivos a corto plazo son dedicarme a lo que me gusta, Jobsket, y también descansar. Aprovechar para tomar un poco el sol, que vengo en modo irlandesado y hay que reacostumbrar el cuerpo a la claridad, y simplemente disfrutar de esa extraña libertad que es el no saber lo que vas a hacer mañana.

Y después, pues ya veremos... eso sí, yo sigo por aquí.