Job description
A Aprova e a missão do time de Engenharia
A Aprova é Govtech líder em crescimento no Brasil. Nosso objetivo é utilizar o potencial da tecnologia para ajudar o governo a melhorar a vida das pessoas, impactando de forma positiva na redução do gasto com papel, no meio ambiente, na burocracia, evitando o deslocamento e reduzindo o tempo necessário para aprovações.
Em 2022, recebemos o nosso segundo aporte, no valor de R$ 22,5 milhões, liderado pela Astella e Vox Capital, passando a ser o maior investimento feito em uma Govtech da América Latina. Esses recursos vieram para impulsionar ainda mais os nossos produtos e alcançar nosso maior objetivo, tornar as prefeituras e câmaras 100% eficientes, menos burocráticas e digitais pra todos.
Nosso time de tech está em constante crescimento e estamos em busca de Software Engineers e Tech Lead que queiram resolver grandes desafios, construir sua carreira com a gente e, juntos, desburocratizar este Brasilzão!
Sobre a vaga:
O Tech Lead é responsável por gerir os aspectos técnicos de um software, tomando decisões técnicas e estratégicas para garantir o sucesso dos projetos de desenvolvimento de software. Trabalha diretamente na programação de um software e apoia as equipes de desenvolvimento como líder técnico. Busca novas soluções e tecnologias ao projeto, priorizando a resolução mais eficiente possível para os problemas que aparecem. O Tech Lead responde ao Engineering Manager.
Como trabalhamos
- Os Product Managers realizam entrevistas, coletando dados da aplicação de uso e ouvindo stakeholders diversos e constroem a visão das features, que é uma documentação que norteará o desenvolvimento nos próximos 3-6 meses daquele problema/solução;
- Em seguida o Product Manager quebra em pequenas entregas, e após input do Software Engineer e Tech Leads em refinamentos a User Story entra em sprint para desenvolvimento, de acordo com as prioridades da empresa. Nossas sprints têm duração de 15 dias e cada uma das nossas Squads são responsáveis por diferentes áreas de nossa Plataforma;
- Possuímos um time de QA com uma suíte de testes automatizados (end to end) o que ajuda o Software Engineer a garantir a qualidade da entrega;
- Utilizamos o GitHub para gerenciamento e aprovação das Pull Requests
- Utilizamos o Jenkins para a realização de deploys nos diferentes serviços e ambientes que temos.
- Estamos trabalhando para que nossos processos sejam cada vez mais automatizados via Terraform.
- Realizamos releases diárias, em horários fora de pico (18h).
Main responsibilities
- Acompanhar a idealização de soluções de features a partir da necessidade desenhada e garantir uma comunicação/fluxo eficaz com o time de Produto e partes interessadas, incentivando o time tech a compreender as entregas e as soluções propostas, com o olhar para o negócio e foco na entrega de valor para o cliente;
- Pesquisar novas tecnologias e ser o precursor da cultura da inovação, desenvolvendo e implementando boas práticas de software e disseminando estas práticas no time;
- Garantir o melhor padrão de qualidade, assegurando que os Desenvolvedores sejam owners de todo o ciclo de vida do produto.
- Elaborar visão técnica do que está sendo desenvolvido a fim de que a equipe desenvolva com a máxima eficiência, controlando o pipeline do projeto e garantindo as entregas;
- Produzir especificações e determinar a viabilidade operacional;
- Incentivar a escrita de códigos bem estruturados e limpos, eficientes e testáveis, seguindo as guidelines definidas pelo time de Engenharia;
- Destravar o time nos cenários mais complexos: Fazer o papel de mentor e, quando necessário, ajudar individualmente cada profissional com rotinas de acompanhamento;
- Ser o protagonista na elaboração e execução de planos estratégicos conforme objetivos de negócio da empresa, em busca de entregas de impacto na escalabilidade da aplicação.
- Delegar tarefas complexas, gerir o tempo de forma eficiente e ter um olhar estratégico para otimizar os fluxos de trabalho;
- Fazer e garantir a documentação técnica das tarefas entregues: ler, conferir, corrigir documentação gerada pela equipe, disseminando o conhecimento entre a área;
- Ser investigativo e atento aos incidentes: identificar gargalos e intensificar esforços no desenvolvimento do time para elevar a barra na qualidade das entregas. Frente a incidentes, o Tech Lead deve assumir a responsabilidade na condução da solução mais adequada e rápida;
- Ser um facilitador da comunicação entre a área de Engenharia e as demais: assegurar a comunicação ágil e clara com os outros times, garantindo que os membros da equipe de engenharia trabalhem de forma colaborativa, compreendam os casos mais críticos e fiquem por dentro das dores trazidas pelo cliente.
- Projetar, desenvolver e manter aplicações desenvolvidas pela companhia de maneira full stack, incluindo backend RESTful em TypeScript, NodeJS e Python, e frontend em TypeScript + Angular.
- Ser owner de todo o ciclo de vida do desenvolvimento de software, escrevendo códigos bem estruturados, eficientes e testáveis, participando de revisões de código produzidos pelos colegas, garantindo nosso atual padrão de qualidade e sugerindo melhorias em todos os processos.
- Ser referência técnica para os membros da equipe de engenharia e especialista em arquitetura da informação, auxiliando em dúvidas e configurações de cenários complexos.
- Compor a elaboração e execução de planos estratégicos conforme objetivos de negócio da empresa, em busca de entregas de impacto na escalabilidade da aplicação.
- Impulsionar melhorias significativas para um crescimento sustentável da aplicação, contribuindo com o design, arquitetura e na otimização das estruturas de dados de forma eficaz e inovadora.
- Estabelecer comunicação eficaz com o time de Produto e partes interessadas, para compreender as entregas e as soluções propostas.
- Elaborar testes unitários seguindo as guidelines que serão estabelecidas e mantendo-se atualizado com as tendências tecnológicas.
- Disseminar conhecimento para o time, criando documentação técnica das tarefas entregues.
Requirements and skills
- Graduação completa em Analista de Sistemas, Ciência da Computação, Engenharia da Computação ou áreas afins.
- Experiência na elaboração e execução de projetos complexos de forma estratégica.
- Ser referência técnica, especialista em arquitetura da informação e ter cases de construção de aplicações escaláveis.
- Ser referência técnica nas nossas stacks: NodeJS, Typescript, Angular ou Vue ou React, MongoDB, e ferramentas da AWS.
- Experiência construindo produtos que são distribuídos no modelo SaaS - Software as a Service.
- Habilidades de comunicação para explicar conceitos técnicos de forma clara e compreensível para o cliente e informar as ações de forma objetiva e coesa ao time.
- Experiência em construção de aplicações em paradigma DDD (Design Driven Domain).
- Experiência em construção de features de integrações (REST e SOAP).
- Experiência em implementação de tecnologias de filas como RabbitMQ.
Diferenciais
- Já ter trabalhado em empresas que crescem seu faturamento 2-3x ao ano (Startups).
- Experiência construindo produtos que são distribuídos no modelo SaaS - Software as a Service.
- Ter vivência em aplicações com regras de negócio similares a da Aprova.
Nossa Stack
Estamos baseados em uma arquitetura de microsserviços em ambiente serverless, totalmente suportada pelos recursos da AWS.
Backend: Implementamos um backend RESTful utilizando microsserviços serverless em TypeScript e Node.js, com o framework Fastify. Essa atualização nos permite criar uma base ainda mais ágil e eficiente, mantendo a flexibilidade essencial para nossas operações. Estamos também migrando parte dos fluxos para operações assíncronas, utilizando RabbitMQ e SQS.
Frontend: Atualmente, utilizamos Angular para o desenvolvimento de interfaces interativas e dinâmicas. Implementamos também micro front-ends, garantindo maior modularidade e autonomia no desenvolvimento.
Práticas e Ferramentas: Utilizamos Domain Driven Design (DDD), RxJS e programação reativa em novas implementações. Mantemos 100% de nossa infraestrutura como código, seguindo as melhores práticas cloud-native, facilitando a escalabilidade e a manutenção contínua. Além disso, reforçamos nossa abordagem de testes automatizados com Playwright + Axios para o frontend e backend, garantindo a qualidade das entregas.
No que diz respeito à observabilidade, empregamos Grafana integrado com OpenTelemetry para monitoramento em tempo real e tracing detalhado, permitindo uma investigação ágil e eficiente de erros, além de otimizar o desempenho de nossos serviços.
Banco de Dados: Contamos com MongoDB e PostgreSQL como nossos sistemas de gerenciamento de banco de dados, proporcionando confiabilidade e flexibilidade para diferentes demandas.
Serviços AWS: Para suportar nossa arquitetura, confiamos em uma variedade de serviços da AWS, incluindo S3, SQS, RDS, Lambda, CloudFront e CloudFormation. Isso nos permite oferecer aos nossos clientes serviços confiáveis e de alta performance.
Automação e Gerenciamento: Implementamos integração contínua e entrega contínua (CI/CD) utilizando Jenkins, com integração ao Slack via n8n, para garantir uma entrega rápida e eficiente dos nossos produtos. Para organização e gerenciamento eficazes das tarefas de desenvolvimento, contamos com o Jira.
Estamos continuamente refinando nossa stack para enfrentar os desafios de escala e garantir que possamos atender às crescentes demandas de nossos clientes de maneira eficaz e inovadora.
Additional information
OFERECEMOS:
- Plano de Saúde Bradesco 100% pago pela empresa;
- Convênio Odontológico;
- Vale Refeição Swile;
- Seguro de Vida;
- TotalPass;
- Desconto para Psicoterapia em parceria com a Vittude;
- Day off para o seu aniversário;
- Equipamentos fornecidos pela empresa.