Vaga de Full-stack Developer Sênior
1 vaga: | Publicada em 17/05
- A Combinar
Sobre a vaga
### Como trabalhamos
1. 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;
2. Em seguida o Product Manager quebra em pequenas entregas, e após input do
Software Engineer
em refinamentos a User Story entra em sprint, as sprints tem 15 dias e o
Software Engineer
estima em story points o que reflete esforço e complexidade;
3. O *Software Engineer* inicia a implementação seguindo requisitos técnicos
amplos que garantem liberdade da abordagem a qual sempre pode ser validada com o
Tech lead e CTO;
4. Possuímos um time de QA com uma suite de testes automatizados (end to end) o
que ajuda o *Software Engineer* a garantir a qualidade da entrega;
5. Após isso a Pull Request sobe numa branch main (só possuímos uma branch) que
depois é mergeada com o Jenkins. Estamos trabalhando para que esse processo seja
cada vez mais automatizado via Terraform.
6. Realizamos releases diárias, entre 1-6 releases em horários fora de pico (18h).
Todo o deploy leva em torno de 30 min.
### **Responsibilities.**
- **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.
- **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 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;
- **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.
- **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;
- **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.
- **Elaborar testes unitários** seguindo as guidelines que serão estabelecidas e
mantendo-se atualizado com as tendências tecnológicas.
- **Estabelecer comunicação eficaz** com o time de Produto, e partes interessadas,
para compreender as entregas e as soluções propostas.
- **Disseminar conhecimento para o time,** criando documentação técnica das
tarefas entregues;
- **Ser investigativo e atento aos incidentes**:
identificar gargalos e intensificar esforços no desenvolvimento do time para
elevar a barra na qualidade nas entregas, propondo uma solução mais adequada e
rápida;
### 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, NodeJS e Python. Isso nos permite criar uma base sólida para nossas
operações, mantendo uma flexibilidade essencial.
**Frontend:**
- Em nosso frontend, usamos tecnologias como Angular, Vue e React para criar
interfaces interativas e dinâmicas, proporcionando aos usuários uma experiência
atraente e amigável.
**Práticas e Ferramentas:**
- Utilizamos Domain Driven Design, RxJS e programação reativa para 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.
- Utilizamos MongoDB e PostgreSQL como nossos sistemas de gerenciamento de banco
de dados, proporcionando confiabilidade e flexibilidade para nossas necessidades
variadas.
**Serviços AWS:**
- Para suportar nossa arquitetura, confiamos em uma variedade de serviços da AWS,
incluindo S3, SQS, RDS, Lambda, CloudFront, CloudFormation, entre outros. Isso nos
permite oferecer aos nossos clientes serviços confiáveis e de alta performance.
**Automação e Gerenciamento:**
- Implementamos integração contínua/desdobramento contínuo (CI/CD) usando Jenkins
para garantir uma entrega rápida e confiável de nossos produtos.
- Para organização e gerenciamento eficazes de nossas tarefas de desenvolvimento,
contamos com o Jira.
Estamos continuamente refinando nossa Stack para enfrentar os desafios de escala e
para garantir que possamos atender às crescentes demandas de nossos clientes de
maneira eficaz e inovadora.