BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Como manter-se ágil durante o crescimento

Como manter-se ágil durante o crescimento

Favoritos

Gerenciar a complexidade e o progresso dos negócios e do software foram os principais desafios à medida que a Yext começou a crescer, comentou Sean MacIsaac no Agile Business Day 2019. A empresa resolveu o problema com soluções amplamente aplicáveis e configuráveis pela equipe de clientes e ocultando a complexidade com serviços implementáveis independentes com interfaces claramente definidas.

Os primeiros dias da Yext envolveram a mudança de um produto focado exclusivamente em academias de ginástica para um que funcionava em diversos tipos de empresa. Enquanto a decisão foi liderada pelo CEO, todos os engenheiros e todos lideres de vendas estavam fortemente envolvidos no processo. A decisão foi tomada rapidamente e logo todos entenderam o contexto, os objetivos e os principais recursos necessários para fazer o produto funcionar em uma escala maior, sem esforço adicional em relação à comunicação.

Quando a Yext começou a crescer, os funcionários começaram a se especializar no lado comercial. Pessoas diferentes focaram em diferentes setores e tamanhos de clientes, portanto, mais stakeholders tiveram que se envolver na compreensão e solução das principais necessidades dos clientes, disse MacIsaac.

No lado técnico, a Yext abordou desafios como, estar disponível 24 horas por dia, 7 dias por semana e ter respostas para os principais problemas de escalabilidade:

Quando tínhamos de dez a quinze engenheiros, introduzimos mecanismos técnicos para solucionar os desafios de disponibilidade e escalabilidade, como balanceadores de carga e serviços implementáveis independentemente. Era necessário que as alterações nos serviços fossem compatíveis com versões anteriores até que todos os consumidores também fossem atualizados, mas esse era um preço pequeno a pagar pelo isolamento da complexidade.

MacIsaac mencionou que, para a funcionalidade central do produto, o desenvolvimento principal combinado com testes automatizados, integração contínua e sinalização de recursos permitem uma iteração rápida. Os engenheiros podem mudar o sistema e ter a confiança de que as alterações não quebrarão outras partes com as quais podem não estar tão familiarizados. As alterações de código são integradas constantemente. Não há surpresas no final dos projetos, como duas equipes que criaram funcionalidades incompatíveis. A sinalização de recursos permite que insiram um novo código na base, ativando-o apenas para contas de teste ou clientes beta iniciais.

A Yext adotou um modelo de P/D inovador que imita práticas utilizadas nos primeiros dias de inicialização. Formaram equipes multifuncionais que incluem estratégia, produto, vendas, desenvolvimento de negócios, engenharia e operações para novos produtos que se encaixam no mercado, para manter as vantagens que tinham na comunicação e alinhamento quando eram uma startup. MacIsaac mencionou que é difícil para os líderes sacrificarem os membros por novas equipes de desenvolvimento de produtos, mas a recompensa vale a pena, pois ter membros de equipe confiáveis, com autonomia para tomar decisões e implementá-las, foi fundamental para os principais esforços de pesquisa e desenvolvimento.

Sean MacIsaac apresentou como a Yext galgou os degraus da escala mantendo a agilidade, no Business Agility Day 2019. O InfoQ o entrevistou depois de sua palestra.

InfoQ: Como passaram de equipes de projeto para equipes estáveis e quais benefícios isso trouxe para a empresa?

Sean MacIsaac: Mesmo com a separação lógica dos serviços, chegou um ponto em que os engenheiros não podiam ficar pulando entre diferentes partes do sistema sem uma curva de aprendizado acentuada. Foi nessa época que passamos da propriedade total para todas as equipe do sistema, para equipes individuais que tinham posse de partes do software. Isso exigiu mais esforço de gerenciamento de projetos, pois alguns projetos abrangiam várias equipes.

Fizemos algumas coisas importantes para minimizar essa sobrecarga. A primeira foi ter equipes próprias de serviços que estavam intimamente relacionados. Muitos projetos ainda envolviam apenas uma ou duas equipes. A segunda foi obter um acordo antecipado sobre as interfaces entre os sistemas, o que permitiu que as equipes trabalhassem de maneira independente. Essas interfaces foram aplicadas pelo CI/CD e por testes automatizados para expor as diferenças nas suposições também.

