Habilidades para mejorar el scripting

habilidades-title

Normalmente un artesano invierte grandes cantidades de tiempo para desarrollar sus habilidades y perfeccionar su técnica, el resultado de esta inversión se ve reflejado en la calidad de su producto. Así mismo un ingeniero de pruebas de software debe invertir una considerable parte de su tiempo para crecer y madurar ciertas habilidades con el objetivo de realizar mejores y más acertadas pruebas. De inicio te puedo decir que no existe una receta mágica, atajos o guías para mejorar sin contener el vocablo "practicar", es aquí donde la frase "la práctica hace al maestro" es crucial para progresar.

Los ingenieros de pruebas de software que automatizamos pruebas no-funcionales, estamos ubicados en la intersección de dos conjuntos de aptitudes mínimas, y estas competencias son las de un Tester (ingeniero de pruebas) y Programador (desarrollador de software), existen muchos más talentos que debemos poseer, pero por el momento me voy a enfocar en aquellas, que nos ayudarán a mejorar el desarrollo de nuestros scripts de pruebas no-funcionales.

habilidades-conjunto

Existen diversos autores y colegas que concuerdan que un programador debería tener entre otros dones:

  • Autodidacta (tendrás que aprender por tu cuenta)
  • Creativo (inventar soluciones para los problemas)
  • Lógico (aterrizar las soluciones en algo coherente)
  • Resiliente (levántate una y otra vez hasta que los corderos se conviertan en leones)

De igual forma para tester debería tener entre otros talentos:

  • Analítico (divide y vencerás)
  • Abstracción (conceptualizar el todo o las partes del todo)
  • Comunicación (saber escuchar, leer, escribir y hablar correctamente)
  • Creatividad (imaginar escenarios para que las cosas fallen)

¿Cuáles habilidades debo desarrollar?

Estás 8 habilidades que he puntualizado, creo que son aquellas en las que deberíamos enfocarnos, y hasta pareciera que ambas deberían ser totalmente de un desarrollador o de un tester, pero la raíz debería ser más de un ingeniero de sistemas o incluso de ingeniería pura, pues son aptitudes que desarrollamos mayormente durante los estudios universitarios.

Autodidacta

Es necesario que dediques parte de tu tiempo a leer y aprender nuevas tecnologías, lenguajes de programación y soluciones a problemas complejos. Leer acerca de este último ayuda mucho a desarrollar el pensamiento lateral. El mejor consejo sería, que busques artículos acerca de como volverte un autodidacta y no morir en el intento.

Creativo y Creatividad

La creatividad no solo esta ligada al arte tangible, también existe ejemplos de arte intangible como la poesía, la literatura y la danza. Lo mismo sucede con nuestros scripts, la creatividad se ve reflejada en la soluciones innovadoras que podemos imaginar y programar para solventar situaciones deseables o indeseables de nuestra prueba.

Abstracción

La abstracción es la forma en que ha evolucionado en la informática, pues siempre hemos construido sobre las capas superiores, hemos creado lenguajes de programación de alto nivel para enfocarnos en como podemos hacer más con menos, en lugar de volver a inventar el hilo negro. Gracias a esto dejamos atrás los lenguajes de bajo nivel como ensamblador y podemos utilizar Java para escribir pruebas de software.

Comunicación

Saber escuchar, leer, escribir y hablar correctamente te ayudará para entender las necesidades del cliente, ¿qué requiere? y ¿cómo podemos ayudarlo?. También sirve para entender el entorno de la prueba y eso es fundamental para entender los retos, y por ende desarrollar soluciones acertivas. Así mismo para buscar y generar patrones que nos pudiera ayudar a determinar los flujos críticos o procesos de negocio más importantes.

Analítico

El proceso de análisis es dividir el problema en pequeñas partes que sean mucho más fáciles de resolver que el todo, este proceso involucra también el evaluar las posibles soluciones en nuestras mentes antes de volverlas una realidad. Este proceso de análisis básicamente nos debemos situar dentro del problema y evaluar sencillas metas que nos ayuden a resolver la problemática.

Lógico

La Lógica nos ayuda a conceptualizar y generar algoritmos, métodos o funciones con base en estructuras u objetos preexistentes o nativas de los diversos lenguajes de programación, esto con la finalidad de resolver la problemática. Conforme maduramos nuestra lógica, abstracción y análisis podremos desarrollar soluciones más complejas, que puedan cubrir un mayor número de patrones.

Resiliente

La Resilencia es una forma de vida y tenemos que hacernos a la idea que en el área de sistemas y tecnología avanzan constantemente y no se detendrán a preguntarnos si estamos listos o no. Tenemos que prepararnos y adaptarnos a diario en esta jungla tecnológica en donde el más preparado saldrá victorioso.

Conclusión

Para poder desarrollar estas habilidades es necesario ponerlas en práctica a diario, te puedo sugerir realizar el método de los 21 días que el Doctor Maxwell Maltz describe en su libro Psycho Cybernetics, y aunque no todos aprendemos de la misma manera, indudablemente destinar parte de nuestro tiempo a madurar estos atributos nos ayudarán a ser mejores ingenieros de pruebas de software. No te des por vencido y elimina la procrastinación en los tiempos muertos o mientras esperas que el equipo de desarrollo instale la nueva versión en el ambiente de pruebas.

Hasta la próxima.

-Antonio