SlideShare a Scribd company logo
The Pragmatic Programmer I
About the textbook
• The Pragmatic Programmer is full of helpful
suggestions for surviving programming
• It’s also enjoyably written
• I’ll cover in class some of the material in this book
– Mostly those things that I want to emphasize, or where
I think I have something to say

• I’ll feel free to test on all of the material
• Current assignment:
Read the Preface and Chapter 1
1: Care about your craft
• Take pride in your work
• If you don’t enjoy your profession, you’ll
never be great in it
• If you do enjoy your work, you’ll also
enjoy the process of getting better at it
(mostly!)
– In computer science, learning never ends!
Egoless programming
• Some years ago, Gerald Weinberg coined the term
egoless programming:
– Software belongs to the organization, not the individual
– You don’t “own” your code

• The idea is that if you have an emotional interest in
your code, you will resist criticism
– I strongly disagree—it’s important to take pride in your
work
– But also realize that every program can be improved
– Don’t take criticism of your program as personal
criticism
2: Think! About your work
• Always be asking yourself: is there a better
way to do this?
– A better design, a better language, a better layout
– A better job?

• Always be critical of your own work
• Always be ready to accept criticism—no
program is ever perfect
• If you ever think you “know enough,” you’re
stagnant—and it’s time to do something else
Any program can be improved
• There are few, if any, perfect programs
• Always be ready to rewrite your program to
make it better
– But know when to stop!

• Rewriting and re-designing your program is
sometimes called refactoring
3: Provide options, don’t make
lame excuses
• Some things can’t be done on time, others can’t be
done at all
– Don’t focus on what cannot be done
– Concentrate on what can be done instead
– Find solutions to problems

• In “The War Against the Chtorr,” David Gerrold
distinguishes between “guests” and “hosts”
– A “host” does whatever needs to be done
– A “guest” figures that it’s someone else’s job
4: Don’t live with broken
windows
• If something is wrong, fix it
– If you can’t get to it immediately, at least mark it for
future work
– Take some action to prevent further damage
– Small problems accumulate and turn your code into crap

• The law of entropy:
– A spoonful of wine in a barrel of sewage gives you a
barrel of sewage
– A spoonful of sewage in a barrel of wine gives you a
barrel of sewage
8: Invest regularly in your
knowledge portfolio
•
•
•
•
•
•
•
•

Learn at least one new language every year
Read a technical book each quarter
Read nontechnical books, too
Take classes
Participate in local user groups
Experiment with different environments
Stay current
Get wired
10: It’s both what you say and
the way you say it
• Communication is important—more important
than programming itself
– How you present your program usually matters more
than how good your program is
• Make it look good
• Use spell checkers
• Learn something about good design

– Good communication (and documentation) is essential
for working in a team
– Every piece of e-mail is a permanent record
More about the book
• Chapter I deals mainly with philosophy—
how you should approach the task of
programming
• Later chapters get into more technical detail
• However, if you don’t strive to be the best
you can possibly be, those chapters won’t
help you any
The End

More Related Content

PPTX
10 Tips to Improve Your Proofreading
PPTX
Proofreading Strategies
PDF
Pair programming
PPTX
Revision Strategies
PPT
Open house calc
PPTX
Proofreading
PPTX
Good developers vs bad developers
PPTX
Agile Practices
10 Tips to Improve Your Proofreading
Proofreading Strategies
Pair programming
Revision Strategies
Open house calc
Proofreading
Good developers vs bad developers
Agile Practices

What's hot (20)

