SlideShare a Scribd company logo
1 of 54
Preocupações de um
Desenvolvedor Ágil
Paulo Igor
Não é apenas CÓDIGO
impacta a vida de milhares de pessoas
transforma a vida das pessoas
“Grandes poderes trazem grandes
responsabilidades” (Ben Parker)
Comodidade
Qualidade de Vida
Tempo
…
#FAIL
Programar é uma arte!
Qualidade
“Programar é um
processo criativo e
que exige
aperfeiçoamento”

Programar é uma arte!
…é necessário praticar!
DNA do programador
Preguiçoso e criativo!!!
“Simplicidade: a arte de maximizar a
quantidade de trabalho que não
precisou ser feito”
...mas funciona!!!
Passa a encarar os problemas com naturalidade…
Pragmatic Programmer
The Pragmatic Programmer
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.

Care about your craft
Think! About your work
Provide options, don’t make lame excuses
Don’t live with broken windows
Be a catalyst for change
Remember the Big Picture
Make a quality a requirements issue
Invest regularly in your knowledge portfolio
Critically Analyze What You Read and Hear
It's Both What You Say and the Way You Say It
DRY—Don't Repeat Yourself
Make It Easy to Reuse
Eliminate Effects Between Unrelated Things
There Are No Final Decisions
Use Tracer Bullets to Find the Target
Prototype to Learn
Program Close to the Problem domain
Estimate to Avoid Surprises
Iterate the Schedule with the Code
Keep Knowledge in Plain Text
Use the Power of Command Shells
Use a Single Editor Well
Always Use Source Code Control
Fix the Problem, Not the Blame
Don't Panic
"select" Isn't Broken
Don't Assume It—Prove It
Learn a Text Manipulation Language
Write Code That Writes Code
You Can't Write Perfect Software
Design with Contracts
Crash Early
If It Can't Happen, Use Assertions to Ensure That It Won't
Use Exceptions for Exceptional Problems
Finish What You Start

36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.

Minimize Coupling Between Modules
Configure, Don't Integrate
Put Abstractions in Code Details in Metadata
Analyze Workflow to Improve Concurrency
Design Using Services
Always Design for Concurrency
Separate Views from Models
Use Blackboards to Coordinate Workflow
Don't Program by Coincidence
Estimate the Order of Your Algorithms
Test Your Estimates
Refactor Early, Refactor Often
Design to Test
Test Your Software, or Your Users Will
Don't Use Wizard Code You Don't Understand
Don't Gather Requirements—Dig for Them
Work with a User to Think Like a User
Abstractions Live Longer than Details
Use a Project Glossary
Don't Think Outside the Box—Find the Box
Listen to Nagging Doubts—Start When You're Ready
Some Things Are Better Done than Described
Don't Be a Slave to Formal Methods
Expensive Too Do Not Produce Better Designs
Organize Around Functionality, Not Job Functions
Don't Use Manual Procedures
Test Early. Test Often. Test Automatically.
Coding Ain't Done 'Til All the Tests Run
Use Saboteurs to Test Your Testing
Test State Coverage, Not Code Coverage
Find Bugs Once
Treat English as Just Another Programming Language
Build Documentation In, Don't Bolt It On
Gently Exceed Your Users' Expectations
Sign Your Work

70 Tips
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.

Care about your craft
Think! About your work
Provide options, don’t make lame excuses
Don’t live with broken windows
Be a catalyst for change
Remember the Big Picture
Make a quality a requirements issue
Invest regularly in your knowledge portfolio
Critically Analyze What You Read and Hear
It's Both What You Say and the Way You Say It
DRY—Don't Repeat Yourself
Make It Easy to Reuse
Eliminate Effects Between Unrelated Things
There Are No Final Decisions
Use Tracer Bullets to Find the Target
Prototype to Learn
Program Close to the Problem domain
Estimate to Avoid Surprises
Iterate the Schedule with the Code
Keep Knowledge in Plain Text
Use the Power of Command Shells
Use a Single Editor Well
Always Use Source Code Control
Fix the Problem, Not the Blame
Don't Panic
"select" Isn't Broken
Don't Assume It—Prove It
Learn a Text Manipulation Language
Write Code That Writes Code
You Can't Write Perfect Software
Design with Contracts
Crash Early
If It Can't Happen, Use Assertions to Ensure That It Won't
Use Exceptions for Exceptional Problems
Finish What You Start

