Não se limite

Ontem participei de um treinamento sobre Scrum na empresa, ministrado pelo Rodrigo Yoshima.

O treinamento em si é excelente, com bastante prática, temperado com a visão lúcida do Rodrigo sobre desenvolvimento de software.

Quando o Rodrigo falou sobre o time no Scrum, ele enfatizou que as pessoas podem até ter uma função específica, onde possuem mais afinação e experiência, mas elas não devem se limitar a exercer apenas as tarefas associadas a essa função. Por exemplo:  ahh… eu sou testador, então eu só testo. Um time ágil necessita ser multidisciplinar.

Na minha opinião, o profissional deve ter muita prudência ao buscar uma especialização em determinada área/função, pois a especialização pode acaba se tornando um problema para o profissional.

No entanto, isso não significa que o profissional não pode buscar conhecer mais afundo uma determinada área, principalmente se for uma área que ele tem mais afinade e prazer em atuar.

A especialização da qual não gosto, é aquela cega, onde a pessoa abaixa a cabeça e só quer saber de estudar e/ou trabalhar em determinada área. Na minha opinião isso é um desperdício de potencial humano.

E o grande problema é que nós somos condicionados a especialização. Afinal, a nossa geração foi fortemente influenciada pela fase industrial, na qual a especialização era bem vista e necessária, pois boa parte dos profissionais atuavam em tarefas manuais, que exigiam conhecimentos específicos e eram exercidas durante toda a carreira do profissional.

Mas hoje na fase pós-industrial

Muita coisa mudou desde daquela época onde as linhas de produções ainda eram compostas por homens, mulheres e até crianças, que trabalhavam muito mais do que 8 horas diárias. Principalmente no que tange a expectativa de vida. Hoje vivemos MUITO e o bastante para que possamos fazer umas três faculdades e atuar em áreas bem diferentes entre si, se quisermos.

E no nosso caso, atuamos num mercado onde a grande moeda de troca é o conhecimento e por isso precisamos estar sempre atualizados, pois caso contrário, podemos nos tornar profissionais obsoletos.

Lógico, que ainda hoje a especialização é importante em várias outras áreas, por exemplo na Medicina. Porém, na área de TI há uma forte tendência para que os profissionais de TI, se tornem especialistas generalistas.

Putz Fabrício, você está ficando louco! A especialização é fundamental, o mercado demanda de profissionais especializados, essa coisa de especialista generalista é besteira.

Bem se você acha isso, recomendo fortemente a leitura desse artigo e o vídeo abaixo:

E não é só isso, hoje se formos olhar as vagas em empresas como Google, Yahoo! e ThoughtWorks (só para citar algumas), iremos ver que o perfil que pedem é justamente o de especialistas generalistas!

Por favor, não se limite

Isso é sério. Por favor, não se limite!

O ser humano tem uma capacidade incrível, porém somos condicionados a subutilizar as nossas capacidades.

E como não se limitar?

  1. Fazendo o que você gosta. Isso é essencial, pois você irá evoluir muito mais rápido na área e geralmente, será natural não se limitar a apenas uma função específica;
  2. Buscando novos conhecimentos (não apenas na sua área de atuação). E é bom estar preparado, pois nessa busca há um alto risco em você se interessar por outras áreas, que antes você não tinha o mínimo interesse ou era totalmente ignorante.

Por que não me limitar?

Tentando ser objetivo: porque hoje a nossa expectativa de vida é muito alta, e por isso temos mais tempo para explorar as nossas capacidades.

Sendo prático: porque o mercado de TI está cada vez mais demandando de profissionais especialistas generalistas. Mas tome cuidado para não se tornar um pato. 😉

Sendo realista: há tantos fatores e pessoas que nos limitam, que nós mesmos não podemos nos limitar. Pisa fundo!

Pra encerrar deixo uma frase do Oscar Wilde, que nos provoca, e faz pensar que podemos tirar muito mais de nós mesmos, e um bom começo para isso, é não se limitar.

Viver é a coisa mais rara do mundo. A maioria das pessoas apenas existe.

Fique por dentro das novidades, assine o feed do QualidadeBR.

Arquitetura para automação de testes

A 13ª Mesa Redonda DFTestes teve como tema “Arquitetura para automação de testes”, e tivemos 6 respostas e 3 participantes: eu, Elias Nogueira e o Felipe Silva.

A seguir, segue o resumo da discussão, quem quiser acessar a discussão na íntegra, basta acessar esse link.

Quais as atividades de um arquiteto de automação?

Segundo o Elias Nogueira:

As atividades são diversas, vou listar algumas aqui, mas não se restringe somente nisso:

->Criar a arquitetura de automação de testes;
->Criar a estratégia e direcionamento para os testes não-funcionais;
->Levantar/direcionar quais ferramentas podem ser usadas para determinado projeto;
->Sugere melhorias na arquitetura do sistema, para que fique compliance com a aplicação;
->Lidera/coordena uma equipe de automação, dando todos os direcionamento e resolvendo os problemas que os automatizadores tiverem;
->Cria todo o ambiente necessário de hardware e software para a aplicação da arquitetura de automação.

O Felipe Silva fez um comentário a respeito do papel do Arquiteto de Testes:

Não sou arquiteto. Como o Elias disse não é muito comum ver, trabalhar com um arquiteto ou ser um arquiteto de testes, eu particularmente só conheço o Elias, por este motivo não posso me aprofundar no assunto, só deixar minha opinião sobre o que eu penso à respeito.

A minha opinião sobre este papel é que é um papel extremista tecnicamente, digo extremista no sentido de que os skills necessários são diferentes de um skill de um tester funcional, pra quem gosta de programação mas ama testes mais do que desenvolvimento acho que este é o caminho, pra quem não gosta de programação e afins eis aqui o detalhamento do Elias da função para te ajudar saber se você realmente não gosta, pra quem gosta de um pouco de tudo, como eu, pense bem se quer ser um arquiteto ou não.
Uma coisa que gosto muito no cargo de analista de testes é que eu tenho uma liberdade de trabalhar com tudo um pouco, tornando o trabalho menos cansativo, quando eu “acordo para programação” crio scripts de automação ou desenvolvo alguma ferramenta para ajudar o time, quando não “acordo para programação” faço testes manuais, planejamento de cenários, revisão de documentos, casos de testes.

Na minha opinião as atividades que o Elias citou são as principais, destacaria apenas que o Arquiteto de Automação não é o Superman, e levará todo o projeto de automação nas costas, ele pode sim direcionar o rumo da arquitetura, mas todos podem participar e ajudar o mesmo a definir a arquitetura.

Além disso, quando estamos começando um projeto é essencial incluir esse profissional logo nas primeiras reuniões do time de desenvolvimento, pois o trabalho do Arquiteto fica MUITO mais fácil e é MAIS eficiente, quando temos um sistema com uma boa testabilidade.

Quais os conhecimentos que o arquiteto precisa ter para fazer uma boa arquitetura?

O Elias citou vários conhecimentos que um arquiteto necessita ter e disse posteriormente que “não é necessário ter 100% dos conhecimentos listados, mas sim fazer acontecer.”:

Precisa saber sobre muita coisa ao meu ver… Vocês conhecem algum arquiteto de aplicações (Java, .NET, etc..)? Um arquiteto de aplicações deve conhecer sobre diversas tecnologias, padrões, etc… sendo um profissional com o perfil muito técnico.

Ao contrário do que muitos pensam também, ele também conhece (ou deve conhecer) do negócio, justamente para montar uma arquitetura com base nas necessidades de negócio.

Alguns conhecimentos necessários de modo genérico:

->Conhecer de automação de teste em todos os níveis (óbvio); 😛
->Conhecer pelo menos mais que uma linguagem de programação, e ser bom pelo menos em uma;
->Conhecer sobre arquitetura de aplicações e design patterns;
->Conhecer a linguagem SQL, sendo bem mais que um simples ‘select’ (PL/SQL por exemplo);
->Conhecer sobre Sistemas Operacionais e virtualização;
->Conhecimentos avançados em Teste de Software;
->Conhecer uma gama de ferramentas de todos os níveis (de apoio, unitário, integração, funcional e aceitação);
->Conhecer muito bem Diagramas UML e ER, pois a base de uma arquitetura de automação desenhada se dá por essas ferramentas.

Realmente, é uma lista bem grande mesmo de conhecimentos que o arquiteto necessita, mas vejo que além de todos os conhecimentos citados pelo Elias (concordo com todos), ele necessita ter um bom senso e uma boa visão do todo.

E falo isso, pois com todo esse arsenal de conhecimento adquirido, ele pode querer construir uma bomba atômica para matar uma mosca.

A visão do todo é sempre importante de ter em mente, pois às vezes podemos esquecer dela, e acabar desviando do caminho que deveríamos seguir.

Desenvolver uma ferramenta própria ou utilizar uma ferramenta do mercado?

O Elias deu a sua opinião dizendo:

Isso é um discussão boa. Eu creio que hoje em dia não há necessidade de criar uma ferramenta própria para a maioria de trabalhos que são de mercado (aplicações comerciais, bancárias, COTS, etc…).
Hoje existem muitas ferramentas pagas e opensouce/free que suprem essa necessidade, e quando precisamos de customizações, ou nós mesmo fazemos em uma free/opensource (se é que já alguém não fez) ou pagamos/baixamos plugins que suprem a nossa necessidade de customização.

Claro que existe o contraponto. Há uns 2 meses eu dei aula de automação para um desenvolvedor que fazia softwares para controle de radares e mísseis, uma coisa totalmente atípica. Como aplicar automação para um tipo de sistema desses?
Resposta: é necessário desenvolver um!a

Existe também empresas que querem desenvolve suas próprias ferramentas: frameworks de automação, issue tracker, etc… E isso não é errado. Na verdade não existe certo ou errado, existe o que é o melhor para a organização.

Minha opinião então fica:
Se não existe nenhuma diretriz que a empresa tenha que desenvolver uma ferramenta: compre ou adote uma
Se existe uma diretriz para que a empresa crie uma ferramenta: desenvolva, e fique atendo as ferramentas opensources, pois você pode (dependendo da licença da ferramenta) utilizá-la como base para a sua.
Minha empresa faz algo “não usual” de aplicações comercias: desenvolva uma ferramenta, se isso for realmente de ajudar. Mas lembre-se de que isso pode não ter um retorno imediato.

A resposta dessa pergunta depende muito da natureza do projeto, e é uma das primeiras que o arquiteto deve buscar responder.

No meu caso atual por exemplo:

  • Estou utilizando o Selenium para criar uma API, que possa ser utilizada pelos testadores (ainda estou estudando como os testadores irão utilizar essa API, minhas opções são: JUnit, easyb e Concordion). Ou seja, optei por criar uma ferramenta própria, só que utilizando outras ferramentas já existentes no mercado; 🙂
  • Já em um outro projeto o desenvolvedor criou uma aplicação que executa os testes criados por nós, mas ela possibilita apenas executar as ações, e agora estamos criando uma aplicação que automatiza toda a execução dos testes (pré-condições, ações e verificações). Neste caso, optamos por uma ferramenta própria.

Quais os maiores problemas dessa área?

Para o Elias os maiores problemas são:

O maior problema é de, na maioria das vezes, não termos essa cargo tão bem definidos, ou termos pessoas que ocupam esse tipo de cargo que não são tão preparadas tecnicamente, o que pode fazer da automação um negócio caro, pois ele pode ser arquitetado e construído da maneira errada.

Também as empresas necessitarem deste tipo de profissional explicitamente. É bem pouco comum acharmos uma vaga como esta no mercado.

E a principal é o conhecimento de uma pessoa que se propõe a ser um Arquiteto de Automação. São muitos conhecimentos que temos que ter para desempenhar essa função, além dela ser a função mais técnica dentro da área de Teste de Software. E sabemos que muitas pessoas ‘não gostam de ser técnicas’ dentro da área.

