Gestão de Projetos: mais do que metodologias

Hoje em dia ainda vejo empresas tratando o gerenciamento de projetos como algo engessado, como algo tradicional e com restrições.

  • Se você não utilizar tal metodologia não vai dar certo.
  • Se você não for certificado não vai conseguir.
  • Se você não seguir o que os especialistas falam não vai conseguir.

Que visão é essa?

Gerir projetos é muto mais do que metodologia.

Atualmente gerencio projetos em uma empresa da área de TI, onde aplico o que funciona!

Aplico o que minha equipe necessita, o que meu cliente precisa para ter os melhores resultados.

Utilizo práticas que combinam com o resultado que quero alcançar.

Gerenciar projetos é muito mais do que delegar tarefas para a equipe, gerenciar projetos é malabarismo constante de avaliação de prioridades, avaliação de recursos, prazos, riscos, resolução de problemas, entre tantas coisas que fazemos.

E quando temos a necessidade de gerenciar vários projetos ao mesmo tempo, e manter tudo alinhado, fica muito clara a necessidade da colaboração e da comunicação, alinhar equipe e interessados no projeto em busca do melhor resultado.

Gerentes de projeto não são independentes, nem fazem milagres, são totalmente dependentes do feedback das suas equipes e dos clientes. A comunicação tem papel chave nas tomadas de decisões, na identificação de riscos, na aprovação de solicitações.

Use modelos, mas não esqueça que de nada adianta a melhor metodologia se não tem profissionais comprometidos com o que fazem. Metodologias não salvam projetos. Projetos são etapas que possuem inicio e fim, e precisam de profissionais envolvidos com o que fazem.

De nada adianta ter um gerente de projetos certificado em várias tecnologias, se o mesmo não consegue se comunicar com eficaz com seu time de desenvolvimento. De nada adianta ter conhecimento das melhores práticas, se na hora de por a “mão na massa” não sabe qual a melhor decisão tomar.

Antes de entrar nessa linha de gestão de projetos, só enxergava pessoas com o perfil “gerentão”, sim, aquele que pensa que manda em todo mundo e que não faz nada para o bem do seu time e da organização. Depois que tive contato com essa área, conheci várias pessoas que estão envolvidas e conseguem fazer um ótimo trabalho deixando de lado aquela velha visão de um gerente de projetos que não faz nem a metade do que promete, e que sequer se importa de verdade com as pessoas envolvidas nos projetos que gerencia.

E essa experiência firma mais minha visão, de que boas metodologias não vão te salvar, se você não souber articular, perceber as atitudes, as emoções das pessoas envolvidas, se você não sentir na pele o que sua equipe está sentindo, não vai conseguir bons resultados.

Pessoas são a chave para o sucesso. Esqueça o gerentão, e direcione o foco na sua equipe, na boa comunicação com os envolvidos, na colaboração entre as funções. Nos resultados que podem ser alcançados se você conseguir liderar de forma saudável, sem prepotência, sem arrogância, apenas sendo um líder. Onde as pessoas acreditam no que você faz, e fazem junto com você, e o melhor de tudo, gostam do que fazem.

Me arrisco a falar que se você conseguir perceber as limitações da sua equipe, perceber as necessidades, se comunicar de forma clara, e dar autonomia para o time na medida que o mesmo for adquirindo maturidade, as coisas vão dar certo.

Nessa área, onde os riscos são gigantes e as pessoas são imprevisíveis, o melhor a fazer é manter a sinergia do time, alinhar os objetivos e por a mão na massa, de verdade.

Você pode me xingar no Twitter!

Teste está morto parte 2

Como havia prometido, volto hoje ao tema abordado na semana passada. Tentarei destacar os principais pontos abordados no vídeo recomendado na parte 1. E antes de tudo, obrigado a todos pela participação no blog, na DFTestes e no Linkedin. A colaboração de vocês é fundamental para o enriquecimento da discussão.

A primeira grande contribuição do vídeo trata-se da abordagem inicial a evolução das metodologias de desenvolvimento e consequentemente as diferentes formas de atuação dos testadores. O palestrante, Alberto Savoia, a divide em dois grandes momentos: Old Testmentality e New Testmentality. Partindo da dependência completa dos documentos de requisitos, aos ciclos mais curtos das metodologias ágeis associados a uma maior integração entre desenvolvedores e testadores.

Durante a chamada Old Testmentality, as aplicações só eram entregues quando estivessem completamente “prontas”. Enquanto, que na New Testmentality, as entregas passaram a ser frequentes, exigindo uma participação constante do cliente na construção do “produto correto”.

