O que você precisa ter ou saber
- Experiência em desenvolvimento back-end, de preferência utilizando Javascript e/ou TypeScript (Node.js);
- Experiência em desenvolvimento front-end, de preferência utilizando Javascript e/ou React;
- Capacidade de trabalhar em um ambiente multifuncional, multi-linguagem e colaborativo, de maneira autônoma;
- Experiência e repertório sólido na implementação e definição de estratégias para testes automatizados (unitário/e2e/regressivo);
- Experiência sólida desenvolvendo softwares que utilizem bancos de dados relacionais (e.g. PostgreSQL, MySQL) e não relacionais (e.g. DynamoDB, MongoDB, DocumentDB);
- Experiência com Integração Contínua e Entrega Contínua (CI/CD), GitFlow, GitHub, GitHub Actions e Sonar;
- Conhecimentos em arquitetura síncrona / assíncrona;
- Experiência com Gestão de Incidentes e conhecimento em ferramentas de observabilidade e monitoramento, como New Relic, Crashlytics e afins;
- Conhecimento ou experiência sobre infraestrutura e fundamentos da plataforma AWS e seus produtos (e.g. EC2, Lambda, API Gateway, S3, SQS, RDS, DocumentDB, DynamoDB, Amazon ElasticCache for Redis, AWS Glue, e etc);
- Experiência com metodologias ágeis como Kanban;
- Cultura de documentação: documentar processos, postmortems, APIs, ADRs; Influenciar o time na construção e manutenção de documentações.
Será um diferencial se você tiver
- Cases de auxílio de pares com menor senioridade na evolução da carreira técnica e/ou compartilhamento de conhecimento;
- Experiência com práticas e ferramentas de experimentação, como VWO, Optimizely e Firebase A/B Testing;
- Conhecimentos de arquitetura hexagonal ou arquitetura limpa;
- Conhecimento em desenvolvimento com uso IA e utilização de IA na sua rotina.
Como será o sua dia a dia:
- Proponha e construa soluções contemplando as diferentes disciplinas do ciclo de desenvolvimento com foco em atender requisitos não funcionais e otimizar custos;
- Envolvimento em discussões técnicas, apontando fatos e dados e na execução das arquiteturas desenhadas conforme priorização do time, usando sua opinião e experiência com critério;
- Crie ADRs / design docs para soluções do time;
- Garanta monitoramento ativo do ambiente produtivo, com foco nas jornadas críticas;
- Acompanhe/monitore, critique e dissemine métricas e trade-offs de soluções técnicas e aponte caminhos de solução factíveis;
- Tome a iniciativa e assuma a responsabilidade diante de problemas e indisponibilidades, atuando com foco em troubleshooting e solução da causa raiz;
- Garanta a correta documentação de post-mortems e execução de planos de ação para correção da causa raiz;
- Ajude seus colegas de time a evoluir tecnicamente (através de pareamento, code review e feedbacks);
- Compartilhe conhecimento técnico com seus colegas de time, se posicionando como referência para eles sempre que for possível;
- Conecte-se com desenvolvedores fora do time, compartilhando boas práticas;
- Desenvolva artefatos reutilizáveis e de relevância para a squad/tribo;
- Participe ativamente das discussões de produto, contribuindo para a análise, refinamento e documentação dos requisitos funcionais e não funcionais.
- Priorize atividades de maior impacto no desempenho do time, se antecipe aos problemas e ajude seus colegas em bloqueios;
- Tome a iniciativa na fase de planejamento e refinamento para transformar ideias abstratas em tarefas acionáveis;
- Defina soluções e participe ativamente do refinamento de épicos, utilizando seu conhecimento dos domínios da squad e dos domínios adjacentes;
- Escreva código com a premissa de segurança em primeiro lugar, buscando ajuda com focais de segurança quando necessário;
- Aumente o escopo testado e automatizado nas aplicações;
- Seja uma influência e apoie pessoas desenvolvedoras a aumentar a qualidade e confiabilidade do código produzido.