Simplicidad Ignorada: ¿Por qué no se premia en el trabajo?

Fuentes: Nobody Gets Promoted for Simplicity

El artículo "Nobody Gets Promoted for Simplicity" de terriblesoftware.org aborda un problema sutil pero común en equipos de ingeniería: la tendencia a recompensar la complejidad sobre la simplicidad. Aunque la simplicidad es una virtud crucial, a menudo se pasa por alto en las evaluaciones de desempeño y promociones, mientras que la complejidad, aunque innecesaria, se percibe como más impresionante y, por lo tanto, más valiosa.

¿Por qué ocurre esto? El problema radica en cómo se evalúa el trabajo de los ingenieros. Un ingeniero que opta por la solución más simple y eficiente (por ejemplo, 50 líneas de código, fácil de entender y probar) puede tener dificultades para articular el valor de su trabajo. Su contribución parece trivial en comparación con un ingeniero que construye una solución más compleja, con abstracciones, sistemas de publicación/suscripción y configuraciones extensibles, aunque esta última requiera mucho más tiempo y esfuerzo (tres semanas, múltiples revisiones de código). La complejidad, por sí misma, crea una narrativa más atractiva para los comités de promoción y entrevistas.

El problema se extiende a las entrevistas técnicas. Los candidatos que proponen soluciones simples a menudo son presionados para agregar complejidad (escalabilidad, sharding) para demostrar su comprensión de sistemas distribuidos. Esto refuerza la idea de que la simplicidad no es suficiente para impresionar. Incluso en las revisiones de diseño, los ingenieros se ven presionados a "futurizar" soluciones, añadiendo capas innecesarias para anticipar problemas que podrían no surgir.

La clave está en la percepción. La complejidad a menudo se confunde con inteligencia y profesionalismo, incluso cuando no es necesaria. La verdadera experiencia radica en saber cuándo no usar ciertas herramientas y patrones, no en aplicarlos indiscriminadamente. La duplicación de código, por ejemplo, a veces se evita a costa de crear abstracciones complejas que dificultan el mantenimiento y la comprensión del código.

¿Qué se puede hacer? El artículo ofrece soluciones tanto para ingenieros como para líderes de equipo. Los ingenieros deben aprender a hacer visible la simplicidad, documentando explícitamente las decisiones tomadas para evitar la complejidad innecesaria. En las revisiones de diseño, es importante cuestionar la necesidad de la complejidad y justificar las decisiones. Los líderes de equipo deben cambiar las preguntas que hacen en las revisiones de diseño y en las discusiones de promoción, enfocándose en la simplicidad por defecto y requiriendo justificación para la complejidad. Finalmente, es crucial reconocer que algunas culturas empresariales valoran la simplicidad genuinamente, mientras que otras recompensan la complejidad, y elegir un entorno que se alinee con los valores individuales.