O dia-a-dia da engenharia na Convenia
Tags: culture, php, javascript, remotework
Published: 2021-04-30 17:32:41

Salve pessoal! Toda área de desenvolvimento tem suas particularidades. Aqui na Convenia não é diferente. A seguir vou comentar algumas coisas do nosso dia a dia. Como e com o quê trabalhamos, quais processos utilizamos, entre outras coisas. 

---

## Tecnologia

Direto ao ponto: O nosso produto é dividido em vários serviços, cada um responsável por um domínio de negócio. São diversos backends, cada um servindo sua API REST em PHP usando o framework [Laravel](https://laravel.com), usando MySQL para persistência.

Nossas interfaces para os clientes são disponibilizadas como SPAs, desenvolvidas com [Vue.JS](https://vuejs.org) e WebComponents confeccionados por nós. Usamos [RSCSS](https://rscss.io) como metodologia de estilo. Estes SPAs comunicam-se via GraphQL com um [Backend For Frontend](https://samnewman.io/patterns/architectural/bff/) em Node.JS, que comunica-se com o MongoDB para queries e com as APIs REST para as mutations. Sim, os dados são sincronizados entre os bancos das aplicações com este NoSQL, na direção de uma arquitetura baseada em [CQRS](https://martinfowler.com/bliki/CQRS.html).

Como toda empresa que já colocou algum projeto de software no mercado, temos uma aplicação legada. Estamos trabalhando para a desativarmos ainda este ano, seguindo uma evolução sustentável nesse processo de refatoração.

Estruturalmente organizamos tudo isso com Docker e Docker-Compose, desde o desenvolvimento local, passando por nossos pipelines Jenkins em todos os ambientes até produção.


## Agilidade

Metodologias ágeis têm como objetivos priorizar as interações, ter mais coisas prontas antes e responder rápido a mudanças. Aqui na Convenia não é diferente e usamos a mentalidade ágil para organizar nossos processos.

Nossos times realizam entregas em ciclos. No último ano adotamos o Scrum para a entrega de valor nos times de produto. Evoluímos o modelo ao longo do tempo e estamos entrando em um processo mais próximo ao <abbr title="Feature Driven Development">[FDD](https://pt.wikipedia.org/wiki/Feature_Driven_Development) (Feature Driven Development)</abbr>. 

Também usamos o Kanban para o time de <abbr title="Site Reliability Engineering">[SRE](https://pt.wikipedia.org/wiki/Site_Reliability_Engineering) (Site Reliability Engineering)</abbr> seja nas demandas de correções ou mesmo no desenvolvimento de sistemas para nossa estrutura de experiência de desenvolvimento.

Também trouxemos do ágil a prática de Code Review, o Pair Programming, a reunião diária com todo o time (ainda mais útil em tempos de trabalho remoto) além da transparência com relação ao progresso do trabalho entre os times. Também estamos adotando o [12 factor apps](https://12factor.net/pt_br/) em nossos sistemas.

## Qualidade

Nós prezamos pela qualidade de nossas entregas. Seguimos a premissa de "Qualidade não é discutível". Estabelecemos nosso processo de maneira a não ser engessado para quem desenvolve e garantir que novas versões serão, no mínimo, tão boas quanto as anteriores.

Nossos serviços de backend passam por vários passos de análise estática (Padrão de código, adequação a boas práticas, code smell e controle de vulnerabilidades) ao longo do ciclo de desenvolvimento. Nossa cobertura de testes está acima de 95% em todos os nossos serviços. Só a cobertura não garante muita coisa, por isso nosso time explora quantos cenários forem conhecidos para cada parte do nosso software e os atualiza conforme evoluímos.

Do lado do frontend temos uma organização bem flexível para nossos layouts e componentes, desenvolvendo com regras do ESLint além de somente a formatação. Também adotamos a metodologia **RSCSS** para padronização de estilos e temos uma validação forte quanto a fidelidade visual junto ao time de Design e Usabilidade.

## Autonomia

A Convenia tem como base de sua cultura a Autonomia, abordada sob diversos aspectos. É uma empresa que preza pela Transparência e Colaboração por toda a organização. O foco de nossas ações é o cliente e isso significa muito olhar para nós mesmos.

Quando falamos de Autonomia Intelectual, respeitamos o conhecimento de todos, seja alguém que está começando na área ou com décadas de experiência. Todas as pessoas envolvidas têm voz ativa. Promovemos também que todos saibam escutar e compreender as ideias dos outros. Quanto mais conhecimento investido em algo, menores as chances de avançarmos por um caminho ruim.

Valorizamos tanto a diversidade de conhecimento que a incorporamos ao nosso processo. Temos um canal aberto a todos na empresa para a sugestão de mudanças para o nosso produto. Falando da engenharia todos são encorajados a sugerir novas e melhores maneiras de trabalhar e desenvolver. E fazemos isso como a própria internet evolui: com um sistema de [RFC](https://pt.wikipedia.org/wiki/Request_for_Comments) (Request for Comments)

## Identidade

Cada pessoa é muito importante no nosso time. E valorizamos as características individuais e trabalhamos na organização do time para que cada pessoa tenha a melhor experiência de codar e se desenvolver.

Realizamos mensalmente reuniões 1:1 (um a um) com todos os membros do time. Essas cerimônias têm o objetivo de deixar cada pessoa a par sobre o que aconteceu (ou não) de um mês para o outro, além de cuidar da sua evolução profissional. 

Falando em evolução profissional: temos a premissa de dar as mesmas oportunidades e preparação a todos para que cresçam no nosso time. E as regras estão claras para todo mundo. E cada um sabe como está com relação a sua carreira por um sistema baseado em dados, com forte influência da nossa cultura e do que esperamos individualmente de cada um, muito além do código. Isso eu conto em outro artigo com mais detalhes ;).

---

Somos a Engenharia da Convenia. Não somos uma empresa que está na bolsa, não somos o próximo unicórnio, não somos uma empresa que acredita que o lucro vem antes das relações humanas. Estamos aqui para fazer a melhor solução de RH, desenvolvida da melhor maneira, pelas melhores pessoas. 

Bora fazer parte?