SlideShare uma empresa Scribd logo
1 de 61
#Raise the bar!
Eu sou um desenvolvedor de software apaixonado por desenvolver software.
Ao longo dos anos eu venho me especializando em Domain-Driven Design (Evans, Vernon), Design Patterns (GoF,
P of EAA), OOP, Defensive Programming, Automated Tests, Refactoring and Clean Code.
Em 12 anos de desenvolvendo software, a coisa mais importante que eu aprendi:
“Na indústria de software, no final do dia, qualidade vem do código limpo e testado que é escrito,
e produtividade vem do reuso que é feito, o resto é hype que vem e vai, promovido por “gurus” que nunca
escreveram uma linha de código.
– Maicon Heck”
maiconheck.com
github.com/maiconheck
linkedin.com/in/maiconheck
medium.com/@maiconheck
1. Definições: Craft, Craftsman, Craftsmanship
2. A origem do craftsman
3. Software Craftsmanship
4. Definição
5. Objetivo e Valores
6. Nós, os software craftsmans
7. A ressaca do Agile
8. Um pouco história
9. O Manifesto explicado
10. Quem é o dono da tua carreira
11. Cultura de estudo
https://www.oxfordlearnersdictionaries.com
https://dictionary.cambridge.orgFonte
https://www.dicio.com.br/oficio/Fonte
https://www.oxfordlearnersdictionaries.com
https://dictionary.cambridge.orgFonte
https://www.oxfordlearnersdictionaries.com
https://dictionary.cambridge.orgFonte
 Aprendizes trabalhavam com ferreiros mais
experientes (mestres), aprendendo diferentes
ferramentas e técnicas até que se tornassem
também mestres, e podiam mentorear os
novos aprendizes…
André da Marinheira
Antonio Julião
Júlia Cota
Sil das Alagoas
"Eu tinha um irmão que também era relojoeiro
e uma vez me perguntou: você quer aprender o
ofício? Eu disse quero. Ele me emprestou as
suas apostilas e eu comecei a estudar, todo
sábado eu ia para a casa dele.
Depois, fiz um curso por correspondência, onde
montava o relógio com as peças, tirava as
fotos, mandava novamente, até que depois de
três, quatro meses, comecei a trabalhar.
É através dessa profissão que eu vivo até
hoje...
Eu estou satisfeito com a minha profissão“,
diz seu Edvan.
Edvan Oliveira, 79 anos
57 anos de profissão
FOTO: ASCOM ITEC
FONTE: https://gazetaweb.globo.com/portal/especial.php?c=52030
Jandir José Turatti, 74 anos
40 anos de profissão
“Jandir José Turatti, 74 anos, diverte-se enquanto
cola, costura ou pinta sapatos, bolsas e cintos.
Trabalha de segunda a sábado. E diz que não se
cansa.”
“Vou continuar trabalhando enquanto puder.
Trabalho é bom para a saúde” — acredita.
“Meu médico diz que tenho cabeça de (quem tem) 30
anos!” — diverte-se sempre sorrindo.”
FONTE: http://pioneiro.clicrbs.com.br/rs/noticia/2009/09/aos-74-anos-
jandir-turatti-preserva-o-oficio-de-sapateiro-2665386.html
 De uma forma extremamente simples: É uma
metáfora melhor para o desenvolvimento de software
do que engenharia de software.
 Vê o software e o processo de criação do software
como eles são, de fato:
• Compara os desenvolvedores de software aos ferreiros
medievais.
Um artefato é construído, através do ofício manual exercido por uma
pessoa, com habilidades e competências específicas.
 É uma longa jornada para a excelência.
 É um mindset onde desenvolvedores de software escolhem ser
responsáveis pelas suas próprias carreiras, aprendendo
constantemente novas ferramentas e técnicas, e melhorando
constantemente a si mesmos (auto-aprimoramento).
Software Craftsmanship é todo sobre trazer de volta a
responsabilidade, profissionalismo, pragmatismo, e orgulho no
desenvolvimento de software.
 Profissionalismo, excelência técnica e satisfação do cliente são o objetivo principal do
Software Craftsmanship;
 Satisfazer e ajudar nossos clientes a alcançar o que desejam alcançar, da maneira mais
eficiente, é nosso principal objetivo. Compartilhar nosso conhecimento com outros
desenvolvedores é nosso dever;
 Software Craftsmanship é um estilo de vida que muitos desenvolvedores profissionais
adotam. Eles vivem e respiram software. Eles vêem o software como um ofício e estão
comprometidos em dominar seu ofício (craft);
 É um estilo de vida - um compromisso com a excelência.
 No final do dia, o que importa para nós é elevar o nível da nossa profissão, e ajudar os
desenvolvedores incluindo nós mesmos, a sermos profissionais…
A PARTE MAIS IMPORTANTE
Software Craftsmanship é sobre
PROFISSIONALISMO no desenvolvimento de
software.
 2001 - Uma revolução na indústria de software: Agile
 Empresas de todo o mundo passam a adotar metodologias e o mindset ágil alterando o seus
processos e estruturas internas
 Por muitos anos, empresas e times estiveram nessa festa da transformação ágil
 Meetings -> Stand-up Meetings (daily)
 Burn down charts
 Iteration backlogs
 Release backlogs
 ... se tornaram as novas ferramentas de gestão de projeto
 Use Cases -> User Stories
 Em muitos casos, Project Managers -> Scrum Masters
 ... Agile se tornou um novo nome para uma velha forma de trabalhar
The Post-It Party
 Empresas e times continuam tendo os mesmos problemas que tinham antes
 Mesmo com mudanças significativas nos seus processos, empresas continuam
sofrendo com a sua capacidade de entrega:
 Não respondem à mudanças suficientemente rápido
 Baixa qualidade / Bugs
 Altos custos de manutenção
 Clientes insatisfeitos
 Dificuldades para contratar bons desenvolvedores
 Desenvolvedores lutando para dar manutenção, testar ou adicionar novas features
 Toneladas de débito técnico
 Falta de motivação dos desenvolvedores
 MUITOS projetos estão atualmente, de forma ITERATIVA e INCREMENTAL, produzindo
CÓDIGO LIXO
 Uma transformação parcial
 Empresas querem “Adotar Agile” ao invés de “Serem Ágeis”
 Hoje, infelizmente, muitas empresas e times acham que Agile não funciona
 Passaram pela “transformação Agil” e não estão melhores do que antes
 Porque esqueceram-se de um “pequeno detalhe”…
 Empresas de consultoria em Agile / Agile coaches contratados para ajudar “implementar agile
(?)” principalmente “mudar o processo (?)”
 Mas não fizeram nada para ajudar as empresas a escreverem software de qualidade
 Focaram apenas nas disciplinas de processo e IGNORARAM as disciplinas técnicas
 Não fizeram NADA para tornar os desenvolvedores melhores
 Agile is Dead (Dave Thomas): https://www.youtube.com/watch?v=a-BOSpxYJ9M
 Assumiram ingenuamente que bastaria um framework Scrum para transformar a realidade
“a única coisa que eles precisam é um processo, promover comunicação e empoderar pessoas, diminuir a
burocracia e tudo vai dar certo...”
 Na mente deles, os mesmos desenvolvedores com os mesmos hábitos iriam começar a produzir
software com excelência
“Afinal escrever código é fácil, é só um detalhe não é mesmo?
Portanto, só precisamos de melhores processos, não?
Melhores processos = Melhores produtos,
não é assim que as fábricas funcionam?”
 As mudanças foram muito importantes e necessárias
 Empoderar pessoas
 Reduzir a burocracia e o desperdício
 Prioritizar
 Visibilidade do WIP
 Melhorar o fluxo da informação
 Mas processos ficaram mais importantes que disciplinas e excelência técnica
 Melhorar o processo sem melhorar a excelência técnica não faz sentido
 Foi uma transformação parcial
 Agile e Software Craftsmanship complementam um ao outro
 Transformação completa
 Desenvolvedores aprimorando suas habilidades, técnicas e ferramentas
 Entregando constantemente software de qualidade em produção
 Com ampla cobertura de testes
 Com design simples
 Fácil de manter e ampliar
 Software Craftsmanship: Serve para a transformação ágil completa e verdadeira
 (1992) Jack W. Reeves sugere que desenvolvimento de software é mais um ofício (craft) do que
uma engenharia;
 (1999) The pragmatic programmer: From Journeyman to Master – Andy Hunt e Dave Thomas;
 (2000) Surge o agile com várias disciplinas, metodologias e técnicas balançando as fundações da
indústria de desenvolvimento de software;
 (2001) Software Craftsmanship: The New Imperative - Peter McBreen
 Introduziu a maioria das ideias que foram usadas para moldar o movimento Software
Craftsmanship anos mais tarde
 (2002) Software Aprenticeship Summit - Ken Auer | Pete McBreen, Ron Jeffries,
Robert Martin (Uncle Bob)
 Chamada para ação para formar uma comunidade em torno do software aprenticeship
 (2006) Micah Martin e Paul Pagel criam a 8th Light como uma materialização dos
valores do Software Craftsmanship
 Uma empresa de Software Craftsmanship visando contratar através do processo de
aprendizagem cultivando talentos;
 8th Light emprega craftsman e não desenvolvedores;
 (2006) Obtiva (adquirida pelo Groupon em 2011) – Dave Hoover
 (2001 - 2008)
 Algumas poucas empresas adotaram o Software Craftsmanship;
 Software Craftsmansip foi posto de lado, porque a maioria das pessoas acreditava que os
maiores problemas da nossa indústria poderiam ser resolvidos apenas com uma combinação
de metodologias e práticas do Agile;
 (2008) Clean Code: A Handbook of Agile Software Craftsmanship – Uncle Bob
 (2008) 7 anos desde o Agile Summit, ficou aparente que as coisas no mundo Agile não saíram
conforme o esperado
 O desvio das metodologias técnicas do Agile como Extreme Programming (XP) e a
comercialização das metodologias orientadas a processo como Scrum, começou a incomodar
alguns dos idealizadores originais do Agile.
 (2008) Agile Conference - Uncle Bob propôs um 5º. valor para o Agile Manifesto: “craftsmanship
over crap” > “craftsmanship over execution”
 (2008) Surgiram muitas palestras sobre Software Craftsmanship na comunidade Agile
 (2008) Software Craftsmanship Summit Libertyville, IL - Micah Martin e Paul Pagel | Uncle
Bob, Brian Marick, Corey Haines, etc.
 Logo após o summit, a conversa seguiu via Google Group. Algumas pessoas na Inglaterra e
outros países se juntaram e começaram a contribuir
 https://groups.google.com/forum/#!forum/software_craftsmanship
 Passo a passo, Software Craftsmanship começou a se espalhar no Reino Unido e em alguns
outros países da Europa, e depois para muitos outros países ao redor do mundo
 (2009) Cruzando Fronteiras – A 1º. Conferencia Internacional de Software Craftsmanship –
Londres
 (2009 - ...) Conferencias anuais ocorrem nos EUA, UK e desde 2011 na Alemanha
 (2009 - ...) Várias comunidades surgem nos EUA, Londres, Alemanha e outros países da Europa
LSCC (maior e mais ativa do mundo, 2k dev, 4-5 eventos por mês e o Software Craftsmanship
Conf. anual) – David Green e Sandro Mancuso
 (2009) Depois de muito debate, um resumo das conclusões gerais que foram decididas foi
apresentado publicamente através do Software Craftsmanship Manifesto
http://manifesto.softwarecraftsmanship.org/
 O manifesto captura a essência do Software Craftsmanship;
 Sumariza os valores, frustrações e aspirações de desenvolvedores experientes e
talentosos;
 Para eles, projetos devem parar de falhar por gerenciamento ruim, processos mal
definidos e código mal escrito;
 Desenvolvedores retomam a responsabilidade sobre o desenvolvimento de
software e tentam mudar a forma com que a indústria o vê;
 Pense sobre uma aplicação com 5 anos:
 Sem testes
 Ninguém sabe exatamente como ela funciona;
 O código é cheio de termos técnicos e de infraestrutura ao invés de expressar o domínio do
negócio;
 Classes e métodos tem centenas ou milhares de linhas;
Não apenas software em funcionamento, mas software de excelente qualidade.
 E você precisa fazer mudanças nessa aplicação!
 Você é o desenvolvedor responsável pelas consequências disso…
 Essa aplicação é Software Funcionando, mas é bom é o suficiente?
 A idade do código importa?
 Alta e confiável cobertura de testes
 Design limpo e simples
 E uma linguagem de negócio bem expressa no código;
 Adicionar ou alterar features não demora significativamente mais do que
demorava no inicio do projeto - quando a base de código era pequena;
 O código é manutenível e previsível - sabemos o que ocorre ao alterar o código e
não temos medo de fazê-lo;
 Para evoluir a aplicação, desenvolvedores não tem medo de colocar a mão na
massa e alterá-la;
Não apenas software em funcionamento, mas software de excelente qualidade.
O quão caro projetos de software são?
 Desenvolvedores
 Testadores
 Analistas de negócio
 POs
 Gerentes de Projeto
 Serviços e operações
 Vendedores
 Marketing
Imagine o quanto é gasto só em salários!
Não apenas responder a mudanças, mas agregar valor de forma constante e crescente.
Adicione
 Computadores
 Infraestrutura
 Aluguel de escritórios
 Serviços ao cliente
 Limpeza
 Mobília
 Refeições
Imagine times distribuídos, múltiplos escritórios,
viagens, e tudo mais que vem com isso.
Não apenas responder a mudanças, mas agregar valor de forma constante e crescente.
 Projetos de software são investimentos massivos, e como qualquer investimento
normal, as empresas querem ter retorno;
 O único motivo para as empresas investirem em projetos de software é para fazer
dinheiro ou economizar dinheiro;
 É nosso trabalho garantir que quanto mais antigo e grande o software ficar, mais
a empresa vai se beneficiar dele;
 Conforme ele fica mais antigo, ele deve ficar mais valioso, e não uma fonte de dor e
custo incremental
 Agregar valor de forma constante > Não apenas novas features e correções
 O problema da reescrita…
Não apenas responder a mudanças, mas agregar valor de forma constante e crescente.
 Compartilhar e mentorear;
 Auto aprimoramento;
 Preparar a próxima geração;
Não apenas indivíduos e suas interações, mas uma comunidade de profissionais.
 Elitismo
 Humildade
 Comunidade aberta e amigável
 Craftsman ❤ Craftsman
 Craftsman ❤ Boas empresas
Não apenas indivíduos e suas interações, mas uma comunidade de profissionais.
 Empregador / empregado
 Parceria profissional
 Empregador é o nosso cliente
 Clientes esperam serviço de excelente qualidade
Não apenas a colaboração do cliente, mas parcerias produtivas.
 Reatividade != Profissionalismo
 Não somos trabalhadores de fábrica
 Contribuimos ativamente para o sucesso ou fracasso do projeto
 Um time motivado tem muito mais chance de fazer qualquer projeto ter
sucesso, um time desmotivado...
 Pessoas talentosas e apaixonadas querem ter sucesso e sempre vão
arrumar formas de superar problemas e burocracia
 Queremos projetos de sucesso para construir nossa reputação - Nós
queremos ter orgulho das nossas conquistas
Não apenas a colaboração do cliente, mas parcerias produtivas.
 Ter sucesso entregando software de alta qualidade e satisfazendo as necessidades dos
clientes é essencial para a nossa carreira
 Escrever bom código;
 Ajudar a aprimorar os processos;
 Ajudar a remover a burocracia desnecessária;
 Entender e ajudar a entender o business domain;
 Ajudar a planejar e prioritizar o trabalho;
Não apenas a colaboração do cliente, mas parcerias produtivas.
 O core business do cliente != produzir software
 Não é meu trabalho
Não apenas a colaboração do cliente, mas parcerias produtivas.
 Empresas que veem o desenvolvimento
de software como um processo industrial
e menos importante.
 Para algumas empresas, desenvolvedores
de software são trabalhadores de fábrica
que estão lá para seguir ordens de
pessoas “mais importantes”.
 Focam em contratar os desenvolvedores
mais baratos possíveis e colocam
gerentes não técnicos para fazer micro
gerenciamento sobre esses
desenvolvedores.
 Saber escolher clientes (ou
empregadores) também é um skill
essencial para nós.
 E se a tua empresa não te compra
livros?
 E se a tua empresa não te manda para
treinamentos e conferências?
 Quem está no comando da tua carreira
