O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

A Carreira de Desenvolvedor: do Jr ao Sênior

159 visualizações

Publicada em

Com uma infinidade de opções disponíveis, qual caminho seguir? Como se tornar um desenvolvedor melhor? Em qual tecnologia se especializar? Quais tecnologias utilizar em seus projetos? “A Carreira de Desenvolvedor: Do Jr ao Sênior” apresenta uma visão pessoal do atual mercado de trabalho e das tecnologias comumente utilizadas.

Publicada em: Carreiras
  • Seja o primeiro a comentar

A Carreira de Desenvolvedor: do Jr ao Sênior

  1. 1. A Carreira de Desenvolvedor: Do Jr ao Sênior Workshop de Informática - IFSC - Canoinhas
  2. 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. 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. 4. Qual o papel do desenvolvedor de software?
  5. 5. Desenvolvedor de Software Desenvolver: Adiantar, aumentar, melhorar, aperfeiçoar, fazer progredir.
  6. 6. Desenvolvedor de Software Compreender Construir Testar Implantar Em todas as etapas, o desenvolvedor nunca está só! Desenvolvedor != Programador Desenvolvedor
  7. 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. 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. 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. 10. O mercado de trabalho e experiência do profissional
  11. 11. Experiência do Desenvolvedor Tempo de Trabalho Conhecimento (Stack) X
  12. 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. 13. Experiência do Desenvolvedor Tempo Conhecimento (Stack) Sênior e Full-stack
  14. 14. Onde estamos? 1. Tente listar as tecnologias que você domina e a quanto tempo trabalha com ela.
  15. 15. Novos termos: Front-end, Back-end, DevOps…
  16. 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. 17. Desenvolvedor Front-end • Relaciona diretamente com o usuário • User Interface • User Experience • Client-side
  18. 18. Desenvolvedor Back-end • Regra de Negócio • Banco de Dados • Segurança • REST API
  19. 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. 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. 21. Por onde começar?
  22. 22. 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.
  23. 23. Por onde começar? Codificação Padrões Arquitetura Testes e QA Entrega Entenda o todo processo:
  24. 24. 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
  25. 25. 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.
  26. 26. 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).
  27. 27. 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),...
  28. 28. 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.
  29. 29. Testes e Qualidade Testes de Interface Testes de Integração Testes Unitários
  30. 30. 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.
  31. 31. 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.
  32. 32. Continuous Integration e Continuous Delivery
  33. 33. Por onde começar? Codificação Padrões Arquitetura Testes e QA Entrega
  34. 34. Ferramentas Amigas
  35. 35. Comunidade Interaja com a comunidade:
  36. 36. Habilidades Melhore suas habilidades:
  37. 37. Network Esteja visível:
  38. 38. Candidate-se Esteja disponível para empresas:
  39. 39. Empresa Antes de aceitar, conheça a empresa:
  40. 40. 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

×