36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.

Minimize Coupling Between Modules
Configure, Don't Integrate
Put Abstractions in Code Details in Metadata
Analyze Workflow to Improve Concurrency
Design Using Services
Always Design for Concurrency
Separate Views from Models
Use Blackboards to Coordinate Workflow
Don't Program by Coincidence
Estimate the Order of Your Algorithms
Test Your Estimates
Refactor Early, Refactor Often
Design to Test
Test Your Software, or Your Users Will
Don't Use Wizard Code You Don't Understand
Don't Gather Requirements—Dig for Them
Work with a User to Think Like a User
Abstractions Live Longer than Details
Use a Project Glossary
Don't Think Outside the Box—Find the Box
Listen to Nagging Doubts—Start When You're Ready
Some Things Are Better Done than Described
Don't Be a Slave to Formal Methods
Expensive Too Do Not Produce Better Designs
Organize Around Functionality, Not Job Functions
Don't Use Manual Procedures
Test Early. Test Often. Test Automatically.
Coding Ain't Done 'Til All the Tests Run
Use Saboteurs to Test Your Testing
Test State Coverage, Not Code Coverage
Find Bugs Once
Treat English as Just Another Programming Language
Build Documentation In, Don't Bolt It On
Gently Exceed Your Users' Expectations
Sign Your Work

1 – Care about your craft
Técnicas e Práticas
Pair Programming
Qualidade do Código
“Clean Code” (Uncle Bob)
Ta uma bagunça, mas funciona!
Agora sim! 
Refatoração
“Refactoring: Improving the Design of
Existing Code” (Martin Fowler)
Testes
Testes Manuais
Testes Automáticos
JUnit, JBehave, TestNG, Rspec, Cumcuber, Test::Unit, …
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.

Care about your craft
Think! About your work
Provide options, don’t make lame excuses
Don’t live with broken windows
Be a catalyst for change
Remember the Big Picture
Make a quality a requirements issue
Invest regularly in your knowledge portfolio
Critically Analyze What You Read and Hear
It's Both What You Say and the Way You Say It
DRY—Don't Repeat Yourself
Make It Easy to Reuse
Eliminate Effects Between Unrelated Things
There Are No Final Decisions
Use Tracer Bullets to Find the Target
Prototype to Learn
Program Close to the Problem domain
Estimate to Avoid Surprises
Iterate the Schedule with the Code
Keep Knowledge in Plain Text
Use the Power of Command Shells
Use a Single Editor Well
Always Use Source Code Control
Fix the Problem, Not the Blame
Don't Panic
"select" Isn't Broken
Don't Assume It—Prove It
Learn a Text Manipulation Language
Write Code That Writes Code
You Can't Write Perfect Software
Design with Contracts
Crash Early
If It Can't Happen, Use Assertions to Ensure That It Won't
Use Exceptions for Exceptional Problems
Finish What You Start

36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.

Minimize Coupling Between Modules
Configure, Don't Integrate
Put Abstractions in Code Details in Metadata
Analyze Workflow to Improve Concurrency
Design Using Services
Always Design for Concurrency
Separate Views from Models
Use Blackboards to Coordinate Workflow
Don't Program by Coincidence
Estimate the Order of Your Algorithms
Test Your Estimates
Refactor Early, Refactor Often
Design to Test
Test Your Software, or Your Users Will
Don't Use Wizard Code You Don't Understand
Don't Gather Requirements—Dig for Them
Work with a User to Think Like a User
Abstractions Live Longer than Details
Use a Project Glossary
Don't Think Outside the Box—Find the Box
Listen to Nagging Doubts—Start When You're Ready
Some Things Are Better Done than Described
Don't Be a Slave to Formal Methods
Expensive Too Do Not Produce Better Designs
Organize Around Functionality, Not Job Functions
Don't Use Manual Procedures
Test Early. Test Often. Test Automatically.
Coding Ain't Done 'Til All the Tests Run
Use Saboteurs to Test Your Testing
Test State Coverage, Not Code Coverage
Find Bugs Once
Treat English as Just Another Programming Language
Build Documentation In, Don't Bolt It On
Gently Exceed Your Users' Expectations
Sign Your Work

61 – Don’t use Manual Procedures
Automatização
Especificação Testável
Concordion / FitNesse
TDD / BDD
“TDD - Kent Beck / BDD - Dan North”
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.

