SlideShare une entreprise Scribd logo
1  sur  64
Você é um
desenvolvedor de
software acima da
média?
Qualidade no desenvolvimento de software
Sobre
▪ Sobre o tema:
▪ Examinar o impacto de desenvolver software sem qualidade de código, bem como, o
reflexo na carreira de um desenvolvedor de software.
▪ Sobre o palestrante:
▪ Gabriel Schmitt Kohlrausch, apaixonado por desenvolvimento de software. Buscando
constantemente aprender boas práticas para a construção de software com qualidade,
agilidade e sustentabilidade. Nerd, Gamer e praticante de paintball.
▪ gabriel@society.com.br | http://stiblog.azurewebsites.net/
Você se considera um
desenvolvedor de
software ACIMA da
média?
Afinal, programar é
fácil !!!!!!
Mas desenvolver um software
com qualidade, que seja
funcional e que possa evoluir
com sustentabilidade ....
Desenvolvimento de software é parecido com a construção
civil?
Planta baixa
(engenharia)
Projeto
(Cronograma)
Construção
Entrega
Manutenção
Processo de construção civil
Desenvolvimento de software é parecido com a construção
civil?
Requisitos
(engenharia)
Projeto
(Cronograma)
Desevolvimento
(construção)
Entrega
Manutenção
Processo de desenvolvimento de software
Mas se durante a construção
quisermos adicionar um andar
para garagem?
Ou depois de pronto o cliente:
“gostei, mas não dava para mover
20 metros mais para o lado?”
No desenvolvimento de
software mudanças são
naturais em qualquer etapa !
Qual o custo para construir
outro edifício igual ao lado?
E para copiar o software, qual o
custo?
Ok, mas e se perdêssemos o código fonte?
Seria o mesmo custo?
Desenvolvimento de
software é aprendizado !!!!
Time de desenvolvimento de
software ao fechar 1 ano em um
projeto único !
O time apenas se preocupou em
PROGRAMAR !!!
Afinal, programar é
fácil !!!!!!
Mas ao final do segundo ano ....
Vamos contratar mais
programadores, afinal o problema
é produtividade !
Agora temos uma
bomba prestes e
explodir
Ao contrário do esperado ...
De quem é a culpa?
Ou seja a cozinha ficou
bagunçada demais !
Vamos refazer tudo ... Então
time novo!
E o time antigo?
Mas o que
realmente houve?
O time perdeu produtividade no
momento em que abriu mão da
qualidade do código gerado?
Eles são rápidos porque abrem
mão da qualidade?
Qual grau de qualidade do seu código?
0% = Código escrito por
MIL MACACOS
100% = Código impecável
Times altamente produtivos são
formados por pessoas que querem
aprender constantemente!
REFACTORING !!!!!!
Alterar o código em funcionamento para torna-lo mais legível,
eficiente e elegante.
Mas antes, testes unitários ......
Por exemplo ...
Primeiro refactoring: Nome de variáveis
Segundo refactoring: Extract method
Aplicando Design Pattern Builder
Código limpo, legível e sustentável ...
DDD (Domain Driven Design)
TDD (Test Driven Design)
S.O.L.I.D
SOA (Service Oriented Architecture)
AOP (Aspect Oriented Programming)
Desing Patterns
Architectural Patterns
Agile Principles
Quais as características de
profissionais acima da média?
Iniciativa
Cooperação e não competição
Ensina ....
Gosta de compartilhar
conhecimento
São apaixonados pelo que fazem
Produtividade != Esforço
São focados
São adaptáveis
O time deveria se perguntar
frequentemente ....
Estamos amadurecendo?
Estamos desenvolvendo
software com mais qualidade e
tecnologias melhores?
Dominamos ou estamos no
caminho de dominar as
ferramentas e tecnologia
que utilizamos?
E o mais importante ...
Faça chuva...
Faça sol...
Esteja com azar ...
Esteja com sorte ....
De um passo em direção ao
seu objetivo !
Agora, se você está com
sorte e tem sol .....
Porque no final, você se
considera um
desenvolvedor de
software ACIMA da
média?
Referências
• The Art of Unit Testing, Roy Osherove
• Agile Development, James Shore & Chromatic
• Test-Driven Development, Kent Beck
• Software Architecture in Pratice, Len Bass & Paul Clements & Rick Kazman
• Clean Code, Robert C. Martin
• Agile, André Farias Gomes
• http://pt.slideshare.net/bluesoftbr/construindo-uma-cultura-de-aprendizagem-mar-de-agilidade-salvador-2011
• http://pt.slideshare.net/lcobucci/refactoring-like-a-boss-8-solisc

