Entenda como a profissão de programador evoluiu e qual é o tipo de profissional que as empresas precisam hoje.
Tudo começou na Netflix em 2012, quando eles enfrentavam diversos problemas na implantação de novas versões do seu produto. Além da dificuldade de encontrar as origens dos problemas, as equipes ficavam “passando a batata quente” uma pra outra num processo que parecia não ter fim. Portanto, foi aí que começaram a perceber que mudanças eram necessárias.
Mas antes de falar sobre o desenvolvedor full cycle…
Agora, para entender como a Netflix resolveu esse problema, aliás, precisamos antes entender como funciona o ciclo de desenvolvimento de software.
Como funciona o ciclo de desenvolvimento de software?
O ciclo de desenvolvimento de software é composto por 6 etapas:
- Design (Projeto)
- Develop (Desenvolvimento)
- Test (Teste)
- Deploy (Implantação)
- Operate (Operação)
- Support (Suporte)
Além disso, processo de desenvolvimento tradicional para cada uma dessas etapas existe um profissional especializado:
- Design – Arquiteto de Software
- Develop – Programador
- Test – Engenheiro de Testes
- Deploy – Engenheiro de Implantação
- Operate – SysAdmin
- Support – Analista de Suporte
A vantagem de trabalhar com especialistas em cada etapa é que você cria uma grande eficiência naquela etapa, mas para um software entregar valor para o cliente ele precisa de todo o ciclo funcionando adequadamente. Ter equipes de especialistas em cada fatia do ciclo de vida, pode criar silos que retardam o progresso de ponta-a-ponta.
Agrupar diferentes especialistas em uma equipe pode reduzir o isolamento, mas ter diferentes pessoas para cada função em um mesmo time sobrecarrega a comunicação e cria gargalos de produtividade.
Agora que você já entendeu como funciona o ciclo de desenvolvimento de software atual e os seus problemas vamos dar uma olhada no que a Netflix fez.
O surgimento do desenvolvedor full cycle
Inspirado no movimento DevOps, a Netflix começou então um processo de aprendizado e feedback e compartilhando a responsabilidade de todo o ciclo do software entre todas as equipes.
“Operate what you build” numa tradução livre seria como “Ponha pra rodar o que você criou”, a mesma equipe projeta, desenvolve, testa, implanta e dá suporte.
Para garantir a qualidade em todo o processo, já que cuidando do ciclo todo estamos colocando “muita responsabilidade” em cada profissional. Foram criadas diversas ferramentas de automação pelos especialistas naquelas tarefas.
Em 2018 a Netflix tornou esse processo público, e batizou esse novo profissional de Full Cycle Developer, ou seja, o desenvolvedor full cycle.
Além da Netflix, várias grandes empresas ao redor do mundo já estão adotando essa abordagem e provavelmente esse será o programador do futuro em empresas de qualquer tamanho. Se numa empresa grande ganha-se agilidade na resolução de problemas, numa empresa pequena, ter um profissional multifuncional, reduz os custos.
Um novo profissional exige uma nova formação
Em 2020, a Digital House se reuniu com o Mercado Livre e a Globant para discutir como seria o profissional de desenvolvimento de software preparado para os desafios do mercado atual.
Precisaria ser um profissional que dominasse as últimas tecnologias e estivesse capacitado para superar os desafios em empresas inovadoras.
Qual seria a formação desse profissional começando do zero?
Soft Skills
Desenvolvimento e postura profissional – Pensar e organizar o desenvolvimento contínuo da carreira para o mercado de trabalho.
Learning agility – Conhecer as metodologias de aprendizagem para se preparar para o mundo do aprendizado contínuo (Lifelong Learning).
Trabalho em equipe e colaboração – Conhecer metodologias e ferramentas para trabalhar em equipe, além de dinâmicas de liderança, feedback e interação social.
Gestão do Tempo – De que adianta saber fazer e não cumprir os prazos? Como organizar as tarefas? Como manter o foco?
Comunicação Efetiva – Diversas empresas cheias de talentos vivem com problemas por falta de comunicação eficiente entre os colaboradores e equipes, vamos preparar os profissionais para esses desafios.
Metodologias de trabalho
Treinar nas metodologias ágeis (como SCRUM) e plataformas de trabalho remoto.
Design Thinking
Para inovar é preciso transformar ideias em produtos ou serviços. Vamos aprender a criar em equipe aproveitando o talento de cada um.
UX
Um bom software precisa ser fácil de usar, usabilidade é uma ciência que pode ser aprendida e é fundamental para a programação.
Fundamentos
Introdução a informática – É importante ter conhecimentos gerais de tecnologia além do mundo do software.
Programação imperativa – Começando a jornada no mundo do desenvolvimento com Javascript.
Programação orientada a objetos – Aprofundando em conceitos e práticas mais avançadas de desenvolvimento de software com Java.
Front End
Como criar interfaces, desde o layout, HTML e CSS, passando por design responsivo e aprendendo os frameworks mais atuais como React.
Testes
Com as técnicas e ferramentas corretas quem criou o produto é uma das melhores pessoas para encontrar seus erros e falhas. O que é Debugging e Troubleshooting e como funcionam provas funcionais e não funcionais, além de automatização de testes.
Base de Dados
Aprender a modelar um banco de dados e como funcionam os bancos relacionais e não relacionais.
Infraestrutura
Conhecendo os ecossistemas e custos, aprendendo a configurar o ambiente de produção passando por conceitos como Docker, C2 e S3, versionamento, monitoramento, Elastic compute, CI/CD, Kubernetes e Load Balancing.
Back End
Programando a estrutura e segurança dos aplicativos com Spring, MVC, APIs, Sessões e ORM.
Product Manager
Saber como funciona todo o ciclo de vida do produto também fora da área de desenvolvimento, desde o relacionamento com o cliente e mercado até o planejamento de negócios.
Data Analytics
Aprender a organizar e tratar os dados para extrair padrões e gerar insights valiosos para o ciclo de desenvolvimento do produto.
Tecnologia de Qualidade
Além de contar com uma infraestrutura tecnológica de qualidade, obtida por meio do Full Cycle, otimizar tecnologias, portanto, vem de encontro às urgências do mercado.
Com isso, potencializar o trabalho executado pela TI, aliás, impacta diretamente na experiência do cliente, o que resulta em uma jornada ainda mais atrativa.
Afinal, ter processos automatizados gera ganhos contínuos, como uma redução de erros. Como também, aumento as de vendas, melhorias direcionadas ao back office e outros pontos essenciais para a empresa como um todo.
Em suma, vale destacar que o TI acaba tornando-se uma das alternativas mais seguras às empresas que desejam aprimorar seus negócios. Aquelas que são centradas nos clientes ganham vantagem e preparam-se para um cenário de transformações constantes.