miércoles, marzo 24, 2010

Programas "Made In China"

miércoles, marzo 24, 2010 por Martín


Hoy he tenido una conversación que es bastante recurrente en esto del mundo de Internet. Básicamente el argumento sería el siguiente:

"Es que hoy por hoy en Internet yo puedo construir cualquier servicio desarrollado por 3 o 4 programadores llevándolo a China, Europa del Este o Uruguay. Por el sueldo que pago yo aquí en España puedo tener un crack allí."


(vaya por delante una nota, y es que yo soy español pero todo lo que voy a comentar en esta entrada sería igualmente aplicable a una empresa uruguaya, china o de europa del este que quisiera hacer offshoring en España, Portugal o Malta por decir algo)

A más de uno seguro que os suena el argumento. Típico caso de offshoring. El problema de estos argumentos es que siempre vienen de gente que no tiene ni idea de desarrollo de software y se creen que pueden encargar un container de líneas de código y listo, a vender. La realidad es que sí que lo pueden hacer, pero como en la mayoría de los casos sucede lo mismo que pasa con cualquier otra importación de bienes, lo bien que te salga la jugada dependerá de lo que quieres recibir y la calidad que necesitas. Por ejemplo, traerse programas de fuera tiene sentido cuando:


  • Se trata de pequeñas porciones de código, componentes muy concretos y aislados, plantillas, diseños web para trabajos muy concretos, y en definitiva cualquier llamémosle software que pueda ejecutarse o integrarse con facilidad y no requiera de ningún tipo de mantenimiento adicional o necesite únicamente un mantenimiento a corto plazo. Por ejemplo, encargar un reproductor de vídeos, o un visor flash de cadenas para una joyería (como un amigo mio), o una plantilla para el blog corporativo se me antojan como tareas sobre las que no necesitas llevar demasiado control.

  • Cuando no requieras ningún tipo de propiedad intelectual o no te preocupe que te copien. Tenlo claro. Si encargas un diseño a una tienda offshore no te esperes demasiada exclusividad en el resultado. Si encargas un programa para gestionar torneos de pádel, no te extrañe que después otra web tenga un programa como el tuyo (bueno, siendo optimistas, siempre puedes intentar firmar algo con ellos y confiar en que tu abogado sepa de chino en caso de que te copien).

  • Cuando no necesites mucha calidad en el resultado. Cualquiera que haya trabajado con este tipo de factorías ya lo sabe. Yo he tenido tres experiencias. Y los resultados han ido desde desastroso hasta aceptable. Pero siempre que se ha querido un plus de calidad ha sido necesario el poner fondos extra y apretar. Pero es que es normal. Hay gente que se piensa que contrata esclavos chinos que viven en una nave en la que en lugar de máquinas de coser tienen PCs encendidos todo el día, ahí con el Eclipse, y al final la mayoría de las veces son trabajadores asalariados que harán lo mínimo necesario para terminar la tarea. Así que muchas veces o aceptas y te fías con lo que te ofrecen o no te queda otra que supervisar.

  • Cuando necesitas un prototipo sucio de algo y no te importa la calidad. Simplemente necesitas el tener algo que presentarle quizás a un inversor, o para lanzar y ver si hay mercado, etc. Es decir, cuando tienes muy claro de antemano el que si la cosa va para serio, tendrás que contratar gente y rehacer todo desde cero.



En cualquier otro caso, olvídate. Cualquier desarrollo complejo necesita que seas dueño de él, de uno u otro modo. Tendrás que mejorarlo, ampliarlo, mantenerlo. Querrás algo que no esté fallando continuamente. Algo de calidad. Algo que sea resistente, algo que sea predecible. Seguramente necesitarás un produto que funcione para cien usuarios y siga funcionando para cien mil, o por lo menos que se pueda ampliar sin tener que empezar desde cero. El desarrollo de software es algo muy intelectual, no es como fabricar sillas en china.

Recuerdo un caso, en una empresa de las que estuve, en el que el desarrollo era complejo, pero como era un poco marroncillo tuvieron la genial idea de llevárselo a la India. Era como un merge especial de nuestro producto, que nadie quería hacer, así que nada, para allá se fue. Como había muchísima pasta, asumieron que con un ejercito de desarrolladores en la India podrían solucionar el problema rápidamente. Cuando me fuí, habían pasado ya tres años desde que empezara el proyecto. El resultado era seis millones de euros gastados, un proyecto sin ninguna traza de terminarse, un equipo en la India con decenas de personas que había rotado ya en más de tres ocasiones y no quedaba absolutamente nadie del equipo original y un banco muy cabreado. Eso sí, cuando se mandaba a alguien de visita a intentar poner algo de orden, siempre traía anécdotas muy graciosas.

