Diferentes creencias sobre la calidad del software

Recientemente recibí una gran pregunta en Twitter que me hizo pensar durante un tiempo y decidí compartir mis pensamientos al respecto.
Contexto
Pero primero, algo de contexto: me siento genial porque el código base donde trabajo está mejorando cada vez más, así que tuiteo esto:
“A medida que el software mejora con el tiempo, puedes sentir que lo estás haciendo bien.”
Y entonces recibí una pregunta pidiendo sugerencias:

Así que aquí vamos…
Mi respuesta
Crear acuerdos
Lo primero es crear acuerdos sobre lo que significa software de calidad para tu equipo y para ti mismo. Esto ayuda a clarificar qué cultura de software quieres establecer y trabajar hacia esa dirección. Dejar tu empresa debería ser el último recurso una vez que no tengas otra opción.
Antes de pensar en dejar tu empresa, te preguntaría:
- ¿Por qué crees que no puedes mejorar el código base de trabajo de tu empresa?
- ¿Qué puedes hacer para reducir la fricción entre tus diferentes creencias respecto a lo que significa calidad para el software?
No existe un código base perfecto para trabajar porque el software es una entidad viva y cambia constantemente. Así que, al menos para mí, software de calidad es el que puede lidiar con el cambio suavemente.
Una vez que hayas acordado ese objetivo, y aunque hay múltiples formas de lograr ese resultado, mi forma favorita de trabajar es mantener una mentalidad agile con dosis de valores, principios y prácticas de extreme programming en mente.
El software es sobre personas
El software no es solo sobre escribir código limpio y sólido. Esto es ciertamente deseado, y deberíamos apuntar a eso, pero primero debemos entender por qué lo queremos. El “por qué” se basa en los valores que tienes como equipo.
Si no compartes el mismo propósito, el mismo “por qué”, entonces no disfrutarás trabajando juntos, y en tal caso, aconsejaría buscar otra empresa que comparta tus valores. Pero, antes de eso, sugeriría encarecidamente arreglar el problema más profundo y ayudar a tu equipo a mejorar.
Entendiendo tu por qué
Primero necesitas entender profundamente tu “por qué” para poder transmitirlo a tus compañeros y a las personas a tu alrededor. ¿Has intentado todo lo que puedes para crear conciencia sobre tu “por qué”?
Algunas ideas incluyen fomentar la programación colaborativa (pair/mob), presentar algunas charlas técnicas internas, crear una cultura de compartir conocimiento de forma regular diaria, crear conciencia sobre el statu quo actual y buscar oportunidades para mejorar en todas partes.
Tu trayectoria profesional
Si, después de varios meses de (realmente) intentar estas ideas, ninguna de ellas funciona, busca una nueva empresa que comparta tus creencias. Después de todo, eres la primera y principal persona responsable de cuidar tu trayectoria profesional.
Hilo de twitter original.

Pensamientos adicionales
Si quieres que algo sea diferente, no esperes hasta que cambie automáticamente. Intenta cambiarlo; si no funciona, déjalo. Quizás no perteneces a ese lugar.
Por otro lado, es crucial reflexionar si ves ese patrón repitiéndose a menudo (cambiar de empresas demasiado rápido). En tal caso, quizás el problema no son las empresas sino tú mismo.
El desarrollo de software no es solo sobre código sino negocio. Es esencial ser consciente de encontrar un trade-off justo entre velocidad, costes y calidad, dependiendo de la situación. Podrías querer usar algo de deuda técnica para conquistar el mercado lo antes posible.
No tiene sentido tener “baja calidad” como parte de la identidad de ningún equipo. Cada equipo tiene ciertas expectativas de calidad. Por lo tanto, la clave aquí es acordar qué es buena calidad.
Gracias a mi anterior Engineering Manager, Evgenii Sokolov, quien me inspiró a escribir estas líneas adicionales después de compartir el post original.
Posts relacionados
- El arte del testing: donde el diseño se encuentra con la calidad. Desde el punto de vista de un desarrollador de software
- Entendiendo a las personas. Malentendidos, comunicación efectiva y autorreflexión
- Actualiza tu equipo para ser más extreme. ¿Cómo puedes ayudar a tus compañeros a abrazar el cambio?
Lecturas relacionadas
- Extreme Programming Explained por Kent Beck
- Peopleware por Tom DeMarco
- Clean Agile por Robert C. Martin