SlideShare a Scribd company logo
1 of 12
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

What's hot

Start coding with no experience!
Start coding with no experience!Start coding with no experience!
Start coding with no experience!sprabul
 
Outlining and brainstorming
Outlining and brainstormingOutlining and brainstorming
Outlining and brainstormingErin Hovey
 
1. unit 5, proofreading
1. unit 5, proofreading1. unit 5, proofreading
1. unit 5, proofreadingEn Chomrong
 
Week 5 part 2 ug academic problem solving 2015 bus
Week 5 part 2 ug academic problem solving 2015 busWeek 5 part 2 ug academic problem solving 2015 bus
Week 5 part 2 ug academic problem solving 2015 busvmm106
 
Transitions
TransitionsTransitions
Transitionsmssample
 
One more thing every Japanese developer should try
One more thing every Japanese developer should tryOne more thing every Japanese developer should try
One more thing every Japanese developer should tryShinya Mochida
 
Good programming practices updated
Good programming practices updatedGood programming practices updated
Good programming practices updatedAgha Dostain
 
Webinar slides when is it good enough (1)
Webinar slides   when is it good enough (1)Webinar slides   when is it good enough (1)
Webinar slides when is it good enough (1)Cyndy McDonald
 
E3 M1.3 Brainstorming Techniques
E3 M1.3 Brainstorming TechniquesE3 M1.3 Brainstorming Techniques
E3 M1.3 Brainstorming TechniquesMondstrahl
 
Open house geo
Open house geoOpen house geo
Open house geocanalculus
 
Good Qualities of a developer
Good Qualities of a developerGood Qualities of a developer
Good Qualities of a developerSophia Dagli
 
The Software Developer
The Software DeveloperThe Software Developer
The Software DeveloperOlaogunJames
 
156 week 3
156 week 3156 week 3
156 week 3tconwell
 

What's hot (20)

Start coding with no experience!
Start coding with no experience!Start coding with no experience!
Start coding with no experience!
 
project
projectproject
project
 
5. pre production(3)
5. pre production(3)5. pre production(3)
5. pre production(3)
 
Outlining and brainstorming
Outlining and brainstormingOutlining and brainstorming
Outlining and brainstorming
 
Guidance for Subject Matter Experts
Guidance for Subject Matter ExpertsGuidance for Subject Matter Experts
Guidance for Subject Matter Experts
 
Pair programming
Pair programmingPair programming
Pair programming
 
1. unit 5, proofreading
1. unit 5, proofreading1. unit 5, proofreading
1. unit 5, proofreading
 
Week 5 Part 2: Academic Problem Solving 2015 (Bus)
Week 5 Part 2: Academic Problem Solving 2015 (Bus)Week 5 Part 2: Academic Problem Solving 2015 (Bus)
Week 5 Part 2: Academic Problem Solving 2015 (Bus)
 
Week 5 part 2 ug academic problem solving 2015 bus
Week 5 part 2 ug academic problem solving 2015 busWeek 5 part 2 ug academic problem solving 2015 bus
Week 5 part 2 ug academic problem solving 2015 bus
 
Transitions
TransitionsTransitions
Transitions
 
One more thing every Japanese developer should try
One more thing every Japanese developer should tryOne more thing every Japanese developer should try
One more thing every Japanese developer should try
 
Good programming practices updated
Good programming practices updatedGood programming practices updated
Good programming practices updated
 
Webinar slides when is it good enough (1)
Webinar slides   when is it good enough (1)Webinar slides   when is it good enough (1)
Webinar slides when is it good enough (1)
 
E3 M1.3 Brainstorming Techniques
E3 M1.3 Brainstorming TechniquesE3 M1.3 Brainstorming Techniques
E3 M1.3 Brainstorming Techniques
 
Open house geo
Open house geoOpen house geo
Open house geo
 
Good Qualities of a developer
Good Qualities of a developerGood Qualities of a developer
Good Qualities of a developer
 
Design_Team meeting
Design_Team meetingDesign_Team meeting
Design_Team meeting
 
The Software Developer
The Software DeveloperThe Software Developer
The Software Developer
 
156 week 3
156 week 3156 week 3
156 week 3
 
Writing Process
Writing ProcessWriting Process
Writing Process
 

Similar to The Pragmatic Programmer I

Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practicesaqib javaid
 
Android Developer Training
Android Developer TrainingAndroid Developer Training
Android Developer Trainingfaizrashid1995
 
Technical Writing Overview: WTD Nigeria
Technical Writing Overview: WTD NigeriaTechnical Writing Overview: WTD Nigeria
Technical Writing Overview: WTD NigeriaMargaret Fero
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++Michael Heron
 
Top 10 Tips for Online Learning
Top 10 Tips for Online LearningTop 10 Tips for Online Learning
Top 10 Tips for Online LearningLynn Wietecha
 
the_pragmatic_programmer_ch.1.pptx
the_pragmatic_programmer_ch.1.pptxthe_pragmatic_programmer_ch.1.pptx
the_pragmatic_programmer_ch.1.pptxOguzDuman
 
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paperI-Chao Shen
 