Sinceramente, a parte de los casos que expongo arriba, el único modo que se me ocurre para que una externalización de este tipo funcione, es el que tus socios sean de otro país. Es decir, si tienes un socio en Venezuela por ejemplo (o si eres de Venezuela y tu socio es de España, para que no haya malentendidos), entonces la situación es diferente. Porque esa persona/equipo se beneficiará de lo que hace con algo más que un simple salario de esclavo. Un equipo que desarrolle un producto y qe por ejemplo adquiera los derechos de explotación y comercialización en su continente, aunque sea a comisión, va a ser muchísimo más productivo y tendrá mucha más responsabilidad que otro equipo que simplemente se dedique a mandarte líneas de código en un barco.

Me gustó también mucho lo que nos comentaba Carlos Espinal, en Seedcamp, y era que su compañía sólo invertía en empresas que fuesen dueños y productores de sus propios productos. Es decir, que si eras una startup con 2 MBAs que tenían una fantástica web creada en Polonia por cuatro dueros, ya podías ir saliendo por la puerta. La principal razón, nos comentaba, era porque ¿qué iba a pasar cuando no tuvieses más dinero para comprar fuera? Se trata de una visión mucho más economista, pero no deja de ser cierta. Si los desarrolladores no son parte del equipo, no son socios, o simplemente trabajan por un simple salario. ¿Qué vas a hacer cuando se acabe el dinero? ¿Quién va a programar? ¿Vas a pedirnos más dinero? ¿Y si no hay dinero, ya se ha acabado el proyecto?

Por cierto que yo no he podido ir a la charla pero todo esto que escribo, si no me equivoco está bastante relacionado con lo que cuentan este fin de semana David Bonilla y Jerónimo López en su HumanWare, o explicado con sus propias palabras: "Un programador no es un botijo".

Y no me enrollo más. Seguro que más de uno tiene experiencias que compartir. ¡No dudéis en comentarlas!

comments

8 Respuestas a "Programas "Made In China""
Ibon Urrutia dijo...
14:24

Estoy de acuerdo con lo que planteas, pero creo que el problema es la falta de supervisión de un proyecto, sea en China o en la habitación de al lado. Que los programadores estén en China hace que la supervisión sea aún más difícil y de ahí los problemas de off-shoring.
Lo digo porque conozco de cerca una experiencia en la que la empresa de desarrollo no es que fuese un socio de otro país, sino una sucursal, y ni aún así la cosa funcionó.
Puedes estar yendo cada mes a controlar lo que pasa o mantener video-conferencias cada semana, que la cosa va a ir mal como no haya nadie que CADA DÍA se preocupe de la marcha del proyecto.
Me acuerdo de un chiste de un humorista argentino que decía que todo lo malo pasa "a poco": uno no se queda calvo de un día para otro, ni se levanta un día con 20 kilos más. Y los proyectos se van al carajo "a poco" ;-)
Salu2
PD: Justo ayer he visto "Lost in la Mancha" sobre la fallida película de Terry Gilian sobre el Quijote(joooder si un proyecto de software nos parece complicado). Y uno de los tantos fallos de producción que tuvieron era que los actores, vestuarios y componentes del equipo estaban desperdigados por el mundo.
El documental es GENIAL: cuando las barbas de tu vecino... ;-)


jcesarperez dijo...
20:25

No hace falta irse a China.
Aquí en España, La Compañia Verde ya ha trasladado una buena parte de sus proyectos de mantenimiento de La Super Telco Española a un centro en Murcia.

Aquí no somos chinos, por mucho que nos guste el limón, que las instalaciones parezcan talleres, que el sistema de mando esté lleno de gente que no tiene ni idea de desarrollar software. Eso sí, los resultados son los mismos que si se los hubieran llevado a China, India o Sudamérica (como hacian antes). Duré 3 meses y eso que mi equipo era el único que no echaba horas de más.

Y es que, efectivamente, el problema viene de arriba...

Enorabuena por el post.


Diego Parrilla dijo...
11:36

