**Você é apaixonado por Python, Django, IA e deseja participar de uma grande transoformação no mercado jurídico?
**A Freelaw está em busca de um Desenvolver de Software Back-end Sênior para se juntar ao nosso time dinâmico!
**Aqui, você terá a oportunidade de trabalhar com projetos desafiadores, moldar a experiência de nossos usuários e colaborar com uma equipe multidisciplinar, focada em entregar soluções inovadoras aos advogados que utilizam a nossa plataforma.
** Se você gosta de criar aplicações que geram impacto positivo no negócio, com foco em otimizar processos e gerar mais receita para a empresa, essa vaga é para você!
**Quais serão suas principais responsabilidades?
**:
- **Arquitetura e Design de Software**:Participar da definição e desenho da arquitetura da aplicação, considerando melhores práticas de escalabilidade, segurança e manutenção.
Estabelecer padrões de desenvolvimento e de versionamento de API, como RESTful ou até GraphQL, caso necessário.
- **Criação de APIs complexas**:Desenvolvimento de APIs eficientes utilizando Django Rest Framework, incluindo autenticação (JWT, OAuth), autorização, cache, e otimização de queries para evitar problemas de desempenho (como o N+1 problem).
- **Serialização de dados**:Desenvolvimento de serializers avançados (normalização e desnormalização), tratamento de relacionamento entre modelos e campos customizados.
- **Modelagem de dados**:Criação e manutenção de modelos no Django ORM, mapeando classes Python para tabelas no banco de dados (SQL e NoSQL).
- **Querysets otimizados**: Uso avançado de QuerySets, como queries select_related, prefetch_related, annotate, e aggregate para otimização de consultas ao banco.
- **Migrações**:Gerenciamento e planejamento de migrações de banco de dados de maneira eficiente, minimizando downtime e problemas com dados existentes.
- **Otimização de desempenho**: Identificação de gargalos de performance e criação de soluções escaláveis, como uso de cache (Redis, Memcached), otimização de consultas, e balanceamento de carga.
- **Escalabilidade de aplicações**:Preparar a aplicação para suportar picos de tráfego e grandes volumes de dados, utilizando boas práticas de escalabilidade horizontal e vertical.
- **Suporte e refatoração de código**:Manutenção e atualização de sistemas legados, refatorando código quando necessário para garantir que esteja de acordo com as melhores práticas e tecnologias atuais.
- **Migração de versões**: Atualização de versões do Django, DRF e outros pacotes de maneira segura, garantindo a compatibilidade e a não quebra de funcionalidades.
- **Implementação de boas práticas de segurança**:Garantir que a aplicação siga as melhores práticas de segurança, como proteção contra injeção de SQL, CSRF, XSS, segurança de API (autenticação, autorização), e tratamento de dados sensíveis.
- **Monitoramento e respostas a vulnerabilidades**:Implementar mecanismos de monitoramento de vulnerabilidades e resposta a incidentes de segurança.
- **Testes automatizados**: Desenvolvimento de testes unitários, de integração e testes de ponta a ponta utilizando ferramentas como pytest, unittest, ou o test framework do próprio Django.
- **Cobertura de testes**:Garantir que a cobertura de testes seja adequada e que as APIs sejam testadas com diferentes cenários, como grandes volumes de dados e situações de erro.
- **CI/CD**:Configurar pipelines de integração contínua e entrega contínua para automatizar testes e deploys.
- **Webhooks e sistemas de mensagens**: Implementação e consumo de webhooks e integração com filas de mensagens como Celery, RabbitMQ, ou Kafka.
- **Documentação de API**: Manter a documentação das APIs atualizada e clara, utilizando ferramentas como Swagger ou DRF-Spectacular para documentação automatizada.
- **Boas práticas de desenvolvimento**:Garantir que o código siga as boas práticas de Python (PEP 8) e de Django, promovendo a utilização de code reviews e linters.
- **Liderança técnica**:Orientar desenvolvedores juniores e plenos, conduzindo revisões de código e oferecendo suporte técnico.
Participar ativamente nas decisões técnicas da empresa, colaborando na escolha de tecnologias, padrões e frameworks.
- **Configuração de ambientes**: Definir e configurar ambientes de desenvolvimento, teste e produção (Docker, Kubernetes, etc.).
- **Deploy e monitoramento**: Auxiliar no processo de deploy contínuo, monitoramento de performance em produção (com ferramentas como New Relic, Sentry, Prometheus) e troubleshooting.
**O que você precisa ter para encarar o desafio?
**:
- Experiência avançada com Django e Django Rest Framework
- Conhecimento profundo de Django ORM, Views, Signals, Middlewares e Serializers avançados no DRF.
- Experiência no desenvolvimento de APIs complexas e no desenho de arquiteturas RESTful.
- Conhecimento em arquitetura de software
- Capacid