Artículos que son como… metáforas

METAeuFORiAS

¿Qué es
desarrollar software
? ¿Qué es
realizar una película
?
Mie, 27-Ago-2008

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).

¿Qué otras analogías interesantes podríamos encontrar entre estos dos mundos?

Valora esta metáfora:

1 Star2 Stars3 Stars4 Stars5 Stars (9 votes, average: 3,44 out of 5)
Loading...
 

10 comentarios to “Desarrollar software es como realizar una película”

  1. Interesante… ¿alguna idea sobre cómo se podría hacer una película “iterativa”?

  2. Lord Nivaar dijo:
    Jue, 28-Ago-2008 10:05

    Acaso el cine no es iterativo?

    De muchas peliculas se han rodado nuevas versiones, respetando el guión original o con ligeros cambios, y otras se han “re-masterizado” para mejorar su calidad de imagen y sonido y adaptarlas a nuevos soportes.

  3. Muy buen artículo. Me gustaría añadir un par de comentarios:
    – Dado que el software se produce de manera artesanal está más cerca del arte que de la industria (aunque el público general no sea consciente de eso).
    – La no consideración de “estrellas” a los programadores provoca que en informática se ascienda hasta el nivel de incompetencia; y esto a su vez está provocando que algunas empresas reconozcan (salarialmente) la importancia de los programadores haciéndolas de algún modo “estrellas”.

  4. Una película iterativa… sería algo así como una película en la que se pueden volver a realizar (en parte) todas las etapas, desde la fase inicial (el guión). Es decir, en función del resultado final, alguien (¿el director? ¿el productor?) decidiría volver a rodar determinadas escenas, o incluso reescribir partes del guión, todo para corregir errores o mejorar el film.

    Esto iría más allá de lo que se hace actualmente: nuevas versiones sobre el mismo guión, o montajes diferentes a partir del mismo material (pero sin reescribir el guión o rodar nuevas escenas).

    No cabe duda de que sería complicado, por motivos económicos (sería muy costoso adaptar continuamente el guión y rodar las escenas correspondientes) y artísticos (¿quién decide qué cambios hay que hacer?).

    esauro, es cierto que alguien que hace muy bien su trabajo (por ejemplo, un programador) debería poder aspirar a mejorar sus condiciones sin tener necesariamente que “ascender” a otro puesto en el que puede que no se maneje tan bien (analista, jefe de proyecto, …). Por desgracia, el principio de Peter está muy arraigado y es difícil luchar contra él.

    Del mismo modo, los buenos actores no necesariamente tienen que pasar a ser directores para ser más reconocidos, aunque haya algunos casos en los que incluso se superan en esta última faceta (¿alguien ha dicho Clint Eastwood?).

  5. Menos mal que la analogía es en una dirección, por que si rodar películas fuera como desarrollar software, el séptimo arte entraría en su cenit. Creo que teóricamente es una buena comparación y tiene su punto de humor (ya me veo con mi teclado en pósters colgados en las habitaciones de las chicas adolescentes y no tanto). Creo que deberan pasar generaciones para cambiar la mentalidad de los que están arriba de las pirámides hasta que comprendan que aplicar una metodologia a la hora de crear/hacer software es altamente rentable.

  6. […] Desarrollar software es como realizar una película […]

  7. Francisco dijo:
    Jue, 25-Sep-2008 1:27

    Me parece una analogía pobre. Las modernas metodologías de desarrollo (XP, Scrum, etc.) hacen que las “fases” de desarrollo de software se mezclen y se repitan durante un proyecto. En cambio, la producción “ágil” de una película simplemente no existe. Cuando se acaba el rodaje, no se puede volver a realizar porque la preproducción es muy costosa, y si un director decide repetir escenas, se gana un gran regaño del productor por hacerlo perder plata. Y las remasterizaciones y nuevas versiones no clasifican, porque éstas se hacen fuera del ciclo normal de realización de películas. Nunca se vuelven a llamar guionistas, actores o utileros para hacer una nueva versión.

    Y ya que hablamos de productores, ¿porqué no se menciona al productor en la analogía? Este es un papel muy importante en el cine, ¿cuál sería su equivalente en el software?

    Por último, es un gran error decir que los editores revisan el trabajo realizado. Esto lo hace el director o el asistente al revisar lo filmado en el día. Los editores, de la mano con el director, seleccionan y organizan las escenas filmadas para crear la película propiamente dicha. Por lo tanto, no hay forma de asociar la labor de los editores con la de los probadores o testers.

    En general, me parece una analogía forzada y débil, como intentar encajar un cuadrado en un círculo.

  8. Francisco, todas la analogías tienen sus puntos débiles, pero sería interesante que leyeras el artículo completo antes de escribir tus comentarios.

    Empezando con lo último (“el gran error”), la revisión de lo filmado en el día podría considerarse testeo unitario, pero el testeo de sistema se realiza con el trabajo completo. Si no es el editor (en colaboración o no con el director), habría que preguntarse quién es.

    Eso sí, lo que señalas en cuanto a que las fases del desarrollo de software se mezclan y se repiten, cosa que no ocurre en el cine, ya está comentado en el texto como una diferencia. De acuerdo, ahora mismo no ocurre en el cine, pero ¿qué ocurrirá cuando sea más sencillo regrabar y redistribuir una película? Por ejemplo, en las de animación… ¿Estamos seguros de que no se harán cambios sobre la película según, por ejemplo, sus resultados en taquilla?

    Por último, dices que no se menciona al productor en la analogía; te equivocas. En un párrafo se plantea quiénes serían los clientes, y se identifica a los productores con los que encargan el software.

    Ninguna analogía es perfecta, pero que tenga debilidades no quiere decir que sea inútil. Y de las diferencias también se pueden extraer debates interesantes.

  9. […] Desarrollar software es como realizar una pel?cula http://metaeuforias.es/desarrollar-s…-una-pelicula/ Don Quijote de Nicaragua. Elder […]

  10. Nombre (obligatorio) dijo:
    Mar, 24-Nov-2009 2:55

    Se rescata que
    1.-Las analogías no son identidades, son analogías, fuertes o débiles.
    2.-Nunca faltan los sabiondos, que ignoran de lo que hablas. Es un foro de analogías no de diferencias. Se creen que por mencionar diferencias agregan información. Por otro lado, no creo que contestar un foro sea un informe periodístico o científico. Es un lugar donde se opina.
    3.-Creo, desde mi ignorancia, que se pueden ver las conexiones entre las peliculas y los programas, en la utilización de programas que crean archivos, que justamente se denominan, peliculas. Los archivos con extensión “.swf” que hoy por hoy son utilizados para crar los baners de publicidad. Los que te desafían a jugar y ganarle a la computadora en juegos de poco vuelo, con los que se interactúa con las teclas o el mouse, los cuales cuando les ganas, te envían a otra página web. Dichos archivos “.swf” se incrustan dentro de la html y se las conoce como PELICULAS INTERACTIVAS.
    4.-Las computadoras son unas cajitas con un monitor, igual que una televisión.
    5.-Ademas, tienen teclados y mouse, con los que se puede interactual.
    6.-Las computadoras tienen parlantes, como la televisión.
    7.-Los servicios de televisión hoy ofrecen mayores posibilidades de interacción, grabar una pelicula con el control remoto, pregntar la programaciòn de un canal.
    8.-Hoy los controles remotos de tv tienen màs botones que una calculadora cientifica. Y cada vez se parecen más al teclado de la computadora.

Opina sobre esta metáfora