Em seguida, Savoia começa a destacar os pontos que o levam a pensar que o teste tradicional está morto. Começando pelo o que ele chama de Post-Agile, a qual tem como diferencial o fato de apresentar uma postura mais casual e descuidada em relação aos testes ágeis tradicionais.

Segundo Savoia, a questão central cada vez mais é a construção do “produto correto” e não o simples desenvolvimento correto do produto ou das funcionalidades, ou seja, o objetivo é entregar um produto, que em primeiro lugar, atenda às necessidades dos usuários. Não basta ser apenas perfeito funcionalmente.

O palestrante nos lembra que de fato existem diversas aplicações fabulosas construídas utilizando os conceitos tradicionais, mas que a estrutura existente nos dias atuais, como a computação nas nuvens, permitem diminuir o foco da qualidade de software e transferi-lo para garantir que estamos construindo o produto CORRETO.

Um grande exemplo citado é o twitter, que tornou famosa sua baleia com a enormidade de vezes que deixava os usuários na mão, mas mesmo assim eles continuavam voltando, pois o produto era o desejado.

Nesse novo cenário, que se desenha, segundo Savoia, precisamos nos voltar para outro tipo de bug, o chamado idea bug, que podemos traduzir como bugs de conceito ou de idéia do produto.

Um produto errado é muito pior do que um produto com o comportamento errado.

A chave é testar a idéia, ou seja, garantir que estamos desenvolvendo o produto certo.

E como podemos testar a idéia?

A sugestão de Savoia é começarmos utilizando protótipos iniciais (pretotype), os quais ele diferencia dos protótipos tradicionais, por serem desenvolvidos e aplicados em curtos espaços de tempo. É fundamental testar cedo e falhar rápido, segundo o mesmo Bons testes falham rápido, diminuindo o tempo e o capital investido. (BdB – Os bons testes falham)

Alberto cita ainda alguns dos sinais observados, que o levam a crer no fim dos testes tradicionais.

Sinais do Testpocalypse:

– Diminuição no numero de contratações
– Comoditização dos testadores
– Saída dos antigos líderes e ausência de novos
– Mais e mais empresas partindo para o Post-Agile

Acompanhado essa corrente de mudanças existem enormes oportunidades. Savoia enfatiza a crescente necessidade do surgimento de novos líderes na área de testes, com uma mentalidade diferente, e que possam conduzir essa etapa de transição. Onde, como o mesmo aponta, ainda conviveremos por um longo tempo com as diversas formas de teste. (BdB – Imagine um mundo sem Bugs no Software)

Por fim, um dos slides afirma “Test is dead. Don’t take it literally, but take it seriously.”, traduzindo, “Teste está morto. Não leve isso literalmente, mas leve a sério.”. Logo, a palestra é uma alerta e não uma simples afirmação arrogante, que se julga acima de todos nós. Uma apresentação, que vale a pena ser vista com atenção, e que nos deve levar a refletir sobre os caminhos, que estamos seguindo, as oportunidades de aprendizado e de mudança que podemos levar a nossa área. Sejamos o agente dessas mudanças.

P.S. Todas as imagens utilizadas estão nos slides da apresentação, disponível aqui.

Teste está morto parte 1

Não restam dúvidas de que automação de testes é uma atividade fundamental no desenvolvimento de sistemas. Desde os testes unitários até os de aceitação precisamos cada vez mais de uma estrutura que permita a entrega de aplicações de maior qualidade num menor espaço de tempo.

Na internet existem diversos materiais e vídeos, que podem nos ajudar a progredir nesse caminho. A indicação de hoje são os vídeos do Google Testing Automation Conference, conferência do google, que reúne os mais respeitados profissionais. Na página da conferência você encontra os vídeos e os slides das palestras realizadas. Buscando um pouco mais você pode encontrar também os vídeos das edições anteriores.

GTAC 2011 - Logo

A palestra de abertura da edição de 2011, apresentada por Alberto Savoia, têm como título Test is Dead (Teste está morto), ficou curioso? De forma brilhante, o mesmo passeia pelas metodologias de desenvolvimento de software, finalizando com os motivos que o levam a crer que o teste está morto.

São 35 minutos de palestra, somados a 15 minutos de perguntas. Logo, caso não possa parar agora, guarde o link e assista numa melhor oportunidade, vale bastante a pena.

Quer saber mais sobre como o pessoal testa as aplicações no google? Acesse o blog mantido por eles.

Outros vídeos interessantes do pessoal do google podem ser encontrados na página do youtube – Google Tech Talks.

