Compartir a través de


No estoy listo para comenzar

Reglas tácitas

David Platt

David PlattLa industria del software, al igual que la sociedad moderna en general, se guía por muchas reglas escritas que se acumulan más y más con el tiempo. Pero cuanto más viejo y tonto desinteligente, más cínico me he vuelto, más me he dado cuenta de que la sociedad y la industria del software en realidad se rigen más por las reglas tácitas que por las escritas.

La regla escrita dice: “¡No harás tal cosa!”. La regla tácita dice: “Sí, puedes hacer tal cosa, al menos bajo ciertas circunstancias. Hasta es necesario para poder hacer el trabajo”. La primera aborda el mundo como al autor le hubiera gustado que sea; la segunda lo hace como lo es realmente.

¿Complicado? Seguro. ¿Subjetivo? Definitivamente. ¿Un problema? A menudo. Pero preste atención la próxima vez que un sindicato de pilotos de avión o de enfermeras apliquen una huelga de celo en lugar de simplemente una huelga. Sin la lubricación de estas reglas tácitas, sus lugares de trabajo pronto quedarían paralizados. Al igual que lo haría la sociedad si no siguiésemos las reglas tácitas en lugar de las escritas.

Véase el caso de Michael Pineda, el lanzador de los New York Yankees que en abril recibió una suspensión de 10 juegos por usar resina en los dedos para tener un mejor agarre de la pelota. La regla escrita dice que los lanzadores no pueden usar resina ni ninguna otra sustancia. La regla tácita dice que un poco de resina está bien cuando hace frío, siempre que uno no sea evidente. Pineda fue suspendido no tanto por usar resina, sino por hacerlo de manera tan manifiesta que los árbitros tuvieron que dar cuenta (puede leer más aquí foxs.pt/1i3R3fz).

Para dar un ejemplo de nuestra industria, hace mucho que los programadores orientados a objetos declararon las variables globales como tabú. A uno deberían fusilarlo por el solo hecho de pensarlo, ¿no? Por otro lado, ¿qué es una clase estática sino una global cubierta de contenedores para que sea políticamente correcta? Los programadores suelen apoyarse de una clase de objeto llamada “global”. Cuando solo hay una instancia de algo en un programa y es un entero, ¿en cuántas capas de abstracción y administradores y servicios quiere que la encapsule para hacerlo sentir moralmente limpio? Ahora que se le ha disparado la tensión arterial por leer esta última oración, déjeme reformular la pregunta: ¿Por cuántas capas está dispuesto a pagarme, cuando podría usar ese dinero para otra cosa? El cheque es la respuesta. Y probablemente sea diferente a su primera reacción hace dos oraciones.

En ocasiones, la regla escrita se limita a poner en palabras la regla tácita preexistente. El programado fijo de una cadena, como un nombre de archivo, directamente en el código suele ser una mala idea, pero a veces hay que hacerlo. Póngale a esa construcción una etiqueta que suene bien y estará haciendo las cosas bien.

“Estamos siguiendo el patrón de diseño ‘nombre conocido’”, dice el experto. “Bien, bien”, dice el jefe sin conocimientos técnicos. “Me alegro de que usen patrones de diseño y no esa programación cowboy de la que he oído”.

Gente, eso es programado fijo. Hágalo cuando sea necesario, con los ojos bien abiertos, cuando los haya analizado todo con cuidado y sepa que las ventajas superan los costes. Calme esa sensación de nerviosismo con la mentira de que volverá y lo solucionará en algún momento cuando tenga tiempo. Pero no piense que está cambiando lo que hace por ponerle otro nombre. A un usuario no le duele y le enoja menos un error por llamarle problema (vea msdn.microsoft.com/magazine/ff955613).

Diagramar un camino por estos campos minados, saber cuándo seguir las reglas escritas y cuándo hacer caso omiso a favor de las tácitas, de eso se trata la ingeniería de software. Hay unas pocas reglas absolutas “no harás” en este negocio (aunque no desplazar una cadena de marquesina en la barra de estado del navegador se le parece bastante). Lo único que le digo a mis clientes y alumnos es: “Pensaréis. Si es difícil, me pagaréis para que os ayude a pensar”.

Me intriga saber cuáles son sus reglas tácitas favoritas sobre el desarrollo de software o sobre cualquier otro asunto. Envíemelas a dave@rollthunder.com.

Estoy seguro de que algún fanático pedante ahora dirá que, como he escrito algunas reglas aquí, ya no son tácitas. A lo que digo: Estáis infringiendo mi regla tácita contra la crítica molesta a vuestro columnista hiperbólico de la contraportada. Eso vale una suspensión de 10 juegos, ¿no?


David S. Platt enseña programación .NET en Harvard University Extension School y en empresas de todo el mundo. Es el autor de 11 libros de programación, entre otros: “Why Software Sucks” (Addison-Wesley Professional, 2006) y “Introducing Microsoft .NET” (Microsoft Press, 2002). Microsoft lo nombró Leyenda del Software en 2002. Se pregunta si debería pegar dos de los dedos de su hija para que aprenda a contar en octal. Puede ponerse en contacto con él en rollthunder.com.