SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
A Carreira de Desenvolvedor: Do Jr ao
Sênior
Workshop de Informática - IFSC - Canoinhas
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
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
Qual o papel do desenvolvedor de software?
Desenvolvedor de Software
Desenvolver:
Adiantar, aumentar, melhorar,
aperfeiçoar, fazer progredir.
Desenvolvedor de Software
Compreender Construir Testar Implantar
Em todas as etapas, o
desenvolvedor nunca está só!
Desenvolvedor != Programador
Desenvolvedor
Analista de
Requisitos
Engenheiro,
Analista e/ou
Arquiteto
Analista de
Testes ou QA
Analista de
Infraestrutura
Desenvolvedor de Software
Compreender Construir Testar Implantar
Desenvolvedor
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.
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?
O mercado de trabalho e experiência do
profissional
Experiência do Desenvolvedor
Tempo de Trabalho
Conhecimento (Stack)
X
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!
Experiência do Desenvolvedor
Tempo
Conhecimento (Stack)
Sênior e
Full-stack
Onde estamos?
1. Tente listar as tecnologias que você domina e a quanto tempo
trabalha com ela.
Novos termos: Front-end, Back-end, DevOps…
DevOps
• Passagem de bastão (hand-off) entre desenvolvimento e infraestrutura
• Continuous Integration
• Continuous Delivery
• Automação de Atividades
• Testes automatizados, migração de dados, monitoramento, auditoria, segurança,
desempenho...
Desenvolvedor Front-end
• Relaciona diretamente com
o usuário
• User Interface
• User Experience
• Client-side
Desenvolvedor Back-end
• Regra de Negócio
• Banco de Dados
• Segurança
• REST API
Desenvolvedor Full-stack
Desenvolvedor full-stack é aquele que preenche todos os espaços da pilha:
consegue trabalhar bem com front-end e back-end.
Ser full-stack não significa ter experiência!
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).
Por onde começar?
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.
Por onde começar?
Codificação Padrões Arquitetura Testes e QA Entrega
Entenda o todo processo:
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
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.
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).
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),...
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.
Testes e Qualidade
Testes de Interface
Testes de Integração
Testes Unitários
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.
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.
Continuous Integration e Continuous
Delivery
Por onde começar?
Codificação Padrões Arquitetura Testes e QA Entrega
Ferramentas Amigas
Comunidade
Interaja com a comunidade:
Habilidades
Melhore suas habilidades:
Network
Esteja visível:
Candidate-se
Esteja disponível para empresas:
Empresa
Antes de aceitar, conheça a empresa:
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

Mais conteúdo relacionado

Mais procurados

IBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesIBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesFelipe Freire
 
Testes de software automatizados
Testes de software automatizadosTestes de software automatizados
Testes de software automatizadosMarcelo Andrade
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Daniel Carvalhinho
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Como integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeElias Nogueira
 
4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades
4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades
4° Encontro Mensal ALATS: Automação de Teste - Mitos e VerdadesElias Nogueira
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aLeonardo Molinari
 
Como tornar o testador parte da equipe
Como tornar o testador parte da equipeComo tornar o testador parte da equipe
Como tornar o testador parte da equipeElias Nogueira
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilElias Nogueira
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeisQualister
 
Automação no Processo de Teste
Automação no Processo de TesteAutomação no Processo de Teste
Automação no Processo de TesteElias Nogueira
 
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Walmyr Lima e Silva Filho
 
Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4André Phillip Bertoletti
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
aGITe antes de versionar
aGITe antes de versionaraGITe antes de versionar
aGITe antes de versionars4nx
 

Mais procurados (20)

IBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesIBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em Testes
 
Testes de software automatizados
Testes de software automatizadosTestes de software automatizados
Testes de software automatizados
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Como integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu time
 
4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades
4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades
4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2a
 
Como tornar o testador parte da equipe
Como tornar o testador parte da equipeComo tornar o testador parte da equipe
Como tornar o testador parte da equipe
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeis
 
Automação no Processo de Teste
Automação no Processo de TesteAutomação no Processo de Teste
Automação no Processo de Teste
 
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
 
Papéis em teste e qualidade de software
Papéis em teste e qualidade de softwarePapéis em teste e qualidade de software
Papéis em teste e qualidade de software
 
Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
aGITe antes de versionar
aGITe antes de versionaraGITe antes de versionar
aGITe antes de versionar
 