Na próxima semana, publico a parte dois do post, onde comentarei sobre alguns dos pontos discutidos na palestra acima.

Imagine um mundo SEM bugs no software

Na indústria de software estamos habituados a ideia de que todo software possui defeitos e que pouco podemos fazer para mudar isso. No vídeo a seguir, de apenas 9 minutos, Jeff McKenna, co-fundador do Scrum apresenta uma visão radical: um mundo sem bugs no software. O vídeo foi extraído de seu próximo livro “Conscious Software Development.”

O vídeo é excelente e nos faz pensar principalmente na atitude em relação aos bugs que temos em nossos projetos. Segundo Jeff, não basta corrigirmos os defeitos encontrados precisamos entendê-los e aprender com eles, só assim construiremos sistemas SEM defeitos.

Assista ao vídeo. Em seguida, destaco os principais pontos abordados por McKenna.

 

Temos sistemas de gerenciamento de defeitos, realizamos triagens, mas será que em algum momento pensamos sobre o que eles são? ou como surgiram? como fazer para não surgirem mais?”

Segundo Jeff, temos sido muito complacentes com os defeitos, acreditamos que existem muitos, e que os mesmo são parte de todos os sistemas. Porém, o autor não acredita nisso e nos convida a imaginar um mundo SEM bugs de software.

“Podemos atingir números bem menores do que as pessoas consideram razoável, e isso pode ser feito de maneira simples”

McKenna indica que, a simples conscientização a respeito dos bugs já possibilita imensos ganhos. Precisamos entender porquê eles estão presentes e agir para evitar novas falhas.

Como diminuir a quantidade de bugs?

– Reduzir o tempo entre a introdução de um bug e sua correção

A medida leva em conta o momento no qual o bug foi introduzido no sistema e não o momento em que o mesmo foi detectado. Para isso é necessário utilizar as ferramentas de controle de código, assim, após identificado o motivo do defeito podermos voltar versões do código e identificar o momento em que ele ocorreu.

Olhando para o exato momento em que o erro aconteceu podemos aprender a escrever menos bugs. Porque esse é o verdadeiro objetivo.”

O objetivo não é encontrar mais bugs e a função dos analistas de qualidade não se resume a isso.

“Classificação e triagem de feitos são uma perda de tempo, em termos de aprendizado sobre como escrever menos bugs”

Segundo McKenna, pouco importa a severidade do defeito e suas características, pois geralmente o critério de correção está diretamente ligado a questões de negócio, como a importância de um determinado cliente. Logo, se estamos tentando aprender a escrever menos bugs, não há diferença entre os mesmos, sejam eles de alta ou baixa prioridade todos são comportamentos não esperados do sistema.

“Corrigir os defeitos era a atividade de maior prioridade”

Jeff, exemplificou suas recomendações com as seguintes práticas executada em um de seus projetos:

1- Sempre que um bug surgisse, a primeira pessoa que estivesse livre passaria a trabalhar no defeito. Onde, um profissional era considerado livre quando terminava a tarefa que estava executando no momento. Bugs possuem prioridade mais alta, que todas as demais tarefas ainda não realizadas. Desse modo, no máximo em alguns dias o defeito era analisado.

2 – Corrigir e entender o problema. A mais alta prioridade era a correção do defeito, associado a criação de novos testes automáticos. Porém, o mais importante é você falar porquê aquele bug estava lá, a razão do mesmo ter ocorrido.

“O que queremos fazer é encontrar o bug o quanto antes para que possamos consertá-lo o mais cedo possível e provar o aprendizado”

Para McKenna, temos o prazo máximo de até 6 meses da introdução de um defeito, para podermos aprender algo através de sua correção, após isso a oportunidade de aprendizado terá sido desperdiçada.

“O objetivo real é escrever software SEM defeitos.”

E para atingir esse objetivo, a principal característica que temos que desenvolver é a de olhar sempre para frente. Se ficamos sempre olhando para trás 6 meses, 1 ano, analisando um código que não vemos a muito tempo, isso literalmente é perda de tempo. Então, o que queremos fazer é olhar para frente a todo o momento e ter a atitude de ZERO defeitos.

“Um bug é algo que você esmaga imediatamente.”

Ao eliminar rapidamente os bugs encontrados acabaremos com tarefas, como a priorização de defeitos. Afinal, a quantidade de bugs pendentes será sempre pequena e desse modo o foco poderá ser maior no que está sendo construído.

Este é um vídeo para ser visto diversas vezes, e se conseguirmos absorver sua ideia central, penso que, poderemos melhorar ainda mais nossos processos e principalmente nossa atitude.