2CPP01 - Intro to Module
2CPP01 - Intro to Module2CPP01 - Intro to Module
2CPP01 - Intro to ModuleMichael Heron
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developerenteritos
 
Ch. 10 powerpoint improving college writing and speaking
Ch. 10 powerpoint improving college writing and speakingCh. 10 powerpoint improving college writing and speaking
Ch. 10 powerpoint improving college writing and speakingM Mudasir Usman
 
20180324 zen and the art of programming
20180324 zen and the art of programming20180324 zen and the art of programming
20180324 zen and the art of programmingDavid Horvath
 
2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdf2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdfTony Khánh
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesMike Clement
 
Turning Passion Into Words
Turning Passion Into WordsTurning Passion Into Words
Turning Passion Into WordsBrian Hogan
 
How to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical InterviewHow to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical InterviewPerl Careers
 
Better Software Through User Research
Better Software Through User ResearchBetter Software Through User Research
Better Software Through User ResearchAlexandra Leisse
 
12 Things Every Programmer Should Know
12 Things Every Programmer Should Know12 Things Every Programmer Should Know
12 Things Every Programmer Should KnowSamnang Chhun
 
MagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerMagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerEdwin Cruz
 
Being a designer
Being a designerBeing a designer
Being a designerAhmad Firoz
 
Passionate Programmer
Passionate ProgrammerPassionate Programmer
Passionate ProgrammerMagmaConf
 

Similar to The Pragmatic Programmer I (20)

Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practices
 
Android Developer Training
Android Developer TrainingAndroid Developer Training
Android Developer Training
 
Technical Writing Overview: WTD Nigeria
Technical Writing Overview: WTD NigeriaTechnical Writing Overview: WTD Nigeria
Technical Writing Overview: WTD Nigeria
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++
 
Top 10 Tips for Online Learning
Top 10 Tips for Online LearningTop 10 Tips for Online Learning
Top 10 Tips for Online Learning
 
the_pragmatic_programmer_ch.1.pptx
the_pragmatic_programmer_ch.1.pptxthe_pragmatic_programmer_ch.1.pptx
the_pragmatic_programmer_ch.1.pptx
 
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper
[SIGGRAPH ASIA 2011 Course]How to write a siggraph paper
 
2CPP01 - Intro to Module
2CPP01 - Intro to Module2CPP01 - Intro to Module
2CPP01 - Intro to Module
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developer
 
Ch. 10 powerpoint improving college writing and speaking
Ch. 10 powerpoint improving college writing and speakingCh. 10 powerpoint improving college writing and speaking
Ch. 10 powerpoint improving college writing and speaking
 
20180324 zen and the art of programming
20180324 zen and the art of programming20180324 zen and the art of programming
20180324 zen and the art of programming
 
2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdf2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdf
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 
Turning Passion Into Words
Turning Passion Into WordsTurning Passion Into Words
Turning Passion Into Words
 
How to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical InterviewHow to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical Interview
 
Better Software Through User Research
Better Software Through User ResearchBetter Software Through User Research
Better Software Through User Research
 
12 Things Every Programmer Should Know
12 Things Every Programmer Should Know12 Things Every Programmer Should Know
12 Things Every Programmer Should Know
 
MagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerMagmaRails - Passionate Programmer
MagmaRails - Passionate Programmer
 
Being a designer
Being a designerBeing a designer
Being a designer
 
Passionate Programmer
Passionate ProgrammerPassionate Programmer
Passionate Programmer
 

Recently uploaded

Cheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 nightCheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 nightDelhi Call girls
 
Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...
Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...
Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...Yantram Animation Studio Corporation
 
shot list for my tv series two steps back
shot list for my tv series two steps backshot list for my tv series two steps back
shot list for my tv series two steps back17lcow074
 
VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...
VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...
VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...Suhani Kapoor
 
NATA 2024 SYLLABUS, full syllabus explained in detail
NATA 2024 SYLLABUS, full syllabus explained in detailNATA 2024 SYLLABUS, full syllabus explained in detail
NATA 2024 SYLLABUS, full syllabus explained in detailDesigntroIntroducing
 
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...Call Girls in Nagpur High Profile
 
Cheap Rate Call girls Malviya Nagar 9205541914 shot 1500 night
Cheap Rate Call girls Malviya Nagar 9205541914 shot 1500 nightCheap Rate Call girls Malviya Nagar 9205541914 shot 1500 night
Cheap Rate Call girls Malviya Nagar 9205541914 shot 1500 nightDelhi Call girls
 
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts ServiceCall Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Servicejennyeacort
 
Kieran Salaria Graphic Design PDF Portfolio
Kieran Salaria Graphic Design PDF PortfolioKieran Salaria Graphic Design PDF Portfolio
Kieran Salaria Graphic Design PDF Portfolioktksalaria
 
Kindergarten Assessment Questions Via LessonUp
Kindergarten Assessment Questions Via LessonUpKindergarten Assessment Questions Via LessonUp
Kindergarten Assessment Questions Via LessonUpmainac1
 