PPTX
Start coding with no experience!
PPT
project
PPTX
5. pre production(3)
PPTX
Outlining and brainstorming
PPTX
Guidance for Subject Matter Experts
PDF
Pair programming
PPTX
1. unit 5, proofreading
PDF
Week 5 Part 2: Academic Problem Solving 2015 (Bus)
PDF
Week 5 part 2 ug academic problem solving 2015 bus
PPT
Transitions
PPT
One more thing every Japanese developer should try
PPTX
Good programming practices updated
PPTX
Webinar slides when is it good enough (1)
PPTX
E3 M1.3 Brainstorming Techniques
PPT
Open house geo
PPTX
Good Qualities of a developer
PPSX
Design_Team meeting
PPTX
The Software Developer
PPTX
156 week 3
PPT
Writing Process
Start coding with no experience!
project
5. pre production(3)
Outlining and brainstorming
Guidance for Subject Matter Experts
Pair programming
1. unit 5, proofreading
Week 5 Part 2: Academic Problem Solving 2015 (Bus)
Week 5 part 2 ug academic problem solving 2015 bus
Transitions
One more thing every Japanese developer should try
Good programming practices updated
Webinar slides when is it good enough (1)
E3 M1.3 Brainstorming Techniques
Open house geo
Good Qualities of a developer
Design_Team meeting
The Software Developer
156 week 3
Writing Process
Ad

Similar to Pragmatic 1 (20)

PPTX
Developers Best Practices
PPTX
Android Developer Training
PDF
Technical Writing Overview: WTD Nigeria
PPTX
CPP01 - Introduction to C++
PPTX
Top 10 Tips for Online Learning
PPTX
the_pragmatic_programmer_ch.1.pptx
PDF
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper
PPTX
2CPP01 - Intro to Module
PDF
The 360 Developer
PPT
Ch. 10 powerpoint improving college writing and speaking
PDF
20180324 zen and the art of programming
PDF
2016-How-to-give-a-great-research-talk.pdf
PPTX
Software Craftsmanship and Agile Code Games
KEY
Turning Passion Into Words
PPTX
How to Prepare for and Survive a Technical Interview
PDF
Better Software Through User Research
PDF
12 Things Every Programmer Should Know
PPTX
MagmaRails - Passionate Programmer
PPTX
Being a designer
PPTX
Passionate Programmer
Developers Best Practices
Android Developer Training
Technical Writing Overview: WTD Nigeria
CPP01 - Introduction to C++
Top 10 Tips for Online Learning
the_pragmatic_programmer_ch.1.pptx
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper
2CPP01 - Intro to Module
The 360 Developer
Ch. 10 powerpoint improving college writing and speaking
20180324 zen and the art of programming
2016-How-to-give-a-great-research-talk.pdf
Software Craftsmanship and Agile Code Games
Turning Passion Into Words
How to Prepare for and Survive a Technical Interview
Better Software Through User Research
12 Things Every Programmer Should Know
MagmaRails - Passionate Programmer
Being a designer
Passionate Programmer
Ad

Recently uploaded (20)

PPTX
building Planning Overview for step wise design.pptx
PDF
Urban Design Final Project-Context
PPTX
Fundamental Principles of Visual Graphic Design.pptx
PPTX
mahatma gandhi bus terminal in india Case Study.pptx
PPT
Package Design Design Kit 20100009 PWM IC by Bee Technologies
PDF
YOW2022-BNE-MinimalViableArchitecture.pdf
PPTX
Causes of Flooding by Slidesgo sdnl;asnjdl;asj.pptx
PDF
Design Thinking - Module 1 - Introduction To Design Thinking - Dr. Rohan Dasg...
DOCX
actividad 20% informatica microsoft project
PDF
Quality Control Management for RMG, Level- 4, Certificate
PPTX
ANATOMY OF ANTERIOR CHAMBER ANGLE AND GONIOSCOPY.pptx
PPTX
AD Bungalow Case studies Sem 2.pptxvwewev
PPTX
Complete Guide to Microsoft PowerPoint 2019 – Features, Tools, and Tips"
PPT
Machine printing techniques and plangi dyeing
PDF
Africa 2025 - Prospects and Challenges first edition.pdf
PDF
SEVA- Fashion designing-Presentation.pdf
PPTX
12. Community Pharmacy and How to organize it
PPT
EGWHermeneuticsffgggggggggggggggggggggggggggggggg.ppt
PDF
Facade & Landscape Lighting Techniques and Trends.pptx.pdf
PDF
The Advantages of Working With a Design-Build Studio
building Planning Overview for step wise design.pptx
Urban Design Final Project-Context
Fundamental Principles of Visual Graphic Design.pptx
mahatma gandhi bus terminal in india Case Study.pptx
Package Design Design Kit 20100009 PWM IC by Bee Technologies
YOW2022-BNE-MinimalViableArchitecture.pdf
Causes of Flooding by Slidesgo sdnl;asnjdl;asj.pptx
Design Thinking - Module 1 - Introduction To Design Thinking - Dr. Rohan Dasg...
actividad 20% informatica microsoft project
Quality Control Management for RMG, Level- 4, Certificate
ANATOMY OF ANTERIOR CHAMBER ANGLE AND GONIOSCOPY.pptx
AD Bungalow Case studies Sem 2.pptxvwewev
Complete Guide to Microsoft PowerPoint 2019 – Features, Tools, and Tips"
Machine printing techniques and plangi dyeing
Africa 2025 - Prospects and Challenges first edition.pdf
SEVA- Fashion designing-Presentation.pdf
12. Community Pharmacy and How to organize it
EGWHermeneuticsffgggggggggggggggggggggggggggggggg.ppt
Facade & Landscape Lighting Techniques and Trends.pptx.pdf
The Advantages of Working With a Design-Build Studio

