Diogo Espírito Santo

dres

Atlassian Project Manager - Xpand IT

As 5 principais metodologias agile: vantagens e desvantagens

ESTE ARTIGO EM 5 SEGUNDOS:
  • As metodologias Agile caracterizam-se pela dinâmica passo-a-passo, que permite entregas constantes e focada numa visibilidade a curto prazo, mas que nunca perde de vista o objetivo a longo prazo do produto.
  • Existem 5 principais metodologias Agile: Scrum, Kanban, Extreme Programming (XP), Lean Development e Crystal.

O que são metodologias agile?

A primeira vez que se ouviu falar de desenvolvimento Agile (ou do termo Agile) foi em 2001, quando uma comunidade de developers que estava cansada dos métodos de desenvolvimento existentes considerados como “pesados” – principalmente, a metodologia Waterfall – decidiu criar um manifesto, o Manifesto Agile. Este importante documento teve tanto impacto que se tornou a bíblia de desenvolvimento Agile até nos dias de hoje, reportando todos os princípios e boas práticas associados.

As metodologias Agile definem que, acima de tudo, devemos procurar a satisfação do cliente através de entregas constantes de software que traga valor ao mesmo, ao estabelecer comunicação constante com o cliente e também ao focarmo-nos na comunicação entre os membros da equipa. Ao contrário das práticas anteriores, a metodologia Agile não se caracteriza pela completa definição de um produto, mas por uma dinâmica passo a passo, através de uma interação dinâmica que permite entregas constantes e focada numa visibilidade near-shore mas que nunca perde de vista o objetivo a longo prazo do produto.

Segundo o Manifesto Agile e alguns dos seus 12 princípios:

? A satisfação do cliente é a principal prioridade, demonstrada através de entregas constantes e valor adicionado.

?Devem ser aceites mudanças aos requisitos, em vez de se seguirem requisitos rígidos, mesmo numa fase final de desenvolvimento: “Os processos Agile potenciam a mudança em benefício da vantagem competitiva do cliente”, conforme é referido no Manifesto.

? O cliente e a equipa de desenvolvimento devem trabalhar em conjunto diariamente, facilitando a sincronização da equipa e do produto.

? É imperativo conseguir um ambiente agradável e uma rede de apoio para as equipas de desenvolvimento. Apenas desta forma é possível mantê-las motivadas.

? Os processos Agile promovem um desenvolvimento sustentável graças ao constante ritmo e excelência técnica, que, por sua vez, melhoram a produtividade.

?Momentos retrospetivos dentro de uma equipa também são essenciais, permitindo que sejam feitos os ajustes necessários para promover a eficiência.

Basicamente, o desenvolvimento Agile segue um modelo incremental, que promove a colaboração dentro da equipa e o planeamento contínuo, assim como uma constante evolução e aprendizagem. As metodologias Agile devem respeitar o ciclo de desenvolvimento de software – planeamento, execução e entrega final – permitindo que o software seja desenvolvido por fases. Este processo faz com que seja mais fácil identificar e solucionar bugs ou quaisquer outras necessidades.

A principal vantagem de utilizar metodologias Agile não passa apenas pela rápida entrega de software, mas também pela constante entrega de valor ao cliente, visto que as entregas são incrementais.

Existem inúmeras metodologias que seguem a mentalidade Agile. Nesta publicação, realçamos cinco das principais metodologias Agile e as suas vantagens e desvantagens no universo do desenvolvimento de software. Mas não podemos aprofundar as diferentes metodologias sem antes referimos à crescente popularidade das metodologias Agile (ou pelo menos algumas delas) dentro da gestão empresarial, demonstrado que não é só o desenvolvimento de software que pode ser enriquecido ao usar estas práticas.

O desenvolvimento de negócio está a tornar-se um lugar cada vez menos previsível, tal como o desenvolvimento de software. Portanto, o desafio agora é “porque não” escolher uma metodologia Agile para o processo de gestão de negócios. Os métodos Agile são adaptáveis, permitindo tomadas de decisão rápidas e uma influência instantânea no desenvolvimento de negócios.

Principais metodologias agile:

1. Scrum