Care about your craft
Think! About your work
Provide options, don’t make lame excuses
Don’t live with broken windows
Be a catalyst for change
Remember the Big Picture
Make a quality a requirements issue
Invest regularly in your knowledge portfolio
Critically Analyze What You Read and Hear
It's Both What You Say and the Way You Say It
DRY—Don't Repeat Yourself
Make It Easy to Reuse
Eliminate Effects Between Unrelated Things
There Are No Final Decisions
Use Tracer Bullets to Find the Target
Prototype to Learn
Program Close to the Problem domain
Estimate to Avoid Surprises
Iterate the Schedule with the Code
Keep Knowledge in Plain Text
Use the Power of Command Shells
Use a Single Editor Well
Always Use Source Code Control
Fix the Problem, Not the Blame
Don't Panic
"select" Isn't Broken
Don't Assume It—Prove It
Learn a Text Manipulation Language
Write Code That Writes Code
You Can't Write Perfect Software
Design with Contracts
Crash Early
If It Can't Happen, Use Assertions to Ensure That It Won't
Use Exceptions for Exceptional Problems
Finish What You Start

36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.

Minimize Coupling Between Modules
Configure, Don't Integrate
Put Abstractions in Code Details in Metadata
Analyze Workflow to Improve Concurrency
Design Using Services
Always Design for Concurrency
Separate Views from Models
Use Blackboards to Coordinate Workflow
Don't Program by Coincidence
Estimate the Order of Your Algorithms
Test Your Estimates
Refactor Early, Refactor Often
Design to Test
Test Your Software, or Your Users Will
Don't Use Wizard Code You Don't Understand
Don't Gather Requirements—Dig for Them
Work with a User to Think Like a User
Abstractions Live Longer than Details
Use a Project Glossary
Don't Think Outside the Box—Find the Box
Listen to Nagging Doubts—Start When You're Ready
Some Things Are Better Done than Described
Don't Be a Slave to Formal Methods
Expensive Too Do Not Produce Better Designs
Organize Around Functionality, Not Job Functions
Don't Use Manual Procedures
Test Early. Test Often. Test Automatically.
Coding Ain't Done 'Til All the Tests Run
Use Saboteurs to Test Your Testing
Test State Coverage, Not Code Coverage
Find Bugs Once
Treat English as Just Another Programming Language
Build Documentation In, Don't Bolt It On
Gently Exceed Your Users' Expectations
Sign Your Work

47 – Refactor Early, Refactor Often
Blindagem do Código
Design Evolutivo
“TDD - Kent Beck / BDD - Dan North”
Continuous
TDD / BDD
Integration

“TDD - Kent Beck / BDD - Dan North”
(Martin Fowler)
Continuous Delivery
(Jez Humble e David Farley)
Continuous Delivery
(Jez Humble e David Farley)
da qualidade não se abre mão
“Arte de
Programar”
“controle a força”
“Treinar pra quê?”
BOM SENSO!!!
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.

Care about your craft
Think! About your work
Provide options, don’t make lame excuses
Don’t live with broken windows
Be a catalyst for change
Remember the Big Picture
Make a quality a requirements issue
Invest regularly in your knowledge portfolio
Critically Analyze What You Read and Hear
It's Both What You Say and the Way You Say It
DRY—Don't Repeat Yourself
Make It Easy to Reuse
Eliminate Effects Between Unrelated Things
There Are No Final Decisions
Use Tracer Bullets to Find the Target
Prototype to Learn
Program Close to the Problem domain
Estimate to Avoid Surprises
Iterate the Schedule with the Code
Keep Knowledge in Plain Text
Use the Power of Command Shells
Use a Single Editor Well
Always Use Source Code Control
Fix the Problem, Not the Blame
Don't Panic
"select" Isn't Broken
Don't Assume It—Prove It
Learn a Text Manipulation Language
Write Code That Writes Code
You Can't Write Perfect Software
Design with Contracts
Crash Early
If It Can't Happen, Use Assertions to Ensure That It Won't
Use Exceptions for Exceptional Problems
Finish What You Start

36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.