O benefício que obtivemos da posse de serviços de longo prazo nas equipes, foi em relação a manutenção e operações contínuas. Após essa alteração, as equipes da Yext possuíam o domínio das partes do sistema, portanto, havia uma equipe que podíamos contactar se algo não estivesse funcionando como o esperado. Os times foram incentivados a lidar com a dívida técnica para reduzir problemas e tornar o sistema mais sustentável.

InfoQ: O que fez para amadurecer as práticas no Yext?

MacIsaac: A adoção de um padrão externo de conformidade foi uma etapa importante que nos ajudou a amadurecer os processos, tanto na engenharia quanto em toda a empresa. Somos formalmente auditados pela EY como parte da obtenção de um atestado SOC2 de segurança, confidencialidade e disponibilidade. Como parte da adoção do padrão, examinamos todas as práticas e melhoramos ou formalizamos muitas delas. Além de garantir que cumprimos os critérios necessários para passar na auditoria, obtivemos feedback da engenharia sobre o processo de desenvolvimento e as ferramentas usadas, fizemos melhorias que não apenas aumentavam a segurança e disponibilidade, mas também aumentavam a produtividade do desenvolvedor.

Um exemplo importante foi a implementação do nosso atual sistema de CI/CD. Como parte da adoção do padrão, formalizamos a configuração do sistema de CI/CD, incluindo a definição de testes automatizados de unidade, integração e aceitação que precisam passar antes que um serviço seja lançado em nossos ambientes de desenvolvimento, controle de qualidade, sandbox e produção. Embora muitas etapas e procedimentos individuais já tenham sido automatizados ou já tenham scripts, o processo de implantação de ponta a ponta ainda não está concluída. Isso criou, para membros individuais das equipes, a responsabilidade de garantir que as etapas de cada implantação acontecessem corretamente. Após este trabalho, podemos afirmar com segurança que os testes apropriados foram executados e aprovados antes de qualquer implantação, e os engenheiros podem se mover mais rapidamente sem precisar memorizar procedimentos complexos ou consultar instruções em um wiki.

A outra maneira pela qual o processo amadureceu foi muito mais ascendente. Como parte de retrospectivas regulares, equipes individuais examinam e ajustam os processos. Técnicas que funcionam bem acabam sendo compartilhadas entre as equipes, de maneira formal e informal, e são amplamente aceitas. Um ótimo exemplo é a adoção do programa de bugs no Yext. O primeiro foi o resultado de uma equipe aprimorando as práticas de controle de qualidade. O sucesso foi tão grande que a engenharia, o produto, o UX e outros decidiram adotá-lo como uma prática padrão.

InfoQ: Qual é o conselho para as startups que estão crescendo e desejam manter a agilidade?

MacIsaac: Olhando o lado funcional, precisamos nos concentrar na comunicação. Precisamos considerar os documentos e relatórios de status que criamos para as reuniões, como parte do processo de passar da criação da ideia para o produto que os clientes podem comprar e usar. No entanto, este é sempre um ato de equilíbrio. Por um lado, leva uma quantidade significativa de tempo para criar e consumir documentação e conduzir reuniões. Por outro lado, é impossível treinar uma grande equipe de vendas sobre a funcionalidade do produto sem os artefatos, sessões de treinamento, etc. Continuando a co-localizar pessoas que precisam de alta largura de banda e comunicação contínua, como UX, produto e engenharia. Como mencionei, precisamos focar em dedicar e incluir a estratégia, vendas e marketing quando empreendemos a criação de novas linhas de produtos para manter uma agilidade semelhante à de uma startup.

Do ponto de vista técnico, a agilidade do futuro quase sempre é resultado de investimentos hoje. Isso inclui atividades como lidar com dívidas técnicas nos serviços de uma equipe, a fim de torná-los mais sustentáveis. Também fazemos investimentos em ferramentas e infraestrutura para desenvolvedores. Esses investimentos geralmente aumentam a segurança de fazer alterações ou reduzem o tempo de feedback de um engenheiro escrevendo o código para ter certeza de que está funcionando. Na Yext, pretendemos gastar cerca de 20% do nosso tempo de engenharia agregando a esses tipos de atividades. Nas equipes, as atividades diminuem e fluem, dependendo das demandas de produtos da equipe e dos serviços que possuem, mas também temos alguns engenheiros totalmente dedicados a ferramentas e infraestrutura.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT