Qué pienso sobre "Software Craftmanship"

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

comments powered by Disqus