A forma como os produtos e serviços são consumidos está mudando significativamente após a popularização das plataformas digitais. A exigência para estabelecer confiança na qualidade de software e no cumprimento do serviço está aumentando. Plataformas como Amazon, iFood e Uber estão entre algumas das principais empresas responsáveis pela mudança na forma de consumo.
Com o crescimento da demanda, surgem empresas com o desejo de ofertar seus produtos e serviços através de plataformas digitais. Um dos maiores desafios a serem enfrentados está relacionado ao aumento de escala do desenvolvimento de software da plataforma. À medida que a demanda cresce, mais mudanças são exigidas para acompanhar o ritmo de evolução do negócio. Inclusão de novas funcionalidades, melhorias que facilitam a usabilidade e capacidade de atender mais usuários sem comprometer o desempenho do sistema e a qualidade de software estão entre as principais expectativas do negócio.
Diante de um cenário complexo, e que muda frequentemente, é importante considerar a adoção de algumas estratégias, que já foram aplicadas em outras plataformas, e se provaram eficientes ao se deparar com a necessidade de aumento de escala do desenvolvimento de software.
Garantir a qualidade de software começa com a distribuição do time
Conforme a plataforma digital cresce, é natural que o software também cresça, e para atender as expectativas de negócio, geralmente é necessário contar com a ajuda de mais pessoas responsáveis pela evolução e manutenção do sistema.
Ao se trabalhar com mais pessoas em um mesmo projeto, torna-se mais difícil garantir um bom gerenciamento e eficiência de comunicação. Dependendo do tamanho do time, é interessante considerar a distribuição das pessoas em equipes menores.
Apesar de não existir um padrão para o tamanho ideal de uma equipe, é recomendado que um time possua entre sete a dez pessoas. Jeff Bezos criou a regra das duas pizzas, e esse pode ser um bom ponto de partida. A regra diz que na Amazon, eles tentam formar equipes que não sejam maiores do que podem ser alimentadas por duas pizzas.
Uma estratégia de distribuição de equipes que vem se consolidando é a de segregação dos times de acordo com os contextos de negócio. Em um E-Commerce por exemplo, poderia haver um time responsável pela venda, outro pelo estoque, outro pelo onboarding do cliente, e assim por diante.
Um ponto fundamental ao separar os times é garantir que eles consigam trabalhar de forma independente, ou evitar ao máximo a dependência entre times. A grande vantagem em ter times menores e independentes está na facilidade de gerência e melhoria da comunicação. Se uma equipe é altamente dependente de outra, a gerência e comunicação se tornam ainda mais difíceis de manter do que se fosse um time único.
Segregação do sistema
Quando muitos desenvolvedores trabalham em uma única base de código, suportando um sistema monolítico, maiores são as necessidades de alinhamento entre as pessoas. O conhecimento sobre todo o sistema é mais complexo, conflitos de implementações se tornam mais frequentes por compartilharem o mesmo código, adição de novos comportamentos se tornam mais complicados devido ao alto acoplamento, e bugs são incluídos, onde eventualmente, impactam todo o sistema. Torna-se mais difícil garantir a qualidade de software na evolução e manutenção da plataforma, e diante desse cenário, é importante considerar a segregação do sistema em aplicações menores.
Com contextos de negócio bem definidos, e equipes responsáveis por cada contexto, é interessante considerar a segregação do sistema similar à estrutura de segregação das equipes, onde cada time é responsável pela sua aplicação.
Assim como na distribuição da equipe, é fundamental que as aplicações sejam independentes, e consigam funcionar de forma isolada. É necessário se atentar para não se criar um monolítico distribuído, onde se aumenta a complexidade de evolução e manutenção, e não se obtém nenhuma vantagem de segregação do sistema. É desejável que o alinhamento entre os times aconteça somente quando houver mudanças em pontos de integração.
Adoção de metodologias ágeis do jeito certo
O planejamento e execução de métodos tradicionais não são suficientes para suportar os desafios atuais. A necessidade de evolução contínua e resposta rápida diante de novos cenários exigem mais dinamicidade no processo.
Diante de cenários de negócio cada vez mais complexos, e necessidade de mais agilidade nas entregas, é interessante considerar a adoção de metodologias ágeis no processo de desenvolvimento da plataforma. A aplicação de metodologias ágeis, do jeito certo, possibilita a experimentação de novas funcionalidades e melhorias de forma mais rápida, possibilitando a adequação do negócio com mais velocidade diante das necessidades dos usuários.
É importante observar que colar alguns post-it em um quadro e movê-los assim que as tarefas são concluídas não é Kanban. Definir um escopo de tarefas dentro de um intervalo e depois avaliar o que foi entregue não é Scrum. O foco do Agile não é em garantir que um processo funcione, ou que tarefas sejam executadas, e sim em entregar resultados com maior velocidade. Os times de desenvolvimento e negócio precisam estar comprometidos com a real entrega de valor para os usuários.
Qualidade de Software: Por onde devo começar?
O processo para suportar o aumento de escala do desenvolvimento de software em plataformas digitais não é simples, e demanda a coordenação de profissionais experientes, que já vivenciaram na prática, os desafios apresentados neste texto.
A EximiaCo possui consultores especializados no desenvolvimento de plataformas digitais, capazes de mitigar riscos e alcançar agilidade no processo de evolução do negócio mantendo a qualidade de software. Conheça a nossa solução de Software Development as a Service, na qual oferece a alocação de desenvolvedores seniores em sua empresa para acelerar a entrega de projetos de software sob a gestão de consultores estratégicos que acompanham a evolução do projeto garantindo a sua qualidade.