¿Cómo desarrollamos software?

Hace unos días tuve una conversación con una amiga sobre el estado de la industria del software y de la profesión del ingeniero informático. Y me dio por pensar. Recordé las razones por las que, hace dos años, me fui de una gran empresa. No grande porque molara, sino por su monstruoso tamaño. Y me vino a la cabeza una pregunta: ¿cómo desarrollamos software hoy en día? Y la respuesta es lo que voy a tratar de analizar en este post.

Software == Novela

Cuando tengo que explicar a alguien qué es desarrollar software, siempre uso el mismo ejemplo. Escribir software es como escribir una novela. Cuando te planteas escribir una novela, primero debes elegir en qué idioma vas a hacerlo. Llegado a ese punto, tienes que aprender, si no lo conoces ya, la sintaxis de un nuevo idioma. Si quiero escribir en inglés, con aprender palabras en inglés es suficiente, ¿verdad? Evidentemente no. Necesitamos aprender gramática.

Pero, ¿a caso una buena novela sólo es una colección de palabras gramaticalmente bien conectadas? Bueno, yo no soy lector asiduo, de hecho soy bastante paletillo en ese sentido, pero hasta alguien como yo sabe que, tras una buena novela, hay algo más. Toda novela tiene un inicio, un desarrollo y un desenlace. Toda buena novela debe tener una trama con una serie de características que hagan al lector disfrutar de su contenido a cada instante. Imagino que, además, habrá algún tipo de patrón que se pueda seguir a la hora de presentar y desarrollar los personajes, las situaciones que se viven, etc.

En el desarrollo de software pasa algo similar. Para escribir una aplicación no vale con saber Java, Javascript, Objective-C, etc. Tampoco con conocer frameworks. Hay que ir más allá, mucho más allá. ¿Qué hay del uso de patrones? ¿Qué hay del uso de principios más viejos que yo? Y sí, hablo, por ejemplo, del buen uso de la orientación a objetos.

¿Por qué cambiar si lo que hago funciona?

¡Qué gran pregunta! ¿Por qué tengo que cambiar si lo que hago funciona? Esta pregunta tiene una respuesta muy personal, y esa respuesta dependerá de los principios que sustenten nuestro estilo de vida. En mi caso, tengo un ejemplo muy claro. Hace unos días me llegó un pedido de DealExtreme. En ese pedido iba incluido un cable usb y un dock para el iPad. Al recibirlo, muy contento por cierto por el poco dinero que me había costado, pensé: “Vaya, sólo lo que me hubiera costado el dock oficial es más de lo que he pagado por un total de 7 productos en china“. Y sí, la verdad es que mola. Y seguí trabajando.

Al llegar a casa, evidentemente tuve que probar todo lo que me llegó. Ya tuve otras experiencias muy satisfactorias, como cuando compré mi adorado iRig para conectar la guitarra eléctrica al iPhone, al iPad y al Mac. El cable que compré para el iPad era para dar alimentación al dock. La idea es dejar el dock en el salón conectado al home cinema y poder enchufar así el iPad para escuchar mis listas de Spotify. Planes claros, sencillos.

En ese momento cojo el cable, lo voy a conectar al dock y ¡sorpresa! No engancha bien. Tras algo de esfuerzo consigo conectarlo. ¡Bien, prueba superada! Ahora sólo falta enchufar el iPad al dock. Lo enchufo, le doy al play en Spotify y empieza a sonar la música… ¡por el altavoz del propio iPad! Eso es que no ha conectado bien. Toco, empujo, pruebo y veo el problema. El iPad se tumba lo justo para que se desconecte del conector del dock. Sí, hago un apaño y todo funciona a la perfección. Por ahora prueba superada pero, ¿qué pasará en cuanto mueva alguno de los 8978795 cables que tengo tras el mueble de la tele? ¿Y si cambio el iPad por uno de los nuevos con conector nuevo? ¿Seguirá funcionando todo si pongo un adaptador para el nuevo tipo de conector?

¿A caso no importa la calidad?

