Desarrollar software es como realizar una película

Tal como se explica en algunos artículos disponibles en la red (como este, este, o este) existen diversas similitudes entre los procesos de desarrollar un determinado software, y la realización de una película desde su concepción inicial. En esta entrada vamos a reunir esas analogías, así como descubrir algunas nuevas.

Rodaje grabando a un programador

Desarrollar software no es únicamente programar

Alguien ajeno a la industria puede pensar que el desarrollo de software consiste únicamente en lo que conocemos como programación: algo así como un conjunto de informáticos más o menos “aislados” del mundo real que se dedican a pasar horas y horas ante sus equipos, tecleando de manera compulsiva hasta que consiguen el programa deseado.

Pero ya sabemos que en la práctica el desarrollo de software es mucho más complejo que eso: son necesarias diferentes fases en el desarrollo de una aplicación, y en ellas intervienen diversos perfiles profesionales.

A grandes rasgos, podemos decir que una aplicación debe pasar por las siguientes fases:

  1. Análisis de requisitos.
    Se analizan las necesidades de los usuarios finales del software para determinar qué objetivos debe cubrir.
  2. Diseño del sistema.
    Se descompone y organiza el sistema en elementos que puedan elaborarse por separado
  3. Diseño de programas.
    Es la fase en donde se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario, así como también los análisis necesarios para saber qué herramientas usar.
  4. Codificación (o programación).
    Es la fase de programación o implementación propiamente dicha. Aquí se implementa el código fuente de los programas que forman la aplicación.
  5. Integración y pruebas.
    Los elementos, ya programados, se ensamblan para componer el sistema y se comprueba que funciona correctamente.
  6. Implantación.
    El software obtenido se pone en producción. Se implantan los niveles software y hardware que componen el proyecto.
  7. Mantenimiento.
    Durante la explotación del sistema software pueden surgir cambios, bien para corregir errores o bien para introducir mejoras.

En función de la metodología concreta, estas fases pueden seguirse de una manera estrictamente secuencial (terminando cada fase antes de iniciar la siguiente), o con variaciones -como realizar varias de ellas al mismo tiempo, o bien realizando iteraciones del ciclo completo (repitiéndolas diversas veces hasta obtener el resultado final). En todo caso, estas son las fases más comúnmente aceptadas, cada una de ellas con sus propias tareas. Y, en cada una de ellas, intervienen diferentes responsables encargados de realizarlas, con sus propios perfiles: analistas, diseñadores, programadores, testeadores, etc.

Como vemos, la creación efectiva de los programas (la programación) es sólo una fase más en el desarrollo del sistema, que requiere de fases anteriores de planificación y preparación, así como de fases posteriores de verificación y puesta en marcha.

Las fases en la creación de una película

Del mismo modo que en el software, una película no se crea únicamente con un grupo de especialistas que se reúnen y empiezan a filmar escenas. La Wikipedia define estas cinco fases en la creación de un film:

  1. Desarrollo.
    Se escribe o adapta un guión para que sirva como proyecto para una película.
  2. Pre-producción.
    Se preparan los elementos necesarios para el rodaje, tanto humanos como técnicos: el reparto, el equipo técnico, las localizaciones, etc.
  3. Producción.
    Se graban las secuencias de la película (el rodaje).
  4. Post-producción.
    La película se edita, seleccionando y ordenando las secuencias que formarán la versión final y añadiendo elementos como la banda sonora, efectos de sonido y especiales, etc.
  5. Ventas, distribución y exhibición.
    La película se presenta a posibles compradores (distribuidores) que, en el caso de elegirla, serán los encargados de que llegue a los espectadores a través de diferentes medios: cines, sistemas domésticos, etc.

Por supuesto, las diferentes fases son realizadas por personal especializado en determinadas tareas y cuyos trabajos están muy delimitados: guionistas, productores, directores, actores, directores de fotografía, y un largo etcetera.

Rodar un software; programar una película.

Con estas descripciones, las analogías entre ambos procesos son obvias.

En cuanto a las fases, es evidente que los procesos de implementación (programación en un caso; rodaje en el otro) necesitan de:

  • una fase previa de preparación, definiendo claramente qué, cómo y quién va a realizar cada tarea;
  • una fase posterior de puesta en marcha, verificando que el resultado final es el que se había planificado.

La especificación de requerimientos o el guión de la película son elementos básicos (si no los más importantes) en ambos procesos; unos requerimientos erróneos o mal especificados, o un mal guión, llevarán casi inevitablemente a una aplicación poco útil o a una película fallida.

Por otro lado, diferentes perfiles de técnicos son responsables de cada las tareas en cada caso. Si tuviéramos que establecer analogías entre ellos, podríamos decir que:

  • El guionista sería el analista de sistemas: define las líneas generales de lo que se va a crear.
  • El director sería el jefe de proyecto: coordina y vigila que el resto de responsables realicen su trabajo.
  • Los actores serían los programadores: llevan a cabo el trabajo efectivo. Quizá podríamos incluir también a los responsables de las cámaras en el rodaje.
  • Los editores serían los testeadores: revisan el trabajo realizado.

¿Quienes son entonces los clientes, y cuáles son sus objetivos? Si consideramos que los clientes son los que financian económicamente el proceso (los productores, o los que encargan el software), sus objetivos serán normalmente obtener los mayores beneficios económicos.

Pero si consideramos que los verdaderos clientes son los consumidores del producto final (espectadores de la película, o usuarios de la aplicación), es posible que los objetivos sean diferentes: crear un producto de calidad o entretenido en el primer caso; crear un software que resuelva las necesidades de los usuarios en el segundo. Es seguro que una indefinición clara de quién es el cliente es fuente de problemas en ambos casos.

En todo caso, podemos considerar que tanto en la realización de filmes como en el desarrollo de software, un producto bien terminado es aquel en el que sus diferentes aspectos se integran de modo natural, sin que ninguno de ellos destaque especialmente. Si en una película destacamos únicamente la fotografía, o en un software sólo podemos hablar bien de sus iconos, es que algo falla.

Diferencias

No hay que olvidar que la creación de una película es un proceso que tiene un componente artístico mucho mayor que el desarrollo de software. Por tanto, a pesar de que ya hemos visto que los clientes pueden no estar bien definidos en ambos casos, podríamos decir que en el caso del software los objetivos van casi siempre en el mismo sentido: un producto que funciona bien y resuelve los problemas de los usuarios será un producto que dará beneficios económicos.

No ocurre lo mismo en el caso de las películas: estaremos todos de acuerdo en que un film que proporciona grandes ingresos económicos no tiene por qué ser un producto de calidad. E, inversamente, una película alabada por la crítica obtiene, a menudo, pobres resultados económicos.

Además, el hecho de que las películas se puedan considerar (al menos, en parte) un producto cultural hace que en muchas ocasiones obtengan fuentes de financiación extras: por ejemplo, subvenciones en determinados países de ministerios o de organismos autonómicos. Eso complica aún más la definición de quién es el cliente.

Otra diferencia importante: mientras que una película, una vez finalizada, se convierte en un producto terminado definitivamente (dejando de lado montajes y secuelas), difícilmente se puede considerar un software como terminado. Lo más habitual es que este último necesite nuevas versiones y parches que resuelvan problemas detectados, o que implementen funcionalidades adicionales; el software sigue modificándose de modo casi indefinido.

¿Y qué decir del papel de los programadores, comparado con el de los actores y actrices? Estos últimos son los verdaderos astros del cine, los más conocidos y reconocidos. Pero, salvo muy contadas excepciones, los programadores son por lo general totalmente desconocidos incluso para los más impenitentes usuarios de sus programas. Y no sólo en cuanto a popularidad: mientras que los actores son habitualmente los profesionales mejor pagados en el mundo del cine, es lo contrario en el caso de los programadores, que suelen ser los que más bajos se encuentran en la escala salarial, así como los más prescindibles.

Un paso más allá

Las diferentes profesiones que intervienen en una película son más o menos populares gracias, en gran medida, a los premios cinematográficos (quien dice “premios cinematográficos” dice Oscars de Hollywood). Los premios al software no son tan populares, y mucho menos los que premian aspectos específicos de su desarrollo (cuando existen). ¿Sería posible hacer más popular el proceso de desarrollo de software dando premios “a los mejores requerimientos”, o “a la mejor programación”?

Por otro lado, ¿qué ocurriría si una película pudiera rodarse iterativamente? ¿Si no tuviera una versión definitiva, sino que se modificara continuamente? He aquí un campo interesante para la experimentación (si es que no se ha explorado ya).

Fuente: http://metaeuforias.es

2 respuestas a Desarrollar software es como realizar una película

  1. jordisan dice:

    Este artículo es una copia literal (plagio) del que se encuentra en http://metaeuforias.es/desarrollar-software-es-como-realizar-una-pelicula/

    Deberías respetar a su autor, publicando como máximo un EXTRACTO del artículo, y añadiendo una referencia y un ENLACE al artículo original.

  2. EMILY MARTINEZ HERNANDEZ dice:

    Es muy interesante la informacion lo siento el no poder escribir mi sitio web a un no esta concluido pero espero que ya este listo lomas pronto posible.

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: