O documento discute os princípios do Software Craftsmanship, que enfatiza a excelência técnica e o profissionalismo no desenvolvimento de software. Ele contrasta Software Craftsmanship com uma abordagem mais focada apenas nos processos ágeis, defendendo que a transformação ágil completa requer tanto melhorias nos processos quanto no aprimoramento das habilidades técnicas dos desenvolvedores. O documento também traça a história do movimento Software Craftsmanship.
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…
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/
● 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."
Artesão não é uma boa tradução
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
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/
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
57 anos de profissão: Ele é sênior
Mentoria
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.
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.
melhorando a si mesmos = self-improvement
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:...
Isso é o mais importante. Se vocês lembrarem apenas de uma coisa, lembrem-se disso.
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
Isso é o que significa Agile para MUITAS empresas
O número de post-its coloridos na parede é o fator para mensurar Agilidade
que num projeto de software a parte mais importante é o SOFTWARE em sí
Agile foi criado por desenvolvedores
2001 a 2008 pouca coisa aconteceu no mundo do Software Ceraftsmanship
2 dos livros que mais influenciaram o movimento do Software Craftsmanship
2 dos livros que mais influenciaram o movimento do Software Craftsmanship
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;
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.
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;
Software bem feito significa que, independente do quão antigo a aplicação é, desenvolvedores podem entender, e dar manutenção no código facilmente;
Para piorar Imagine times distribuídos...
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
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
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;
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.
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
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...
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”
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!
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.
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
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
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;
Exemplo de aprender a dirigir;
----------
Praticas técnicas e novas tecnologias funcionam da mesma forma
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:
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.
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