Pragmatic 1

  • 2. About the textbook • The Pragmatic Programmer is full of helpful suggestions for surviving programming • It’s also enjoyably written • I’ll cover in class some of the material in this book – Mostly those things that I want to emphasize, or where I think I have something to say • I’ll feel free to test on all of the material • Current assignment: Read the Preface and Chapter 1
  • 3. 1: Care about your craft • Take pride in your work • If you don’t enjoy your profession, you’ll never be great in it • If you do enjoy your work, you’ll also enjoy the process of getting better at it (mostly!) – In computer science, learning never ends!
  • 4. Egoless programming • Some years ago, Gerald Weinberg coined the term egoless programming: – Software belongs to the organization, not the individual – You don’t “own” your code • The idea is that if you have an emotional interest in your code, you will resist criticism – I strongly disagree—it’s important to take pride in your work – But also realize that every program can be improved – Don’t take criticism of your program as personal criticism
  • 5. 2: Think! About your work • Always be asking yourself: is there a better way to do this? – A better design, a better language, a better layout – A better job? • Always be critical of your own work • Always be ready to accept criticism—no program is ever perfect • If you ever think you “know enough,” you’re stagnant—and it’s time to do something else
  • 6. Any program can be improved • There are few, if any, perfect programs • Always be ready to rewrite your program to make it better – But know when to stop! • Rewriting and re-designing your program is sometimes called refactoring
  • 7. 3: Provide options, don’t make lame excuses • Some things can’t be done on time, others can’t be done at all – Don’t focus on what cannot be done – Concentrate on what can be done instead – Find solutions to problems • In “The War Against the Chtorr,” David Gerrold distinguishes between “guests” and “hosts” – A “host” does whatever needs to be done – A “guest” figures that it’s someone else’s job
  • 8. 4: Don’t live with broken windows • If something is wrong, fix it – If you can’t get to it immediately, at least mark it for future work – Take some action to prevent further damage – Small problems accumulate and turn your code into crap • The law of entropy: – A spoonful of wine in a barrel of sewage gives you a barrel of sewage – A spoonful of sewage in a barrel of wine gives you a barrel of sewage
  • 9. 8: Invest regularly in your knowledge portfolio • • • • • • • • Learn at least one new language every year Read a technical book each quarter Read nontechnical books, too Take classes Participate in local user groups Experiment with different environments Stay current Get wired
  • 10. 10: It’s both what you say and the way you say it • Communication is important—more important than programming itself – How you present your program usually matters more than how good your program is • Make it look good • Use spell checkers • Learn something about good design – Good communication (and documentation) is essential for working in a team – Every piece of e-mail is a permanent record
  • 11. More about the book • Chapter I deals mainly with philosophy— how you should approach the task of programming • Later chapters get into more technical detail • However, if you don’t strive to be the best you can possibly be, those chapters won’t help you any