Scrum é, sem dúvida, o método mais utilizado entre as metodologias Agile. Scrum é caracterizado por ciclos ou fases de desenvolvimento, conhecidos como sprints, e pela maximização do tempo de desenvolvimento para um produto de software ao encontro de um objetivo, o Product Goal. Este Product Goal é um objetivo de valor em grande escala, dentro do qual os sprints levam a equipa de produto de Scrum mais perto do final.

Normalmente, é utilizado na gestão de desenvolvimento de produtos de software, mas também pode ser utilizado num contexto empresarial.

Todos os dias começam com uma reunião de 15 minutos, o daily Scrum, que tem o papel de sincronizar atividades e encontrar a melhor maneira de planear o dia de trabalho, permitindo verificar a “saúde” de sprint e o progresso do produto.

Vantagens:

  • A motivação da equipa é boa, porque os developers querem alcançar o prazo ótimo para cada sprint;
  • A transparência permite que o projeto seja seguido por todos os membros da equipa ou até de toda a organização;
  • Uma simples “definition of done” é utilizada para validar requisitos;
  • O foco na qualidade é constante com o método Scrum, resultando em menos erros;
  • A dinâmica deste método permite que os developers reorganizem prioridades, assegurando que os sprints que ainda não foram completos recebam mais atenção;
  • Um bom planeamento de sprints é priorizado, para que toda a equipa de Scrum perceba o porquê, o quê e o como das tarefas alocadas.

Desvantagens:

  • A segmentação do projeto e a procura de agilidade de desenvolvimento podem, por vezes, levar a equipa a perder o fio ao projeto enquanto um todo, estando focada nas pequenas partes;
  • O papel de cada developer pode não estar bem definido, resultando em alguma confusão entre os membros da equipa.

2. Kanban

A palavra Kanban tem origem japonesa e o seu significado está ligado ao conceito de “Just-in-Time”. Na prática, o método Kanban é organizado num quadro ou tabela (Quadro Kanban), dividido em colunas, apresentando cada fluxo dentro do projeto de produção de software. Ao longo da evolução do desenvolvimento, a informação contida na tabela é alterada, e sempre que uma nova tarefa surge, um novo “cartão” é criado.

Esta metodologia também é útil em departamentos de negócio empresarial, tais como RH, marketing, etc., trazendo a visibilidade desejada sobre todas as tarefas da equipa.

O método Kanban requer comunicação e transparência para que os membros de qualquer equipa saibam exatamente em que fase se encontra o processo/desenvolvimento e possam ver o estado de um projeto em qualquer altura. Está principalmente focado na capacidade da equipa e é melhor para processos que sejam sujeitos a pequenas mudanças.

Vantagens:

  • Capacidade de ver todas as tarefas de um único projeto (organizado por Completo, Em Progresso ou Em Teste, por exemplo), através do conceito simples de “Cartas”;
  • Pode ser estabelecido um limite sobre o número de tarefas em simultâneo (ou seja, a quantidade de trabalho, tendo em conta a sua resolução ou a entrega);
  • Foca-se na duração de um ciclo – quanto tempo demora até a tarefa ir do backlog para a fase final;
  • Permite entregas contínuas;
  • Provavelmente uma das metodologias mais simples de se implementar fora do mundo de TI.

Desvantagens:

  • É possível que membros da equipa interpretem mal a informação exposta no Quadro Kanban, especial quando o mesmo está desatualizado;
  • Uma vez que não existem prazos em Kanban, podem surgir problemas relacionados com o tempo, tais como atrasos, em cada uma das fases.

3. Extreme Programming (XP)

Este é um método típico de desenvolvimento Agile, desenvolvido por Kent Beck, e pode ser adaptado a empresas de desenvolvimento de diferentes dimensões. A Extreme Programming (“XP”) baseia-se na ideia de descobrir “a coisa mais simples que irá funcionar” sem colocar demasiada pressão na visão longo prazo do produto.

É uma metodologia que enfatiza valores como a Comunicação, Simplicidade, Feedback, Coragem e Respeito, e prioriza a satisfação do cliente sobre tudo o resto. Esta metodologia encoraja a confiança, motivando os developers a aceitarem mudanças nas exigências dos clientes, mesmo que estas cheguem durante as últimas fases do ciclo de desenvolvimento.

O trabalho de equipa é extremamente importante em XP, uma vez que, quando há um problema, ele é resolvido por toda a equipa de gestores, developers ou clientes, reunindo-os para promover uma conversa e envolvimento e quebrar as barreiras da comunicação. Todos se tornam peças essenciais do mesmo puzzle, criando um ambiente fértil para uma produtividade elevada e eficiência entre equipas. Em Extreme Programming, o software é testado desde o primeiro dia, recolhendo feedback para melhorar o desenvolvimento. O XP promove atividades como pair programming, e com uma forte componente de teste, é uma excelente metodologia de engenharia.

Vantagens:

  • A simplicidade do código escrito é uma vantagem, já que permite melhorias a qualquer altura;
  • Todo o processo e o ciclo de desenvolvimento XP é visível, criando objetivos para os developers, juntamente com resultados relativamente rápidos;
  • O desenvolvimento de software é mais ágil do que quando se usa outras metodologias devido aos testes constantes;
  • Promove uma forma de trabalho altamente enérgica;
  • A XP também contribui para elevar e manter o talento da equipa.

Desvantagens:

  •  O foco singular no código pode levar a que seja dada menos importância ao design, o que significa que tem de receber atenção redobrada mais tarde;
  • Esta metodologia pode não funcionar se todos os membros da equipa não estiverem situados na mesma área geográfica;
  • Em projetos XP, um registo de possíveis erros não é sempre mantido, e esta falta de monitorização pode levar a bugs semelhantes no futuro.

4. Lean Development

O desenvolvimento Lean é uma metodologia que nos chega diretamente da Lean Manufacturing, criada pela Toyota, e é aplicado ao desenvolvimento de software. Este método oferece uma framework conceptual e segue valores, princípios e boas práticas de desenvolvimento que podem ser aplicados a uma abordagem de desenvolvimento Agile.

O desenvolvimento Lean força a equipa a remover implacavelmente qualquer atividade que não traga valor ao produto final.

Existem sete princípios essenciais: eliminar o que não interessa (qualquer coisa que não traga valor efetivo ao projeto do cliente); desenvolvimento de qualidade (criar qualidade no desenvolvimento requer disciplina e controlo da quantidade de resíduos criados); criar conhecimento (a equipa é motivada a documentar toda a infraestrutura para mais tarde reter esse valor); compromissos diferentes (este ponto encoraja a equipa a não se concentrar demasiado no planeamento e antecipação de ideias sem ter uma compreensão prévia completa dos requisitos do negócio); entrega rápida (entregar valor ao cliente o mais rápido possível); respeitar a equipa (comunicar e gerir conflitos são dois pontos essenciais); otimizar o todo (a sequência de desenvolvimento tem de ser aperfeiçoada o suficiente para poder eliminar erros no código, a fim de criar um fluxo de verdadeiro valor).

Funciona ao construir soluções simples e apresentá-las aos clientes utilizando o respetivo feedback sobre o “produto” para o melhorar progressivamente. O conceito de “produto mínimo viável” é também frequentemente associado a “Lean”.

Vantagens:

  • Permite à equipa de remover atividades supérfluas, poupando assim tempo e dinheiro;
  • Diminui o tempo necessário para a entrega de funcionalidades, uma vez que prepara a equipa de desenvolvimento durante o processo de tomada de decisão, aumentando a motivação geral;
  • Metodologia facilmente escalável, facilmente adaptável a projetos de qualquer dimensão;
  • Não exige solução de engenharia em excesso ou requisitos empresariais.

Desvantagens:

  • Depende da capacidade da equipa de developers e de seguir os “princípios Lean”, o que requer developers extremamente dedicados e talentosos;
  • Torna-se fácil perder o foco, uma vez que várias tarefas estão divididas em vários elementos;
  • Requer alguns documentos, em particular, sobre as características do negócio que é o objeto do trabalho. Caso contrário, existe o risco de que o desenvolvimento seja realizado de forma incorreta e apresente erros.

5. Crystal

Esta é uma família de metodologias Agile, e o Crystal é uma das estruturas mais flexíveis, dando uma enorme liberdade à equipa para desenvolver os seus próprios processos. Concentra-se mais no individual e como estes interagem, e não no processo ou nas ferramentas; por isso, a comunicação é um aspeto chave essencial.

O Crystal tem variantes como a Crystal Clear (uma equipa de até 8 pessoas), Crystal Yellow (uma equipa de 10 a 20 pessoas), Crystal Orange (uma equipa de 20 a 50 pessoas) e Crystal Red (para equipas grandes de 50 a 1000 pessoas). O Crystal centra-se em princípios como Pessoas, Interações, Comunidade, Competências, Talento e Comunicação, com o objetivo de proporcionar o melhor processo de desenvolvimento de software possível. O núcleo deste processo de desenvolvimento é a interação e simbiose, que têm de existir entre as pessoas alocadas aos projetos e processos, de modo a trazer eficiência ao projeto.

Cada projeto é único e sofre alterações frequentes, pelo que a equipa deve encontrar as suas próprias formas de o levar à sua conclusão tomando as melhores decisões.

De acordo com o seu fundador, Alistair Cockburn, “Crystal é uma família de metodologias de desenvolvimento de software, que funciona com o poder investido pelas pessoas, e é extremamente leve e moldável”. Basicamente, Cockburn acredita que o talento e a forma como os membros da equipa interagem trazem benefícios para todo o projeto.

É uma metodologia leve em termos de documentação, onde as equipas podem encontrar os seus próprios caminhos em vez das modalidades de trabalho preferidas, eliminando as despesas gerais de gestão e criando um processo “mais livre”.

Vantagens:

  • Crystal requer entregas frequentes, a fim de identificar eventuais problemas em todas as fases;
  • Há sempre espaço para melhorar as características, tirando algum tempo do desenvolvimento do software e permitindo discussões sobre como aperfeiçoar processos;
  • Facilita uma comunicação mais direta dentro das equipas e promove a interação e partilha de conhecimento entre os membros da equipa;
  • Requer um ambiente técnico com testes automatizados, gestão de configuração e integração frequente.

Desvantagens:

  • O facto de existirem variantes na família de metodologias significa que os princípios podem variar com a dimensão da equipa e do projeto, resultando em projetos que podem não ser tão simples;
  • Pode não funcionar tão bem em equipas geograficamente dispersas, devido à constante necessidade de comunicar e refletir;
  • O planeamento e o desenvolvimento não dependem de requisitos;
  • É ideal para equipas experientes e autónomas.

Pensamentos Finais

Na Xpand IT, o desenvolvimento de software é personalizado, concentrando-se nos resultados e na satisfação dos clientes, fase a fase. Todo o desenvolvimento é governado por princípios Agile. Portanto, a fim de respeitar o ciclo de desenvolvimento, de alcançar os resultados desejados, de prever possíveis erros, de maximizar a produtividade e de desenvolver com segurança, mantendo ao mesmo tempo os membros das equipas motivados, criámos a nossa própria metodologia: XPAgile (uma mistura de estruturas Agile – Scrum e Extreme Programming – que assegura os melhores resultados dentro dos prazos estabelecidos).

Se pretende saber mais sobre a metodologia de desenvolvimento da Xpand IT, clique aqui.

Diogo Espírito SantoAs 5 principais metodologias agile: vantagens e desvantagens
read more

É possível fazer gestão de ativos através de Jira? Sim!

Os ativos – denominados de “assets” – são uma peça cada vez mais fundamental de uma organização. As empresas precisam de ter uma visão geral perfeita sobre estes ativos, pois só assim poderão prestar os seus serviços da melhor maneira. Assim, a gestão de ativos deve ser, cada vez mais, uma prioridade para qualquer empresa.

Quando pensamos em ativos na nossa empresa, tendemos a visualizar apenas as coisas que usamos no nosso trabalho diário, como um computador, um carro, etc. De facto, isso é verdade, mas um ativo é mais do que isso. Pode ser um computador, mas também pode ser uma patente, um cliente ou um funcionário. No final de contas, pode ser algo que tenha valor por si e um perfil por si só.

Um problema comum é a forma como a organização gere os seus ativos. Esta questão surge porque várias áreas possuem diversas formas de registo e outras tantas formas de acompanhar esses ativos, o que se torna um problema quando precisamos de ter uma visão holística sobre eles.

Com o acelerado ritmo de crescimento dos negócios e também das diferentes localizações, o processo de aquisição de ativos tornou-se mais ágil do que nunca e por isso um pouco mais difícil de controlar pelas organizações.