Minimize Coupling Between Modules
Configure, Don't Integrate
Put Abstractions in Code Details in Metadata
Analyze Workflow to Improve Concurrency
Design Using Services
Always Design for Concurrency
Separate Views from Models
Use Blackboards to Coordinate Workflow
Don't Program by Coincidence
Estimate the Order of Your Algorithms
Test Your Estimates
Refactor Early, Refactor Often
Design to Test
Test Your Software, or Your Users Will
Don't Use Wizard Code You Don't Understand
Don't Gather Requirements—Dig for Them
Work with a User to Think Like a User
Abstractions Live Longer than Details
Use a Project Glossary
Don't Think Outside the Box—Find the Box
Listen to Nagging Doubts—Start When You're Ready
Some Things Are Better Done than Described
Don't Be a Slave to Formal Methods
Expensive Too Do Not Produce Better Designs
Organize Around Functionality, Not Job Functions
Don't Use Manual Procedures
Test Early. Test Often. Test Automatically.
Coding Ain't Done 'Til All the Tests Run
Use Saboteurs to Test Your Testing
Test State Coverage, Not Code Coverage
Find Bugs Once
Treat English as Just Another Programming Language
Build Documentation In, Don't Bolt It On
Gently Exceed Your Users' Expectations
Sign Your Work

30 – You Can’t Write Perfect Software
Deixe seu legado!!!
Obrigado!
Paulo Igor

More Related Content

What's hot

Practices of agile developers
Practices of agile developersPractices of agile developers
Practices of agile developersDUONG Trong Tan
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Bhavin Javia
 
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)Mikalai Alimenkou
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbookGabriel Paunescu 🤖
 
Exploratory Testing Explained
Exploratory Testing ExplainedExploratory Testing Explained
Exploratory Testing ExplainedTechWell
 
Kung fu Programming
Kung fu ProgrammingKung fu Programming
Kung fu ProgrammingWisecube AI
 
How does pair programming work?
How does pair programming work?How does pair programming work?
How does pair programming work?Ferdous Pathan
 
Rehan Pair Testing Final
Rehan Pair Testing FinalRehan Pair Testing Final
Rehan Pair Testing FinalRehanShahKhan
 
Pair programming
Pair programmingPair programming
Pair programmingJon Jagger
 
Testers and developers think differently
Testers and developers think differentlyTesters and developers think differently
Testers and developers think differentlyNuthan Kumar
 
Software Project management
Software Project managementSoftware Project management
Software Project managementPeter Brownell
 
The Test Coverage Outline: Your Testing Road Map
The Test Coverage Outline: Your Testing Road MapThe Test Coverage Outline: Your Testing Road Map
The Test Coverage Outline: Your Testing Road MapTechWell
 
Test-Driven Development
 Test-Driven Development  Test-Driven Development
Test-Driven Development Amir Assad
 
Pair Programming: overview and concepts
Pair Programming: overview and conceptsPair Programming: overview and concepts
Pair Programming: overview and conceptsLior Kirshner-Shalom
 
Extreme programming talk wise consulting - www.talkwiseconsulting
Extreme programming   talk wise consulting - www.talkwiseconsultingExtreme programming   talk wise consulting - www.talkwiseconsulting
Extreme programming talk wise consulting - www.talkwiseconsultingtalkwiseone
 
The pragmatic programmer
The pragmatic programmerThe pragmatic programmer
The pragmatic programmerNilesh Sharma
 
xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012Justin Gordon
 

What's hot (20)

Practices of agile developers
Practices of agile developersPractices of agile developers
Practices of agile developers
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...
 
Pragmatic programmer 2
Pragmatic programmer 2Pragmatic programmer 2
Pragmatic programmer 2
 
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
 
Exploratory testing workshop
Exploratory testing workshopExploratory testing workshop
Exploratory testing workshop
 
Exploratory Testing Explained
Exploratory Testing ExplainedExploratory Testing Explained
Exploratory Testing Explained
 
Kung fu Programming
Kung fu ProgrammingKung fu Programming
Kung fu Programming
 
Design Sprints
Design SprintsDesign Sprints
Design Sprints
 
How does pair programming work?
How does pair programming work?How does pair programming work?
How does pair programming work?
 
Rehan Pair Testing Final
Rehan Pair Testing FinalRehan Pair Testing Final
Rehan Pair Testing Final
 
Pair programming
Pair programmingPair programming
Pair programming
 
Testers and developers think differently
Testers and developers think differentlyTesters and developers think differently
Testers and developers think differently
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
The Test Coverage Outline: Your Testing Road Map
The Test Coverage Outline: Your Testing Road MapThe Test Coverage Outline: Your Testing Road Map
The Test Coverage Outline: Your Testing Road Map
 
Test-Driven Development
 Test-Driven Development  Test-Driven Development
Test-Driven Development
 
Pair Programming: overview and concepts
Pair Programming: overview and conceptsPair Programming: overview and concepts
Pair Programming: overview and concepts
 
Extreme programming talk wise consulting - www.talkwiseconsulting
Extreme programming   talk wise consulting - www.talkwiseconsultingExtreme programming   talk wise consulting - www.talkwiseconsulting
Extreme programming talk wise consulting - www.talkwiseconsulting
 
The pragmatic programmer
The pragmatic programmerThe pragmatic programmer
The pragmatic programmer
 
xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012
 

Similar to Preocupações Desenvolvedor Ágil

Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Topic production code
Topic production codeTopic production code
Topic production codeKavi Kumar
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsSteven Smith
 
Unit testing
Unit testingUnit testing
Unit testingPiXeL16
 
Software Testing Basic Concepts
Software Testing Basic ConceptsSoftware Testing Basic Concepts
Software Testing Basic Conceptswesovi
 
Introduction to test programming
Introduction to test programmingIntroduction to test programming
Introduction to test programmingopenfinanceDev
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
Testing & should i do it
Testing & should i do itTesting & should i do it
Testing & should i do itMartin Sykora
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practicesBill Buchan
 
5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile DevelopmentArin Sime
 
Software engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least onceSoftware engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least onceAlexey (Mr_Mig) Migutsky
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingPeter Presnell
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsRehgan Avon
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015Raghu Karnati
 

Similar to Preocupações Desenvolvedor Ágil (20)

Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Best pratice
Best praticeBest pratice
Best pratice
 
Topic production code
Topic production codeTopic production code
Topic production code
 
Tdd
TddTdd
Tdd
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 
Unit testing
Unit testingUnit testing
Unit testing
 
Automated tests
Automated testsAutomated tests
Automated tests
 
Software Testing Basic Concepts
Software Testing Basic ConceptsSoftware Testing Basic Concepts
Software Testing Basic Concepts
 
Code Retreat
Code RetreatCode Retreat
Code Retreat
 
Introduction to test programming
Introduction to test programmingIntroduction to test programming
Introduction to test programming
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Testing & should i do it
Testing & should i do itTesting & should i do it
Testing & should i do it
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practices
 
5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development
 
Software engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least onceSoftware engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least once
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
 
Agile
AgileAgile
Agile
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015
 

More from Paulo Igor Alves Godinho (13)

Pequenas Ações para Revolucionar sua Carreira
Pequenas Ações para Revolucionar sua CarreiraPequenas Ações para Revolucionar sua Carreira
Pequenas Ações para Revolucionar sua Carreira
 
Kanban - Mais que um quadro na parede
Kanban - Mais que um quadro na paredeKanban - Mais que um quadro na parede
Kanban - Mais que um quadro na parede
 
Melhorando o Fluxo de Trabalho com Kanban
Melhorando o Fluxo de Trabalho com KanbanMelhorando o Fluxo de Trabalho com Kanban
Melhorando o Fluxo de Trabalho com Kanban
 
Small Acts - Pequenas ações geram grandes revoluções
Small Acts - Pequenas ações geram grandes revoluçõesSmall Acts - Pequenas ações geram grandes revoluções
Small Acts - Pequenas ações geram grandes revoluções
 
Buscando Agilidade sem Rótulos
Buscando Agilidade sem RótulosBuscando Agilidade sem Rótulos
Buscando Agilidade sem Rótulos
 
JRuby - Explorando um mundo de possibilidades
JRuby - Explorando um mundo de possibilidadesJRuby - Explorando um mundo de possibilidades
JRuby - Explorando um mundo de possibilidades
 
Facetas do desenvolvedor agil
Facetas do desenvolvedor agilFacetas do desenvolvedor agil
Facetas do desenvolvedor agil
 
Palestra agile brazil (versão atualizada)
Palestra agile brazil (versão atualizada)Palestra agile brazil (versão atualizada)
Palestra agile brazil (versão atualizada)
 
Palestra tdd-completa
Palestra tdd-completaPalestra tdd-completa
Palestra tdd-completa
 