Contenu connexe

Tendances

Engenharia de Software II - Aula 7
Engenharia de Software II - Aula 7Engenharia de Software II - Aula 7
Engenharia de Software II - Aula 7Alessandro Almeida
 
Praticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de SoftwarePraticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de SoftwarePaulo Moura
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoLeandro Daniel
 
[ O mercado] desenvolvimento de software [ detalhes & curiosidades]
[ O mercado] desenvolvimento de software [ detalhes & curiosidades][ O mercado] desenvolvimento de software [ detalhes & curiosidades]
[ O mercado] desenvolvimento de software [ detalhes & curiosidades]Kamilla Queiroz Xavier
 
Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9Alessandro Almeida
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoAchiles Camilo
 
O Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoElias Nogueira
 
Management 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidadeManagement 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidadeFernando Ike
 
UX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BR
UX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BRUX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BR
UX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BRTOTVS
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Elias Nogueira
 
Da academia para o mercado de software
Da academia para o mercado de softwareDa academia para o mercado de software
Da academia para o mercado de softwareEric Muniz
 
O testador esta morto!
O testador esta morto!O testador esta morto!
O testador esta morto!Elias Nogueira
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasRicardo Serradas
 
Como se tornar Agile Tester
Como se tornar Agile TesterComo se tornar Agile Tester
Como se tornar Agile TesterElias Nogueira
 
Desafios reais de uma arquitetura emergente
Desafios reais de uma arquitetura emergenteDesafios reais de uma arquitetura emergente
Desafios reais de uma arquitetura emergenteRafa Noronha
 
Desafios Reais de uma Arquitetura Emergente
Desafios Reais de uma Arquitetura EmergenteDesafios Reais de uma Arquitetura Emergente
Desafios Reais de uma Arquitetura EmergenteRaphael Molesim
 

Tendances (20)

Engenharia de Software II - Aula 7
Engenharia de Software II - Aula 7Engenharia de Software II - Aula 7
Engenharia de Software II - Aula 7
 
Praticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de SoftwarePraticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de Software
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
 
[ O mercado] desenvolvimento de software [ detalhes & curiosidades]
[ O mercado] desenvolvimento de software [ detalhes & curiosidades][ O mercado] desenvolvimento de software [ detalhes & curiosidades]
[ O mercado] desenvolvimento de software [ detalhes & curiosidades]
 
Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introdução
 
O Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnico
 
Management 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidadeManagement 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidade
 
Testes ageis
Testes ageisTestes ageis
Testes ageis
 
UX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BR
UX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BRUX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BR
UX influenciando decisões de negócio - Gustavo Oliveira - TOTVS - UXConf BR
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil
 
Da academia para o mercado de software
Da academia para o mercado de softwareDa academia para o mercado de software
Da academia para o mercado de software
 
O testador esta morto!
O testador esta morto!O testador esta morto!
O testador esta morto!
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivas
 
Como se tornar Agile Tester
Como se tornar Agile TesterComo se tornar Agile Tester
Como se tornar Agile Tester
 
Desafios reais de uma arquitetura emergente
Desafios reais de uma arquitetura emergenteDesafios reais de uma arquitetura emergente
Desafios reais de uma arquitetura emergente
 
Desafios Reais de uma Arquitetura Emergente
Desafios Reais de uma Arquitetura EmergenteDesafios Reais de uma Arquitetura Emergente
Desafios Reais de uma Arquitetura Emergente
 
