4.3 Pr´ aticas de Desempenho
4.3.7 Integrando a Tropa
Na ALESP, o per´ıodo de contato da fase de treinamento (Subse¸c˜ao 3.4.4) foi importante para estabelecer um bom relacionamento entre duas equipes que n˜ao se conheciam, os consultores do IME-USP e os funcion´arios da ALESP. As equipes tiveram a oportunidade de trabalhar juntas em atividades did´aticas, sem a press˜ao e atritos que existiriam em projetos reais. Esta convivˆencia eliminou uma potencial resistˆencia da equipe local com a presen¸ca de outro time na lideran¸ca do projeto em seu ambiente de trabalho.
A comunica¸c˜ao foi imprescind´ıvel e determinante para a obten¸c˜ao de bons resultados. Durante o per´ıodo de integra¸c˜ao, a equipe da ALESP percebeu que a o pessoal do IME-USP estava trazendo benef´ıcios atrav´es de conhecimento e experiˆencia que seriam ´uteis em seu projeto. O bom relacio-namento pessoal acelerou o processo de transmiss˜ao de conhecimento t´ecnico para os iniciantes de desenvolvimento ´agil e tamb´em permitiu que a equipe do IME compreendesse mais rapidamente as regras de neg´ocio, as necessidades da equipe e as dificuldades do projeto.
Na PR&A e no Ikwa, integramos novos membros `a equipe com programa¸c˜ao pareada. Progra-madores que n˜ao conheciam o c´odigo, ou rec´em-contratados, que tamb´em n˜ao 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´abitos da equipe e aprendessem a trabalhar com as ferramentas usadas no projeto: a plataforma de desenvovimento (Eclipse), os arcabou¸cos e as fer-ramentas de integra¸c˜ao de c´odigo. Durante o per´ıodo de integra¸c˜ao, os iniciantes tamb´em adquiriram uma vis˜ao geral da organiza¸c˜ao do c´odigo e foram integrados socialmente.
Nas pr´aticas Posicionamento Otimizado (Subse¸c˜ao 4.3.3), Quebra de Rotina (Subse¸c˜ao 4.2.7) e Desafios com Prˆemios (Subse¸c˜ao 4.2.6) a equipe passa por atividades que promovem a integra¸c˜ao e contribuem para criar um ambiente de desenvolvimento colaborativo. Depois que essas pr´aticas foram implementadas percebemos uma redu¸c˜ao no n´umero de erros no c´odigo e aumento na comu-nica¸c˜ao durante a implementa¸c˜ao. Conclu´ımos que esses resultados s˜ao decorrentes do estreitamento das rela¸c˜oes interpessoais. Uma condi¸c˜ao 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¸c˜ao tamb´em facilitou atividades que envol-viam mais de um desenvolvedor, como a programa¸c˜ao pareada sob demanda(p´agina 89), discuss˜oes sobre implementa¸c˜ao e pedidos de revis˜ao de c´odigo. E em retrospectivas, as equipes mostraram-se mais propensas a admitir seus erros e a buscar melhorias no processo de desenvolvimento.
Considera¸ c˜ oes Finais
Em meio `as percep¸c˜oes obtidas a partir dos quatro projetos que analisamos, e baseados em diversos relatos presentes na literatura, reunimos evidˆencias que refor¸cam que a complexidade inerente ao desenvolvimento de software transborda o escopo dos aspectos t´ecnicos e invade o mundo do relacionamento entre indiv´ıduos, envolvendo fatores motivacionais e psicol´ogicos com pesos muito maiores do que os modelos de certifica¸c˜ao e os m´etodos tradicionais sup˜oem.
Enquanto a execu¸c˜ao de um software ´e uma tarefa precisa, a sua produ¸c˜ao n˜ao ´e. A execu¸c˜ao
´
e feita por uma m´aquina, enquanto que o desenvolvimento, por pessoas. Essa diferen¸ca ´e ignorada por m´etodos prescritivos que baseiam seus esfor¸cos no processo como se ele fosse o respons´avel pela produ¸c˜ao do software. Processos n˜ao ir˜ao produzir software, mas os indiv´ıduos ir˜ao, 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˜ao mantˆem um ritmo constante de trabalho, n˜ao reprodu-zem tarefas de alta precis˜ao e est˜ao sujeitas a oscila¸c˜oes em seus relacionamentos. Por outro lado, possuem habilidades que m´aquinas e processos dificilmente conseguem reproduzir. Pessoas est˜ao expostas a muito mais informa¸c˜oes do que ´e poss´ıvel documentar ou fornecer a sistemas. Por isso, elas conseguem avaliar situa¸c˜oes novas ou recorrentes e tomar decis˜oes imediatamente ou deixar para mais tarde, para com mais conhecimento, fazer uma escolha mais consciente, e portanto com mais chances de acertar.
M´etodos ´ageis estimulam a adapta¸c˜ao do processo iterativamente usando a experiˆencia e o co-nhecimento adquiridos como parte dos insumos para alcan¸car melhores resultados. Durante nossas experiˆencias identificamos claramente a necessidade de mudar v´arias das pr´aticas ap´os us´a-las em uma ou mais itera¸c˜oes. Pr´aticas que inicialmente se mostraram ben´eficas, com o tempo foram
des-137
cartadas por n˜ao fazerem mais sentido ou porque foram substitu´ıdas por outras mais eficientes. Isso atentou as equipes para a importˆancia do aprendizado cont´ınuo. Para n´os, confirmou a hip´otese de que cada projeto precisa de um grupo adequado de pr´aticas. E mais do que isso, cada projeto precisa constantemente renovar suas pr´aticas pois para cada momento haver´a um conjunto delas que se tornar´a mais produtivo.
5.1 Contribui¸c˜oes
Dentre as contribui¸c˜oes deste trabalho, podemos destacar os principais t´opicos:
• Investiga¸c˜ao dos principais modelos de desenvolvimento de software utilizados na ind´ustria e pesquisados pela academia. O Cap´ıtulo 2 re´une o resultado desta pesquisa, mostrando as solu¸c˜oes que cada abordagem oferece para a problem´atica do desenvolvimento de sistemas.
• Aplica¸c˜ao de metodologias ´ageis em quatro projetos de desenvolvimento de software. Juntos esses projetos nos proveram mais de 4 anos de experiˆencia com desenvolvimento ´agil e contato com cerca de 105 indiv´ıduos, sendo aproximadamente 70 desenvolvedores e 35 clientes, gerentes e diretores envolvidos com os projetos. Al´em destes, ainda mantivemos contato com algumas dezenas de usu´arios que nos forneceram feedback durante as implementa¸c˜oes.
• Relatos sobre os quatro projetos que selecionamos como caso de estudo para este trabalho:
um dentro da universidade, um no setor p´ublico e dois na ind´ustria, sendo um deles em uma empresa consolidada no mercado financeiro e outro em uma startup.
• Relatos sobre condu¸c˜ao da equipe de desenvolvimento da primeira empresa brasileira de “web 2.0” a receber um investimento de capital de risco.
• Proposi¸c˜ao de 22 pontos relevantes no desenvolvimento de software, divididos nas categorias que definimos como: Estrat´egica, Motivacional, e de Desempenho. Cada um deles pode ser tratado como uma pr´atica que pode ser aplicada individualmente em qualquer projeto de de-senvolvimento de software para fortalecer um ou mais valores ´ageis.
• Abordagem para as t´ecnicas da engenharia de software considerando tamb´em quest˜oes ligadas ao lado humano dos projetos de desenvolvimento de software.