Há 6 anos, o maior desafio da Vindi é escalar a plataforma para diversos setores e tipos de clientes que a gente atende. Isso se torna diariamente, um desafio em decisões estratégicas, escolha de times, estudo de mercado e nas escolhas que a Vindi faz, do ponto de vista de produto. E isso impacta diretamente como os times de engenharia e de produto funcionam e se organizam.
Resolvi escrever sobre esse tema: organização de times de tecnologia, com um ponto de vista de fundador.
Times de engenharia e produto na Vindi
A plataforma que a gente desenvolve desde 2014 (segunda versão da Vindi) atende desde uma academia no Capão Redondo (periferia de São Paulo), até a maior empresa de software do país, a TOTVS. Falei um pouco dessas diferenças, quando ilustrei nossos modelos recorrentes (e os cases que atendemos), nesse artigo. Para atender essas duas pontas tão distantes entre segmentos e tamanhos de clientes, a gente desenvolveu um “core” forte, onde diferentes tipos de clientes podem usar funcionalidades diferentes e partes distintas da plataforma.
Na jornada de 2014 até 2017, duas coisas são importantes ilustrar:
- O Wagner Narde, CTO da Vindi atuou forte como principal líder técnico e arquiteto da plataforma. Como toda startup que cresce, precisou mudar as posições com a chegada de novas pessoas em engenharia e produto. Isso resultou em achar líderes técnicos que se desafiavam, em apoiá-lo em gestão de um time predominantemente júnior;
- Até atingirmos 1,000 clientes, o Wagner era o único engenheiro de software de plataforma. Isso impactou bastante em não ter do zero, uma cultura de desenvolvimento “enraizada” na empresa. Em 2017, a Plataformatec ajudou a gente nesse desafio e viramos inclusive case lá. Assista ao vídeo abaixo.
Quais são as tecnologias usadas pela empresa e qual conhecimento a empresa procura nos candidatos?
Aqui a gente usa bastante coisa, mas aqui vão algumas coisas mais diretas e que interessam a maioria das pessoas que procuram um benchmark na Vindi: Ruby on Rails, Sidekiq, Nginx, Linux, Redis, Docker, Chef, PostgreSQL, MySQL, ElasticSearch, AWS e etc.
Como os times de engenharia de software e produto funcionam e se dividem
Separamos as equipes por times e tribos. Para ilustrar ainda mais, dividimos os times de produto e engenharia por foco de produto & negócios, ou seja, por partes da plataforma:
- Recorrência: time que olha especialmente para features que ajudam nossos clientes a melhorar a cobrança recorrente, recuperação de inadimplência, regras de billing e cobranças no geral;
- Produtos internos (internal tools): para atender os + de 5,400 clientes, a gente cuida das integrações internas e ferramentas que usamos para fazer vendas, marketing e etc. Temos um time que olha diretamente para isso.
- Pagamentos: esse time, cuida de toda tecnologia e desenvolvimento que envolve o processamento financeiro (e meios de pagamento) da plataforma;
- Enterprise (grandes contas): a gente como time, não customiza a plataforma, mas recebe inputs de grandes carteiras, pois os feedbacks de produto que eles nos dão, são importantes para avaliar se precisamos desenvolver ou não. Esse tipo de cliente é muito exigente em termos de aprovação de cobrança, disponibilidade e novas funcionalidades. Esse time trabalha muito próximo ao atendimento dessas contas;
- Sustentação: esse ano a Vindi processou cerca de R$2,5 bilhões de volume financeiro. Isso impacta diretamente em tempo de disponibilidade, tempo de resposta e performance da plataforma de recorrência e do nosso gateway de pagamento. Temos bastante orgulho de como a plataforma foi arquitetada e isso requer o uso de tecnologia e cultura de uso de ferramentas excepcionais. Para ter uma ideia, basta olhar nosso uptime: status.vindi.com.br.
- Segurança: por cumprir com todos os requisitos PCI Compliance 1, temos uma cultura forte em segurança e para isso, garantimos uma responsabilidade aderente às principais políticas de segurança global e no mesmo nível que empresas como Stripe, Global Payments, Adyen, Stone entre outras que merecem a citação.
- Integrações: esse time cuida das integrações com os principais sistemas externos que a gente oferece para os clientes. Ex: VTEX, ERPs entre outros softwares. Eles têm um grande desafio de acelerar o desenvolvimento dos parceiros que estamos integrados, tendo que se comunicar e muitas vezes influenciar os times de engenharia “do outro lado”;
- Analytics: criamos o time de dados há pouco mais de 1 ano e ele vem se mostrado principal parceiro nas decisões estratégicas da empresa: em metas, produtos a serem desenvolvidos, vendas, marketing, orçamento e estudos de uso da plataforma.
Abaixo, ilustramos melhor como organizamos os times
Para cada um desses times, a gente se organiza em:
- Product designers;
- Product managers;
- Engenheiros (e arquitetos).
Como a gente decide o que fazer (e o que não fazer)
Primeiro mantra da empresa é só fazer o que realmente impacta nossos milhares de clientes, em termos de novas funcionalidades. E o processo decisório sempre é feito em conjunto com os inputs das áreas de negócios.
Se vai ajudar nossos clientes a venderem mais e sempre, levamos para a decisão sobre fazer ou não fazer
Em 2019, nesse processo de melhorarmos a cultura de desenvolvimento de produto e engenharia do nosso software, a gente recebeu um sinal bem legal de estarmos indo no caminho correto. Recebemos o prêmio Agilidade Brasil 2019, na categoria “Transformação Ágil” com o case “Do Go Horse à Gestão Ágil de Produto“. Ficamos bem felizes.
As cerimônias dos times de engenharia e produto na Vindi
As equipes de engenharia e produto são responsáveis por acompanhar o throughput em tempo real e parte dessa gestão de tarefas e andamento delas, estão dentro das cerimônias que fazemos dentro da empresa. Ilustro elas abaixo:
- Matriz de CSD (certezas, suposições e dúvidas). Os times de engenharia e produto tentam matar as dúvidas, validar as certezas e suposições de um possível problema, nessa cerimônia;
- Story mapping: antes de começar a desenvolver a solução, mapeia-se a jornada do usuário. No story mapping, a gente ilustra os épicos (macro) e depois disso, quebramos esses épicos em pequenas histórias, que dividem-se em releases para essa solução iniciar a ser desenvolvida;
- Refinamento: como o próprio nome já diz, é a cerimônia que revisa (e refina) tecnicamente as histórias que irão ser desenvolvidas. Nessa cerimônia, as equipes definem “como fazer”. Nessa etapa, quebramos em tarefas do menor tamanho possível, desde que gere algum feedback para o time.;
- Daily: cerimônia feita diariamente (em 5 a 10 minutos). Essa cerimônia é utilizada para identificação de gargalos e ajustes rápidos de curso;
- Retrospectiva por time: nossas retrospectivas existem para avaliar e otimizar o processo. É um modo de praticar a melhoria contínua, também conhecida como Kaizen. Dentro da retrospectiva, analisamos todas as métricas;
- Retrospectiva global (produto e engenharia): essa etapa analisa a o desenvolvimento da área como um todo, não somente os times.
As cerimônias e a forma como os times se organizam, nos ajudam a manter uma disponibilidade da plataforma acima da médias de mercado, a desenvolver um software de alta classe mundial (usando conceitos e práticas de níveis globais) e aceleraram o crescimento das pessoas que compõem esses times.
Não existe fórmula certa ou errada, mas aqui, vem funcionando para a gente dessa forma.
Quer conhecer um pouco mais sobre a gente? Acesse os materiais abaixo:
- Github da Vindi;
- Documentação das APIs da Vindi;
- Sobre a Economia da Recorrência;
- Código de cultura.
- Vindi Talks – evento dos times de engenharia e produto.