Quatro Atributos de uma Empresa Ágil
Desenvolver software é algo que sua empresa precisa fazer bem. É possível observar o crescimento da movimentação de lucros em canais digitais e você está começando a perceber que esta tendência vai continuar. A capacidade da sua empresa em se manter competitiva depende do seu uso de tecnologia. Essa mesma tecnologia dá a novos concorrentes a capacidade de ampliar seus negócios e escalar rápido. Sua empresa precisa ter o desenvolvimento de software como uma competência essencial.
Há uma proliferação de pessoas, livros e estruturas dizendo-lhe como gerenciar seus times de software, mas é difícil descobrir o que é realmente importante. Há pessoas consultoras batendo na sua porta e tentando vender todo tipo de produto Ágil, Escalado ou Distribuído, etc. Neste artigo vamos ajudar você a selecionar o que é realmente importante e se concentrar no que é ser ágil de verdade. Irei apresentar quatro atributos que vão possibilitar o desenvolvimento de uma capacidade de software que pode responder rapidamente a um mercado em rápida mudança.
Feedback
“Isso é o que clientes querem.”
O conceito de agilidade relaciona-se ao quão rápido você consegue reagir a seu ambiente. Pare por um momento e reflita se você se preocupa com feedback. Você quer entender clientes da empresa e adaptar seu produto de acordo com sua opinião?
O feedback mais importante que você pode obter sobre software é das pessoas que o utilizam. Receba feedback de clientes. Peça-o o quanto antes e com frequência. Há uma série de técnicas de Design de Experiência que você pode usar para fazer isso. Se as suas decisões estão sendo impulsionadas por algo diferente do que clientes querem, você está respondendo às coisas erradas.
Construir os ciclos de feedback certos irá ajudar você a compreender seu ambiente. Há métricas qualitativas, como perguntar a clientes 'Você gosta disso?' E há também métricas quantitativas que você pode implementar. Estas podem ajudar a responder perguntas como ‘isto é lucrativo?’ e ‘quantas pessoas estão usando isso?'
Um time responsivo
“Sim. Nós podemos fazer isso.”
Uma vez que você tenha feedback de clientes e do mercado, você precisa conseguir fazer algo com ele. Às vezes nos esquecemos que o software é desenvolvido por pessoas. Você precisa da equipe certa, com o suporte certo.
Para que o seu time de software produza funcionalidades rapidamente, ele precisa usar práticas que lhe permita agir rapidamente à medida que você descobre informações sobre o que clientes querem. Não importa se ele está usando Scrum ou Kanban ou XP. Contanto que ele consiga reagir rapidamente ao feedback e transformar isso em software em funcionamento, você vai estar feliz.
As pessoas que desenvolvem seu software precisam trabalhar juntas de uma maneira próxima. Times fragmentados desenvolvem software fragmentado. (Você já ouviu falar na Lei de Conway?) Trabalhe em estreita colaboração com o time para que ele compreenda seus objetivos. Trabalhe em estreita colaboração com clientes para que seu time desenvolva algo que clientes realmente querem.Seu time precisa ser capacitado. Você e sua empresa precisam estar ajudando, não atrapalhando. Um controle de mudanças e estruturas arquitetônicas ultrapassadas retardam times.
Uma base de código responsiva
“Está pronto. Devemos lançar?”
A conclusão é que seu código deve ser um patrimônio para a sua empresa quando você quiser aproveitar oportunidades. Ele deve fazer com que você evolua mais rápido, e não que você vá mais devagar. Temos falado muito sobre atividades importantes sobre o desenvolvimento de software, mas temos que lembrar que a programação de computadores está no centro de tudo isso. Um foco em boas práticas de design, testes e deployments é essencial para se desenvolver um código que esteja do seu lado.
Você precisa de confiança - confiança de que seu software não esteja sendo colocado em risco por um novo trabalho, confiança de que a experiência do consumidor (e sua reputação) permanecerá intacta. A maneira de se obter isso é através de testes automatizados. (Saiba mais sobre Desenvolvimento Orientado a Testes).
É necessário que seja fácil trabalhar com seu código para permitir que novas funcionalidades sejam adicionadas rapidamente. Seu time deve saber identificar facilmente o que é uma boa base de código responsiva e conseguir manter o código continuamente sustentável à medida em que ele cresce.
Lançar o seu software precisa ser algo simples e confiável. Nada que sua equipe desenvolva tem qualquer valor até que esteja em produção. A maneira de se obter isso é através da automação. Automatizar o deployment de seu aplicativo e a configuração de sua infraestrutura irá impedir sua infraestrutura de tornar-se misteriosa e imprevisível.
Direcionamento contínuo
“O que faremos a seguir?"
Não faz sentido ter um time e uma base de código responsiva se você estiver usando essa habilidade para desenvolver os produtos errados. Use o feedback que você está coletando para tomar decisões com base em informações e lance as funcionalidades certas no mercado em primeiro lugar.
É como a limpar sua casa. Imagine que você tenha acabado de receber um telefonema falando que alguns convidados estão chegando em meia hora. Você olha ao redor. A casa está uma bagunça. A cama não está feita, há pratos sujos na pia. O piso precisa ser varrido e há meias em cima do sofá da sala. Você está enfrentando o mesmo problema que times de software ao redor do mundo enfrentam o tempo todo: não importa quanto trabalho há para ser feito, você não pode arranjar mais tempo. Faça as coisas mais importantes primeiro. As pessoas definitivamente vão precisar se sentar no sofá, e catar as meias não vai levar muito tempo, então, faça isso primeiro. Seus convidados não vão gostar muito de ver pratos sujos, então comece a lavá-los e lave o máximo que puder antes que eles cheguem. Se acontecer de você quebrar o seu Record lavando as louças, você pode dar uma varrida na sala. Você deve passar por esse exercício de priorização continuamente com as funcionalidades que deseja desenvolver.
Você tem um time e uma base de código que está equipada para reagir a feedback. Você tem os ciclos de feedback certos para descobrir o que é importante para o sucesso de seu produto ou serviço. A última peça do quebra-cabeça é se certificar de que você está usando esse feedback para decidir qual e é a próxima etapa certa a ser desenvolvida.
Aviso: As afirmações e opiniões expressas neste artigo são de responsabilidade de quem o assina, e não necessariamente refletem as posições da Thoughtworks.