¿Qué porcentaje del trabajo de ingeniería de software es intelectualmente ‘no interesante’?

Tal vez 10-20% si lo estás haciendo bien. 🙂

Esto depende de usted y su gerente. Aborde los problemas que buscan la oportunidad de aplicar buenos principios de diseño de software y casi todo será intelectualmente interesante.

“Las tres principales virtudes de un programador son: la pereza, la impaciencia y la arrogancia “. – Larry Wall

Digamos que necesitas crear archivos make para un proyecto construido desde 10 bibliotecas. Puede elegir entre dos enfoques:

1) Puedes escribir el archivo make para cada biblioteca individualmente. Esto significa que cuando algo cambia en el proceso de construcción, tienes que actualizar cada uno de ellos. (Ciertamente has violado el principio DRY.)

2) Por otro lado, puede profundizar en las capacidades de GNU Make, factorizar las partes comunes a un archivo que se incluye en todos los archivos make de las bibliotecas individuales y solo se establecen algunas variables en cada una.

Probablemente te llevará más tiempo crear el segundo tipo de sistema de compilación. Sin embargo, el mantenimiento y los cambios serán mucho más rápidos para el # 2 que para el # 1.

# 1 es intelectualmente poco interesante y menos costoso a corto plazo. # 2 es intelectualmente interesante y menos costoso a largo plazo.

Las pruebas manuales son tediosas, aburridas y propensas a errores. El desarrollo dirigido por pruebas junto con las pruebas de regresión automatizadas son interesantes y solo tiene que resolver el problema una vez.

Cuando era un estudiante universitario, pensé que las bases de datos no eran intelectualmente intelectuales sin interés. Sé que considero que el trabajo de base de datos es uno de los aspectos de diseño más desafiantes e interesantes.

Del mismo modo, pensé que la notación big-O era solo para el mundo académico cuando era un estudiante universitario. Después de todo, ya había escrito cientos de programas y no sabía nada acerca de la notación big-O. Ahora el análisis de la gran O me dice si un enfoque particular para resolver el problema es incluso factible.