WAEC Carpentry and Joinery Past Questions
WAEC Carpentry and Joinery Past QuestionsWAEC Carpentry and Joinery Past Questions
WAEC Carpentry and Joinery Past QuestionsCharles Obaleagbon
 
Revit Understanding Reference Planes and Reference lines in Revit for Family ...
Revit Understanding Reference Planes and Reference lines in Revit for Family ...Revit Understanding Reference Planes and Reference lines in Revit for Family ...
Revit Understanding Reference Planes and Reference lines in Revit for Family ...Narsimha murthy
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)jennyeacort
 
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdfChapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdfParomita Roy
 
The history of music videos a level presentation
The history of music videos a level presentationThe history of music videos a level presentation
The history of music videos a level presentationamedia6
 
A level Digipak development Presentation
A level Digipak development PresentationA level Digipak development Presentation
A level Digipak development Presentationamedia6
 
Kurla Call Girls Pooja Nehwal📞 9892124323 ✅ Vashi Call Service Available Nea...
Kurla Call Girls Pooja Nehwal📞 9892124323 ✅  Vashi Call Service Available Nea...Kurla Call Girls Pooja Nehwal📞 9892124323 ✅  Vashi Call Service Available Nea...
Kurla Call Girls Pooja Nehwal📞 9892124323 ✅ Vashi Call Service Available Nea...Pooja Nehwal
 
How to Be Famous in your Field just visit our Site
How to Be Famous in your Field just visit our SiteHow to Be Famous in your Field just visit our Site
How to Be Famous in your Field just visit our Sitegalleryaagency
 

Recently uploaded (20)

Cheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 nightCheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 night
 
Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...
Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...
Captivating Charm: Exploring Marseille's Hillside Villas with Our 3D Architec...
 
shot list for my tv series two steps back
shot list for my tv series two steps backshot list for my tv series two steps back
shot list for my tv series two steps back
 
VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...
VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...
VIP College Call Girls Gorakhpur Bhavna 8250192130 Independent Escort Service...
 
NATA 2024 SYLLABUS, full syllabus explained in detail
NATA 2024 SYLLABUS, full syllabus explained in detailNATA 2024 SYLLABUS, full syllabus explained in detail
NATA 2024 SYLLABUS, full syllabus explained in detail
 
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
 
Cheap Rate Call girls Malviya Nagar 9205541914 shot 1500 night
Cheap Rate Call girls Malviya Nagar 9205541914 shot 1500 nightCheap Rate Call girls Malviya Nagar 9205541914 shot 1500 night
Cheap Rate Call girls Malviya Nagar 9205541914 shot 1500 night
 
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts ServiceCall Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
 
Kieran Salaria Graphic Design PDF Portfolio
Kieran Salaria Graphic Design PDF PortfolioKieran Salaria Graphic Design PDF Portfolio
Kieran Salaria Graphic Design PDF Portfolio
 
Call Girls Service Mukherjee Nagar @9999965857 Delhi 🫦 No Advance VVIP 🍎 SER...
Call Girls Service Mukherjee Nagar @9999965857 Delhi 🫦 No Advance  VVIP 🍎 SER...Call Girls Service Mukherjee Nagar @9999965857 Delhi 🫦 No Advance  VVIP 🍎 SER...
Call Girls Service Mukherjee Nagar @9999965857 Delhi 🫦 No Advance VVIP 🍎 SER...
 
young call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Service
young call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Service
young call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Service
 
Kindergarten Assessment Questions Via LessonUp
Kindergarten Assessment Questions Via LessonUpKindergarten Assessment Questions Via LessonUp
Kindergarten Assessment Questions Via LessonUp
 
WAEC Carpentry and Joinery Past Questions
WAEC Carpentry and Joinery Past QuestionsWAEC Carpentry and Joinery Past Questions
WAEC Carpentry and Joinery Past Questions
 
Revit Understanding Reference Planes and Reference lines in Revit for Family ...
Revit Understanding Reference Planes and Reference lines in Revit for Family ...Revit Understanding Reference Planes and Reference lines in Revit for Family ...
Revit Understanding Reference Planes and Reference lines in Revit for Family ...
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
 
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdfChapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
 
The history of music videos a level presentation
The history of music videos a level presentationThe history of music videos a level presentation
The history of music videos a level presentation
 
A level Digipak development Presentation
A level Digipak development PresentationA level Digipak development Presentation
A level Digipak development Presentation
 
Kurla Call Girls Pooja Nehwal📞 9892124323 ✅ Vashi Call Service Available Nea...
Kurla Call Girls Pooja Nehwal📞 9892124323 ✅  Vashi Call Service Available Nea...Kurla Call Girls Pooja Nehwal📞 9892124323 ✅  Vashi Call Service Available Nea...
Kurla Call Girls Pooja Nehwal📞 9892124323 ✅ Vashi Call Service Available Nea...
 
How to Be Famous in your Field just visit our Site
How to Be Famous in your Field just visit our SiteHow to Be Famous in your Field just visit our Site
How to Be Famous in your Field just visit our Site
 

The Pragmatic Programmer I

  • 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