La programacion como Construcción de Teoría

Santiago Quinteros - CEO & CTO - Software on the road
By:
Santiago Quinteros

Introducción

He estado involucrado en más de una docena de proyectos, todos ellos con diversos grados de éxito; una cosa que puedo asegurarte es que los mejores proyectos (o aquellos que tienen más probabilidades de tener éxito) son aquellos donde todo el equipo, incluyendo desarrolladores, mercadólogos y la fuerza de ventas, tienen un profundo entendimiento sobre el producto y el problema que se está resolviendo.

Esto es simplemente señalar lo obvio: cuanto más contexto sobre las características y beneficios de la fuerza de ventas, mejor pueden hacer su trabajo.

Pero a menudo se pasa por alto la importancia de explicar el problema completo en juego a los desarrolladores, no solo las "soluciones" planificadas para construir.

Permíteme aclarar con un ejemplo: mi empresa, Software on the Road, trabaja con muchas startups, generalmente construyendo un prototipo o MVP para que prueben el mercado, pero los fundadores de startups, en su falta de experiencia, a menudo intentan apuntar a características bastante inútiles que no agregan valor al cliente.

Es por eso que siempre trato de obtener un profundo entendimiento del problema a resolver y los dolores del cliente, y así planificar el futuro del proyecto.

Y a veces no quieren escuchar mi opinión; después de todo, no soy un fundador de startup, solo soy un ingeniero de software...

El trabajo de Peters Naur - Construcción de Teoría

Me he encontrado con este papel de Peters Naur, que afirma que aceptando que los programas no solo tendrán que ser diseñados y producidos, sino también modificados para satisfacer demandas cambiantes, se concluye que el objetivo propio y primario de la programación no es, producir programas, sino hacer que los programadores construyan teorías sobre la manera en que los problemas en cuestión se resuelven mediante la ejecución del programa.

Qué es la construcción de teoría?

La construcción de teoría es el proceso mediante el cual los programadores desarrollan un profundo entendimiento y perspicacia sobre el problema que están intentando resolver con su programa.

Esto implica no solo escribir código, sino también crear una teoría o marco sobre cómo el programa interactuará con y resolverá problemas del mundo real.

La teoría construida por los programadores guía sus decisiones de diseño, les ayuda a explicar y justificar sus elecciones, y les permite modificar el programa de manera efectiva según sea necesario para adaptarse a circunstancias cambiantes.

Sugiere que la programación es más que solo escribir código: se trata de desarrollar un profundo entendimiento del dominio del problema y crear una solución que se alinee con ese entendimiento.

Por qué es importante?

Porque permite a los programadores desarrollar un profundo entendimiento del programa en el que están trabajando.

Al construir una teoría, los programadores pueden explicar cómo el programa se relaciona con actividades del mundo real, justificar decisiones de diseño y hacer modificaciones efectivas al programa.

La construcción de teoría también ayuda a los programadores a crear una estructura de programa coherente y efectiva, lo que lleva a una mejor calidad y mantenibilidad del programa a lo largo del tiempo.

Bueno pero por qué debería importarme?

Como desarrollador de software, con qué frecuencia has creado características que no eran importantes o no agregaban valor al producto?

Al final del día, somos responsables de crear el producto que nuestro Empleador (o cliente, en mi caso) vende. Los productos dañinos no se venden.

Además, imagina escalar un equipo de 3 devs a 100, realmente necesitas establecer un plan, tener documentación, construir una teoría, sobre el problema que el software está resolviendo.

Las reglas de oro

  1. La programación debe ser vista como una actividad donde los programadores forman una teoría sobre los asuntos en cuestión, en lugar de simplemente producir un programa.

  2. La teoría construida por los programadores es esencial para comprender y modificar los programas.

  3. La calidad del trabajo de un programador está relacionada con la coincidencia entre su teoría del problema y su teoría de la solución.

  4. La teoría mantenida por los programadores trasciende lo que se registra en la documentación.

  5. Las modificaciones del programa requieren una determinación de similitud entre la solución existente y las nuevas demandas.

  6. La Vista de Construcción de Teoría enfatiza la importancia de que los programadores posean la percepción adecuada.

  7. La actividad intelectual en programación implica construir y tener una teoría, no solo seguir reglas.

  8. Los problemas en la modificación de programas surgen al ver la programación como producción de texto en lugar de construcción de teoría.

  9. La decadencia de un texto de programa puede ocurrir cuando se hacen modificaciones sin una comprensión adecuada de la teoría subyacente.

  10. Entender la programación como construcción de teoría puede ayudar a superar conflictos y frustraciones en la actividad de programación.

Cómo implementar la Construcción de Teoría en tu proyecto u organización

Para implementar la construcción de teoría en tu proyecto, puede ser necesario enfocarse en desarrollar una base teórica sólida para tu trabajo de programación.

Enfatizando la importancia de comprender el dominio del problema y cómo tu programa interactúa con él.

Esto puede requerir una colaboración estrecha entre los miembros de tu equipo para asegurar que todos compartan una comprensión común de la teoría detrás del programa.

Además, documentar tus decisiones de diseño y la justificación detrás de ellas puede ayudar a transmitir la teoría de tu programa a los futuros desarrolladores, asegurando que puedan construir una teoría precisa del sistema.

Usar metáforas y explicaciones claras también puede ayudar a transmitir la teoría subyacente de tu programa a otros.

En general, implica fomentar una cultura de comprensión y desarrollo de teoría entre los miembros de tu equipo, asegurando que todos tengan una visión profunda del programa y su relación con el mundo real.

Referencias

Peter Naur, Programming as Theory Building (1985)

Get the latest articles in your inbox.

Join the other 2000+ savvy node.js developers who get article updates. You will receive only high-quality articles about Node.js, Cloud Computing and Javascript front-end frameworks.


santypk4

CEO at Softwareontheroad.com