Creo que tenemos muy interiorizado que las cosas están hechas cuando funcionan, pero en ocasiones dejamos de lado ciertos criterios de calidad, y eso nos hace olvidarnos de algo esencial en el mundo empresarial: los costes en el medio plazo. Hacer un código espagueti es barato y rápido, por lo que, a priori, puede parecer que los costes en el corto plazo sean menores. Y, aunque esto pueda llegar a ser cierto en algunos casos, quizá sea conveniente mirar un poco más allá en el tiempo. ¿Qué pasa si tengo que modificar ese código por un cambio de especificaciones? ¿A caso medimos el impacto económico que tienen este tipo de prácticas?

¿Hemos tenido la oportunidad de modificar un código bien escrito? Yo sí, y desde luego no tiene color. Y eso que estoy muy lejos de hacer un código de excelente calidad.

Nosotros hacemos nuestra profesión

Al final, la profesión no es más que lo que nosotros hacemos de ella. ¿No merece la pena que nos esforcemos por hacer de la ingeniería informática algo enorme? En el Codemotion del año pasado, en una de las charlas más filosóficas a las que he asistido, se hacía referencia a nuestra responsabilidad con respecto a la sociedad, una sociedad cada vez más informatizada y, por tanto, más dependiente de nuestro trabajo. Está en nuestra mano desarrollar productos que sean sostenibles y que, sobre todo, hagan la vida más fácil a las personas que nos rodean.

Anuncios

Acerca de juanmagomez

Acerca de mí tengo un teléfono, mi portátil, el ipad y esas cosas.

Publicado el febrero 1, 2013 en Desarrollo de Software. Añade a favoritos el enlace permanente. 2 comentarios.

  1. Hola JuanMa,

    La mayoría de lo que comentas coincide con mi visión, si bien este es un debate recurrente en nuestra profesión, lo cual ya es un síntoma de que tenemos graves problemas.

    Sería impensable encontrar el debate en el mundo de la medicina, por ejemplo. No se hacen operaciones de cadera con baja calidad o se entregan trasplantes de cornea con funcionalidades que fallan.

    En otras industrias la calidad sí se encuentra limitada pero se enfoca en número de funcionalidades u otras características: un Mercedes no es mejor (si ponemos en la balanza el precio) que un Renault. Cuando compras tu Renault sabes que te ofrece menos extras o que estos son de menos nivel. Pero el coche anda, tiene 5 estrellas, etc. Y si te compras un Dacia no sacrificas que funcione sino extras.

    ¿qué ocurre con la informática / desarrollo de software?

    Pues que existen clientes que consumen mierda. Pagan por mierda, no por calidad y ponen unos precios de mierda, que abren la entrada a desarrolladores de bajo nivel (o de buen nivel pero que aún están aprendiendo). Sí, en España y el mejor ejemplo son las AAPP se paga por desarrollos de poca calidad a precio de saldo.

    En este mercado te encuentras con compañeros que pasan de subir al SVN porque se la suda, o que borran pruebas para que les compile código, o que te entregan cosas a medio hacer. Triste pero como existe mercado, osea demanda, pues se genera oferta, y este es el mundo de los sueldos muy bajos pero donde hay mucha demanda de gente (son los camareros del software, pesadilla en la cocina).

    Lo mejor es, como has debido hacer tú, salir del circulo y buscar el mundo de la calidad que también existe, y rodearte de grandes profesionales donde la gente que no sabe es simplemente que está aprendiendo pero que quiere saber: son los chefs del software, El Bulli o Arzak.

    Vaya tostada de comentario que he clavado… lo iba a poner en mi blog pero merece la pena que quede junto a tu entrada

  2. Hola!
    La verdad es que no creo que sea sólo una cuestión del tipo de demanda, sino que se trata de un factor más a tener en cuenta. Qué nos ha llevado a esta situación? No lo sé, la verdad. Lo que sí sé es que cada vez hay más profesionales, y eso aporta esperanza al sector.
    Y creo que no debemos olvidar que cuanto antes llegue el mensaje de la situación que vivimos, mejor será. Como decimos, falla pronto, falla barato.
    Estoy seguro que poco a poco, con buen ánimo, conseguiremos revertir la situación de la ingeniería del software en nuestro país.
    Un abrazo grande!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: