SlideShare a Scribd company logo
1 of 64
Download to read offline
Reference:
The Pragmatic Programmer: From
Journeyman to Master
by Andrew Hunt and David Thomas
Addison-Wesley Professional, October 1999
ISBN-13: 078-5342616224
ISBN-10: 020161622X
http://www.amazon.com/The-Pragmatic-
Programmer-Journeyman-
Master/dp/020161622X
Thanks:
Jeff Atwood aka The Coding Horror
Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with
the problems that exist in a specific situation in a reasonable and
logical way instead of depending on ideas and theories
1. Care About Your Craft
2. Think! About Your Work
3. Provide Options, Don't Make Lame Excuses
4. Don't Live with Broken Windows
5. Be a Catalyst for Change
6. Remember the Big Picture
7. Make Quality a Requirements Issue
8. Invest Regularly in Your Knowledge
Portfolio
9. Critically Analyze What You Read and Hear
10. It's Both What You Say and the Way You
Say It
11. DRY – Don't Repeat Yourself
12. Make It Easy to Reuse
13. Eliminate Effects Between Unrelated Things
14. There Are No Final Decisions
15. Use Tracer Bullets to Find the Target
16. Prototype to Learn
17. Program Close to the Problem Domain
18. Estimate to Avoid Surprises
19. Iterate the Schedule with the Code
20. Keep Knowledge in Plain Text
21. Use the Power of Command Shells
22. Use a Single Editor Well
23. Always Use Source Code Control
24. Fix the Problem, Not the Blame
25. Don't Panic When Debugging
26. "select" Isn't Broken.
27. Don't Assume It – Prove It
28. Learn a Text Manipulation Language
29. Write Code That Writes Code
30. You Can't Write Perfect Software
31. Design with Contracts
32. Crash Early
33. Use Assertions to Prevent the Impossible
34. Use Exceptions for Exceptional Problems
35. Finish What You Start
36. Minimize Coupling Between Modules
37. Configure, Don't Integrate
38. Put Abstractions in Code, Details in Metadata
39. Analyze Workflow to Improve Concurrency
40. Design Using Services
41. Always Design for Concurrency
42. Separate Views from Models
43. Use Blackboards to Coordinate Workflow
44. Don't Program by Coincidence
45. Estimate the Order of Your Algorithms
46. Test Your Estimates
47. Refactor Early, Refactor Often
48. Design to Test
49. Test Your Software, or Your Users Will
50. Don't Use Wizard Code You Don't Understand
51. Don't Gather Requirements – Dig for Them
52. Workwith a User to Think Like a User
53. Abstractions Live Longer than Details
54. Use a Project Glossary
55. Don't Think Outside the Box – Find the Box
56. Start When You're Ready
57. Some Things Are Better Done than Described
58. Don't Be a Slave to Formal Methods
59. Costly Tools Don't Produce Better Designs
60. Organize Teams Around Functionality
61. Don't Use Manual Procedures
62. Test Early. Test Often. Test Automatically
63. Coding Ain't Done 'Til All the Tests Run.
64. Use Saboteurs to Test Your Testing.
65. Test State Coverage, Not Code Coverage
66. Find Bugs Once
67. English is Just a Programming Language
68. Build Documentation In, Don't Bolt It On
69. Gently Exceed Your Users' Expectations
70. Sign Your Work
1. Care About Your Craft
2. Think! About Your Work
3. Provide Options, Don't Make Lame Excuses
4. Don't Live with Broken Windows
5. Be a Catalyst for Change
6. Remember the Big Picture
7. Make Quality a Requirements Issue
8. Invest Regularly in Your Knowledge
Portfolio
9. Critically Analyze What You Read and Hear
10. It's Both What You Say and the Way You
Say It
11. DRY – Don't Repeat Yourself
12. Make It Easy to Reuse
13. Eliminate Effects Between Unrelated Things
14. There Are No Final Decisions
15. Use Tracer Bullets to Find the Target
16. Prototype to Learn
17. Program Close to the Problem Domain
18. Estimate to Avoid Surprises
19. Iterate the Schedule with the Code
20. Keep Knowledge in Plain Text
21. Use the Power of Command Shells
22. Use a Single Editor Well
23. Always Use Source Code Control
24. Fix the Problem, Not the Blame
25. Don't Panic When Debugging
26. "Select" Isn't Broken
27. Don't Assume It – Prove It
28. Learn a Text Manipulation Language
29. Write Code That Writes Code
30. You Can't Write Perfect Software
31. Design with Contracts
32. Crash Early
33. Use Assertions to Prevent the Impossible
34. Use Exceptions for Exceptional Problems
35. Finish What You Start
36. Minimize Coupling Between Modules
37. Configure, Don't Integrate
38. Put Abstractions in Code, Details in Metadata
39. Analyze Workflow to Improve Concurrency
40. Design Using Services
41. Always Design for Concurrency
42. Separate Views from Models
43. Use Blackboards to Coordinate Workflow
44. Don't Program by Coincidence
45. Estimate the Order of Your Algorithms
46. Test Your Estimates
47. Refactor Early, Refactor Often
48. Design to Test
49. Test Your Software, or Your Users Will
50. Don't Use Wizard Code You Don't Understand
51. Don't Gather Requirements – Dig for Them
52. Work with a User to Think Like a User
53. Abstractions Live Longer than Details
54. Use a Project Glossary
55. Don't Think Outside the Box – Find the Box
56. Start When You're Ready
57. Some Things Are Better Done than Described
58. Don't Be a Slave to Formal Methods
59. Costly Tools Don't Produce Better Designs
60. Organize Teams Around Functionality
61. Don't Use Manual Procedures
62. Test Early. Test Often. Test Automatically
63. Coding Ain't Done 'Til All the Tests Run
64. Use Saboteurs to Test Your Testing.
65. Test State Coverage, Not Code Coverage
66. Find Bugs Once
67. English is Just a Programming Language
68. Build Documentation In, Don't Bolt It On
69. Gently Exceed Your Users' Expectations
70. Sign Your Work
1. Care About Your Craft
2. Think! About Your Work
3. Provide Options, Don't Make Lame Excuses
4. Don't Live with Broken Windows
5. Be a Catalyst for Change
6. Remember the Big Picture
7. Make Quality a Requirements Issue
8. Invest Regularly in Your Knowledge
Portfolio
9. Critically Analyze What You Read and Hear
10. It's Both What You Say and the Way You
Say It
11. DRY – Don't Repeat Yourself
12. Make It Easy to Reuse
13. Eliminate Effects Between Unrelated Things
14. There Are No Final Decisions
15. Use Tracer Bullets to Find the Target
16. Prototype to Learn
17. Program Close to the Problem Domain
18. Estimate to Avoid Surprises
19. Iterate the Schedule with the Code
20. Keep Knowledge in Plain Text
21. Use the Power of Command Shells
22. Use a Single Editor Well
23. Always Use Source Code Control
24. Fix the Problem, Not the Blame
25. Don't Panic When Debugging
26. "Select" Isn't Broken
27. Don't Assume It – Prove It
28. Learn a Text Manipulation Language
29. Write Code That Writes Code
30. You Can't Write Perfect Software
31. Design with Contracts
32. Crash Early
33. Use Assertions to Prevent the Impossible
34. Use Exceptions for Exceptional Problems
35. Finish What You Start
36. Minimize Coupling Between Modules
37. Configure, Don't Integrate
38. Put Abstractions in Code, Details in Metadata
39. Analyze Workflow to Improve Concurrency
40. Design Using Services
41. Always Design for Concurrency
42. Separate Views from Models
43. Use Blackboards to Coordinate Workflow
44. Don't Program by Coincidence
45. Estimate the Order of Your Algorithms
46. Test Your Estimates
47. Refactor Early, Refactor Often
48. Design to Test
49. Test Your Software, or Your Users Will
50. Don't Use Wizard Code You Don't Understand
51. Don't Gather Requirements – Dig for Them
52. Work with a User to Think Like a User
53. Abstractions Live Longer than Details
54. Use a Project Glossary
55. Don't Think Outside the Box – Find the Box
56. Start When You're Ready
57. Some Things Are Better Done than Described
58. Don't Be a Slave to Formal Methods
59. Costly Tools Don't Produce Better Designs
60. Organize Teams Around Functionality
61. Don't Use Manual Procedures
62. Test Early. Test Often. Test Automatically
63. Coding Ain't Done 'Til All the Tests Run
64. Use Saboteurs to Test Your Testing.
65. Test State Coverage, Not Code Coverage
66. Find Bugs Once
67. English is Just a Programming Language
68. Build Documentation In, Don't Bolt It On
69. Gently Exceed Your Users' Expectations
70. Sign Your Work
1. Care About Your Craft
2. Think! About Your Work
3. Provide Options, Don't Make Lame Excuses
4. Don't Live with Broken Windows
5. Be a Catalyst for Change
6. Remember the Big Picture
7. Make Quality a Requirements Issue
8. Invest Regularly in Your Knowledge
Portfolio
9. Critically Analyze What You Read and Hear
10. It's Both What You Say and the Way You
Say It
11. DRY – Don't Repeat Yourself
12. Make It Easy to Reuse
13. Eliminate Effects Between Unrelated Things
14. There Are No Final Decisions
15. Use Tracer Bullets to Find the Target
16. Prototype to Learn
17. Program Close to the Problem Domain
18. Estimate to Avoid Surprises
19. Iterate the Schedule with the Code
20. Keep Knowledge in Plain Text
21. Use the Power of Command Shells
22. Use a Single Editor Well
23. Always Use Source Code Control
24. Fix the Problem, Not the Blame
25. Don't Panic When Debugging
26. "Select" Isn't Broken
27. Don't Assume It – Prove It
28. Learn a Text Manipulation Language
29. Write Code That Writes Code
30. You Can't Write Perfect Software
31. Design with Contracts
32. Crash Early
33. Use Assertions to Prevent the Impossible
34. Use Exceptions for Exceptional Problems
35. Finish What You Start
36. Minimize Coupling Between Modules
37. Configure, Don't Integrate
38. Put Abstractions in Code, Details in Metadata
39. Analyze Workflow to Improve Concurrency
40. Design Using Services
41. Always Design for Concurrency
42. Separate Views from Models
43. Use Blackboards to Coordinate Workflow
44. Don't Program by Coincidence
45. Estimate the Order of Your Algorithms
46. Test Your Estimates
47. Refactor Early, Refactor Often
48. Design to Test
49. Test Your Software, or Your Users Will
50. Don't Use Wizard Code You Don't Understand
51. Don't Gather Requirements – Dig for Them
52. Work with a User to Think Like a User
53. Abstractions Live Longer than Details
54. Use a Project Glossary
55. Don't Think Outside the Box – Find the Box
56. Start When You're Ready
57. Some Things Are Better Done than Described
58. Don't Be a Slave to Formal Methods
59. Costly Tools Don't Produce Better Designs
60. Organize Teams Around Functionality
61. Don't Use Manual Procedures
62. Test Early. Test Often. Test Automatically
63. Coding Ain't Done 'Til All the Tests Run
64. Use Saboteurs to Test Your Testing.
65. Test State Coverage, Not Code Coverage
66. Find Bugs Once
67. English is Just a Programming Language
68. Build Documentation In, Don't Bolt It On
69. Gently Exceed Your Users' Expectations
70. Sign Your Work
1. Care About Your Craft
2. Think! About Your Work
3. Provide Options, Don't Make Lame Excuses
4. Don't Live with Broken Windows
5. Remember the Big Picture
6. Invest Regularly in Your Knowledge
Portfolio
7. DRY – Don't Repeat Yourself
8. Make It Easy to Reuse
9. Prototype to Learn
10. Estimate to Avoid Surprises
11. Fix the Problem, Not the Blame
12. Don't Panic When Debugging
13. "Select" Isn't Broken
14. You Can't Write Perfect Software
15. Design with Contracts
16. Crash Early
17. Minimize Coupling Between Modules
18. Don't Program by Coincidence
19. Refactor Early, Refactor Often
20. Don't Gather Requirements – Dig for Them
21. Some Things Are Better Done than
Described
22. Don't Be a Slave to Formal Methods
23. Don't Use Manual Procedures
24. Test Early. Test Often. Test Automatically
25. Find Bugs Once
26. English is Just a Programming Language
27. Gently Exceed Your Users' Expectations
28. Sign Your Work
Computing-Tabulating-Recording Company (CTR)
https://www.youtube.com/watch?v=QL1dQuK5Wsg
Thomas John
Watson Sr. -
chairman and CEO
of International
Business Machines
(IBM)
“The trouble with every one of us is that we don't think
enough. We don't get paid for working with our feet —
we get paid for working with our heads” (1911)
Criminal Procedure Law Section 140.50
(code)
BWM ZX-6 Concept
3rd year students of Transportation Design School at Turin Based IED (Istituto Europeo di Design)
* - although prototyping does not result in “real” solution, there is always a temptation to use it as one ;(
Prototypes may ignore:
- Correctness (use dummy data)
- Completeness (limited functionality*)
- Robustness (no error checking)
- Style (no documentation, even UI)
*YAGNI principle – You Ain't Gonna Need It
Надійність
Accuracy: The closeness of a given measurement to its true
value, i.e. whether the measure is correct.
Precision: The stability of that measurement when repeated
many times, i.e. whether the measurement is consistent with
other measurements.
Accuracy – достовірність, Precision - збіжність
* - not really, but we are not talking about really specific complex cases here
* - Keep It Simple Stupid ;)
Keywords:
- Code quality
- Continuous Integration
Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a
reasonable and logical way instead of depending on ideas and theories
Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a
reasonable and logical way instead of depending on ideas and theories
Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a
reasonable and logical way instead of depending on ideas and theories
Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a
reasonable and logical way instead of depending on ideas and theories
Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a
reasonable and logical way instead of depending on ideas and theories
Apollo 13 За все берется, ничего не удается
Tough means we are forever accountable for
what we do or what we fail to do.
Competent means we will never take anything
for granted.
Spaceflight will never tolerate carelessness,
incapacity, and neglect – космічний політ
ніколи не потерпить недбалість,
недієздатність і халатність.
Ears, Open. Eyeballs, Click. (2005 documentary by Canaan Brumley) Generation Kill (2008 HBO Mini-series)
Oleksandr Valetskyy - Pragmatic programmer. Theory and practice
Oleksandr Valetskyy - Pragmatic programmer. Theory and practice
Oleksandr Valetskyy - Pragmatic programmer. Theory and practice

More Related Content

Similar to Oleksandr Valetskyy - Pragmatic programmer. Theory and practice

Basic software engineering principles - Session 1
Basic software engineering principles - Session 1Basic software engineering principles - Session 1
Basic software engineering principles - Session 1LahiruWijewardana1
 
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 🤖
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsSteven Smith
 
GOOD PROGRAMMING
GOOD PROGRAMMINGGOOD PROGRAMMING
GOOD PROGRAMMINGBilal Zaka
 
Clean Code - Part 2
Clean Code - Part 2Clean Code - Part 2
Clean Code - Part 2Knoldus Inc.
 
Building a CAD Proving Ground – Robert Green, Robert Green Consulting Group
Building a CAD Proving Ground – Robert Green, Robert Green Consulting GroupBuilding a CAD Proving Ground – Robert Green, Robert Green Consulting Group
Building a CAD Proving Ground – Robert Green, Robert Green Consulting GroupSynergis Engineering Design Solutions
 
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...DevDay.org
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentSamnang Chhun
 
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
 
How To Think Like A Programmer (1).pptx
How To Think Like A Programmer (1).pptxHow To Think Like A Programmer (1).pptx
How To Think Like A Programmer (1).pptxanesthesia2023
 
Upwork time log and difficulty 20160523
Upwork time log and difficulty 20160523Upwork time log and difficulty 20160523
Upwork time log and difficulty 20160523Sharon Liu
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teamsJyaasa Technologies
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential SkillsJohn Choi
 

Similar to Oleksandr Valetskyy - Pragmatic programmer. Theory and practice (20)

Basic software engineering principles - Session 1
Basic software engineering principles - Session 1Basic software engineering principles - Session 1
Basic software engineering principles - Session 1
 
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
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 
Code Review
Code ReviewCode Review
Code Review
 
Best pratice
Best praticeBest pratice
Best pratice
 
GOOD PROGRAMMING
GOOD PROGRAMMINGGOOD PROGRAMMING
GOOD PROGRAMMING
 
Clean Code - Part 2
Clean Code - Part 2Clean Code - Part 2
Clean Code - Part 2
 
Building a CAD Proving Ground – Robert Green, Robert Green Consulting Group
Building a CAD Proving Ground – Robert Green, Robert Green Consulting GroupBuilding a CAD Proving Ground – Robert Green, Robert Green Consulting Group
Building a CAD Proving Ground – Robert Green, Robert Green Consulting Group
 
UI vs Speed
UI vs SpeedUI vs Speed
UI vs Speed
 
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
 
Pragmatic programmer 2
Pragmatic programmer 2Pragmatic programmer 2
Pragmatic programmer 2
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven 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
 
Put to the Test
Put to the TestPut to the Test
Put to the Test
 
How To Think Like A Programmer (1).pptx
How To Think Like A Programmer (1).pptxHow To Think Like A Programmer (1).pptx
How To Think Like A Programmer (1).pptx
 
Tdd
TddTdd
Tdd
 
Upwork time log and difficulty 20160523
Upwork time log and difficulty 20160523Upwork time log and difficulty 20160523
Upwork time log and difficulty 20160523
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teams
 
Object Calisthenics in Objective-C
Object Calisthenics in Objective-CObject Calisthenics in Objective-C
Object Calisthenics in Objective-C
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential Skills
 

Recently uploaded

Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 

Recently uploaded (20)

Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

Oleksandr Valetskyy - Pragmatic programmer. Theory and practice

  • 1.
  • 2.
  • 3. Reference: The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas Addison-Wesley Professional, October 1999 ISBN-13: 078-5342616224 ISBN-10: 020161622X http://www.amazon.com/The-Pragmatic- Programmer-Journeyman- Master/dp/020161622X Thanks: Jeff Atwood aka The Coding Horror
  • 4. Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a reasonable and logical way instead of depending on ideas and theories
  • 5. 1. Care About Your Craft 2. Think! About Your Work 3. Provide Options, Don't Make Lame Excuses 4. Don't Live with Broken Windows 5. Be a Catalyst for Change 6. Remember the Big Picture 7. Make Quality a Requirements Issue 8. Invest Regularly in Your Knowledge Portfolio 9. Critically Analyze What You Read and Hear 10. It's Both What You Say and the Way You Say It 11. DRY – Don't Repeat Yourself 12. Make It Easy to Reuse 13. Eliminate Effects Between Unrelated Things 14. There Are No Final Decisions 15. Use Tracer Bullets to Find the Target 16. Prototype to Learn 17. Program Close to the Problem Domain 18. Estimate to Avoid Surprises 19. Iterate the Schedule with the Code 20. Keep Knowledge in Plain Text 21. Use the Power of Command Shells 22. Use a Single Editor Well 23. Always Use Source Code Control 24. Fix the Problem, Not the Blame 25. Don't Panic When Debugging 26. "select" Isn't Broken. 27. Don't Assume It – Prove It 28. Learn a Text Manipulation Language 29. Write Code That Writes Code 30. You Can't Write Perfect Software 31. Design with Contracts 32. Crash Early 33. Use Assertions to Prevent the Impossible 34. Use Exceptions for Exceptional Problems 35. Finish What You Start 36. Minimize Coupling Between Modules 37. Configure, Don't Integrate 38. Put Abstractions in Code, Details in Metadata 39. Analyze Workflow to Improve Concurrency 40. Design Using Services 41. Always Design for Concurrency 42. Separate Views from Models 43. Use Blackboards to Coordinate Workflow 44. Don't Program by Coincidence 45. Estimate the Order of Your Algorithms 46. Test Your Estimates 47. Refactor Early, Refactor Often 48. Design to Test 49. Test Your Software, or Your Users Will 50. Don't Use Wizard Code You Don't Understand 51. Don't Gather Requirements – Dig for Them 52. Workwith a User to Think Like a User 53. Abstractions Live Longer than Details 54. Use a Project Glossary 55. Don't Think Outside the Box – Find the Box 56. Start When You're Ready 57. Some Things Are Better Done than Described 58. Don't Be a Slave to Formal Methods 59. Costly Tools Don't Produce Better Designs 60. Organize Teams Around Functionality 61. Don't Use Manual Procedures 62. Test Early. Test Often. Test Automatically 63. Coding Ain't Done 'Til All the Tests Run. 64. Use Saboteurs to Test Your Testing. 65. Test State Coverage, Not Code Coverage 66. Find Bugs Once 67. English is Just a Programming Language 68. Build Documentation In, Don't Bolt It On 69. Gently Exceed Your Users' Expectations 70. Sign Your Work
  • 6.
  • 7.
  • 8.
  • 9. 1. Care About Your Craft 2. Think! About Your Work 3. Provide Options, Don't Make Lame Excuses 4. Don't Live with Broken Windows 5. Be a Catalyst for Change 6. Remember the Big Picture 7. Make Quality a Requirements Issue 8. Invest Regularly in Your Knowledge Portfolio 9. Critically Analyze What You Read and Hear 10. It's Both What You Say and the Way You Say It 11. DRY – Don't Repeat Yourself 12. Make It Easy to Reuse 13. Eliminate Effects Between Unrelated Things 14. There Are No Final Decisions 15. Use Tracer Bullets to Find the Target 16. Prototype to Learn 17. Program Close to the Problem Domain 18. Estimate to Avoid Surprises 19. Iterate the Schedule with the Code 20. Keep Knowledge in Plain Text 21. Use the Power of Command Shells 22. Use a Single Editor Well 23. Always Use Source Code Control 24. Fix the Problem, Not the Blame 25. Don't Panic When Debugging 26. "Select" Isn't Broken 27. Don't Assume It – Prove It 28. Learn a Text Manipulation Language 29. Write Code That Writes Code 30. You Can't Write Perfect Software 31. Design with Contracts 32. Crash Early 33. Use Assertions to Prevent the Impossible 34. Use Exceptions for Exceptional Problems 35. Finish What You Start 36. Minimize Coupling Between Modules 37. Configure, Don't Integrate 38. Put Abstractions in Code, Details in Metadata 39. Analyze Workflow to Improve Concurrency 40. Design Using Services 41. Always Design for Concurrency 42. Separate Views from Models 43. Use Blackboards to Coordinate Workflow 44. Don't Program by Coincidence 45. Estimate the Order of Your Algorithms 46. Test Your Estimates 47. Refactor Early, Refactor Often 48. Design to Test 49. Test Your Software, or Your Users Will 50. Don't Use Wizard Code You Don't Understand 51. Don't Gather Requirements – Dig for Them 52. Work with a User to Think Like a User 53. Abstractions Live Longer than Details 54. Use a Project Glossary 55. Don't Think Outside the Box – Find the Box 56. Start When You're Ready 57. Some Things Are Better Done than Described 58. Don't Be a Slave to Formal Methods 59. Costly Tools Don't Produce Better Designs 60. Organize Teams Around Functionality 61. Don't Use Manual Procedures 62. Test Early. Test Often. Test Automatically 63. Coding Ain't Done 'Til All the Tests Run 64. Use Saboteurs to Test Your Testing. 65. Test State Coverage, Not Code Coverage 66. Find Bugs Once 67. English is Just a Programming Language 68. Build Documentation In, Don't Bolt It On 69. Gently Exceed Your Users' Expectations 70. Sign Your Work
  • 10. 1. Care About Your Craft 2. Think! About Your Work 3. Provide Options, Don't Make Lame Excuses 4. Don't Live with Broken Windows 5. Be a Catalyst for Change 6. Remember the Big Picture 7. Make Quality a Requirements Issue 8. Invest Regularly in Your Knowledge Portfolio 9. Critically Analyze What You Read and Hear 10. It's Both What You Say and the Way You Say It 11. DRY – Don't Repeat Yourself 12. Make It Easy to Reuse 13. Eliminate Effects Between Unrelated Things 14. There Are No Final Decisions 15. Use Tracer Bullets to Find the Target 16. Prototype to Learn 17. Program Close to the Problem Domain 18. Estimate to Avoid Surprises 19. Iterate the Schedule with the Code 20. Keep Knowledge in Plain Text 21. Use the Power of Command Shells 22. Use a Single Editor Well 23. Always Use Source Code Control 24. Fix the Problem, Not the Blame 25. Don't Panic When Debugging 26. "Select" Isn't Broken 27. Don't Assume It – Prove It 28. Learn a Text Manipulation Language 29. Write Code That Writes Code 30. You Can't Write Perfect Software 31. Design with Contracts 32. Crash Early 33. Use Assertions to Prevent the Impossible 34. Use Exceptions for Exceptional Problems 35. Finish What You Start 36. Minimize Coupling Between Modules 37. Configure, Don't Integrate 38. Put Abstractions in Code, Details in Metadata 39. Analyze Workflow to Improve Concurrency 40. Design Using Services 41. Always Design for Concurrency 42. Separate Views from Models 43. Use Blackboards to Coordinate Workflow 44. Don't Program by Coincidence 45. Estimate the Order of Your Algorithms 46. Test Your Estimates 47. Refactor Early, Refactor Often 48. Design to Test 49. Test Your Software, or Your Users Will 50. Don't Use Wizard Code You Don't Understand 51. Don't Gather Requirements – Dig for Them 52. Work with a User to Think Like a User 53. Abstractions Live Longer than Details 54. Use a Project Glossary 55. Don't Think Outside the Box – Find the Box 56. Start When You're Ready 57. Some Things Are Better Done than Described 58. Don't Be a Slave to Formal Methods 59. Costly Tools Don't Produce Better Designs 60. Organize Teams Around Functionality 61. Don't Use Manual Procedures 62. Test Early. Test Often. Test Automatically 63. Coding Ain't Done 'Til All the Tests Run 64. Use Saboteurs to Test Your Testing. 65. Test State Coverage, Not Code Coverage 66. Find Bugs Once 67. English is Just a Programming Language 68. Build Documentation In, Don't Bolt It On 69. Gently Exceed Your Users' Expectations 70. Sign Your Work
  • 11. 1. Care About Your Craft 2. Think! About Your Work 3. Provide Options, Don't Make Lame Excuses 4. Don't Live with Broken Windows 5. Be a Catalyst for Change 6. Remember the Big Picture 7. Make Quality a Requirements Issue 8. Invest Regularly in Your Knowledge Portfolio 9. Critically Analyze What You Read and Hear 10. It's Both What You Say and the Way You Say It 11. DRY – Don't Repeat Yourself 12. Make It Easy to Reuse 13. Eliminate Effects Between Unrelated Things 14. There Are No Final Decisions 15. Use Tracer Bullets to Find the Target 16. Prototype to Learn 17. Program Close to the Problem Domain 18. Estimate to Avoid Surprises 19. Iterate the Schedule with the Code 20. Keep Knowledge in Plain Text 21. Use the Power of Command Shells 22. Use a Single Editor Well 23. Always Use Source Code Control 24. Fix the Problem, Not the Blame 25. Don't Panic When Debugging 26. "Select" Isn't Broken 27. Don't Assume It – Prove It 28. Learn a Text Manipulation Language 29. Write Code That Writes Code 30. You Can't Write Perfect Software 31. Design with Contracts 32. Crash Early 33. Use Assertions to Prevent the Impossible 34. Use Exceptions for Exceptional Problems 35. Finish What You Start 36. Minimize Coupling Between Modules 37. Configure, Don't Integrate 38. Put Abstractions in Code, Details in Metadata 39. Analyze Workflow to Improve Concurrency 40. Design Using Services 41. Always Design for Concurrency 42. Separate Views from Models 43. Use Blackboards to Coordinate Workflow 44. Don't Program by Coincidence 45. Estimate the Order of Your Algorithms 46. Test Your Estimates 47. Refactor Early, Refactor Often 48. Design to Test 49. Test Your Software, or Your Users Will 50. Don't Use Wizard Code You Don't Understand 51. Don't Gather Requirements – Dig for Them 52. Work with a User to Think Like a User 53. Abstractions Live Longer than Details 54. Use a Project Glossary 55. Don't Think Outside the Box – Find the Box 56. Start When You're Ready 57. Some Things Are Better Done than Described 58. Don't Be a Slave to Formal Methods 59. Costly Tools Don't Produce Better Designs 60. Organize Teams Around Functionality 61. Don't Use Manual Procedures 62. Test Early. Test Often. Test Automatically 63. Coding Ain't Done 'Til All the Tests Run 64. Use Saboteurs to Test Your Testing. 65. Test State Coverage, Not Code Coverage 66. Find Bugs Once 67. English is Just a Programming Language 68. Build Documentation In, Don't Bolt It On 69. Gently Exceed Your Users' Expectations 70. Sign Your Work
  • 12. 1. Care About Your Craft 2. Think! About Your Work 3. Provide Options, Don't Make Lame Excuses 4. Don't Live with Broken Windows 5. Remember the Big Picture 6. Invest Regularly in Your Knowledge Portfolio 7. DRY – Don't Repeat Yourself 8. Make It Easy to Reuse 9. Prototype to Learn 10. Estimate to Avoid Surprises 11. Fix the Problem, Not the Blame 12. Don't Panic When Debugging 13. "Select" Isn't Broken 14. You Can't Write Perfect Software 15. Design with Contracts 16. Crash Early 17. Minimize Coupling Between Modules 18. Don't Program by Coincidence 19. Refactor Early, Refactor Often 20. Don't Gather Requirements – Dig for Them 21. Some Things Are Better Done than Described 22. Don't Be a Slave to Formal Methods 23. Don't Use Manual Procedures 24. Test Early. Test Often. Test Automatically 25. Find Bugs Once 26. English is Just a Programming Language 27. Gently Exceed Your Users' Expectations 28. Sign Your Work
  • 13.
  • 14.
  • 15.
  • 17. https://www.youtube.com/watch?v=QL1dQuK5Wsg Thomas John Watson Sr. - chairman and CEO of International Business Machines (IBM) “The trouble with every one of us is that we don't think enough. We don't get paid for working with our feet — we get paid for working with our heads” (1911)
  • 18. Criminal Procedure Law Section 140.50
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. BWM ZX-6 Concept 3rd year students of Transportation Design School at Turin Based IED (Istituto Europeo di Design)
  • 27. * - although prototyping does not result in “real” solution, there is always a temptation to use it as one ;( Prototypes may ignore: - Correctness (use dummy data) - Completeness (limited functionality*) - Robustness (no error checking) - Style (no documentation, even UI) *YAGNI principle – You Ain't Gonna Need It Надійність
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33. Accuracy: The closeness of a given measurement to its true value, i.e. whether the measure is correct. Precision: The stability of that measurement when repeated many times, i.e. whether the measurement is consistent with other measurements. Accuracy – достовірність, Precision - збіжність
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39. * - not really, but we are not talking about really specific complex cases here
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. * - Keep It Simple Stupid ;)
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51. Keywords: - Code quality - Continuous Integration
  • 52.
  • 53.
  • 54. Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a reasonable and logical way instead of depending on ideas and theories
  • 55. Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a reasonable and logical way instead of depending on ideas and theories
  • 56. Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a reasonable and logical way instead of depending on ideas and theories
  • 57. Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a reasonable and logical way instead of depending on ideas and theories
  • 58. Pragmatic adjective prag·mat·ic prag-ˈma-tik - dealing with the problems that exist in a specific situation in a reasonable and logical way instead of depending on ideas and theories Apollo 13 За все берется, ничего не удается
  • 59. Tough means we are forever accountable for what we do or what we fail to do. Competent means we will never take anything for granted. Spaceflight will never tolerate carelessness, incapacity, and neglect – космічний політ ніколи не потерпить недбалість, недієздатність і халатність.
  • 60.
  • 61. Ears, Open. Eyeballs, Click. (2005 documentary by Canaan Brumley) Generation Kill (2008 HBO Mini-series)