Conheci esse vídeo primeiramente no Software Testing Club, uma excelente fonte de informações para testadores, com bons textos e vídeos sobre a área. Espero que tenham gostado.

…………………………………………………………………………………………………………………………………………..

Agora você já pode acompanhar as novidades do BdB pelo Facebook, acesse e curta nossa página.

A Metáfora da Dívida Técnica: O preço das gambiarras

O XP (eXtreme Programming) tenta se utilizar de metáforas no desenvolvimento de software para trazer o entendimento de todos para mais próximo do mundo real. Metáforas são um instrumento poderoso.

Recentemente compareci na QConSP, e no meio de tantas palestras uma me chamou a atenção em particular, e se tratava justamente da explicação de uma metáfora (que acredito ser maravilhosa para se comunicar com a gerência ou clientes).

Todos nós sabemos o que é uma dívida no mundo real, e todos nós eventualmente entramos em dívidas, seja um financiamento de um imóvel que você vai pagar por 300 meses, ou um carro que você vai ficar endividado por 60 vezes. O pior de tudo é que além da dívida normal, você irá pagar um montante de juros absurso dependendo do tamanho da dívida que você está assumindo.

Existem as dívidas responsáveis ou conscientes como as citadas acima mas também existem dívidas inconscientes ou não responsáveis que são piores, pois surgem de uma hora para a outra sem te dar tempo para pensar se desejava assumir essa dívida ou não (ex: alguém gastando desordenadamente no cartão de crédito e quando vai ver a fatura fica surpreso).

Pois bem, no desenvolvimento de software é a mesma coisa!

Você tem que adicionar uma funcionalidade no seu sistema. Nesse momento  você enxerga duas formas de fazer isso: Uma forma é rápida de fazer, mas é meio bagunçada e com certeza você iria ter mais trabalho ainda no futuro para modificar aquilo. A outra forma é mais elegante e organizada, porém vai demorar mais. Isso lhe parece familiar?! Esse trade-off acontece o tempo todo no desenvolvimento de sistemas, mas o que esquecemos é das dívidas que assumimos quando escolhemos a forma mais rápida e mais bagunçada (ex.: gambiarras)!

Parece que não temos ciência que todas as vezes que assumimos uma dívidas técnicas no sistema, mais lento o desenvolvimento se torna, mais difícil de modificar as funcionalidades existentes, mais difícil adicionar funcionalidades novas (como mostra o primeiro gráfico) e muito mais provável que uma mudança qualquer tenha impactos indesejados e desconhecidos. Temos que estar cientes das dívidas que assumimos no dia-a-dia do desenvolvimento de software.

Ah, então é por isso que não conseguimos aumentar a velocidade do time depois de tantas sprints??

Talvez! Aí nasce a  questão importante que é o momento que iremos pagar nossas dívidas, ou ao menos parte delas. A grande maioria dos times conhecem os lugares no sistemas que estão com dívidas, e é preciso separar um tempo para PAGAR essas dívidas caso contrário os juros só fazem aumentar. Enquanto as dívidas não são pagas, nós nos deparamos com o cenário onde sprint após sprint, vamos fazer menos coisas (vide o segundo gráfico) pois agora é muito mais difícil modificar o sistema com tantas dívidas do que era no início do desenvolvimento quando não tínhamos dívida ou as poucas dívidas que tínhamos eram controláveis.

Cuidado com suas dívidas técnicas ou elas vão afundar você e seu projeto! 

Em time que está ganhando não se mexe

Ao longo dos meus, ainda curtos, cinco anos de experiência numa empresa projetizada, felizmente, posso afirmar que tive a oportunidade de trabalhar com diversas equipes extremamente competentes tecnicamente. Porém, facilmente consigo destacar algumas, que além da qualidade técnica possuíam uma sinergia de trabalho natural, a qual permitia um melhor desenrolar das atividades.

Por dentro da Cabeça de Steve Jobs

Enquanto lia o livro “A cabeça de Steve Jobs”, escrito por Leander Kahney, o qual recomendo a todos que trabalham com TI ou que se interessam pelos produtos desenvolvidos pela Apple, diversos trechos chamaram minha atenção.  Logo nos primeiros capítulos o autor descreve o sucesso da Pixar e como ela se difere da forma tradicional de criar filmes em Hollywood. E o seguinte trecho me chamou a atenção, pois o pude relacionar diretamente com as minhas experiências pessoais.

 “O problema do modelo de Hollywood é que geralmente no dia em que você termina a produção é que você percebe que finalmente descobriu o jeito de trabalharem juntos”,