Eu colocaria também o Arquiteto de Automação em Teste de Software nas reuniões de pré-venda com o cliente e, posteriormente, em contato com os arquitetos da empresa que está contratando estes serviços. Isso pode poupar muita dor de cabeça em “negócios mal vendidos” e pode realmente mostrar o que pode e o que não pode ser feito para o projeto.

Ao invés de Arquiteto de Automação, eu diria que o profissional é um Arquiteto de Teste. Para mim toda a pessoa que se diz “Arquiteto de Teste” deve ter estes conhecimentos.

Eu destaco os seguintes:

  • A testabilidade dos sistemas sob teste, principalmente nos casos de sistemas legados;
  • É uma área bem recente, por isso ainda não temos cargos bem definidos;
  • Difícil encontrar bons profissionais;
  • Nos caso de arquiteturas de automação de testes, é necessário primeiro convencer as pessoas que a automação é viável e pode ajudar a minimizar/resolver os problemas enfrentados, e isso muitas vezes não é uma tarefa fácil.

E vocês pessoal, alguém aqui é arquiteto? Alguém gostaria de virar um? Quais as suas opiniões sobre o assunto?

O Felipe Silva deu a sua resposta dizendo:

Eu acho que eu gostaria sim de ser um arquiteto, gosto muito da parte técnica, trabalho muito com muito com isso também (por que eu quero), porém meu medo atualmente seria assumir um papel menos flexível no sentido de poder fazer de tudo um pouco, o que faz o serviço mais saudável ao meu ver.

Não sou. É uma possibilidade no mínimo interessante, eu diria. 😀

Se já é difícil encontrar um bom Analista de Teste no mercado, encontrar um bom Arquiteto de Teste é mais difícil ainda. E isso ocorre por uma série de fatores, dentre os quais eu destaco três:

  • Acredito que boa parte dos companheiros de profissão, costumam ter a sua atuação mais voltada para a parte de Validação (negócio). Sendo assim, acabam indo em direção a área Gerencial (pensando em uma carreira em Y);
  • Ser um arquiteto é difícil, e você não se torna um, da noite para o dia (vide tempo necessário de experiência para essa vaga, por exemplo). Como o Elias e o Felipe disse, tal profissional necessita de diversos conhecimentos, e de forma sólida, e além é claro de boa experiência na área (lembrando que experiência é diferente de tempo na área);
  • O mercado ainda não sabe bem o que quer. Isso, infelizmente, é ainda uma realidade no mercado brasileiro, vide discussões já ocorridas no DFTestes sobre descrições de vagas de emprego.

Pra encerrar, acho importante a pessoa não buscar uma carreira simplesmente pelo status do cargo, você deve buscar a carreira que te dá mais satisfação profissional. Aliás, essa coisa de cargo na nossa área, na maioria das vezes, só serve para preencher no contrato ou na carteira.

Bem pessoal é isso.Continuem de olho na lista do DFTestes, pois sempre há assuntos bem interessantes lá, e poderão haver novas respostas nessa mesa redonda.

Fique por dentro das novidades, assine o feed do QualidadeBR.

Carreira – Teste de Software

A área de Testes é uma das que mais tem crescido, nos últimos anos, para se ter idéia em média há umas 50 a 70 vagas da área de Testes no Apinfo, site dedicado a vagas de TI, tendo como base o estado de São Paulo.

Esse resultado dá-se, devido a importância da execução dos testes, durante o ciclo de desenvolvimento. Principalmente, com o “boom” das práticas de outsourcing e de offshoring, que exigiu das empresas uma maior garantia da qualidade de seus produtos.

Recentemente saiu uma lista dos empregos de TI à prova de recessão, feita pela empresa de recrutamento online JobFox, na qual se encontra na 12º posição os profissionais especialistas em testes e controle de qualidade.

