• Nenhum resultado encontrado

4.3 Práticas de Desempenho

4.3.7 Integrando a Equipe

Na ALESP, o período de contato da fase de treinamento (Subseção 3.2.4) foi importante para estabelecer um bom relacionamento entre duas equipes que não se conheciam, os consultores do IME-USP e os funcionários da ALESP. As equipes tiveram a oportunidade de trabalhar juntas em atividades didáticas, sem a pressão e atritos que existiriam em projetos reais. Esta convivência eliminou uma potencial resistência da equipe local com a presença de outro time na liderança do projeto em seu ambiente de trabalho.

A comunicação foi imprescindível e determinante para a obtenção de bons resultados. Durante o período de integração, a equipe da ALESP percebeu que o pessoal do IME-USP estava trazendo benefícios através de conhecimento e experiência que seriam úteis em seu projeto. O bom relacio-namento pessoal acelerou o processo de transmissão de conhecimento técnico para os iniciantes de desenvolvimento ágil e também permitiu que a equipe do IME compreendesse mais rapidamente as regras de negócio, as necessidades da equipe e as dificuldades do projeto.

Na PR&A e na Ikwa, integramos novos membros à equipe com programação em pares. Progra-madores que não conheciam o código, ou recém-contratados, que também não conheciam os outros desenvolvedores, passavam uma semana trabalhando em par com um programador da equipe. Este período serviu para que os novatos absorvessem os hábitos da equipe e aprendessem a trabalhar com as ferramentas usadas no projeto: a plataforma de desenvovimento (Eclipse), os arcabouços e as fer-ramentas de integração de código. Durante o período de integração, os iniciantes também adquiriram uma visão geral da organização do código e foram integrados socialmente.

Nas práticas Posicionamento Otimizado (Subseção 4.3.3), Quebra de Rotina (Subseção 4.2.7) e Desafios com Prêmios (Subseção 4.2.6) a equipe passa por atividades que promovem a integração e contribuem para criar um ambiente de desenvolvimento colaborativo. Depois que essas práticas foram implementadas percebemos uma redução no número de erros no código e aumento na comuni-cação durante a implementação. Concluímos que esses resultados são decorrentes do estreitamento das relações interpessoais, uma condição que tornou as pessoas mais dispostas a pedir ajuda quando esbarravam em problemas, sem medo ou vergonha de expor suas dificuldades, pois sabiam que os demais tinham boa vontade em oferecer ajuda. A integração também facilitou atividades que envol-viam mais de um desenvolvedor, como aprogramação em pares sob demanda (página99), discussões sobre implementação e pedidos de revisão de código. E em retrospectivas, as equipes mostraram-se mais propensas a admitir seus erros e a buscar melhorias no processo de desenvolvimento.

Considerações Finais

Em meio às percepções obtidas a partir dos quatro projetos que analisamos e, baseados em diversos relatos presentes na literatura, reunimos evidências que reforçam que a complexidade inerente ao desenvolvimento de software ultrapassa o escopo dos aspectos técnicos e invade o mundo do relacionamento entre indivíduos, envolvendo fatores motivacionais e psicológicos com pesos muito maiores do que os modelos de certificação e os métodos tradicionais supõem.

Enquanto a execução de um software é uma tarefa precisa, a sua produção não é. A execução é feita por uma máquina, enquanto que o desenvolvimento, por pessoas. Essa diferença é ignorada por métodos prescritivos que baseiam seus esforços no processo como se ele fosse o responsável pela produção do software. Processos não irão produzir software, mas os indivíduos irão. Portanto o mo-delo de desenvolvimento deve ser baseado nos indivíduos, o que significa considerar as características humanas durante o processo. Pessoas não mantêm um ritmo constante de trabalho, não reprodu-zem tarefas de alta precisão e estão sujeitas a oscilações em seus relacionamentos. Por outro lado, possuem habilidades que máquinas e processos dificilmente conseguem reproduzir. Pessoas estão expostas a muito mais informações do que é possível documentar ou fornecer a sistemas. Por isso, elas conseguem avaliar situações novas ou recorrentes e tomar decisões imediatas ou deixá-las para mais tarde, para que com mais conhecimento, façam escolhas mais conscientes e, portanto, com mais chances de acertá-las.

Métodos ágeis estimulam a adaptação do processo incrementalmente usando a experiência e o conhecimento adquiridos como parte dos insumos para alcançar melhores resultados. Durante nossas experiências, identificamos claramente a necessidade de mudar várias das práticas após usá-las em uma ou mais iterações. Práticas que inicialmente se mostraram benéficas, com o tempo, foram

141

descartadas por deixarem de acrescentar ao projeto ou porque foram substituídas por outras mais eficientes. Isso alertou as equipes para a importância doaprendizado contínuo. Para nós, confirmou a hipótese de que cada projeto precisa de um grupo adequado de práticas. Mais do que isso, cada projeto precisa constantemente renovar suas práticas pois, para cada momento, haverá um conjunto delas que será mais produtivo.

5.1 Contribuições

Dentre as contribuições deste trabalho, podemos destacar:

• Investigação dos principais modelos de desenvolvimento de software utilizados na indústria e pesquisados pela academia. O Capítulo 2 reúne o resultado desta pesquisa, mostrando as soluções que cada abordagem oferece para a problemática do desenvolvimento de sistemas.

• Aplicação de metodologias ágeis em quatro projetos de desenvolvimento de software. Juntos esses projetos nos proveram mais de quatro anos de experiência com desenvolvimento ágil e contato com cerca de 105 indivíduos, sendo aproximadamente 70 desenvolvedores e 35 clientes, gerentes e diretores envolvidos com os projetos. Além destes, ainda mantivemos contato com algumas dezenas de usuários que nos forneceramfeedback durante as implementações.

• Relatos sobre os quatro projetos que selecionamos como caso de estudo para este trabalho:

um dentro da universidade, um no setor público e dois na indústria, sendo um deles em uma empresa consolidada no mercado financeiro e outro em umastartup.

• Relatos sobre condução da equipe de desenvolvimento da primeira empresa brasileira de “Web 2.0” a receber um investimento de capital de risco.

• Proposição de 22 pontos relevantes no desenvolvimento de software, divididos nas categorias que definimos como: Estratégica, Motivacional e de Desempenho. Cada um deles pode ser tratado como uma prática que pode ser aplicada individualmente em qualquer projeto de de-senvolvimento de software para fortalecer um ou mais valores ágeis.

• Abordagem de Engenharia de Software que considera também as questões ligadas ao lado humano dos projetos de desenvolvimento de software.