disse Randy S. Nelson, reitor da Universidade Pixar

 Já, a Pixar, o autor descreve que trabalha de maneira oposta:

“Os diretores, os roteiristas e a equipe técnica são todos empregados assalariados com grandes concessões de opção de compra de ações. Os filmes da Pixar podem ter diferentes diretores, mas em todos eles a equipe básica de escritores, diretores e animadores é a mesma, trabalhando como empregados da companhia.”

Podemos dizer que o mesmo cenário se repete na indústria de software. Durante cada projeto, a equipe se desenvolve (tecnicamente e pessoalmente), porém ao final do mesmo esse time é desfeito e todo o aprendizado que poderia ser potencializado é desperdiçado. Cada integrante, leva consigo os aprendizados, porém, nem todos poderão ser aplicados para a nova equipe.

Em outro trecho do livro, o autor destaca também a forma de trabalhar da equipe de designers da Apple, extremamente premiados e reconhecidos por sua competência. Jonathan Ive, líder da equipe traduz a forma de trabalho da seguinte maneira:

Mantendo uma equipe central pequena e investindo significativamente em ferramentas e processos, podemos trabalhar com um nível de colaboração que parece particularmente raro”, disse Ive

Ive diz que a equipe, pequena e íntima, é crucial para a criatividade e a produtividade.

Os benefícios de trabalhar com equipes pequenas, já podemos perceber ao seguir os conceitos do Scrum e das metodologias ágeis. Equipe íntima, ou seja, onde as pessoas se conhecem e confiam nas habilidades dos demais integrantes. E assim, talvez, conseguir criar um ambiente colaborativo que permita a criação de produtos de sucesso.

Então, será que não deveríamos refletir um pouco mais sobre essas afirmações? Acredito que manter, ao menos, a base das equipes que conseguem atingir um padrão de excelência parece sim ser uma boa alternativa e que pode trazer bons frutos para as empresas projetizadas. Vai mexer nesse time? E vocês o que acham? Em time que está ganhando não se mexe?

Nessa semana o BdB comemora seu primeiro aniversário, se você ainda não aproveitou os presentes de nossos parceiros, clique aqui e leia as instruções.

Aumentando a qualidade do software com apoio do Powerpoint

Como havia prometido no post – Apertem os Cintos, o Analista de Requisitos Sumiu!, descrevo hoje como abordávamos o gerenciamento dos requisitos (estorias) num dos projetos desenvolvidos no C.E.S.A.R. gerenciado com SCRUM. A mesma, já foi inclusive mencionada por Marcelo Nunes no post Mapeando Requisitos em Projetos Scrum.

Espero que de alguma forma, nosso exemplo, possa ser útil a vocês, para que possam tentar aplicá-lo em seus projetos ou que ao menos possa servir de referência para que apliquem suas ideias em seu ambiente de trabalho e com a cooperação dos colegas possam construir soluções para seus problemas. Se você ainda não conhece bem o Scrum, consulte os seguintes links: Scrum em 10 minutosHistórias de Usuário

O que descrevemos nas próximas linhas, como uma abordagem, surgiu naturalmente durante o projeto e foi sendo aprimorado, com o simples intuito de garantir que as estórias selecionadas para a próxima sprint fossem compreendidas de maneira uniforme por toda a equipe, e atingindo esse objetivo outros benefícios eram proporcionados, como: Diminuição do número de defeitos, maior satisfação do cliente, melhor comunicação entre os membros da equipe, entregas realizadas no prazo correto, além de poder servir como guia para novos integrantes da equipe, entre outras vantagens.

A partir do momento em que as estórias haviam sido selecionadas para a nova sprint, os seguintes passos eram iniciados:

  1. Detalhar estórias da sprint 
  2. Discutir o PPT com toda equipe
  3. Implementação da estória
No passo 1, as estórias selecionadas eram descritas através de slides, seguindo a prioridade estabelecida entre as mesmas. Desse modo as mais importantes eram liberadas com maior antecedência para as etapas seguintes. O slides deveriam ser simples e diretos, descrevendo o objetivo central da estória, geralmente continham esboço da interface e informações a respeito do escopo.
Abaixo, exemplificamos o uso dos slides para uma estória fictícia, descrita da seguinte forma: “Como um administrador do blog eu quero saber quais os posts mais acessados para que possa analisar o perfil dos visitantes.”