A carreira nesta área geralmente respeita a seguinte hierarquia:

  • Tester (Testador) – é a posição de entrada na área. O Tester é responsável pela execução dos testes, que em muitas vezes incluem as seguintes atividades: testar configurações de hardware e software, executar scripts simples de teste, reproduzir e reportar bugs. Alguns trabalhos podem se tornar chatos e repetitivos, mas com certeza o aprendizado obtido será muito recompensador e dará condições de galgar novas posições. É nesta fase que o profissional poderá ir para o “lado negro da força” (Desenvolvimento), caso seja notada habilidade e vocação para a programação. No Desenvolvimento o Tester será responsável por realizar os testes de Caixa Branca, principalmente os de nível unitário. E poderá preencher um gap existente na área de programação, que é a habilidade e conhecimento em testes, podendo assim ser tornar um excelente e requisitado programador.
  • Analista de Teste – é o profissional responsável pela modelagem e elaboração dos casos de teste e pelos scripts de teste. Em algumas vezes, ele também é o responsável pela execução de testes mais específicos, por exemplo testes de desempenho, estresse e homologação, nos quais exige um maior conhecimento e maior responsabilidade. Este profissional tem bons conhecimentos em Análise de Sistemas, UML, modelos, normas, processos, banco de dados, ferramentas de teste e principalmente tem pleno conhecimento do software que está sendo testado.
  • Analista de Automação de Teste – é o cargo mais recente da área de Testes. O Analista de Automação de Teste é um profissional que tem como objetivo principal, buscar a automatização de testes, sempre que ela for possível e viável. Utilizando para isso ferramentas, como por exemplo: JMeter, Marathon, Selenium, SoapUI, WebLOAD, entre outras. O profissional deverá estar atento ao aparecimento de novas ferramentas, ter bons conhecimentos de programação e buscar novas soluções para a melhoria dos testes. Ele necessita conhecer bem o processo de Teste e a realidade da empresa para que possa automatizar os testes de acordo com a necessidade da empresa, afinal a automatização de testes não é uma tarefa tão simples e se feita de forma equivocada poderá trazer prejuízos ao invés de benefícios.
  • Arquiteto de Teste – é o responsável pela montagem da infra-estrutura de teste, monta o ambiente de teste, escolhe as ferramentas de teste e capacita a equipe para executar seu trabalho nesse ambiente de teste. É uma função que exige um bom conhecimento em redes, sistemas operacionais (Linux, Windows Server, etc), servidores Web, banco de dados e principalmente conhecimento da infra-estrutura do ambiente de produção, na qual o software que vai ser testado será futuramente instalado, para que o ambiente de teste seja o mais próximo do de produção.
  • Líder de Teste –  é o profissional responsável pela condução dos testes e pela equipe de Testes. Geralmente é um profissional com alto grau de conhecimento em ciclos de vida de testes, automação de testes, ambientes de testes e documentação de testes. Ele ajuda o Gerente de Teste a elaborar os três relatórios básicos para o acompanhamento do projeto: Relatório de Status, Relatório de Progresso e Relatório de Desempenho.
  • Gerente de Teste – o Gerente de Teste tem como função primordial a iniciação do projeto de teste a ser realizado no produto a ser testado. Suas qualificações e competências se assemelham a um gerente de projetos típico: elaborar o plano do projeto de teste, aquisição de novos recursos, orçamento, riscos, prazos, elaboração de relatórios, limitações do escopo do projeto de teste e outras atividades gerenciais como constante comunicação com sua equipe, controle e monitoração das atividades, geração de métricas para alimentar indicadores, etc.
Hierarquia da área de Testes

Hierarquia - área de Testes

Os cargos e as tarefas dos cargos podem variar de empresa para empresa, principalmente devido ao porte da empresa. E é muito comum o acúmulo de papéis, por exemplo: o Analista de Teste também ser responsável pelas ferramentas de automação de teste e da montagem do ambiente de teste.
A área de Testes está a pleno vapor e os seus profissionais cada vez mais valorizados, exemplo disso é o surgimento de vários cursos, certificações e até MBA na área. Que mostram que o mercado está à caça de profissionais qualificados.

Fique por dentro das novidades, assine o feed do QualidadeBR.

Fonte:
Bastos, A.; Rios, E.; Cristalli, R. & Moreira, T. Base de conhecimento em teste de software. São Paulo, Martins Fontes, 2007.