A Carreira de Desenvolvedor: do Jr ao Sênior

Marcos Pereira
Marcos PereiraSenior Software Engineer
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).
A Carreira de Desenvolvedor: do Jr ao Sênior
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
1 de 41

Recomendados

Boas práticas de desenvolvimento Ágil por
Boas práticas de desenvolvimento ÁgilBoas práticas de desenvolvimento Ágil
Boas práticas de desenvolvimento ÁgilSthanley Carlos De Lima Junior
69 vistas37 diapositivas
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil. por
SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.João Clineu - CTFL, CSM, CSD
1.9K vistas43 diapositivas
Como se tornar Agile Tester por
Como se tornar Agile TesterComo se tornar Agile Tester
Como se tornar Agile TesterElias Nogueira
2.6K vistas34 diapositivas
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC... por
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...Rafael Chiavegatto
2.4K vistas37 diapositivas
Testes de software por
Testes de softwareTestes de software
Testes de softwareVitor Castro
7.5K vistas35 diapositivas
Testes em ambiente agil - TechTalks ADP Labs por
Testes em ambiente agil - TechTalks ADP LabsTestes em ambiente agil - TechTalks ADP Labs
Testes em ambiente agil - TechTalks ADP LabsElias Nogueira
1.3K vistas11 diapositivas

Más contenido relacionado

La actualidad más candente

IBM Rational Piores Práticas em Testes por
IBM Rational Piores Práticas em TestesIBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesFelipe Freire
2.6K vistas22 diapositivas
Testes de software automatizados por
Testes de software automatizadosTestes de software automatizados
Testes de software automatizadosMarcelo Andrade
4.5K vistas13 diapositivas
Metodos ageis thinkingdifferent por
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferentPaulo Igor Alves Godinho
4.5K vistas79 diapositivas
Palestra Teste de Software: princípios, ferramentas e carreira por
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
2.2K vistas42 diapositivas
Introdução à Engenharia de Testes de Software por
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
257 vistas17 diapositivas
Porque você precisa de uma estratégia de QA e precisa disso AGORA! por
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
409 vistas40 diapositivas

La actualidad más candente(20)

IBM Rational Piores Práticas em Testes por Felipe Freire
IBM Rational Piores Práticas em TestesIBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em Testes
Felipe Freire2.6K vistas
Testes de software automatizados por Marcelo Andrade
Testes de software automatizadosTestes de software automatizados
Testes de software automatizados
Marcelo Andrade4.5K vistas
Palestra Teste de Software: princípios, ferramentas e carreira por Taís Dall'Oca
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
Taís Dall'Oca2.2K vistas
Introdução à Engenharia de Testes de Software por Cloves da Rocha
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
Cloves da Rocha257 vistas
Porque você precisa de uma estratégia de QA e precisa disso AGORA! por Daniel Carvalhinho
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 Carvalhinho409 vistas
Como integrar um Agile Tester no seu time por Elias Nogueira
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu time
Elias Nogueira2.1K vistas
4° Encontro Mensal ALATS: Automação de Teste - Mitos e Verdades por Elias Nogueira
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
Elias Nogueira2K vistas
Como tornar o testador parte da equipe por Elias Nogueira
Como tornar o testador parte da equipeComo tornar o testador parte da equipe
Como tornar o testador parte da equipe
Elias Nogueira1K vistas
DevCamp - O papel de um testador em uma equipe ágil por Elias Nogueira
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
Elias Nogueira7.1K vistas
Testes em métodos ágeis por Qualister
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeis
Qualister4.3K vistas
Automação no Processo de Teste por Elias Nogueira
Automação no Processo de TesteAutomação no Processo de Teste
Automação no Processo de Teste
Elias Nogueira1.3K vistas
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ... por Walmyr Lima e Silva Filho
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 ...
Todas as abordagens de testes dentro do ágil por Elias Nogueira
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
Elias Nogueira5.7K vistas
aGITe antes de versionar por s4nx
aGITe antes de versionaraGITe antes de versionar
aGITe antes de versionar
s4nx 4.6K vistas

Similar a A Carreira de Desenvolvedor: do Jr ao Sênior

Modelos de Processo de Software Parte 1 por
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
2.9K vistas60 diapositivas
[GUTS-RS] GUTS Universitário - Carreira de Testes por
[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
1.2K vistas30 diapositivas
Papéis em Teste e Qualidade de Software por
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwareCamilo Ribeiro
10K vistas27 diapositivas
Procura-se: DevOps #cpbr9 por
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Camilla Gomes
346 vistas33 diapositivas
Sonarqube por
SonarqubeSonarqube
SonarqubeCDS
1.7K vistas25 diapositivas
Apresentação Executiva por
Apresentação ExecutivaApresentação Executiva
Apresentação ExecutivaPowerlogic Consultoria e Sistemas
1.4K vistas39 diapositivas

Similar a A Carreira de Desenvolvedor: do Jr ao Sênior(20)

[GUTS-RS] GUTS Universitário - Carreira de Testes por GUTS-RS
[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 1.2K vistas
Papéis em Teste e Qualidade de Software por Camilo Ribeiro
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
Camilo Ribeiro10K vistas
Sonarqube por CDS
SonarqubeSonarqube
Sonarqube
CDS1.7K vistas
[GUTS-RS] GUTS Talks - Automação de Testes por GUTS-RS
[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 1.1K vistas
T@rget trust curso de introdução ao processo de teste de software por Targettrust
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
Targettrust451 vistas
T@rget trust curso de introdução ao processo de teste de software por Targettrust
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
Targettrust555 vistas
IPA Conhecendo XP por Wildtech
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
Wildtech379 vistas
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software por Adolfo Neto
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
Adolfo Neto1.4K vistas
Campus Party Brasil 2010 - ALM - Application Lifecycle Management por Ramon Durães
Campus Party Brasil 2010 - ALM - Application Lifecycle ManagementCampus Party Brasil 2010 - ALM - Application Lifecycle Management
Campus Party Brasil 2010 - ALM - Application Lifecycle Management
Ramon Durães617 vistas
Desenvolvimento de Software por Adilmar Dantas
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de Software
Adilmar Dantas378 vistas
Sobre TDD - Tech Friday da Everis Uberlândia por Rogerio Fontes
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
Rogerio Fontes66 vistas
Introdução a Metodologia XP (E Xtreme Programming) por Rennan Martini
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 Martini12.6K vistas
Qualidade no desenvolvimento de Software com TDD e PHPUnit por Domingos Teruel
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
Domingos Teruel2.1K vistas
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204) por André Dias
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é Dias1.1K vistas

A Carreira de Desenvolvedor: do Jr ao Sênior

  • 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).
  • 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