Já o passo 2, consistia de uma reunião com todo o time, onde o responsável pela elaboração do PPT explicava o funcionamento da estória. Sendo este o momento mais importante da nossa abordagem, o qual permitia um entendimento mais profundo da necessidade do cliente. Durante a reunião todos interagiam procurando esclarecer os detalhes que envolviam a estória, seus possíveis impactos em outras funcionalidades previamente implementadas, além de como a mesma deveria se comportar em determinados cenários.

Ao final da reunião, normalmente algumas mudanças no PPT eram realizadas em razão dos pontos levantados, e a partir desse momento o passo três podia ter continuidade, tendo agora como base também as informações disponíveis no PPT, facilitando o trabalho de desenvolvedores e testadores, através da diminuição da quantidade de retrabalho causado pelo diferente entendimento das estórias.

A abordagem utilizada por nós, atingiu o objetivo do projeto, garantindo que as necessidades do cliente fossem compreendidas pelo time e desse modo proporcionando entregas de maior qualidade. É importante, também, ressaltarmos que o fundamental para o sucesso da abordagem está diretamente ligado a troca de ideias e ao comprometimento com a qualidade, sendo o PPT apenas uma forma rápida e ágil para apoiar essa comunicação.

E o que não podemos nos esquecer, é que a utilização, melhoria e adaptação dos processos deve ser um ato contínuo, onde as características do projeto e das pessoas que fazem o mesmo precisam ser levadas em consideração.

Ficou interessado na abordagem proposta? Caso haja qualquer dúvida ou dificuldade ao tentar aplicá-la em seu ambiente de trabalho, entre em contato conosco.

Trabalho em equipe: Quais erros você comete?

Marília Balbé é escritora convidada do Bytes Don’t Bite e você pode  encontrá-la em @maribalbe

Já parou pra pensar o quanto precisamos dos outros para desenvolver determinadas tarefas? Já parou para analisar o quanto o trabalho em equipe está cada vez mais badalado?

Ter a capacidade de manter um bom trabalho em equipe é uma habilidade muito valorizada! E com certeza é um grande diferencial na hora de escolher um candidato para uma vaga de emprego dentro de uma organização. Quem vai querer alguém sem essa característica dentro da equipe?

Nas empresas que conheço um dos pré-requisitos fundamentais para conseguir aquela vaga de emprego é ter capacidade de trabalhar em conjunto e atingir objetivos com a equipe.

Justamente por isso, separamos alguns dos principais erros que geralmente acontecem nos ambientes de trabalho, onde equipes são prejudicadas por comportamento de colaboradores.

Vamos a nossa lista de possíveis erros detectados em algumas equipes:

– Ficar irritado com os colaboradores

Equipe sem atrito definitivamente não é uma equipe de verdade! Imagina várias personalidades e habilidades diferentes em um mesmo ambiente.. Com certeza atritos vão ocorrer, mas é nessa hora que devemos colocar em prática a empatia para evitar que o problema se torne maior ainda. Cada colaborador tem um ritmo e um rendimento. Alguns vão aprender mais rápido do que os outros..  Manter um ponto de equilíbrio entre ser educado e o emocional é importante demais nesses momentos de tensão.

– Recusar trabalho em equipe

Vai querer abraçar o mundo sozinho? Temos exemplos de sobra que grandes e bons resultados não nascem de ações individuais e isoladas. Resistir ao trabalho em equipe pode causar grandes danos para sua carreira, afinal, conseguir lidar com pessoas totalmente diferentes é um desafio enorme, e quem consegue fazer isso tem pontos a somar no currículo! Na organização, e dentro da equipe um depende do outro.. Se você não quiser colaborar com o seu colega do lado, teremos um enorme gargalo nas ações realizadas. Se você ainda não consegue, chegou a hora de dar essa abertura, e começar a praticar.

– Não respeitar as diferenças

Equipes são compostas de pessoas totalmente diferentes, com habilidades diferentes. E ainda existem pessoas que simplesmente não respeitam a opinião e a postura do colega de trabalho. E aí? Como fica? As diferenças é que dão o balanço e a sinergia na equipe. Onde um complementa o outro. O que um não sabe, o outro pode ajudar. Respeitar essa diversidade é essencial no ambiente de trabalho. Aceitando a diversidade, as possibilidades de atuação são ampliadas, sem invadir o espaço do outro. Vai ficar de cara fechada pelo seu colega discordar de você? Sem essa!

 – Resolver depois

Aqui é fator crítico, em todo ambiente que vejo onde conflitos são deixados pendentes a situação fica pior do que já está. Quando conflitos são acumulados, a proporção dos mesmos aumenta.. Podem ser dúvidas, algum desconforto, decisões adiadas, entre outros. Se o colaborador não tentar resolver o assunto, isso pode gerar fofoca com os outros colegas da equipe, antipatia, e sem falar no péssimo clima dentro do ambiente de trabalho.

