O documento discute a carreira de desenvolvedor de software, desde júnior até sênior. Apresenta as principais responsabilidades de um desenvolvedor, como compreender requisitos, construir códigos, testar e implantar sistemas. Também explica como o mercado classifica os desenvolvedores de acordo com tempo de experiência e habilidades técnicas, e dá dicas sobre por onde começar a carreira nessa área.
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Carreira Desenvolvedor
1. A Carreira de Desenvolvedor: Do Jr ao
Sênior
Workshop de Informática - IFSC - Canoinhas
2. Marcos Pereira
Ciência da Computação pela Universidade
Federal de Alagoas
Mercado de trabalho desde 2009 (Alagoas, São
Paulo, Rio de Janeiro, Santa Catarina)
Engenheiro de Software Sênior na Agriness
(Florianópolis/SC)
marcospereira.mpj@gmail.com
marcos.pereira@agriness.com
http://marcospereirajr.com.br
https://github.com/marcospereirampj
3. A Carreira de Desenvolvedor: Do Jr ao Sênior
O que veremos?
• O papel do desenvolvedor
• O que o mercado atual espera do
desenvolvedor
• Como o mercado atual classifica a
experiência desse profissional
• Por onde começar
O que não veremos?
• Fórmulas de como ser um bom profissional
• Definições de quais são as melhores
tecnologias
• O quer fazer na sua vida profissional
6. Desenvolvedor de Software
Compreender Construir Testar Implantar
Em todas as etapas, o
desenvolvedor nunca está só!
Desenvolvedor != Programador
Desenvolvedor
8. Desenvolvedor de Software
Analista de Requisitos
Engenheiro, Analista
e/ou Arquiteto
Analista de Testes ou
QA
Analista de
Infraestrutura
Elabora a documentação
técnica de especificação
de requisitos de softwares
e status report para
gestão de projetos.
Elaborar arquitetura
executável que suporte os
requisitos não-funcionais
de um sistema bem como
os requisitos funcionais
mais críticos.
Realizar a análise do
sistema, do ponto de vista
dos testes, a fim de
modelar e elaborar os
casos de testes.
Presta suporte e
manutenção de servidores
e data center, planeja
capacidade e desenvolve
projetos de melhorias dos
serviços corporativos.
Essas não são responsabilidade do desenvolvedor, mas ele deve saber
fazer e auxiliar quem faz.
9. Onde estamos?
1. Tente listar as atividades que você, como desenvolvedor, realiza
(trabalho ou projetos acadêmicos).
• Você participa de atividades de levantamento de requisitos?
• Você ajuda a definir a arquitetura da solução e as tecnologias
que serão utilizadas?
• Você ajuda a definir quais testes devem ser implementados e
qual o mínimo aceitável para garantir qualidade?
• Você ajuda a disponibilizar soluções desenvolvidas nos
ambiente finais?
10. O mercado de trabalho e experiência do
profissional
12. Experiência do Desenvolvedor
Tempo de Trabalho Conhecimento (Stack)
• Trainee (até 2 anos)
• Junior ( 2 a 5 anos)
• Pleno (5 a 10 anos)
• Sênior (10 anos a 15 anos)
• Master (a partir de 15 anos)
Isso não uma é regra!!
• DevOps
• Back-end
• Front-end
• Mobile
• Full-stack
Esse é nosso foco!
20. Onde estamos?
1. A partir da lista de habilidades que você montou, tente encontrar
onde você se encaixa (back-end, front-end, mobile, devOps, full-
stack).
23. Por onde começar?
• Guia de Desenvolvimento da ThoughtWorks:
• O guia oferece caminhos de aprendizado baseados nas experiências de
profissionais da área.
• Esse guia provê dicas e recursos para auxiliar no desenvolvimento das
habilidades técnicas através de recursos de aprendizagem já existentes.
25. Codificação
• Programe em (pelo menos) uma linguagem de programação orientada a objetos
• Programe em (pelo menos) uma linguagem de programação funcional
• Saiba testar seu código
• Saiba utilizar um sistema de controle de versão
• Conheça sua IDE e/ou editor de texto
• Utilize boas práticas de codificação
• Saiba como refatorar código
26. Padrões de Código
• Garantir extensibilidade, manutenibilidade, flexibilidade, fácil entendimento e
qualidade.
• Cada linguagem de programação é construída em cima de um paradigma diferente
que, muitas vezes, tenta resolver esse problema de formas distintas.
• Cabe ao desenvolvedor ter conhecimento desses conceitos para o bom uso dessas
ferramentas.
27. Arquitetura de Software
• Garantir se os requisitos de qualidade estabelecidos (como performance,
escalabilidade, segurança) e restrições impostas ao desenvolvimento (restrições
legais, de plataforma, etc) vão ser cumpridos.
• Todos os sistemas têm uma arquitetura de software, mas nem toda arquitetura é boa
ou sequer adequada ao problema que o sistema tenta resolver.
• Exemplos: 12 factor apps, Clean Architecture, Microserviços, Command-Query
Responsibility Separation (CQRS).
28. Processos de Desenvolvimento
• Construção do time; comunicação com cliente, usuário ou especialista de negócio;
gerenciamento das filas de tarefas; abordagem para descoberta de funcionalidade;
etc.
• Métodos Ágeis:
• Scrum; Extreme Programming; Dynamic System Development Model (DSDM); Microsoft
Solutions Framework (MSF),...
29. Testes e Qualidade
• Testes funcionais:
• Testes manuais; Testes automatizados de interface; Testes automatizados de
integração; Testes exploratórios; Testes de regressão; Testes de fumaça.
• Testes não funcionais:
• Testes de performance; Teste de segurança; Teste de usabilidade.
31. Testes e Qualidade
• Análise de Código:
• Code review e ”pull request”.
• Ferramentas Automatizadas (Sonarqube, Checkstyle, FindBugs, etc).
• Identificar pequenos problemas:
• Duplicações de código; Comentários desnecessários; Complexidade ciclomática;
Cobertura de testes inexistente.
32. Continuous Integration e Continuous
Delivery
• Continuous Integration:
• Integrar mudanças no mesmo repositório de forma frequente (várias vezes ao dia);
• Isso permite detectar erros mais rapidamente, aumentando a qualidade e trazendo
mais segurança para fazer uma entrega.
• Continuous Delivery:
• Continuous Delivery é o próximo passo após a Continuous Integration.
• Transformar o que já está integrado em valor para o usuário final.
41. A Carreira de Desenvolvedor: Do Jr ao Sênior
Referências:
• Guia de Desenvolvimento Técnico -
ThoughtWorks Brasil
• O Programador Apaixonado – Chad
Fowler
• The Pragmatic Programmer: From
Journeyman to Master - Andrew
Hunt & David Thomas
Marcos Pereira
marcospereira.mpj@gmail.com
marcos.pereira@agriness.com
http://marcospereirajr.com.br
https://github.com/marcospereirampj