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.Integrações de APIs de terceiros: Desenvolver integrações com serviços externos, como provedores de pagamento, gateways de autenticação, serviços de email, e outros, utilizando Django ou DRF.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 FrameworkConhecimento 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 softwareCapacidade de planejar e arquitetar sistemas escaláveis e modulares, envolvendo múltiplos serviços e camadas de software.Conhecimento em boas práticas de design de software, como SOLID, DDD (Domain-Driven Design), e design de APIs.Otimização de performance e escalabilidadeExperiência em otimização de consultas no Django ORM (uso avançado de select_related, prefetch_related, annotate, etc.).Capacidade de aplicar técnicas de cache (Redis/Memcached), load balancing e trabalhar com fila de mensagens (ex: Celery, RabbitMQ, Kafka).Segurança em aplicações web e APIsExperiência com boas práticas de segurança no desenvolvimento web e APIs, incluindo proteção contra CSRF, XSS, SQL Injection, e segurança de autenticação/autorização (JWT, OAuth2).Capacidade de lidar com dados sensíveis, conformidade com LGPD ou GDPR.Testes automatizados e integração contínuaExperiência em escrever testes unitários, de integração e de ponta a ponta (usando pytest, unittest, etc.).Familiaridade com pipelines de CI/CD, incluindo configuração de integração contínua e deploy contínuo (Jenkins, GitLab CI, CircleCI).O que não é obrigatório, mas se você tiver será um diferencial:Já ter trabalhado em Startups;Já ter trabalhado com Sistemas de pagamentos;Já ter trabalhado com IA e automação de processos;Já ter trabalhado com SaaS;Ter alguma certificação de curso de Django ou algum projeto em Django entregue.