Portanto, devemos perguntar-nos se sabemos quantos ativos a nossa empresa possui atualmente, a quem são atribuídos e quantos anos de utilização têm.

Essa falta de visão traz incerteza quando a organização precisa de enfrentar um novo desafio. Como um projeto, por exemplo, onde não está claro quais são os ativos disponíveis ou quando há uma oportunidade de substituir certos ativos porque não sabemos exatamente/rapidamente quantos ativos temos desse tipo, ou com mais de X anos e qual o seu status operacional.

Outra dimensão deste problema é a relação entre ativos, se existir um problema técnico com um determinado ativo, como isso afeta os restantes ativos da minha organização e como esse risco potencial afeta a minha operação?

Estes problemas não são problemas novos, são apenas problemas que estão a crescer e a ter mais visibilidade na maioria das organizações.

Que soluções existem para o meu negócio na gestão de ativos?

Assim, introduzimos o papel das ferramentas Atlassian. Algumas organizações já podem usar o Jira Service Management (JSM) para fins de helpdesk com o complemento Insight. A Atlassian tem o Insight (um complemento autónomo que agora incorpora o Jira Service Management Premium) que o pode ajudar na organização de tarefas.

Mas este artigo não é sobre empresas que têm o Atlassian’s Insight, mas sim sobre a gestão de ativos que pode usar o potencial nativo do Jira Service Management.

Costuma-se dizer que “menos é mais” e podemos não ter a necessidade de uma ferramenta poderosa como o Insight para a gestão de ativos.

Imaginemos um caso fictício de uma empresa que procura gerir os seus ativos com os recursos nativos desta ferramenta da Atlassian.

Uma das soluções possíveis é utilizar o nosso Jira Service Management para solicitar uma nova máquina, solicitar assistência técnica, etc. Assim, a partir de agora, as especificações e o status dos ativos deixam de ser registadas fora do controlo do Jira e do Jira Service em arquivos externos como o Excel por exemplo.

Criámos também um projeto específico entre o Jira e o Jira Service Management no qual, quando é feita uma solicitação, um novo processo de ativos é iniciado.

Agora, o pedido do JSM para aquisição de uma nova máquina (por exemplo) é relacionado com o ativo em Jira que já existe.

Desta forma, podemos seguir o fluxo de trabalho de solicitação para a atribuição de um ativo (como já era possível) e, ao mesmo tempo, podemos seguir o fluxo de trabalho de ativo específico enquanto ele passa por fases como por exemplo: “preparação do desktop”, “entrega”, etc.

É possível até trazer uma nova dimensão de informação adicionando uma camada de dados que é o “funcionário”. E, com filtros específicos, podemos obter relatórios sobre todos os ativos associados a um determinado “funcionário”.

Claro que provavelmente haverá uma preocupação em como inserir ou atualizar ativos existentes (com esta configuração) no sistema. Mas, para esse propósito, podemos sempre contar com os recursos de importação nativos ou a API. Portanto, se tivermos a configuração correta dos produtos, projetos e ativos e adicionarmos os padrões de relação corretos entre eles, podemos gerir ativos simples de forma nativa. E com base nesses dados podemos fazer pesquisas/filtros no ecossistema de ativos e obter dashboards de modo a ter uma visão sobre os mesmos.

Os filtros podem ser de grande utilidade, não apenas como ferramenta de pesquisa de ativos com base em campos específicos ou status de fluxos de trabalho, mas principalmente para servir de base para os dashboards.

No final, podemos contar com os dashboards que o Jira nos oferece para dividir as informações e obter relatórios estatísticos do ativo existente por tipo, funcionário, prazo de validade, em que estado ou por centro de custo – estes são apenas alguns exemplos.

Pensamentos Finais

No que diz respeito aos ativos, como pudemos ver, esta abordagem permite saber de forma rápida e eficiente o que temos “in house” e como podemos gerir ativos de forma assertiva!

Sinta-se à vontade para entrar em contato connosco para que possamos discutir como podemos melhorar e dar um novo potencial ao seu Jira.


Diogo Espírito SantoÉ possível fazer gestão de ativos através de Jira? Sim!
read more