e do teu futuro profissional?
 Investir na própria carreira > fazer
um bom trabalho > ser indicado
para novos clientes.
 Usam o seu próprio dinheiro e
tempo para manterem-se
atualizados.
 Aqueles que não fazem isso >
terminam perdendo os seus clientes
/ recebendo poucas recomendações >
saindo do mercado.
 Clientes não pagam profissionais para
aprender – pagam profissionais com
conhecimento e habilidades, para
resolverem os seus problemas da melhor
maneira possível;
 Clientes pagam por profissionais para
receber um bom serviço;
 Profissionais devem prover soluções;
 É assim que profissionais constroem as
sua reputação;
 Livros e mais livros
 Saber escolher
 Tecnologia especifica (linguagens, frameworks, ferramentas, etc)
 Muito úteis, tem aplicação imediata, mas expiram rapidamente;
 Conceituais (clean code, design patterns, OOP, DDD, TDD, SQL / NoSQL, etc)
 Nos fornecem as fundações para avançar na nossa carreira (conceitos, paradigmas,
práticas);
 Não tem aplicação imediata, levam um bom tempo para serem digeridos e atingirmos
proficiência, mas são fundamentais;
 Comportamentais (metodologias ageis, software craftsmanship, gerenciamento,
filosofia, etc)
 Nos tornam mais eficientes quando trabalhamos em time e melhores profissionais em
geral;
 Lidar com o lado mais humano do desenvolvimento de software (pessoas, clientes,
prazos);
 Clássicos (ou revolucionários)
 Mudam a forma com que trabalhamos, ou pelo menos alguns
valores;
 Geralmente são conceituais, comportamentais ou uma
combinação deles;
 Definem ou tem uma grande influência na direção da nossa
indústria;
 Leva um bom tempo até dominarmos o conteúdo desses livros;
 The Pragmatic Programmer
 Software Craftsmanship: Professionalism, Pragmatism, Pride
 The Clean Code / The Clean Coder (Uncle Bob)
 Design Patterns (GoF)
 Domain-Driven Design (Evans, Vernon)
 Nos dão um entendimento profundo de uma tecnologia ou
assunto;
 Favoreça livros conceituais e comportamentais para
alavancar a sua carreira;
 Inicie pelos clássicos;
 Leia os de tecnologia especifica para os seus objetivos de
curto e médio prazo;
 Invista dinheiro
 Compre livros (não traduzidos);
 Compre um Kindle;
 Blogs
 Highlights / Updates;
 Experiências e opiniões pessoais, com sucessos e falhas;
 Ler blogs é uma forma boa, rápida e gratuita de aprender com muitos
profissionais diferentes;
 Use um agregador de RSS (Feedly);
 Use apps para salvar / organizar os artigos
 Getpocket
 Evernote
 Google Keep
 Mas, precisamos ser seletivos
 Tenha um blog, independente do seu nível atual;
 Todos nós devemos partilhar nossas experiências, aprendizados e
contribuir para criar uma comunidade forte;
 Primeiramente um registo do nosso próprio aprendizado e
progresso;
 Medo de criticas - Nós escrevemos primeiramente para nós
mesmos;
 Sempre vale a penas escrever aquilo que nós estamos aprendendo;
 Todo ano centenas de novos desenvolvedores entram na nossa
indústria;
 Conheça quem você segue
 Em cada profissão existem um grupo de pessoas que contribui
massivamente para mover a profissão para frente;
 Nós temos muitas dessas pessoas, algumas em tecnologias especificas,
outras em algo genérico, conceitual ou comportamental;
 Todas são importantes, então saiba quem essas pessoas são. Isso nos
ajuda a filtrar melhor o conteúdo que consumimos, tanto online quanto
em livros;
 Exemplo: Para quem trabalha com DDD, saber que o Evans e Vernon
publicaram os melhores livros sobre DDD é muito importante;
 Como fazemos é tão importante como o que fazemos;
 Se queremos ser bons em escrever código de qualidade, nós
precisamos praticar como escrever código de qualidade – não há
outra forma;
 O foco deve ser nas técnicas que estamos usando, e não em resolver o
problema - resolver problemas é o que nós somos pagos para fazer, e
o que nós fazemos no trabalho;
 Quando praticamos, nós focamos em como nós estamos resolvendo o
problema;
 Quanto mais nós praticamos, mais confortáveis nós nos tornamos,
até o ponto em que nós não pensamos mais sobre isso;
KATAS
 Como você se torna um excelente atleta
ou músico?
 Teoria
 Mecânica do instrumento / jogo
 Talento
 Prática: Aplicando teoria repetidamente, usando
o feedback para melhorar cada vez mais
 Surgiu no Karate - Sequência de
movimentos — técnicas de ataque e
defesa — para aprimorar as habilidades;
 Exercício de programação que ajuda a
aprimorar as habilidades através da
prática e repetição;
 Nós usamos Katas para praticar naquilo
que nós ainda não temos proficiência;
 O objetivo do Kata é a prática, não a
solução;
KATAS
http://codekata.com/
http://codingdojo.org/KataCatalogue/
https://github.com/gamontal/awesome-katas
https://kata-log.rocks/
https://www.codewars.com/
 Outra uma forma excelente para aprender e praticar;
 Projeto real, mas sem pressão (deadlines, dinheiro);
 Tecnologias, ferramentas e tecnologias que quiser;
 Não precisa de uma boa ideia aqui: você está estudando, não abrindo um
negócio;
 Open Source
 Pair Programming
 Code Review
 Socialize
Aprenda a usar bem o seu tempo...!
 Mancuso, Sandro. The Software Craftsman: PROFESSIONALISM, PRAGMATISM,
PRIDE 2014.
 https://www.medievalists.net/2018/11/role-blacksmith-medieval-society/
 https://workingtheflame.com/medieval-blacksmith-daily-life/
maiconheck.com
github.com/maiconheck
linkedin.com/in/maiconheck
medium.com/@maiconheck
“Legado não é o código que foi escrito há 5 anos - Legado é o código que
foi escrito, sem testes, há 5 minutos!
– Maicon Heck”

Mais conteúdo relacionado

Mais procurados

Metodologia agil scrum x pmbok
Metodologia agil   scrum x pmbokMetodologia agil   scrum x pmbok
Metodologia agil scrum x pmbokMarisa Wittmann
 
Scrum - Framework, Competências e Valores (versão community)
Scrum -  Framework, Competências e Valores (versão community)Scrum -  Framework, Competências e Valores (versão community)
Scrum - Framework, Competências e Valores (versão community)Manoel Pimentel Medeiros
 
Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6
Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6
Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6Rildo (@rildosan) Santos
 
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempreGerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempreLeandro Faria
 
STATIK | System Thinking Approach to Implementing Kanban / Abordagem do Pens...
STATIK | System Thinking Approach to  Implementing Kanban / Abordagem do Pens...STATIK | System Thinking Approach to  Implementing Kanban / Abordagem do Pens...
STATIK | System Thinking Approach to Implementing Kanban / Abordagem do Pens...Mayra de Souza
 
Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"Henrique Bueno
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentRodrigo Branas
 
2020 scrum-guide-portuguese br
2020 scrum-guide-portuguese br2020 scrum-guide-portuguese br
2020 scrum-guide-portuguese brPriscila Pinheiro
 
Palestra Modelagem Ágil - Manoel Pimentel
Palestra Modelagem Ágil -  Manoel PimentelPalestra Modelagem Ágil -  Manoel Pimentel
Palestra Modelagem Ágil - Manoel PimentelManoel Pimentel Medeiros
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGNeubio Ferreira
 
LKBR 2018 - WORKSHOP - CFC e LULA - Lean Kanban Brazil
LKBR 2018  - WORKSHOP - CFC e LULA - Lean Kanban BrazilLKBR 2018  - WORKSHOP - CFC e LULA - Lean Kanban Brazil
LKBR 2018 - WORKSHOP - CFC e LULA - Lean Kanban BrazilLuiz Rodrigues
 
Scrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosScrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosWilliam Lima
 
Minicurso Aplicando Scrum em projetos de software (2010)
Minicurso Aplicando Scrum em projetos de software (2010)Minicurso Aplicando Scrum em projetos de software (2010)
Minicurso Aplicando Scrum em projetos de software (2010)Mariana de Azevedo Santos
 

Mais procurados (20)

Metodos Ageis
Metodos AgeisMetodos Ageis
Metodos Ageis
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
Desmistificando o scrum
Desmistificando o scrumDesmistificando o scrum
Desmistificando o scrum
 
Metodologia agil scrum x pmbok
Metodologia agil   scrum x pmbokMetodologia agil   scrum x pmbok
Metodologia agil scrum x pmbok
 
Scrum - Framework, Competências e Valores (versão community)
Scrum -  Framework, Competências e Valores (versão community)Scrum -  Framework, Competências e Valores (versão community)
Scrum - Framework, Competências e Valores (versão community)
 
Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6
Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6
Workshop Scrum Product Owner, Delírios de PO em Dia de Verão v6
 
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempreGerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
 
Mini-curso Scrum e Kanban WES 2015
Mini-curso Scrum e Kanban WES 2015Mini-curso Scrum e Kanban WES 2015
Mini-curso Scrum e Kanban WES 2015
 
STATIK | System Thinking Approach to Implementing Kanban / Abordagem do Pens...
STATIK | System Thinking Approach to  Implementing Kanban / Abordagem do Pens...STATIK | System Thinking Approach to  Implementing Kanban / Abordagem do Pens...
STATIK | System Thinking Approach to Implementing Kanban / Abordagem do Pens...
 
Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
2020 scrum-guide-portuguese br
2020 scrum-guide-portuguese br2020 scrum-guide-portuguese br
2020 scrum-guide-portuguese br
 
Palestra Modelagem Ágil - Manoel Pimentel
Palestra Modelagem Ágil -  Manoel PimentelPalestra Modelagem Ágil -  Manoel Pimentel
Palestra Modelagem Ágil - Manoel Pimentel
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
 
10 dicas para escalar Agile usando SAFe
10 dicas para escalar Agile usando SAFe10 dicas para escalar Agile usando SAFe
10 dicas para escalar Agile usando SAFe
 
LKBR 2018 - WORKSHOP - CFC e LULA - Lean Kanban Brazil
LKBR 2018  - WORKSHOP - CFC e LULA - Lean Kanban BrazilLKBR 2018  - WORKSHOP - CFC e LULA - Lean Kanban Brazil
LKBR 2018 - WORKSHOP - CFC e LULA - Lean Kanban Brazil
 
Scrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosScrum - Gerenciamento de Projetos
Scrum - Gerenciamento de Projetos
 
Minicurso Aplicando Scrum em projetos de software (2010)
Minicurso Aplicando Scrum em projetos de software (2010)Minicurso Aplicando Scrum em projetos de software (2010)
Minicurso Aplicando Scrum em projetos de software (2010)
 

Semelhante a Software Craft

Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimentoGabriel Moura
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASOs Fantasmas !
 
Workshop - The DevOps Cookbook
Workshop - The DevOps Cookbook   Workshop - The DevOps Cookbook
Workshop - The DevOps Cookbook Marcio Sete
 
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
 
Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Renato Breaking
 
Agile UX: Projetando a User Experience no Mundo Ágil
Agile UX: Projetando a User Experience no Mundo ÁgilAgile UX: Projetando a User Experience no Mundo Ágil
Agile UX: Projetando a User Experience no Mundo ÁgilDiogo Riker
 
Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Juan Bernabó
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosUma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosGiovani Elísio Silva
 
TechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerTechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerAlan Carlos
 

Semelhante a Software Craft (20)

Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimento
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
 
Métodos Ágeis - Aula02
Métodos Ágeis - Aula02Métodos Ágeis - Aula02
Métodos Ágeis - Aula02
 
Workshop - The DevOps Cookbook
Workshop - The DevOps Cookbook   Workshop - The DevOps Cookbook
Workshop - The DevOps Cookbook
 
Desenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareDesenvolvimento Ágil de Software
Desenvolvimento Ágil de Software
 
DevOps - Operação contínua
DevOps - Operação contínuaDevOps - Operação contínua
DevOps - Operação contínua
 
Agile User Experience
Agile User ExperienceAgile User Experience
Agile User Experience
 
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?
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
DevOps - o que é?
DevOps - o que é?DevOps - o que é?
DevOps - o que é?
 
Scrum
ScrumScrum
Scrum
 
Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.
 
Agile UX: Projetando a User Experience no Mundo Ágil
Agile UX: Projetando a User Experience no Mundo ÁgilAgile UX: Projetando a User Experience no Mundo Ágil
Agile UX: Projetando a User Experience no Mundo Ágil
 
Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
Agile
AgileAgile
Agile
 
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosUma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
 
Jornada para o DevOps
Jornada para o DevOpsJornada para o DevOps
Jornada para o DevOps
 
TechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerTechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test Manager
 
Entregando Software com Valor
Entregando Software com ValorEntregando Software com Valor
Entregando Software com Valor
 

Software Craft

  • 2. Eu sou um desenvolvedor de software apaixonado por desenvolver software. Ao longo dos anos eu venho me especializando em Domain-Driven Design (Evans, Vernon), Design Patterns (GoF, P of EAA), OOP, Defensive Programming, Automated Tests, Refactoring and Clean Code. Em 12 anos de desenvolvendo software, a coisa mais importante que eu aprendi: “Na indústria de software, no final do dia, qualidade vem do código limpo e testado que é escrito, e produtividade vem do reuso que é feito, o resto é hype que vem e vai, promovido por “gurus” que nunca escreveram uma linha de código. – Maicon Heck” maiconheck.com github.com/maiconheck linkedin.com/in/maiconheck medium.com/@maiconheck
  • 3. 1. Definições: Craft, Craftsman, Craftsmanship 2. A origem do craftsman 3. Software Craftsmanship 4. Definição 5. Objetivo e Valores 6. Nós, os software craftsmans 7. A ressaca do Agile 8. Um pouco história 9. O Manifesto explicado 10. Quem é o dono da tua carreira 11. Cultura de estudo
  • 8.  Aprendizes trabalhavam com ferreiros mais experientes (mestres), aprendendo diferentes ferramentas e técnicas até que se tornassem também mestres, e podiam mentorear os novos aprendizes…
  • 9. André da Marinheira Antonio Julião Júlia Cota Sil das Alagoas
  • 10. "Eu tinha um irmão que também era relojoeiro e uma vez me perguntou: você quer aprender o ofício? Eu disse quero. Ele me emprestou as suas apostilas e eu comecei a estudar, todo sábado eu ia para a casa dele. Depois, fiz um curso por correspondência, onde montava o relógio com as peças, tirava as fotos, mandava novamente, até que depois de três, quatro meses, comecei a trabalhar. É através dessa profissão que eu vivo até hoje... Eu estou satisfeito com a minha profissão“, diz seu Edvan. Edvan Oliveira, 79 anos 57 anos de profissão FOTO: ASCOM ITEC FONTE: https://gazetaweb.globo.com/portal/especial.php?c=52030
  • 11. Jandir José Turatti, 74 anos 40 anos de profissão “Jandir José Turatti, 74 anos, diverte-se enquanto cola, costura ou pinta sapatos, bolsas e cintos. Trabalha de segunda a sábado. E diz que não se cansa.” “Vou continuar trabalhando enquanto puder. Trabalho é bom para a saúde” — acredita. “Meu médico diz que tenho cabeça de (quem tem) 30 anos!” — diverte-se sempre sorrindo.” FONTE: http://pioneiro.clicrbs.com.br/rs/noticia/2009/09/aos-74-anos- jandir-turatti-preserva-o-oficio-de-sapateiro-2665386.html
  • 12.  De uma forma extremamente simples: É uma metáfora melhor para o desenvolvimento de software do que engenharia de software.  Vê o software e o processo de criação do software como eles são, de fato: • Compara os desenvolvedores de software aos ferreiros medievais. Um artefato é construído, através do ofício manual exercido por uma pessoa, com habilidades e competências específicas.
  • 13.  É uma longa jornada para a excelência.  É um mindset onde desenvolvedores de software escolhem ser responsáveis pelas suas próprias carreiras, aprendendo constantemente novas ferramentas e técnicas, e melhorando constantemente a si mesmos (auto-aprimoramento). Software Craftsmanship é todo sobre trazer de volta a responsabilidade, profissionalismo, pragmatismo, e orgulho no desenvolvimento de software.
  • 14.  Profissionalismo, excelência técnica e satisfação do cliente são o objetivo principal do Software Craftsmanship;  Satisfazer e ajudar nossos clientes a alcançar o que desejam alcançar, da maneira mais eficiente, é nosso principal objetivo. Compartilhar nosso conhecimento com outros desenvolvedores é nosso dever;  Software Craftsmanship é um estilo de vida que muitos desenvolvedores profissionais adotam. Eles vivem e respiram software. Eles vêem o software como um ofício e estão comprometidos em dominar seu ofício (craft);  É um estilo de vida - um compromisso com a excelência.  No final do dia, o que importa para nós é elevar o nível da nossa profissão, e ajudar os desenvolvedores incluindo nós mesmos, a sermos profissionais…
  • 15. A PARTE MAIS IMPORTANTE Software Craftsmanship é sobre PROFISSIONALISMO no desenvolvimento de software.
  • 16.
  • 17.
  • 18.  2001 - Uma revolução na indústria de software: Agile  Empresas de todo o mundo passam a adotar metodologias e o mindset ágil alterando o seus processos e estruturas internas  Por muitos anos, empresas e times estiveram nessa festa da transformação ágil  Meetings -> Stand-up Meetings (daily)  Burn down charts  Iteration backlogs  Release backlogs  ... se tornaram as novas ferramentas de gestão de projeto  Use Cases -> User Stories  Em muitos casos, Project Managers -> Scrum Masters  ... Agile se tornou um novo nome para uma velha forma de trabalhar
  • 20.  Empresas e times continuam tendo os mesmos problemas que tinham antes  Mesmo com mudanças significativas nos seus processos, empresas continuam sofrendo com a sua capacidade de entrega:  Não respondem à mudanças suficientemente rápido  Baixa qualidade / Bugs  Altos custos de manutenção  Clientes insatisfeitos  Dificuldades para contratar bons desenvolvedores  Desenvolvedores lutando para dar manutenção, testar ou adicionar novas features  Toneladas de débito técnico  Falta de motivação dos desenvolvedores  MUITOS projetos estão atualmente, de forma ITERATIVA e INCREMENTAL, produzindo CÓDIGO LIXO
  • 21.  Uma transformação parcial  Empresas querem “Adotar Agile” ao invés de “Serem Ágeis”  Hoje, infelizmente, muitas empresas e times acham que Agile não funciona  Passaram pela “transformação Agil” e não estão melhores do que antes  Porque esqueceram-se de um “pequeno detalhe”…  Empresas de consultoria em Agile / Agile coaches contratados para ajudar “implementar agile (?)” principalmente “mudar o processo (?)”  Mas não fizeram nada para ajudar as empresas a escreverem software de qualidade  Focaram apenas nas disciplinas de processo e IGNORARAM as disciplinas técnicas  Não fizeram NADA para tornar os desenvolvedores melhores  Agile is Dead (Dave Thomas): https://www.youtube.com/watch?v=a-BOSpxYJ9M
  • 22.  Assumiram ingenuamente que bastaria um framework Scrum para transformar a realidade “a única coisa que eles precisam é um processo, promover comunicação e empoderar pessoas, diminuir a burocracia e tudo vai dar certo...”  Na mente deles, os mesmos desenvolvedores com os mesmos hábitos iriam começar a produzir software com excelência “Afinal escrever código é fácil, é só um detalhe não é mesmo? Portanto, só precisamos de melhores processos, não? Melhores processos = Melhores produtos, não é assim que as fábricas funcionam?”
  • 23.  As mudanças foram muito importantes e necessárias  Empoderar pessoas  Reduzir a burocracia e o desperdício  Prioritizar  Visibilidade do WIP  Melhorar o fluxo da informação  Mas processos ficaram mais importantes que disciplinas e excelência técnica  Melhorar o processo sem melhorar a excelência técnica não faz sentido  Foi uma transformação parcial
  • 24.  Agile e Software Craftsmanship complementam um ao outro  Transformação completa  Desenvolvedores aprimorando suas habilidades, técnicas e ferramentas  Entregando constantemente software de qualidade em produção  Com ampla cobertura de testes  Com design simples  Fácil de manter e ampliar  Software Craftsmanship: Serve para a transformação ágil completa e verdadeira
  • 25.  (1992) Jack W. Reeves sugere que desenvolvimento de software é mais um ofício (craft) do que uma engenharia;  (1999) The pragmatic programmer: From Journeyman to Master – Andy Hunt e Dave Thomas;  (2000) Surge o agile com várias disciplinas, metodologias e técnicas balançando as fundações da indústria de desenvolvimento de software;  (2001) Software Craftsmanship: The New Imperative - Peter McBreen  Introduziu a maioria das ideias que foram usadas para moldar o movimento Software Craftsmanship anos mais tarde
  • 26.  (2002) Software Aprenticeship Summit - Ken Auer | Pete McBreen, Ron Jeffries, Robert Martin (Uncle Bob)  Chamada para ação para formar uma comunidade em torno do software aprenticeship  (2006) Micah Martin e Paul Pagel criam a 8th Light como uma materialização dos valores do Software Craftsmanship  Uma empresa de Software Craftsmanship visando contratar através do processo de aprendizagem cultivando talentos;  8th Light emprega craftsman e não desenvolvedores;  (2006) Obtiva (adquirida pelo Groupon em 2011) – Dave Hoover
  • 27.  (2001 - 2008)  Algumas poucas empresas adotaram o Software Craftsmanship;  Software Craftsmansip foi posto de lado, porque a maioria das pessoas acreditava que os maiores problemas da nossa indústria poderiam ser resolvidos apenas com uma combinação de metodologias e práticas do Agile;  (2008) Clean Code: A Handbook of Agile Software Craftsmanship – Uncle Bob  (2008) 7 anos desde o Agile Summit, ficou aparente que as coisas no mundo Agile não saíram conforme o esperado  O desvio das metodologias técnicas do Agile como Extreme Programming (XP) e a comercialização das metodologias orientadas a processo como Scrum, começou a incomodar alguns dos idealizadores originais do Agile.  (2008) Agile Conference - Uncle Bob propôs um 5º. valor para o Agile Manifesto: “craftsmanship over crap” > “craftsmanship over execution”
  • 28.  (2008) Surgiram muitas palestras sobre Software Craftsmanship na comunidade Agile  (2008) Software Craftsmanship Summit Libertyville, IL - Micah Martin e Paul Pagel | Uncle Bob, Brian Marick, Corey Haines, etc.  Logo após o summit, a conversa seguiu via Google Group. Algumas pessoas na Inglaterra e outros países se juntaram e começaram a contribuir  https://groups.google.com/forum/#!forum/software_craftsmanship  Passo a passo, Software Craftsmanship começou a se espalhar no Reino Unido e em alguns outros países da Europa, e depois para muitos outros países ao redor do mundo
  • 29.  (2009) Cruzando Fronteiras – A 1º. Conferencia Internacional de Software Craftsmanship – Londres  (2009 - ...) Conferencias anuais ocorrem nos EUA, UK e desde 2011 na Alemanha  (2009 - ...) Várias comunidades surgem nos EUA, Londres, Alemanha e outros países da Europa LSCC (maior e mais ativa do mundo, 2k dev, 4-5 eventos por mês e o Software Craftsmanship Conf. anual) – David Green e Sandro Mancuso  (2009) Depois de muito debate, um resumo das conclusões gerais que foram decididas foi apresentado publicamente através do Software Craftsmanship Manifesto
  • 31.  O manifesto captura a essência do Software Craftsmanship;  Sumariza os valores, frustrações e aspirações de desenvolvedores experientes e talentosos;  Para eles, projetos devem parar de falhar por gerenciamento ruim, processos mal definidos e código mal escrito;  Desenvolvedores retomam a responsabilidade sobre o desenvolvimento de software e tentam mudar a forma com que a indústria o vê;
  • 32.  Pense sobre uma aplicação com 5 anos:  Sem testes  Ninguém sabe exatamente como ela funciona;  O código é cheio de termos técnicos e de infraestrutura ao invés de expressar o domínio do negócio;  Classes e métodos tem centenas ou milhares de linhas; Não apenas software em funcionamento, mas software de excelente qualidade.  E você precisa fazer mudanças nessa aplicação!  Você é o desenvolvedor responsável pelas consequências disso…
  • 33.  Essa aplicação é Software Funcionando, mas é bom é o suficiente?  A idade do código importa?  Alta e confiável cobertura de testes  Design limpo e simples  E uma linguagem de negócio bem expressa no código;  Adicionar ou alterar features não demora significativamente mais do que demorava no inicio do projeto - quando a base de código era pequena;  O código é manutenível e previsível - sabemos o que ocorre ao alterar o código e não temos medo de fazê-lo;  Para evoluir a aplicação, desenvolvedores não tem medo de colocar a mão na massa e alterá-la; Não apenas software em funcionamento, mas software de excelente qualidade.
  • 34. O quão caro projetos de software são?  Desenvolvedores  Testadores  Analistas de negócio  POs  Gerentes de Projeto  Serviços e operações  Vendedores  Marketing Imagine o quanto é gasto só em salários! Não apenas responder a mudanças, mas agregar valor de forma constante e crescente.
  • 35. Adicione  Computadores  Infraestrutura  Aluguel de escritórios  Serviços ao cliente  Limpeza  Mobília  Refeições Imagine times distribuídos, múltiplos escritórios, viagens, e tudo mais que vem com isso. Não apenas responder a mudanças, mas agregar valor de forma constante e crescente.
  • 36.  Projetos de software são investimentos massivos, e como qualquer investimento normal, as empresas querem ter retorno;  O único motivo para as empresas investirem em projetos de software é para fazer dinheiro ou economizar dinheiro;  É nosso trabalho garantir que quanto mais antigo e grande o software ficar, mais a empresa vai se beneficiar dele;  Conforme ele fica mais antigo, ele deve ficar mais valioso, e não uma fonte de dor e custo incremental  Agregar valor de forma constante > Não apenas novas features e correções  O problema da reescrita… Não apenas responder a mudanças, mas agregar valor de forma constante e crescente.
  • 37.  Compartilhar e mentorear;  Auto aprimoramento;  Preparar a próxima geração; Não apenas indivíduos e suas interações, mas uma comunidade de profissionais.
  • 38.  Elitismo  Humildade  Comunidade aberta e amigável  Craftsman ❤ Craftsman  Craftsman ❤ Boas empresas Não apenas indivíduos e suas interações, mas uma comunidade de profissionais.
  • 39.  Empregador / empregado  Parceria profissional  Empregador é o nosso cliente  Clientes esperam serviço de excelente qualidade Não apenas a colaboração do cliente, mas parcerias produtivas.
  • 40.  Reatividade != Profissionalismo  Não somos trabalhadores de fábrica  Contribuimos ativamente para o sucesso ou fracasso do projeto  Um time motivado tem muito mais chance de fazer qualquer projeto ter sucesso, um time desmotivado...  Pessoas talentosas e apaixonadas querem ter sucesso e sempre vão arrumar formas de superar problemas e burocracia  Queremos projetos de sucesso para construir nossa reputação - Nós queremos ter orgulho das nossas conquistas Não apenas a colaboração do cliente, mas parcerias produtivas.
  • 41.  Ter sucesso entregando software de alta qualidade e satisfazendo as necessidades dos clientes é essencial para a nossa carreira  Escrever bom código;  Ajudar a aprimorar os processos;  Ajudar a remover a burocracia desnecessária;  Entender e ajudar a entender o business domain;  Ajudar a planejar e prioritizar o trabalho; Não apenas a colaboração do cliente, mas parcerias produtivas.
  • 42.  O core business do cliente != produzir software  Não é meu trabalho Não apenas a colaboração do cliente, mas parcerias produtivas.
  • 43.  Empresas que veem o desenvolvimento de software como um processo industrial e menos importante.  Para algumas empresas, desenvolvedores de software são trabalhadores de fábrica que estão lá para seguir ordens de pessoas “mais importantes”.  Focam em contratar os desenvolvedores mais baratos possíveis e colocam gerentes não técnicos para fazer micro gerenciamento sobre esses desenvolvedores.  Saber escolher clientes (ou empregadores) também é um skill essencial para nós.
  • 44.  E se a tua empresa não te compra livros?  E se a tua empresa não te manda para treinamentos e conferências?  Quem está no comando da tua carreira e do teu futuro profissional?
  • 45.  Investir na própria carreira > fazer um bom trabalho > ser indicado para novos clientes.  Usam o seu próprio dinheiro e tempo para manterem-se atualizados.  Aqueles que não fazem isso > terminam perdendo os seus clientes / recebendo poucas recomendações > saindo do mercado.
  • 46.  Clientes não pagam profissionais para aprender – pagam profissionais com conhecimento e habilidades, para resolverem os seus problemas da melhor maneira possível;  Clientes pagam por profissionais para receber um bom serviço;  Profissionais devem prover soluções;  É assim que profissionais constroem as sua reputação;
  • 47.  Livros e mais livros  Saber escolher  Tecnologia especifica (linguagens, frameworks, ferramentas, etc)  Muito úteis, tem aplicação imediata, mas expiram rapidamente;  Conceituais (clean code, design patterns, OOP, DDD, TDD, SQL / NoSQL, etc)  Nos fornecem as fundações para avançar na nossa carreira (conceitos, paradigmas, práticas);  Não tem aplicação imediata, levam um bom tempo para serem digeridos e atingirmos proficiência, mas são fundamentais;  Comportamentais (metodologias ageis, software craftsmanship, gerenciamento, filosofia, etc)  Nos tornam mais eficientes quando trabalhamos em time e melhores profissionais em geral;  Lidar com o lado mais humano do desenvolvimento de software (pessoas, clientes, prazos);
  • 48.  Clássicos (ou revolucionários)  Mudam a forma com que trabalhamos, ou pelo menos alguns valores;  Geralmente são conceituais, comportamentais ou uma combinação deles;  Definem ou tem uma grande influência na direção da nossa indústria;  Leva um bom tempo até dominarmos o conteúdo desses livros;  The Pragmatic Programmer  Software Craftsmanship: Professionalism, Pragmatism, Pride  The Clean Code / The Clean Coder (Uncle Bob)  Design Patterns (GoF)  Domain-Driven Design (Evans, Vernon)
  • 49.  Nos dão um entendimento profundo de uma tecnologia ou assunto;  Favoreça livros conceituais e comportamentais para alavancar a sua carreira;  Inicie pelos clássicos;  Leia os de tecnologia especifica para os seus objetivos de curto e médio prazo;  Invista dinheiro  Compre livros (não traduzidos);  Compre um Kindle;
  • 50.  Blogs  Highlights / Updates;  Experiências e opiniões pessoais, com sucessos e falhas;  Ler blogs é uma forma boa, rápida e gratuita de aprender com muitos profissionais diferentes;  Use um agregador de RSS (Feedly);  Use apps para salvar / organizar os artigos  Getpocket  Evernote  Google Keep  Mas, precisamos ser seletivos
  • 51.  Tenha um blog, independente do seu nível atual;  Todos nós devemos partilhar nossas experiências, aprendizados e contribuir para criar uma comunidade forte;  Primeiramente um registo do nosso próprio aprendizado e progresso;  Medo de criticas - Nós escrevemos primeiramente para nós mesmos;  Sempre vale a penas escrever aquilo que nós estamos aprendendo;  Todo ano centenas de novos desenvolvedores entram na nossa indústria;
  • 52.  Conheça quem você segue  Em cada profissão existem um grupo de pessoas que contribui massivamente para mover a profissão para frente;  Nós temos muitas dessas pessoas, algumas em tecnologias especificas, outras em algo genérico, conceitual ou comportamental;  Todas são importantes, então saiba quem essas pessoas são. Isso nos ajuda a filtrar melhor o conteúdo que consumimos, tanto online quanto em livros;  Exemplo: Para quem trabalha com DDD, saber que o Evans e Vernon publicaram os melhores livros sobre DDD é muito importante;
  • 53.  Como fazemos é tão importante como o que fazemos;  Se queremos ser bons em escrever código de qualidade, nós precisamos praticar como escrever código de qualidade – não há outra forma;  O foco deve ser nas técnicas que estamos usando, e não em resolver o problema - resolver problemas é o que nós somos pagos para fazer, e o que nós fazemos no trabalho;  Quando praticamos, nós focamos em como nós estamos resolvendo o problema;  Quanto mais nós praticamos, mais confortáveis nós nos tornamos, até o ponto em que nós não pensamos mais sobre isso;
  • 54. KATAS  Como você se torna um excelente atleta ou músico?  Teoria  Mecânica do instrumento / jogo  Talento  Prática: Aplicando teoria repetidamente, usando o feedback para melhorar cada vez mais  Surgiu no Karate - Sequência de movimentos — técnicas de ataque e defesa — para aprimorar as habilidades;  Exercício de programação que ajuda a aprimorar as habilidades através da prática e repetição;  Nós usamos Katas para praticar naquilo que nós ainda não temos proficiência;  O objetivo do Kata é a prática, não a solução;
  • 56.  Outra uma forma excelente para aprender e praticar;  Projeto real, mas sem pressão (deadlines, dinheiro);  Tecnologias, ferramentas e tecnologias que quiser;  Não precisa de uma boa ideia aqui: você está estudando, não abrindo um negócio;
  • 57.  Open Source  Pair Programming  Code Review  Socialize Aprenda a usar bem o seu tempo...!
  • 58.
  • 59.
  • 60.  Mancuso, Sandro. The Software Craftsman: PROFESSIONALISM, PRAGMATISM, PRIDE 2014.  https://www.medievalists.net/2018/11/role-blacksmith-medieval-society/  https://workingtheflame.com/medieval-blacksmith-daily-life/
  • 61. maiconheck.com github.com/maiconheck linkedin.com/in/maiconheck medium.com/@maiconheck “Legado não é o código que foi escrito há 5 anos - Legado é o código que foi escrito, sem testes, há 5 minutos! – Maicon Heck”