Semelhante a Carreira Desenvolvedor

Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
[GUTS-RS] GUTS Universitário - Carreira de Testes
[GUTS-RS] GUTS Universitário - Carreira de Testes[GUTS-RS] GUTS Universitário - Carreira de Testes
[GUTS-RS] GUTS Universitário - Carreira de TestesGUTS-RS
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwareCamilo Ribeiro
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Camilla Gomes
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de Testes[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de TestesGUTS-RS
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de softwareTargettrust
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de softwareTargettrust
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XPWildtech
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Campus Party Brasil 2010 - ALM - Application Lifecycle Management
Campus Party Brasil 2010 - ALM - Application Lifecycle ManagementCampus Party Brasil 2010 - ALM - Application Lifecycle Management
Campus Party Brasil 2010 - ALM - Application Lifecycle ManagementRamon Durães
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxMarcondesTiburcio
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de SoftwareAdilmar Dantas
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
Qualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação AtualQualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação AtualSidnei Viana Dos Santos
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 

Semelhante a Carreira Desenvolvedor (20)

Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
[GUTS-RS] GUTS Universitário - Carreira de Testes
[GUTS-RS] GUTS Universitário - Carreira de Testes[GUTS-RS] GUTS Universitário - Carreira de Testes
[GUTS-RS] GUTS Universitário - Carreira de Testes
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Apresentação Executiva
Apresentação ExecutivaApresentação Executiva
Apresentação Executiva
 
BDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e SpecflowBDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e Specflow
 
[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de Testes[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de Testes
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Campus Party Brasil 2010 - ALM - Application Lifecycle Management
Campus Party Brasil 2010 - ALM - Application Lifecycle ManagementCampus Party Brasil 2010 - ALM - Application Lifecycle Management
Campus Party Brasil 2010 - ALM - Application Lifecycle Management
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptx
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de Software
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Qualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação AtualQualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação Atual
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
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
  • 4. Qual o papel do desenvolvedor de software?
  • 5. Desenvolvedor de Software Desenvolver: Adiantar, aumentar, melhorar, aperfeiçoar, fazer progredir.
  • 6. Desenvolvedor de Software Compreender Construir Testar Implantar Em todas as etapas, o desenvolvedor nunca está só! Desenvolvedor != Programador Desenvolvedor
  • 7. Analista de Requisitos Engenheiro, Analista e/ou Arquiteto Analista de Testes ou QA Analista de Infraestrutura Desenvolvedor de Software Compreender Construir Testar Implantar 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
  • 11. Experiência do Desenvolvedor Tempo de Trabalho Conhecimento (Stack) X
  • 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!
  • 13. Experiência do Desenvolvedor Tempo Conhecimento (Stack) Sênior e Full-stack
  • 14. Onde estamos? 1. Tente listar as tecnologias que você domina e a quanto tempo trabalha com ela.
  • 15. Novos termos: Front-end, Back-end, DevOps…
  • 16. DevOps • Passagem de bastão (hand-off) entre desenvolvimento e infraestrutura • Continuous Integration • Continuous Delivery • Automação de Atividades • Testes automatizados, migração de dados, monitoramento, auditoria, segurança, desempenho...
  • 17. Desenvolvedor Front-end • Relaciona diretamente com o usuário • User Interface • User Experience • Client-side
  • 18. Desenvolvedor Back-end • Regra de Negócio • Banco de Dados • Segurança • REST API
  • 19. Desenvolvedor Full-stack Desenvolvedor full-stack é aquele que preenche todos os espaços da pilha: consegue trabalhar bem com front-end e back-end. Ser full-stack não significa ter experiência!
  • 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).
  • 21.
  • 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.
  • 24. Por onde começar? Codificação Padrões Arquitetura Testes e QA Entrega Entenda o todo processo:
  • 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.
  • 30. Testes e Qualidade Testes de Interface Testes de Integração Testes Unitários
  • 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.
  • 33. Continuous Integration e Continuous Delivery
  • 34. Por onde começar? Codificação Padrões Arquitetura Testes e QA Entrega
  • 40. Empresa Antes de aceitar, conheça a empresa:
  • 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