Carreira2 0
Carreira2 0Carreira2 0
Carreira2 0
 
Palestra scrum
Palestra scrumPalestra scrum
Palestra scrum
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Preocupações Desenvolvedor Ágil

  • 2.
  • 3. Não é apenas CÓDIGO
  • 4. impacta a vida de milhares de pessoas
  • 5. transforma a vida das pessoas
  • 6.
  • 7. “Grandes poderes trazem grandes responsabilidades” (Ben Parker)
  • 8.
  • 10.
  • 11. #FAIL
  • 12.
  • 15. “Programar é um processo criativo e que exige aperfeiçoamento” Programar é uma arte!
  • 19. “Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito”
  • 21. Passa a encarar os problemas com naturalidade…
  • 24. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Care about your craft Think! About your work Provide options, don’t make lame excuses Don’t live with broken windows Be a catalyst for change Remember the Big Picture Make a quality a requirements issue Invest regularly in your knowledge portfolio Critically Analyze What You Read and Hear It's Both What You Say and the Way You Say It DRY—Don't Repeat Yourself Make It Easy to Reuse Eliminate Effects Between Unrelated Things There Are No Final Decisions Use Tracer Bullets to Find the Target Prototype to Learn Program Close to the Problem domain Estimate to Avoid Surprises Iterate the Schedule with the Code Keep Knowledge in Plain Text Use the Power of Command Shells Use a Single Editor Well Always Use Source Code Control Fix the Problem, Not the Blame Don't Panic "select" Isn't Broken Don't Assume It—Prove It Learn a Text Manipulation Language Write Code That Writes Code You Can't Write Perfect Software Design with Contracts Crash Early If It Can't Happen, Use Assertions to Ensure That It Won't Use Exceptions for Exceptional Problems Finish What You Start 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Minimize Coupling Between Modules Configure, Don't Integrate Put Abstractions in Code Details in Metadata Analyze Workflow to Improve Concurrency Design Using Services Always Design for Concurrency Separate Views from Models Use Blackboards to Coordinate Workflow Don't Program by Coincidence Estimate the Order of Your Algorithms Test Your Estimates Refactor Early, Refactor Often Design to Test Test Your Software, or Your Users Will Don't Use Wizard Code You Don't Understand Don't Gather Requirements—Dig for Them Work with a User to Think Like a User Abstractions Live Longer than Details Use a Project Glossary Don't Think Outside the Box—Find the Box Listen to Nagging Doubts—Start When You're Ready Some Things Are Better Done than Described Don't Be a Slave to Formal Methods Expensive Too Do Not Produce Better Designs Organize Around Functionality, Not Job Functions Don't Use Manual Procedures Test Early. Test Often. Test Automatically. Coding Ain't Done 'Til All the Tests Run Use Saboteurs to Test Your Testing Test State Coverage, Not Code Coverage Find Bugs Once Treat English as Just Another Programming Language Build Documentation In, Don't Bolt It On Gently Exceed Your Users' Expectations Sign Your Work 70 Tips
  • 25. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Care about your craft Think! About your work Provide options, don’t make lame excuses Don’t live with broken windows Be a catalyst for change Remember the Big Picture Make a quality a requirements issue Invest regularly in your knowledge portfolio Critically Analyze What You Read and Hear It's Both What You Say and the Way You Say It DRY—Don't Repeat Yourself Make It Easy to Reuse Eliminate Effects Between Unrelated Things There Are No Final Decisions Use Tracer Bullets to Find the Target Prototype to Learn Program Close to the Problem domain Estimate to Avoid Surprises Iterate the Schedule with the Code Keep Knowledge in Plain Text Use the Power of Command Shells Use a Single Editor Well Always Use Source Code Control Fix the Problem, Not the Blame Don't Panic "select" Isn't Broken Don't Assume It—Prove It Learn a Text Manipulation Language Write Code That Writes Code You Can't Write Perfect Software Design with Contracts Crash Early If It Can't Happen, Use Assertions to Ensure That It Won't Use Exceptions for Exceptional Problems Finish What You Start 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Minimize Coupling Between Modules Configure, Don't Integrate Put Abstractions in Code Details in Metadata Analyze Workflow to Improve Concurrency Design Using Services Always Design for Concurrency Separate Views from Models Use Blackboards to Coordinate Workflow Don't Program by Coincidence Estimate the Order of Your Algorithms Test Your Estimates Refactor Early, Refactor Often Design to Test Test Your Software, or Your Users Will Don't Use Wizard Code You Don't Understand Don't Gather Requirements—Dig for Them Work with a User to Think Like a User Abstractions Live Longer than Details Use a Project Glossary Don't Think Outside the Box—Find the Box Listen to Nagging Doubts—Start When You're Ready Some Things Are Better Done than Described Don't Be a Slave to Formal Methods Expensive Too Do Not Produce Better Designs Organize Around Functionality, Not Job Functions Don't Use Manual Procedures Test Early. Test Often. Test Automatically. Coding Ain't Done 'Til All the Tests Run Use Saboteurs to Test Your Testing Test State Coverage, Not Code Coverage Find Bugs Once Treat English as Just Another Programming Language Build Documentation In, Don't Bolt It On Gently Exceed Your Users' Expectations Sign Your Work 1 – Care about your craft
  • 28. Qualidade do Código “Clean Code” (Uncle Bob)
  • 29. Ta uma bagunça, mas funciona!
  • 31. Refatoração “Refactoring: Improving the Design of Existing Code” (Martin Fowler)
  • 34. Testes Automáticos JUnit, JBehave, TestNG, Rspec, Cumcuber, Test::Unit, …
  • 35. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Care about your craft Think! About your work Provide options, don’t make lame excuses Don’t live with broken windows Be a catalyst for change Remember the Big Picture Make a quality a requirements issue Invest regularly in your knowledge portfolio Critically Analyze What You Read and Hear It's Both What You Say and the Way You Say It DRY—Don't Repeat Yourself Make It Easy to Reuse Eliminate Effects Between Unrelated Things There Are No Final Decisions Use Tracer Bullets to Find the Target Prototype to Learn Program Close to the Problem domain Estimate to Avoid Surprises Iterate the Schedule with the Code Keep Knowledge in Plain Text Use the Power of Command Shells Use a Single Editor Well Always Use Source Code Control Fix the Problem, Not the Blame Don't Panic "select" Isn't Broken Don't Assume It—Prove It Learn a Text Manipulation Language Write Code That Writes Code You Can't Write Perfect Software Design with Contracts Crash Early If It Can't Happen, Use Assertions to Ensure That It Won't Use Exceptions for Exceptional Problems Finish What You Start 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Minimize Coupling Between Modules Configure, Don't Integrate Put Abstractions in Code Details in Metadata Analyze Workflow to Improve Concurrency Design Using Services Always Design for Concurrency Separate Views from Models Use Blackboards to Coordinate Workflow Don't Program by Coincidence Estimate the Order of Your Algorithms Test Your Estimates Refactor Early, Refactor Often Design to Test Test Your Software, or Your Users Will Don't Use Wizard Code You Don't Understand Don't Gather Requirements—Dig for Them Work with a User to Think Like a User Abstractions Live Longer than Details Use a Project Glossary Don't Think Outside the Box—Find the Box Listen to Nagging Doubts—Start When You're Ready Some Things Are Better Done than Described Don't Be a Slave to Formal Methods Expensive Too Do Not Produce Better Designs Organize Around Functionality, Not Job Functions Don't Use Manual Procedures Test Early. Test Often. Test Automatically. Coding Ain't Done 'Til All the Tests Run Use Saboteurs to Test Your Testing Test State Coverage, Not Code Coverage Find Bugs Once Treat English as Just Another Programming Language Build Documentation In, Don't Bolt It On Gently Exceed Your Users' Expectations Sign Your Work 61 – Don’t use Manual Procedures
  • 38.
  • 39.
  • 40. TDD / BDD “TDD - Kent Beck / BDD - Dan North”
  • 41. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Care about your craft Think! About your work Provide options, don’t make lame excuses Don’t live with broken windows Be a catalyst for change Remember the Big Picture Make a quality a requirements issue Invest regularly in your knowledge portfolio Critically Analyze What You Read and Hear It's Both What You Say and the Way You Say It DRY—Don't Repeat Yourself Make It Easy to Reuse Eliminate Effects Between Unrelated Things There Are No Final Decisions Use Tracer Bullets to Find the Target Prototype to Learn Program Close to the Problem domain Estimate to Avoid Surprises Iterate the Schedule with the Code Keep Knowledge in Plain Text Use the Power of Command Shells Use a Single Editor Well Always Use Source Code Control Fix the Problem, Not the Blame Don't Panic "select" Isn't Broken Don't Assume It—Prove It Learn a Text Manipulation Language Write Code That Writes Code You Can't Write Perfect Software Design with Contracts Crash Early If It Can't Happen, Use Assertions to Ensure That It Won't Use Exceptions for Exceptional Problems Finish What You Start 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Minimize Coupling Between Modules Configure, Don't Integrate Put Abstractions in Code Details in Metadata Analyze Workflow to Improve Concurrency Design Using Services Always Design for Concurrency Separate Views from Models Use Blackboards to Coordinate Workflow Don't Program by Coincidence Estimate the Order of Your Algorithms Test Your Estimates Refactor Early, Refactor Often Design to Test Test Your Software, or Your Users Will Don't Use Wizard Code You Don't Understand Don't Gather Requirements—Dig for Them Work with a User to Think Like a User Abstractions Live Longer than Details Use a Project Glossary Don't Think Outside the Box—Find the Box Listen to Nagging Doubts—Start When You're Ready Some Things Are Better Done than Described Don't Be a Slave to Formal Methods Expensive Too Do Not Produce Better Designs Organize Around Functionality, Not Job Functions Don't Use Manual Procedures Test Early. Test Often. Test Automatically. Coding Ain't Done 'Til All the Tests Run Use Saboteurs to Test Your Testing Test State Coverage, Not Code Coverage Find Bugs Once Treat English as Just Another Programming Language Build Documentation In, Don't Bolt It On Gently Exceed Your Users' Expectations Sign Your Work 47 – Refactor Early, Refactor Often
  • 43. Design Evolutivo “TDD - Kent Beck / BDD - Dan North”
  • 44. Continuous TDD / BDD Integration “TDD - Kent Beck / BDD - Dan North” (Martin Fowler)
  • 47. da qualidade não se abre mão
  • 52. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Care about your craft Think! About your work Provide options, don’t make lame excuses Don’t live with broken windows Be a catalyst for change Remember the Big Picture Make a quality a requirements issue Invest regularly in your knowledge portfolio Critically Analyze What You Read and Hear It's Both What You Say and the Way You Say It DRY—Don't Repeat Yourself Make It Easy to Reuse Eliminate Effects Between Unrelated Things There Are No Final Decisions Use Tracer Bullets to Find the Target Prototype to Learn Program Close to the Problem domain Estimate to Avoid Surprises Iterate the Schedule with the Code Keep Knowledge in Plain Text Use the Power of Command Shells Use a Single Editor Well Always Use Source Code Control Fix the Problem, Not the Blame Don't Panic "select" Isn't Broken Don't Assume It—Prove It Learn a Text Manipulation Language Write Code That Writes Code You Can't Write Perfect Software Design with Contracts Crash Early If It Can't Happen, Use Assertions to Ensure That It Won't Use Exceptions for Exceptional Problems Finish What You Start 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Minimize Coupling Between Modules Configure, Don't Integrate Put Abstractions in Code Details in Metadata Analyze Workflow to Improve Concurrency Design Using Services Always Design for Concurrency Separate Views from Models Use Blackboards to Coordinate Workflow Don't Program by Coincidence Estimate the Order of Your Algorithms Test Your Estimates Refactor Early, Refactor Often Design to Test Test Your Software, or Your Users Will Don't Use Wizard Code You Don't Understand Don't Gather Requirements—Dig for Them Work with a User to Think Like a User Abstractions Live Longer than Details Use a Project Glossary Don't Think Outside the Box—Find the Box Listen to Nagging Doubts—Start When You're Ready Some Things Are Better Done than Described Don't Be a Slave to Formal Methods Expensive Too Do Not Produce Better Designs Organize Around Functionality, Not Job Functions Don't Use Manual Procedures Test Early. Test Often. Test Automatically. Coding Ain't Done 'Til All the Tests Run Use Saboteurs to Test Your Testing Test State Coverage, Not Code Coverage Find Bugs Once Treat English as Just Another Programming Language Build Documentation In, Don't Bolt It On Gently Exceed Your Users' Expectations Sign Your Work 30 – You Can’t Write Perfect Software

Editor's Notes

  1. SOLID, DRY, Reuse, …
  2. Para nãoirpara o lado negro da força
  3. Missão dada émissãocumprida – BOM SENSO!!!