Notas do Editor

  1. ● Atitude e ideologia ● Quem somos ● Missão e valores ● Profissionalismo, excelência técnica e satisfação do cliente ● The Software Craftsmanship Manifesto ● Quem é o dono da sua carreira? ● A cultura de estudo: dominando nosso ofício ● Autonomia, domínio e propósito ● The Agile Hangover: não existe Agile sem disciplinas técnicas - Resgatando o XP ● O custo da falta de motivação ● Pragmatismo: desfazendo os mitos ● Nossa obrigação moral de compartilhar conhecimento ● Nosso papel na evolução da nossa sociedade ----- Além disso, vou apresentar o planejamento para os próximos eventos. ----------------------------------------------------------------------- Vamos compartilhar nossa paixão❤️, promover com orgulho nossos valores 💡, dominar nosso ofício🔨, e contribuir para elevar o nível da indústria de software juntos! 👊 Como Sandro Mancuso disse no seu livro - The Software Craftsman PROFESSIONALISM, PRAGMATISM, PRIDE: "Professionalism, technical excellence, and customer satisfaction are the main focus of Software Craftsmanship. Software Craftsmanship is a mindset— a lifestyle that many professional developers adopt. Software craftsmen live and breathe software. They see software as a craft and are committed to do whatever they can to master their craft. Satisfying and helping our customers to achieve what they want to achieve, in the most efficient way, is our main goal. Sharing our knowledge with less- experienced software craftsmen is our moral obligation. The real mission of a software craftsman is to make a contribution to raise the bar of the software industry, with professionalism, passion, and care. Being a software craftsman is far more than writing well- crafted code or being a software developer. It’s a lifestyle— a commitment to excellence. Embrace it. Be proud of the role you play in the evolution of our society."
  2. Artesão não é uma boa tradução
  3. As jóias mostravam artesanato requintado. O artesanato da lâmpada Tiffany foi excelente. Os trabalhadores seniores estão tentando passar seu artesanato para a geração mais jovem. Artesanato não é uma boa tradução
  4. De onde surgiram esses termos? Os primeiros craftsmans foram os ferreiros medievais https://www.medievalists.net/2018/11/role-blacksmith-medieval-society/ https://workingtheflame.com/medieval-blacksmith-daily-life/
  5. Artesão: Equivalente moderno do Craftsman https://www.cmjornal.pt/portugal/detalhe/mostra-de-artesanato-reune-125-expositores http://valormercado.com.br/cultura/2016/10/arte-alagoana-sera-exibida-mais-uma-vez-em-horario-nobre-da-tv-globo/ https://revistacasaejardim.globo.com/Casa-e-Jardim/Decoracao/Detalhes-decorativos/Artesanato/noticia/2017/02/arte-em-familia.html http://www.artepopularportuguesa.org/ http://obviousmag.org/archives/2014/02/artesanato_brasileiro.html
  6. 57 anos de profissão: Ele é sênior Mentoria
  7. Não estou sugerindo que trabalhemos de segunda a sábado. O que eu quero destacar aqui é satisfação / motivação pelo ofício, e a felicidade que esse Sr. de 74 anos demonstra.
  8. Essa é uma definição inicial, e a partir daqui eu vou ir compondo aos poucos a definição completa, pra que o entendimento fique claro; Compara os desenvolvedores de software aos ferreiros medievais Aprendizes trabalhavam com ferreiros mais experientes, viajando de um lugar para o outro, e trabalhando para diferentes mestres, aprendendo diferentes ferramentas e técnicas, e aprimorando o seu ofício até o ponto em que eles se tornavam bons o suficiente para se tornarem mestres, eles próprios.
  9. melhorando a si mesmos = self-improvement
  10. Mentorear desenvolvedores menos experientes: Lembram do modo com que o conhecimento era transmitido entre os ferreiros mais experientes para os menos experientes? Se você sempre valorizou essas coisas, você é um software craftsman, mesmo que você não queira usar essa definição. Muitas pessoas não gostam de rótulos, e tudo bem. Algumas pessoas acham estranho comparar a indústria mais inovativa com uma coisa do período medieval. O importante é que nos preocupemos com o profissionalismo no desenvolvimento de software. Eu particularmente gosto da metáfora do Software Craftsmanship e vejo o desenvolvimento de software como Craft, ou seja... Mas o que realmente importa não é o nome Software Craftsmanship, são os valores que ele promove:...
  11. Isso é o mais importante. Se vocês lembrarem apenas de uma coisa, lembrem-se disso.
  12. E nós? Alguém vê alguma fábrica aqui? Um artefato é construído, através do ofício manual exercido por uma pessoa, com habilidades e competências específicas. Craftsmans
  13. http://wildermuth.com/ https://steemit.com/technology/@jouxy-yousef/top-10-programmers-in-the-world-of-all-time
  14. Isso é o que significa Agile para MUITAS empresas O número de post-its coloridos na parede é o fator para mensurar Agilidade
  15. que num projeto de software a parte mais importante é o SOFTWARE em sí
  16. Agile foi criado por desenvolvedores
  17. 2001 a 2008 pouca coisa aconteceu no mundo do Software Ceraftsmanship
  18. 2 dos livros que mais influenciaram o movimento do Software Craftsmanship
  19. 2 dos livros que mais influenciaram o movimento do Software Craftsmanship
  20. Esse manifesto foi criado em resposta aos valores que foram perdidos no Manifesto para o Manifesto para Desenvolvimento Ágil, em boa parte pelas mesmas pessoas que criaram o Manifesto Ágil;
  21. Desenvolvedores retomam a responsabilidade: Não propondo um novo e revolucionário processo, mas mostrando aos seus clientes que eles se preocupam com o que eles criam. Desenvolvedores estão mostrando aos seus clientes que eles podem trabalhar juntos para produzir software excelente e de longa duração, ajudando eles a alcançar aquilo que eles desejam alcançar. Resgatando os valores.
  22. Quantas veses nós passamos por isso, não deveria ser tratado como uma coisa normal – Software Craftsmanship não vê isso como algo normal … que entende as implicações de fazer alterações erradas num código como esse. Mas você não entende como esse código funciona, e não tem confiança que não vai quebrar nada;
  23. Software bem feito significa que, independente do quão antigo a aplicação é, desenvolvedores podem entender, e dar manutenção no código facilmente;
  24. Para piorar Imagine times distribuídos...
  25. Então quando nós falamos agregar valor constantemente, não estamos apenas falando em adicionar novas features e corrigir bugs. Mas também sobre melhorar constantemente a estrutura do código, mantendo-o limpo, extensível e testável e fácil de manter. Nós devemos poder continuar adicionando features e fazendo as alterações apropriadas na mesma velocidade que nós fazíamos no inicio do projeto. Isso permite com que a empresa possa reagir rapidamente ao mercado independente de quão antigo é o software; Aumentar a vida útil, e manter a capacidade de alterá-lo rápido suficiente é nosso trabalho. Bom design, automação de testes, e desenvolvedores talentosos e apaixonados são essenciais para alcançar isso. ---------------- O foco em software de alta qualidade deve ser a prioridade numero um se você quer aplicações com longa vida útil. Reescrever totalmente aplicações alguns anos após elas serem desenvolvidas não gera retorno de investimento. Mas muitas veses a decisão de reescrever a aplicação é feita por causa do custo proibitivo de mantê-la. O problema é que as mesmas tecnicas ruins que foram usadas para desenvolver a aplicação antiga vão ser usadas para desenvolver a nova. Fazendo com que a nova aplicação seja tão ruim quanto a velha depois de apenas alguns meses ou anos. É nosso trabalho quebrar esse ciclo criando aplicações com código bem feito (well-crafted code). Definição da insanidade
  26. Nós precisamos aprender com os desenvolvedores mais experientes do que nós, Nós precisamos mentorear os desenvolvedores menos experientes do que nós Lembram da história do ferreiro medieval e do artesão: aprendizes, não-aprendizes e mestres, onde um ajuda o outro na sua jornada – [e uma jornada --------------- Software Craftsman é apaixonado pelo que faz e sempre se esforça para melhorar a si mesmo --------------- Nós temos uma missão ainda maior: Somos responsáveis por preparar a próxima geração
  27. Alguns desenvolvedores e Agile Coaches pensam erroneamente que a comunidade de Software Craftsmanship é um grupo de elitista de desenvolvedores. O desenvolvedor que busca nisso um meio de elitismo não é bem vindo; --------------- Humildade para aprender com os outros e disposição para partilhar o seu conhecimento e mentorear desenvolvedores menos experientes; Um desenvolvedor(a) não pode ser considerado um craftsman se ele ou ela não é humilde suficiente para aprender com outros, ou não é disposto o suficiente para partilhar o seu conhecimento e mentorar desenvolvedores menos experientes. --------------- Abraça todo tipo de desenvolvedor, independente do nível de senioridade ou tecnologia; --------------- Queremos trabalhar com pessoas que nos tornam melhores, que tem disposição para compartilhar o que aprendem umas com as outras;
  28. Não acreditamos no relacionamento empregador / empregado O que o contrato diz (empregado permanente, contratado, consultor, pago por hora/dia/mês) são apenas formalidades. --------------- Se você é um funcionário permanente, você deve tratar o seu empregador como seu cliente, da mesma maneira como se você fosse um consultor independente Empregadores, por outro lado, devem também esperar que seus colaboradores forneçam serviço de excelente qualidade sempre, como é suposto que um consultor e contratante é façam.
  29. Apenas aparecer para trabalhar no horário, manter a cabeça baixa, e somente fazer o que te mandam fazer, não é ser profissiona --------- Software craftsmen não são trabalhadores de fábrica. Nós contribuimos ativamente para o sucesso do projeto, questionando requisitos, entendendo o negócio, propondo melhorias, e mantendo uma parceria produtiva com nossos clientes ou empregadores --------- Tempos modernos charlie chaplin
  30. da maioria dos nossos clientes não é produzir software, então é nossa obrigação ajudá-los a guiar um projeto de software da melhor maneira possível. É para isso que nós estamos sendo pagos. ------------- Desenvolvedores que dizem que não é seu trabalho, quando a tarefa não é relacionada à codificação, não são Software Craftsmen. Tem o outro lado da moeda...
  31. Assim como as empresas querem ter bons desenvolvedores, Bons desenvolvedores também querem trabalhar em boas empresas. Não temos porque gastar toda nossa energia e saúde tentado ajudar quem não quer ser ajudado. Existe um limite de esforço. ------------ Escolher trabalhar para um cliente que não está interessado ou não valoriza os skills de um software craftsman é um erro. ------------ Para contruir a nossa carreira, e para andar para frente. Uma parceria é uma estrada de duas vias, deve ser benéfico para ambas as partes envolvidas. E se você sentir que essa parceria não está boa para você, é hora de buscar outro cliente. ----------- História da cadeira Historia dos “meros desenvolvedores”
  32. Imagine que você precisa de um encanador para fazer algum serviço na sua casa. Ou um médico quando está doente ou um dentista quando você tem dor de dente. Você normalmente vai a esses profissionais quando tem um problema, então imagine eles falando pra vocês: Você pode me comprar um livro? Você pode me enviar para uma conferência? O que você pensaria sobre isso? Para piorar as coisas, imagine que por um motivo bizarro você decida comprar um livro para o seu médico, dentista ou encanador ou envia-los a um treinamento. E uma vez que eles tenham adquirido o conhecimento que você deu pra eles (através do livro ou do curso), eles voltem para cobrar vocês pelos serviços prestados. Como vocês reagiriam? ----------- Se elas comprarem é um plus, a responsabilidade é nossa ----------- Isso não significa que as empresas não devem investir na formação dos desenvolvedores. Significa que não devemos achar que é obrigação delas investir na nossa educação. Porque essa obrigação é nossa. Se ampresa compra livros, cursos, paga conferências para você, isso é um bonus ganha-ganha. Empresas que investem na educação dos desenvolvedores são mais eficientes, porque esse conhecimento é convertido em produtividade e qualidade; Com certeza, nos oferencem um bom diferencial quando nós estamos procurando um bom lugar para trabalharmos; Porém nunca esqueçam que a responsabilidade de nos manter atualizados é nossa!
  33. Esses profissionais precisam investir nas suas próprias carreiras para poder fazer um bom trabalho, satisfazer os seus clientes, e com sucesso, serem indicados para novos clientes. ----------- Eles usam o seu próprio dinheiro e tempo para manterem-se atualizados. Aqueles que não fazem isso terminam por perderem os seus clientes, recebendo poucas recomendações, e acabam por ter que sair do mercado.
  34. Todos nós queremos ser tratados e respeitados como profissionais, mas para isso, precisamos agir como profissionais; Precisamos usar o nosso dinheiro e o nosso tempo para nos tornarmos melhor naquilo que nós fazemos; Nós precisamos ser os donos da nossas carreiras
  35. Há muito mais quantidade do que qualidade de conteúdo Muitos blogs são apenas um brain dump ou ideias inicias, reclamações ou pensamentos aleatórios
  36. Assinamos o blog de vários desenvolvedores mais experientes do que nós... Devemos tratar nosso blog como um registo do nosso próprio aprendizado e progresso. Um histórico dos nossos pensamentos, ideias e visões de mundo sobre a nossa carreira; Nós não devemos nos preocupar muito com o que as pessoas pensam sobre ele. Mesmo que outros desenvolvedores já escreveram sobre o mesmo assunto muitas vezes antes, vale e eles vão precisar aprender muitas das coisas que nós já aprendemos;
  37. Exemplo de aprender a dirigir; ---------- Praticas técnicas e novas tecnologias funcionam da mesma forma
  38. Como você se torna um excelente atleta ou músico? Conhecer a teoria, entender a mecânica do instrumento / jogo é importantíssimo. E ter talento ajuda muito, mas a Grandeza vem da prática Karate: É uma sequência de movimentos — técnicas de ataque e defesa — cujo objetivo é proporcionar ao praticante o aprendizado mais aprofundado da arte e, simultaneamente, experiência de luta. Tem problema de domínio simples, mas é suficientemente complicado para não ser resolvido muito rápido; Judit Polgár: Começou a jogar xadrez com cinco anos de idade. Venceu o Kasparov em 2002. Conor McGregor: Michael Jordan:
  39. Em projetos normais, um desenvolvedor primeiro entende o domínio do problema, e então toma decisões técnicas e escreve código. Nós falamos com stakeholders, PO, utilizadores, com quem mais for necessário, que contribua com a solução do problema. De acordo com o que o cliente precisa obter e conforme o escopo do projeto, nós escolhemos as tecnologias que mais adequadas para aquele projeto; Pet Project é o contrário: Como o objeto aqui é aprender ou aprimorar os conhecimentos em algo, primeiro nós decidimos qual tecnologia vamos usar, e depois encontramos um problema para trabalhar.
  40. Nós precisamos aprender a usar bem o nosso tempo. O dia em que nós paramos de estudar é o dia em que nós começamos a perder o controle sobre as nossa carreira Quando mais conhecimento e habilidades nós temos, mais fácil é ser dono da nossa carreira