¿Cuál es un consejo contra intuitivo para construir un buen software?

Un gerente mío hace muchos años me dijo que solo hay tres variables en la creación de software: funcionalidad (lo que hace), recursos (personas, $) y tiempo (cuánto tiempo lleva). Dijo que el cliente puede elegir dos, pero el desarrollador debe insistir en elegir el último. Esta fórmula casi funcionó hasta que profundicé y me di cuenta:

1) El cliente casi NUNCA sabe realmente lo que quiere. E incluso si lo saben, cambiará y cambiará y cambiará nuevamente. Entonces, la regla aquí es que los requisitos cambiarán constantemente durante la vida útil del software. Cuando los requisitos dejan de cambiar, el código está efectivamente muerto. SO … esto significa tambalearse gradualmente hacia la claridad con frecuentes construcciones parciales. Haga que algo funcione rápidamente, incluso si es solo una demostración de lo que está por venir. Cree su software para que pueda cambiar con los requisitos cambiantes. Mira lo que el tío Bob Martin tiene que decir sobre esto.

2) Olvídate de sitios web, bases de datos y redes. Son artefactos que no tienen nada que ver con la funcionalidad subyacente de lo que está construyendo. Una versión de línea de comando que toma entrada y produce la salida correcta te lleva al 80% del camino. Luego puedes usar un sitio web y una base de datos. Vienen al final, no al primero.

3) Plan para fallar. El fracaso es cómo usted (y yo) aprendemos. Falla temprano y falla a menudo. De esa manera aprendes lo que no funciona. El cliente puede ver el fracaso como una debilidad, pero lo contrario es cierto. Un cliente que no está preparado para fallar es un almacén de explosivos que espera un partido. Si el cliente tiene miedo de fallar, enséñele que el fracaso es realmente un éxito. Muéstreles cómo el fracaso de un enfoque le enseña a hacerlo mejor. Y eso lleva a la conclusión:

Mejores triunfos rápidos. Mejores triunfos baratos. Mejores triunfos en casi todo, así que cada día, hazlo mejor.

¿Un consejo contra intuitivo? No conozco tu “intuición”, así que no sé qué sería contra-intuitivo para ti, pero puedo darte un ejemplo que fue contra-intuitivo para mí.

A través de la medición, aprendimos que los cambios en el código de una línea tenían más probabilidades de contener errores que, por ejemplo, los cambios en el código de diez líneas. (Consulte la Figura 4–5 y siguientes en Por qué el software tiene problemas.

Por lo tanto, el consejo contrario a la intuición que daría es poner mucho más esfuerzo en verificar cuidadosamente los cambios de código de una línea (cortos) de lo que lo hace ahora intuitivamente.

Una cosa que diría es esto. No rechace un estilo de codificación simplemente porque va en contra de un paradigma que le atraiga.

Usted mencionó funcional v / s oop. Verá otros enfoques conflictivos para resolver un problema.

Y no tenga miedo de mezclarlos si de alguna manera trata su espacio problemático de manera efectiva.

More Interesting

Para un ingeniero de software que es una ubicación ideal: ¿Phoenix / Scottsdale o Austin?

¿Cuál es la posición más alta que puede obtener un ingeniero de software actual en Google sin un título?

¿Cómo lidian los ingenieros de software con una mala valoración y acoso al jefe? ¿Cuándo puede una mala valoración realmente te despide?

¿Cuál es la verdad y la realidad para los ingenieros de software en las empresas de TI en la India? ¿Qué consejo dan los empleados experimentados a los recién llegados que salen de la universidad?

¿Cuál es la mejor manera de venderle la idea a un cliente de que casi todos los problemas que le contrataron para solucionar podrían haberse resuelto utilizando una buena ingeniería de software en primer lugar?

Cómo superar las fallas como estudiante de ingeniería de software

Cómo convertirme en ingeniero de software si arruino mi vida

Comenzaré mi primer día en FB en dos semanas como nuevo ingeniero de software graduado. ¿Cómo le pido a un ingeniero sénior en el mismo equipo que sea mi mentor?

¿Qué es una lista de compañías en el Área de la Bahía que contratan ingenieros de software que tienen poca experiencia (2 años) pero son buenos para resolver problemas?

¿Cuál es un consejo contra intuitivo para construir un buen software?

¿Cuál es el salario y las oportunidades profesionales para un estudiante de comercio en el mundo de la codificación y cómo ser desarrollador de aplicaciones o ingeniero de software?

¿Es posible que un ingeniero de software se convierta en piloto comercial al obtener CPL?

En los términos más básicos, ¿qué es el software?

¿Cuándo puede llamarse ingeniero de software, es simplemente un programador o este título no es tan importante?

¿Qué necesito saber para la seguridad como ingeniero de software?