jCompany X Geradores de Códigos
jCompany X Geradores de CódigosjCompany X Geradores de Códigos
jCompany X Geradores de Códigos
 

Similaire à Desenvolvimento de software com qualidade

[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...André Paulovich
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsMichel Cordeiro
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Marcio Miyamoto
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Cristiano Schwening
 
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
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0tdc-globalcode
 
Desenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certoDesenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certoMarcos Petry
 
ConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinadaConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinadaAndré Paulovich
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
O que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMO que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMFelipe Freire
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013André Borgonovo
 
Arquitetura como apoio ao negocio
Arquitetura como apoio ao negocioArquitetura como apoio ao negocio
Arquitetura como apoio ao negocioLuís Cesar Teodoro
 

Similaire à Desenvolvimento de software com qualidade (20)

Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkins
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o 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
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
Desenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certoDesenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certo
 
ConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinadaConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinada
 
Agilidade em projetos de software
Agilidade em projetos de softwareAgilidade em projetos de software
Agilidade em projetos de software
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
Métodos Ágeis - Aula02
Métodos Ágeis - Aula02Métodos Ágeis - Aula02
Métodos Ágeis - Aula02
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
O que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMO que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBM
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
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
 
Arquitetura como apoio ao negocio
Arquitetura como apoio ao negocioArquitetura como apoio ao negocio
Arquitetura como apoio ao negocio
 

Desenvolvimento de software com qualidade

Notes de l'éditeur

  1. Considerar que é relativamente fácil gerar código. Aprender uma linguagem é fácil. Escrever um código para resolver um problema é fácil.
  2. Porém desenvolver um software que possa evoluir sem problemas para o time, sem perda de qualidade é bem diferente e muito mais complicado.
  3. Para entendermos melhor essa afirmação vamos pensar juntos o que é desenvolvimento de software? É possível comparar o processo de desenvolvimento de software com o processo de construção civil?
  4. Afinal de contas temos as mesmas etapas, planejamento, arquitetura, construção, entrega e depois manutenção. Porém existem dois pontos importantes que fazem toda a diferença.
  5. E se quisermos uma piscina na cobertura? E se for necessário mais um andar?
  6. Em contra partida é perfeitamente natural que um software sofra alterações durante seu desenvolvimento.
  7. Outra grande diferença....
  8. O custo de desenvolvimento seria igual ao da primeira vez? Não seria mais rápido desenvolver e ainda por cima ele não seria melhor que a primeira versão?
  9. No início de um projeto, o cliente e nós, não sabemos exatamente o que será o software. Porem ao longo do tempo ambos vão aprendendo e construindo um produto alinhado as necessidades e este conhecimento adquirido não é perdido.
  10. Vamos além, imaginem um time de desenvolvedores de uma startup. Sua única preocupação é um único projeto. Após um ano de projeto é feito uma retrospectiva do ano e constatou-se que o índice de atraso nas entregas foi baixo, o cliente está satisfeito e ainda por cima percebe-se que o software evoluiu muito, mas ainda falta funcionalidades a serem desenvolvidas.
  11. Ao final do segundo ano é realizada a mesma retrospectiva e constatou-se que o índice de atraso nas entregas aumentou, consequentemente o índice de satisfação do cliente diminuiu e percebeu-se que foram desenvolvidas poucas funcionalidades e muitas correções
  12. Os diretores da empresa, ao olharem os números, percebem que existe um problema de produtividade, afinal foi entregue muito menos do que se planejou. Mediante a pressão que o cliente coloca a empresa resolve contratar mais programadores, afinal de contas temos um problema de produtividade.
  13. apesar de termos uma leve impressão de aumento de produtividade, percebe-se não é verdade e o que estava confuso ficou pior ainda.
  14. Mediante ao CAOS estabelecido, o time e a direção da empresa realizam uma reflexão mais profunda e encontra-se um culpado: Código Legado. O time aponta que está cada vez mais difícil de desenvolver algo em meio ao código existente, que não é possível alterar o código que outro programador criou pois não o código não é compreensível e que uma alteração no código cria problemas em outros pontos do software que ninguém prevê.
  15. Neste momento a reflexão feita pelo time indica, metaforicamente, que a cozinha ficou bagunçada demais para trabalhar e o time perdeu produtividade pois cada vez fica mais difícil alterar o software no meio da desorganização que o código está
  16. Percebendo-se que não vai ser possível vencer o CAOS estabelecido, pelo código legado, surge uma ideia: Vamos refazer tudo! Contrata-se desenvolvedores especializados, um dream team, para fazer um novo software
  17. e os programadores antigos trabalham no legado. Resultado quando menos percebe-se acabou o dinheiro da empresa!
  18. Analisando o cenário descrito, será que o grande culpado foi o código legado? O que realmente houve? Desenvolvimento de software não é aprendizado? Porque o time não evoluiu e consequentemente o código não evoluiu?
  19. Será que na verdade o time deixou de ser produtivo porque não adotou certos padrões de qualidade no código?
  20. Comparando com uma equipe de F1 no momento de pitstop, a equipe é rápida porque não tem qualidade? Ou são rápidos porque tem qualidade? Ainda comparando, e se fossemos um lenhador que recebe um machado novo, no início da sua carreira, poderíamos afirmar que teríamos uma produtividade muito alta. Porém se nunca preocupássemos em afiar o machado chegaríamos a um ponto de que por mais talento e experiência adquiridos estaríamos cortando arvores com um taco e não um machado. 
  21. Na verdade o código é o resultado do trabalho de um desenvolvedor de software, assim poderíamos dar uma nota para o nosso código!
  22. Acontece que, precisamos descobrir qual grau de qualidade conseguimos ser mais produtivos, pois se ficar buscando a perfeição talvez se perca produtividade também. Então como podemos constantemente melhorar nossa qualidade e consequentemente nossa produtividade? Como podemos ser melhores programadores?
  23. Para responder essas perguntas, relembrem-se que desenvolvimento de software é aprendizado então times altamente PRODUTIVOS são formados por pessoas que querem APRENDER constantemente!
  24. Devemos estar sempre apreendendo e melhorando nossa técnica de programação e para isso precisamos constantemente refatorar nosso código! Ou seja precisamos constantemente alterar um código que está em funcionamento para torna-lo mais legível, eficiente e elegante. Mas para fazermos isso precisamos garantir que o código permaneça funcionando, não podemos modificar o comportamento mas sim sua estrutura
  25. E neste cenário é impossível realizar re-fatoramento sem utilizar testes unitários. Escrever testes que garantam o comportamento unitário do nosso código é fundamental para a evolução de um bom código. Além de testes devemos estar de olhos abertos para a qualidade do código que escrevemos, evitando bad small’s no código e por consequência criando dívida técnica. 
  26. Qual a finalidade do código? Está bem escrito? É fácil entender as coisas?
  27. Há agora melhorou um pouco mais ainda assim ... Fica complicado de ler! Comentários?
  28. Números mágicos, métodos longos, nomes ruins ......
  29. Refatorar ......
  30. Mas muito além de refactoring um código limpo implica em diversas outras boas práticas e técnicas devem ser aplicadas pelo programador, entre elas TDD, DDD, Princípios SOLID para orientação a objetos, padrões de projeto, padrões de arquitetura de software, princípios de engenharia de software e muito conhecimento sobre o negócio da sua aplicação. Ou seja, código limpo, legível e sustentável está ligado com muitas outras técnicas que o programador deve dominar
  31. Portanto um profissional acima da média, deve ter
  32. deve ter iniciativa (rafatorar),
  33. código coletivo
  34. não da a resposta, faz a pergunta (coaching).
  35. , aprende para compartilhar (não enterra o ouro),
  36. busca a excelência
  37. é focado (Pomodoro)
  38. Assim podemos concluir que desenvolvimento de software é aprendizado e assim devemos estar constantemente APRENDENDO coisas novas. Diariamente deveríamos nos perguntar
  39. E para evoluirmos como profissionais precisamos traçar um objetivo para nossas carreiras
  40. Porque assim você sempre estará ....