Escribí este artículo cuando trabajaba como líder técnico. Como ocurre con muchos de esos artículos, me parece que son de especial interés para todos los que comienzan en el mundo de la programación. Por eso lo he traído a Crónicas Freelancer.
Del trabajo diario con programadores juniors uno de los aspectos que más me alarma es la carencia de énfasis y eficiencia en el testing.
Separemos aquí el testing que hace el tester (el cual no todos tenemos el lujo de tener o poder contratar) del que debe hacer el propio programador.
Hay un montón de herramientas automatizadas que permiten hacer pruebas unitarias y de integración. También hay otras que simulan las acciones que realiza un usuario en una interfaz gráfica, como por ejemplo Selenium.
Pero nada de esto basta, uno tiene que asegurarse que lo que hizo funciona y parece ser algo difícil de esperar de un programador novato.
¿Por qué? Encuentro tres factores determinantes.
Contenido
Falta de experiencia
Esto hace que no esperen lo inesperado. Creen que el código escrito soporta todos los flujos de ejecución. O peor, creen que no hay más posibilidades de las que contemplaron.
Se podría resumir que programan exclusivamente para los casos conocidos y felices.
Esto es natural y no me preocupa en absoluto. Son justamente estos aspectos los que uno va adquiriendo durante la carrera profesional y lo va convirtiendo en un mejor programador.
Pero ahora viene lo que sí preocupa. La falta de miedo.
Miedo
En la saga de Star Wars el Maestro Yoda dice que el miedo es el camino al lado oscuro. El miedo lleva a la ira, la ira al odio y este último, al sufrimiento.
En programación podemos decir que el miedo lleva a la preocupación. La preocupación, a la ocupación y con ella se toman los recaudos necesarios.
El miedo en este caso es algo bueno. ¿Miedo a qué? Miedo a que la aplicación que se está desarrollando explote, en el peor de los escenarios posibles provocando el peor de los daños posibles.
Miedo a que se rompa la integridad de los datos de la base y que el sistema quede inutilizado, dejando por ejemplo, a una empresa detenida administrativamente.
Miedo a que el cliente que tiene un 80% de ventas online no pueda vender por un bug.
Miedo a que un perdido “puto el que lee” haya quedado olvidado y que le aparezca a 800.000 visitantes por día.
Miedo a que el cliente, en el mejor de los casos, te llame para insultarte de arriba a abajo. O, en el peor, que venga personalmente y quiera cagarte a trompadas.
Ese miedo es necesario y es lo que hace que nos preocupemos para que todo funcione como debe y nada quede librado al azar.
Personalmente adquirí la mitad de esta capacidad en la universidad cuando un error mínimo podía tirar abajo el trabajo de todo un cuatrimestre.
La otra mitad la aprendí trabajando, viéndole la cara al cliente, escuchando sus gritos o leyendo sus mails cargados de bronca.
Sin embargo, hay algo más que debería ser fundamental a la hora de escribir código.
Orgullo
A nadie le gusta perder y mucho menos que le mojen la oreja.
Por ejemplo, a nadie le gusta que, jugando al fútbol, le hagan un caño. O que jugando al básquet le metan un tapón. O mucho más terrenal, que le ganen con el ancho de espadas la última mano jugando al Truco.
Duele. Y está perfecto que así sea.
¿Por qué no extrapolar este sentimiento de derrota y humillación a la programación?
Es decir, te mataste semanas construyendo un módulo, y viene alguien, toca dos botones y te rompe todo.
¿No te duele? ¿No te afecta? Debería. O sea, te están tocando el culo.
Debería ofenderte y enojarte. Es la bronca de que las cosas salgan mal. La primera reacción, totalmente instintiva, sería la de insultar a esa persona que te está humillando.
Luego, sí, con la razón tomando el control de tus acciones, debería comenzar un proceso mental más frío pero que debería lastimarte internamente de la misma forma.
El orgullo no se adquiere leyendo o estudiando. Debería surgir de la frustración de que algo en lo que uno pone empeño sale mal. Esto habla también del nivel de compromiso que uno tiene con lo que hace. ¿Te importa o no que lo que construiste funcione al 100%?
Por otro lado, el orgullo también es innato. Es cierto que a nadie le gusta perder, pero hay algunos a los que les gusta menos que a otros. Quizás, promover una buena y sana competencia en un equipo de trabajo puede hacer emerger el orgullo que todos tenemos dentro.
En resumen
Las falencias que noto en los programadores nóveles a la hora de probar sus propias aplicaciones tienen que ver con la carencia de experiencia, al no considerar todas las posibilidades, la falta de miedo y la de orgullo.
La experiencia se adquiere con el tiempo.
El miedo quizás también y puede adquirirse en el ámbito académico como en el laboral, siempre y cuando la exigencia en cualquiera de los dos casos sea alta.
Por último, el orgullo es algo más bien innato y que puede quizás forjarse en competencia con otros colegas.
Eso es todo por este artículo. Espero que te haga tomar conciencia y comiences a probar tus aplicaciones con la rigurosidad que requieren.
Más contenido sobre programación y modo de vida freelancer en Crónicas Freelancer
Espero que este artículo haya sido de tu interés. Si te interesa el tema del testing, te recomiendo el artículo Pruebas automatizadas: la verdadera necesidad, donde hablo del testing automatizado, pruebas unitarias, de integración y end-to-end.
Si estás buscando hosting, te recomiendo Digital Ocean. Seguí este enlace para obtener US$ 200 de crédito para usar en un periodo de 60 días.
Te invito a que me sigas en las redes: LinkedIn, X, GitHub e Instagram. También estoy en CodeWars.
Eso es todo. Muchas gracias por tomarte el tiempo de leerme.
Hasta la próxima.
Hola Ale, como estás?
Acá un viejo lector de nuevo.. Aún sigo considerando mis opciones dentro del mundo IT, y ya leí por varios lados, y de tu parte, que una opción es ser tester.
Quería saber cuáles son las opciones de formación para trabajar como tester, si alguien confiaría en un tester que no fue programador y cuál es la diferencia entre Tester TA y QA (que se lee mucho)?
(Si es mucho para responder, están en orden de importancia jaja) muchas gracias. Abrazo grande.
Hola, Mauro. No sé si hay un camino de formación para tester. En general, creo que se aprende trabajando, aunque debe haber programas de capacitación (tal vez en empresas grandes). Las mayores cualidades para dedicarse al testing son el orden, el metodismo y el detallismo. Respecto a lo otro, imagino que el Tester TA es el que hace las pruebas de forma manual, siguiendo algún tipo de procedimiento. Digamos el tester clásico, sin conocimientos de programación. Los QA son los programadores que prueban código, chequean su calidad y realizan muchas tareas más avanzadas para asegurar la calidad del software. Esto… Read more »