Os deslizes que acontecem no nosso dia-a-dia de empresas são muitos, onde não conseguimos numerar tudo, onde as diversidades são gritantes, onde os desafios e obstáculos aparecem a todo o momento. Aqui vale gerar uma boa estratégia para a sinergia acontecer entre a equipe, onde o foco são resultados e manter a criatividade entre os envolvidos.

Chefes, gerentes, desenvolvedores, auxiliares, não importa o seu cargo, você comete erros, você precisa aprender mais. E no mercado competitivo que vivemos aprender algo novo sempre. Somos cobrados e cada vez mais, devemos mostrar pra que viemos.

E você? O que acha importante evitar ao trabalhar em equipe?

Você pode me xingar no Twitter: @maribalbe

Apertem os cintos, o analista de requisitos sumiu!

Todo analista de sistemas sabe da importância da correta identificação e gerenciamento dos requisitos de uma aplicação, e o papel fundamental que os mesmos representam durante todo ciclo de vida de um projeto.

Apertem os cintos, o piloto sumiu

Com o crescimento na utilização de metodologias ágeis, muitos dos problemas em relação aos mesmos foram minimizados, porém o problema está longe de ser considerado resolvido. Muito pelo contrário, não é preciso ter muita experiência em projetos de TI para perceber que diversas vezes os problemas encontrados no software têm origem nos requisitos(ou estórias) ou na falta deles e diversas são as causas para tais problemas. Onde, a principal causa talvez seja o fato do gerenciamento dos mesmos, durante um projeto, continuar sendo frequentemente menosprezado.

Apesar de impactar o trabalho de todos envolvidos em projetos de software (desenvolvedores, testadores, designers e até mesmo dos gerentes) os requisitos ainda são comumente relegados a segundo plano. Até o próprio assunto não é debatido com muita freqüência nas empresas e na internet, e com esse post tentaremos trazer um pouco mais o referido tema para o BDB.

Abaixo tentamos listar alguns dos problemas comumente encontrados por nós, focando, nesse primeiro momento, nos projetos que utilizam metodologias ágeis e versões adaptadas das mesmas:

Isso não funciona:

– Analista de requisitos inexistente:

      É comum e até indicado pelas metodologias ágeis que os profissionais tenham perfis multidisciplinares e possam atuar em diferentes papéis durante o projeto, porém isso muitas vezes é confundido e acaba gerando a eliminação de alguns especialistas, onde o caso dos requisitos é um bom exemplo de atividade, que cada vez mais é realizada por pessoas não dedicadas inteiramente a função e que não possuem os atributos requeridos para a mesma, assim temos engenheiros sobrecarregados e muitas vezes executando tarefas que não os agrada.

– Product Owner distante:

      No scrum o product owner é muitas vezes o responsável pela definição das estórias e por apoiar a equipe no esclarecimento de eventuais dúvidas a respeito do comportamento esperado das estórias escolhidas para a sprint. Porém, essa comunicação nem sempre funciona de maneira eficiente, fatores como a distância física, dificuldade em entender as responsabilidades do papel ou até mesmo os conflitos naturais que podem surgir da relação cliente X equipe podem criar barreiras que dificultam o trabalho da equipe.

– Entendimento das estórias:

     Mesmo quando temos uma comunicação eficiente com o product owner, ainda precisamos nos preocupar com a garantia de uma boa comunicação entre os membros da equipe, evitar ao máximo que as pessoas tenham entendimento diferente das estórias selecionadas, garantir que os mesmos compreendam a extensão e os detalhes que envolvem cada estória.

– Projetos longos:

      A medida que o tempo de vida de um projeto aumenta, diversos outros pontos começam a surgir e que podem dificultar o desenrolar das atividades, por exemplo, a necessidade por algum tipo de rastreabilidade entre os requisitos, atividade que dificilmente pode ser executada de maneira eficiente sem dedicação plena.

– Turnover:

A chave do sucesso dos projetos ágeis está na comunicação entre os membros da equipe, o conhecimento a respeito das funcionalidades do projeto passa diretamente pelos integrantes, onde alguns por possuírem determinadas habilidades, acabam se tornando referenciais técnicos, quando tratamos do comportamento correto da aplicação. Porém, frequentemente enfrentamos a rotatividade de pessoal, o que consequentemente leva a perda desse conhecimento, aumentando o grau de dificuldade para novas tarefas e realização de correções e melhorias.

