Clean Desk != Clean Code
Hace un tiempo escribí un post (abajo) sobre la política del "Clean Desk" (donde no tienes una mesa asignada como propia), pero aún, sigo dándole vueltas sobre esto.
El objetivo del Clean Desk es tener un sitio FÍSICO limpio, ordenado, donde cualquier otro trabajador de la empresa pueda trabajar. ¡Todo lo cual, aumenta la productividad, bien! Totalmente de acuerdo.
Si lo trasladamos a una cocina, si un chef cocina, y luego se recoge la cocina y se limpia, el siguiente chef, puede inmediatamente preparar su receta estrella. No sería igual si se encontrase con una cocina,
desordenadas y sucia. Al segundo chef, tendría que limpiar, y buscar los utensilios donde los dejo el primer chef, y claro, esto baja ;la productividad.
En hasta aquí, todo está relacionado con sitios FÍSICOS, puesto de trabajo en una fábrica, cocina,...es decir, el producto del trabajo, se desarrolla en un entorno FÍSICO
¿pero qué pasa cuando se implemente el Clean Desk en una empresa de que desarrolla software?
En un entorno software, el producto no se desarrolla en un ámbito físico, sino en un ámbito digital. Con lo cual los argumentos para apoyar un Clean Desk en una empresa de software, me parecen endebles, ¿por qué?.
- "Mejora el aspecto profesional ante el cliente". El cliente quiere que el software que le estamos desarrollando solucione su problema. No si tenemos los escritorios limpios.
- "Evitamos que documentos importantes estén encima de la mesa". Solución simple. Se compra cajoneras con llave y se pone debajo del programador, donde el programador puede guardar bajo llave dichos documentos.
- "Se mejora la comunicación entre compañeros". ¿Qué sentido tiene tener cerca a un programador de proyecto A, con otro programador del proyecto B?. La cercania de los programadores debe venir en función de la comunicación de su componente con otros componentes. Ej.: programador frontend al lado del backend, donde con un giro de 90º se pueden comunicar para resolver cualquier duda y evitar emails innecesarios. Y al final, todos lo sabemos, de forma tácita,
a través del tiempo, cada persona se va sentando siempre en la misma mesa y de esta forma siempre tendrá sus mismos compañeros alrededor.
- "Se mejora la productividad". Para mí la más endeble para un entorno SW. Se mejora la productividad cuanto diseñas un sw con una arquitectura/diseño donde se permite la expansión con facilidad, y está diseñado de forma simple, para que cualquier programdor que se una al equipo, sea lo más rápidamente productivo. No se mejora la productividad por tener un escritorio limpio. Además, en la psicología del programador siempre esta el tener su propio "desk setup", y si esto se lo quitas, ¿será más productivo? "Nein".
Para mí, la única razón válida para el clean desk, el cual lo practico, es para que el personal de limpieza le sea más fácil su trabajo.
En resumen, se está llevando un concepto que nació para aumentar la productividad en un contexto físico, a un contexto digital, pero sin entrar en lo digital.
Si se quiere aumentar la productividad en una empresa software, mejor aplicar políticas de "Clean Code", y menos de "Clean Desk". Ya que el producto está en un mundo digital, no en un mundo físico como una fábrica.
Algunas políticas Clean Code tomas de (1) y (2)
Cómo diferenciar entre código bueno y malo
Cómo escribir buen código y cómo transformar código incorrecto en código bueno
Cómo crear buenos nombres, buenas funciones, buenos objetos y buenas clases
Cómo formatear el código para una máxima legibilidad
Cómo implementar un manejo completo de errores sin oscurecer la lógica del código
Cómo realizar pruebas unitarias y practicar el desarrollo basado en pruebas
Qué "olores" y heurísticas pueden ayudarle a identificar código incorrecto
Legibilidad y mantenimiento: ... modificar el código más fácilmente.....
Colaboración en equipo: ...Al escribir código legible, los desarrolladores comprenden fácilmente el trabajo de los demás...(pero siempre habrá alguien qué quera usar esoterismos del lenguaje de programación perdiendo legibilidad:-( )
Depuración y resolución de problemas: ...El código limpio está diseñado con claridad y simplicidad....
Calidad y confiabilidad mejoradas: El código limpio prioriza escribir código bien estructurado.
Y viendo lo de arriba, ¿¿se mejorara más la productividad, el tener un mesa limpia (Clean Desk) o tener un software bien estructurado, fácil de leer, depurar y modificar....(Clean Code)??
Y en definitiva, ¿qué afectará más al cliente, el tener una mesa limpia, libre de un pequeña planta, libre de una grapadora, libre de un vaso con bolis, libre de un cuaderno, ...o el tener un código fuente limpio y bien estructurado?. Y como esto es un negocio, y el cliente es el que paga, con más razón para dar más prioridad al Clean Code y dar un entorno a los programadores donde se sientan felices, motivados, para producir el mejor Clean Code. ">
Y por ultimo:
Clean Desk == Hot Desk;
Seguro que seguiremos dándole vueltas :-)
Félix
(1) "Clean Desk Policy, really necessary? How expensive is it?"
https://hobbycodingsoftware.blogspot.com/2023/04/clean-desk-policy-really-necessary-how.html
(2) https://blog.codacy.com/what-is-clean-code