Ideas
Software Craftmanship, Agile, Kaisen(kanban), Lean Startup, todas tienen conceptos compartidos.
En general, busco aplicarlos en mis trabajos.
- El software como un producto de la creatividad del programador.
- La calidad es una de las cualidades más importantes del software.
- Mejora continua: siempre se pueden hacer las cosas mejor.
- Las personas no son piezas que se intercambian.
- Desarrollo iterativo, con retroalimentación constante.
- No olvidar satisfacer la necesidad de los clientes.
- Eliminar el desperdicio:
- Deberíamos monitorear y detectar que prácticas son ineficientes.
- Construcción de MVPs o POCs, todo “entra por los ojos”.
- Pasaje a producción rápidamente para iterar
- El proceso de software debe tener un conjunto de mínimas prácticas:
- Testing
- Versionado de código
- CI/CD
- Documentación (o autodocumentado),
- Forzar estándares generales (linter, typing)
- Code Analysis (bad smells detector: unused code, security issues)
- Manejadores de paquetes
- Pasos definidos para un release (incrementar versiones, tags, etc…)
- En caso que aplique, debería estar definidos todo en contenedores
- La configuración y constantes deberían estar en archivos (dotenv, configparser)
- salvo los que necesitan seguridad!
- Siempre pensar en estrategías de backup, monitoreo, performance, caching…
- Todo desarrollo debe ser:
- escalable
- robusto y mantenible
- tolerante a fallos
- resiliente
- cambios incrementales
- Monitorear para tomar decisiones fundadas (Build-Measure-Learn, Plan-Do-Check-Act)
- Comprender el problema
- Pensamiento divergente y convergente
- Una solución simple y elegante es mejor que una solución compleja
- “rápido” no es “rápido y feo” sino “rápido y bien”
- ser profesional
- practicar para ser mejor, siempre
Referencias
- Wikipedia - Lean Startup
- Wikipedia - Arquitectura de software
- Wikipedia - Software Craftmanship
- Kaizen Methodology
- Wikipedia - Kanban
- Wikipedia - Deming Cycle
- Wikipedia - Design Thinking
- Wikipedia - Lean Startup
- Ockham razor & KISS
- DRY
- Iterative and Incremental development
- Convergent Thinking
- Divergent Thinking
- the 5 Ws that should be asked of every project
- 5 Ws