La dinámica de la creatividad en el desarrollo de software

La creatividad es crucial en el desarrollo de software, ya que permite resolver problemas complejos e innovar.
La industria ha puesto cada vez más énfasis en la usabilidad del software. Este tema existe desde hace tiempo: en 1995, Microsoft intentó comprar Quicken, el programa de gestión financiera de Intuit, por la asombrosa suma de $1.5 mil millones, principalmente porque los clientes lo encontraban más fácil de usar y entender que el software de Microsoft.
En su libro "Bringing Design to Software", Terry Winograd afirma:
"Cuando los ingenieros de software o los programadores dicen que un software funciona, normalmente quieren decir que es sólido, confiable y cumple su especificación funcional. Estas preocupaciones son, sin duda, importantes. Cualquier diseñador que las ignore corre el riesgo de un desastre.
*Pero esta perspectiva interna, centrada en la función y la construcción, es unilateral. Para diseñar software que realmente funcione, debemos pasar de la mirada del constructor a la del diseñador, tomando el sistema, los usuarios y el contexto en conjunto como punto de partida. *
Cuando un diseñador dice que algo funciona —por ejemplo, la composición de la portada de un libro o el diseño de un conjunto habitacional—, el término refleja un significado más amplio. Un buen diseño produce un objeto que funciona para las personas en un contexto de valores y necesidades, para generar resultados de calidad y una experiencia satisfactoria."
Para resolver los complejos problemas actuales del desarrollo de software, el conocimiento técnico ya no es suficiente.
La creatividad en el desarrollo de software
Quienes practican métodos ágiles se apoyan en el talento creativo de las personas para improvisar soluciones a problemas complejos. El desarrollo de software es un proceso iterativo de descubrimiento. Cada problema resuelto es un paso más cerca de la solución necesaria, y todos aprenden más sobre el negocio y la tecnología.
La programación es compleja, por lo que es probable que la creatividad intervenga en la resolución de problemas.
En un estudio Delphi reciente se identificaron habilidades importantes de ingenieros de software excepcionales. Los expertos de la industria coincidieron en que ser creativo —por ejemplo, abordar un problema desde distintos ángulos— es una habilidad esencial para resolver problemas y vital para tener éxito como desarrollador de software. Sin embargo,
la creatividad es un concepto multidimensional que no es tan fácil de definir como podría parecer.
Manejar la incertidumbre
Decidir exactamente cómo se verá el software durante la fase inicial de requisitos hoy se considera una forma de trabajar bastante antigua y desactualizada. La flexibilidad que los procesos ágiles han aportado al desarrollo de software suele verse como algo positivo para la industria y una excelente manera de construir buen software.
Uno de los componentes del proceso de desarrollo de software son los factores humanos de comunicación y flexibilidad, y todos los problemas habituales que acompañan la entrega de un producto.
Reflexiones finales
La creatividad no tiene por qué ir en detrimento de un proceso confiable y funcional. Del mismo modo que coexisten los métodos ágiles y la programación estructurada, los procesos creativos pueden ser el centro de una estrategia de software que funcione bien en cualquier empresa.