– Cliente imediato não é o cliente final, logo como não documentar tudo?

Muitas vezes confundimos também a idéia de evitar o excesso de documentação encorajada pelas metodologias ágeis com documentação zero, o que para alguns projetos específicos pode fazer sentido e não gerar nenhum tipo de problema, porém de maneira geral dificulta a entrada de novos integrantes ou a correção de defeitos relacionados a estórias implementadas a algum tempo. Esse problema pode ainda se tornar maior quando nosso cliente imediato não é o cliente final, quase que eliminando a possibilidade de trabalhar focado nas necessidades imediatas e feedbacks do usuário final.

– Todo mundo quer ser ágil:

      A adaptação da metodologia ágil selecionada para as características da equipe de trabalho é essencial, porém ocorre também o erro comum de tentar aplicar métodos ágeis em todos os projetos, no entanto nem sempre eles são os mais indicados. Com isso surgem situações como projetos ágeis sendo guiados por um imenso documento de requisitos tradicional, repleto de casos de uso e quase nenhuma flexibilidade.

P.S. A partir dos 2 minutos o vídeo exibe apenas propaganda dos produtos da IBM.

Por enquanto, é melhor nem falarmos dos requisitos não funcionais, onde os problemas e dificuldades são ainda maiores.

No próximo post descreveremos algumas soluções que tem ajudado em nossos projetos. Participe comentando sobre problemas relacionados a requisitos enfrentados por você e sua empresa.

Links relacionados:

Vídeo explicando o Scrum

Vídeo descrevendo o problema com a definição do software através do documento de requisitos

Post Scrum master não pode ser o product owner

Para relaxar:

Review das funcionalidades de um website com South Park

Acompanhando projetos através do gráfico de Burndown

Existem distintas formas de se acompanhar o andamento de um projeto. Praticamente cada modelo de gerenciamento sugere sua própria forma de seguir de perto como anda o desenvolvimento das tarefas. Gráfico de Gantt, gráfico focado em produtividade do Kanban e etc… são apenas algunas exemplos do que é utilizado hoje no acompanhamento de projetos em TI. Acredito que a maioria dos leitores esteja acostumada e familiarizada com os gráficos de Gantt. Apesar de serem bastante difundidos e utilizados mundo afora, pessoalmente julgo que esse método de acompanhamento funciona muito bem quando o foco são datas de entrega ou planejamentos de longo prazo. Quando focamos no acompanhamento da produtividade de uma equipe no dia-a-dia, o gráfico burndown do SCRUM e o baseado na produtividade do Kanban se mostram muito mais robustos e evidentes.

Ilusao de Otica
A principio se vê o rosto de uma mulher, porém ao observar mais atentamente, também se vê um saxofonista.

Para este post, vou focar no gráfico de burndown. Neste gráfico, o eixo horizontal representa os dias de duração de uma sprint e o eixo vertical a quantidade de tarefas que ainda não foram cumpridas dentro do espaço de tempo determinado. Dessa forma, todos os dias a gerência da equipe pode verificar a produtividade do dia anterior e qual a meta que precisa ser alcançada para que todas as tarefas que ainda restam consigam ser finalizadas no prazo.

Acredito que a maior dificuldade para a equipe de gestão de um projeto SCRUM é saber interpretar os dados que lhe são mostrados no gráfico e como repassar essas informações preciosas para o product owner do projeto ou o cliente em questão. Sprint passada enfrentei um problema similar. Algumas alterações no burndown não foram bem interpretadas pelo product owner do projeto. Percebi que, apesar de atingir muito bem seu objetivo, algum tipo de informação relevante estava faltando ali. É como se a informação estivesse na frente dos nossos olhos, mas a nossa forma de pensar estivesse bloqueando o real entendimento.

Decidi então adicionar uma nova curva ao burndown. Ao invés de mostrar somente a curva da quantidade de tarefas “queimadas” durante os dias da sprint, coloquei também uma nova curva onde apresentávamos a evolução do número total de tarefas. Pode parecer estranho para alguns, mas no SCRUM as tarefas que devem ser executadas em cada iteração podem variar de acordo com a demanda. Durante uma sprint, podemos tanto remover como adicionar novas tarefas e justamente essa visibilidade foi a que senti que estava faltando no burndown do meu projeto. Uma descida mais suave no gráfico de produtividade não significa que a equipe teve uma baixa produtividade, mas sim a influência do incremento do número de tarefas a serem executadas naquele período.

Gráfico de Burndown exibindo a curva com a evolução do número total de Tarefas