Tengo la sensación cuando leo entradas como estas en los blogs de cierta prepotencia. Hace unos diez años escuchaba estas mismas cosas de desarrolladores americanos sobre las habilidades de los 'españoles' para el desarrollo de software.
Pensar que en China, India, Filipinas, Europa del Este o el Sur de América no están cualificados para desarrollar software es una gran tontería. Pero muy grande. Incluso estadísticamente se puede argumentar que son mejores que nosotros.
La diferencia entre un proyecto con éxito y otro que fracasa es la capacidad que tienen los equipos para hacerlo 'suyo'. Aquello que nos decían nuestros papás de tener 'amor propio' en el trabajo que realizamos. Por desgracia, hay muchos factores que hacen que la gente no se identifique con el trabajo realizado.
Reconozcámoslo, sacar un proyecto adelante no tiene nada que ver con la excelencia técnica sino con la capacidad de resistencia a las adversidades. Y no hablo solo de desarrollo... La excelencia es un añadido maravilloso, pero no la clave del éxito.


Jorge Uriarte dijo...
11:59

"Tengo la sensación cuando leo entradas como estas en los blogs de cierta prepotencia."
"Reconozcámoslo, sacar un proyecto adelante no tiene nada que ver con la excelencia técnica sino con la capacidad de resistencia a las adversidades"

Diego, el tema no es la prepotencia sino la distancia (organizativa, cultural, de responsabilidad, implicación, etc...)

Y en gran parte, la prepotencia está en asumir que, efectivamente, los equipos de desarrollo son "botijos", y que un botijo más barato sigue siendo un botijo...

Casi todas las empresas de offshoring se basan en "pirámides" de costes, venta de horas a destajo, y en diluir las responsabilidades en los (muchos) fallos que el cliente cometerá tanto al describir lo que quiere como al controlar los desarrollos como al recibirlos.

Los casos de éxito que conozco se han basado siempre en integrar al equipo remoto con el local, en considerarlos *un* solo equipo, y en co-responsabilizarlos del éxito. Claro, que eso resulta más caro, pero es que nadie da duros a cuatro pesetas...


Diego Parrilla dijo...
12:07

@Jorge,

la prepotencia es pensar que por haber nacido/estudiado en un lugar eres mejor que otro para hacer ciertas cosas. Hay diferencias culturales, por supuesto que si, pero no justifican que se haga un proyecto en un sitio o en otro.

Que un chino cobre la quinta parte del salario de un europeo no significa que sea cinco veces peor. Así que a ponerse las pilas!


Martín dijo...
12:17

Diego, puede ser jejeje. Pero por eso ya puse en negrita:

"(vaya por delante una nota, y es que yo soy español pero todo lo que voy a comentar en esta entrada sería igualmente aplicable a una empresa uruguaya, china o de europa del este que quisiera hacer offshoring en España, Portugal o Malta por decir algo)"

No sé si quizás el post deriva después demasiado hacia el tema costes. Pero mi intención es más el reflexionar sobre el tema ownership, la escalabilidad operacional/humana, el ser capaz de evolucionar lo que has hecho respecto al evolucionar lo que te han hecho. El cuánto puede valer más un programa hecho en casa respecto a un programa que es una caja negra para ti; o cuando vale la pena contratar este tipo de programas.

Por mi parte, creo que prepotencia ninguna. Yo he trabajado con software factories polacas donde algunos desarrolladores eran al menos tan buenos como yo, y que cobraban diez veces menos. Pero yo creo que de esa mera diferencia de costes al resultado de mantener un programa hecho por ti mismo o hecho a 10.000 km sea en polonia para españoles, o en España para polacos, hay un gran trecho.


Ibon Urrutia dijo...
13:07

Pues yo ya empiezo a estar harto de la actitud contraria:
"Incluso estadísticamente se puede argumentar que son mejores que nosotros."
Si se puede argumentar, se argumenta. Pero tampoco los españoles son más chapuceros que nadie (y hablo de suecos, ingleses y mexicanos, que conozco de cerca y de cosas ALUCINANTES que podría contar).
Así que menos complejos.
Salu2


GiaNU dijo...
15:03

Creo que, como dice Martin, es un tema de ownership. Si España/EEUU/Quien_sea decide enviar el desarrollo offshore ya esta demostrando bastante el poco interes que tiene por el proyecto. Entiendo que detras hay un tema de costes y que enviarlo a India o Sudamerica resulta en una reducción importante de lo que hay que pagar...pero el costo final termina siendo mas alto. He trabajado en esa modalidad y las personas que estan en offshore dificilmente terminen entendiendo el negocio del cliente y mucho menos preocupandose por el bienestar general del proyecto...¿Por que? en mi caso particular puedo decir porque quien enviaba el trabajo a offshore poco estaba interesado en el negocio del cliente, sino mas en el negocio de si mismo.