Habilidades para Melhorar o Código
Tabela de conteúdos
Novato - This article is part of a series.
Por vezes, um artesão investe grandes quantidades de tempo desenvolvendo suas habilidades e perfeccionando sua técnica; o resultado dessa invenção é refletido na qualidade do seu produto. Da mesma forma, um engenheiro de testes de software deve investir uma grande quantidade de tempo para crescer e madurar certas habilidades para realizar melhor e mais precisos testes. Desde o início, posso dizer que não existe receita mágica, curas ou guias para melhoria sem a palavra “prática”. Esta é onde a frase “a prática faz o perfeito” é crucial para progresso.
Estes engenheiros de teste de software que automatizam as testes não-funcionais se encontram na interseção de dois conjuntos mínimos de habilidades: aqueles de um Testador (engenheiro de teste) e de um Programador (desenvolvedor de software). Há muitas mais talentos que precisamos possuir, mas para agora, focarei nas que ajudarão a melhorar o desenvolvimento dos nossos scripts de testes não-funcionais.
Existem vários autores e colegas que concordam que um programador deve ter, além de outras habilidades:
- Auto-treinado (você precisará aprender sozinho)
- Criativo (inventar soluções para problemas)
- Lógico (garantir que as soluções sejam coherentes)
- Resiliente (se levantar novamente e novamente até os gansos se tornarem leões)
Também um testador deve ter, além de outras habilidades:
- Analítico (dividir e conquistar)
- Abstração (conceituar o todo ou as partes do todo)
- Comunicação (saber como escutar, ler, escrever e falar corretamente)
- Criatividade (imaginar cenários onde coisas falham)
Qual habilidade eu deveria desenvolver? #
Acho que essas 8 habilidades que descrevi estão os que devemos focar. Parece que ambos são o domínio de um desenvolvedor ou testador. No entanto, a base deve ser mais do sistema engineer ou até mesmo do engenheiro puramente, pois esses são os recursos que geralmente desenvolvemos durante as universidades.
Autodidata #
Você precisa dedicar algum tempo lendo e aprendendo novas tecnologias, linguagens de programação e soluções a problemas complexos. Ler sobre o último ajuda bastante para desenvolver pensamento lateral. A melhor dica seria procurar artigos sobre como se tornar autodidata e não morrer tentando.
Criatividade e Creatividade #
A criatividade não se limita apenas à arte tangível; também há exemplos de arte intangível, como poesia, literatura e dança. O mesmo é verdadeiro em nossas escritas; a criatividade reflete-se nas soluções inovadoras que podemos imaginar e programar para resolver situações desejáveis ou indesejáveis em nosso teste.
Abstração #
Abstraccição (informática) é a maneira como o computador evoluiu. Tínhamos sempre construído sobre as camadas superiores, criando linguagens de alto nível para focarmos em como podemos fazer mais com menos, ao invés de reinventar a roda. Gracias a isso, deixamos trás linguagens de baixo nível, como assembler, e podemos usar Java para escrever testes de software.
Comunicação #
Sabendo como escutar, ler, escrever e falar corretamente ajudará você a entender as necessidades do cliente: o que eles precisam? E como podemos lhes ajudar? Também ajuda a entender o ambiente de teste, que é essencial para compreender os desafios e, portanto, desenvolver soluções eficazes. Também ajuda a buscar e gerar padrões que poderiam ajudá-lo a determinar as flutuações críticas mais importantes ou processos empresariais.
Analítico #
O processo de análise envolve desmembrar o problema em partes menores que são muito mais fáceis de resolver do que o todo. Este processo também envolve avaliar possíveis soluções mentalmente antes de transformá-las em realidade. O processo de análise basicamente envolve colocar você dentro do problema e avaliar objetivos simples que ajudarão a resolver-o.
Lógica #
A lógica nos permite conceber e gerar algoritmos, métodos ou funções baseados em estruturas pré-existentes ou nativas de diversos linguagens de programação, com o objetivo de resolver problemas. Ao desenvolver nossa lógica, abstração e análise, podemos criar soluções mais complexas que podem abranger um maior número de padrões.
Resiliência #
A resiliência é uma forma de vida, e temos que aceitar que os sistemas e a tecnologia estão constantemente avançando e não pararão para perguntar se estamos preparados ou não. Temos que nos preparar e adaptar diariamente nesta selva tecnológica onde o mais preparado emergirá vitorioso.
Conclusão #
Para desenvolver essas habilidades, é necessário colocá-las em prática diariamente. Sugiro seguir o método de 21 dias descrito por Dr. Maxwell Maltz no seu livro Psycho-Cybernetics. Apesar de que todos aprendemos de maneiras diferentes, dedicar algum tempo a desenvolver essas características irá certamente ajudar-nos a se tornarem melhores engenheiros de testes de software. Não desista e elimine procrastinação durante o descanso ou enquanto esperamos que a equipe de desenvolvimento instale a nova versão no ambiente de teste.