Joel Spolsky began his legendary web log,
http://www.joelonsoftware.com, in March 2000, in order to offer insights for improving the world of programming. Spolsky based these observations on years of personal experience.
The result just a handful of years later? Spolsky's technical knowledge, caustic wit, and extraordinary writing skills have earned him status as a programming guru! His blog has become renowned throughout the programming worldnow linked to more than 600 websites and translated into over 30 languages.
Joel on Software covers every conceivable aspect of software programming—from the best way to write code, to the best way to design an office in which to write code! All programmers, all people who want to enhance their knowledge of programmers, and all who are trying to manage programmers will surely relate to Joel's musings.
Table of Contents
- Title Page
- ABOUT THE AUTHOR
part one: Bits and Bytes: The Practice of Programming
- one: CHOOSING A LANGUAGE
- two: BACK TO BASICS
three: THE JOEL TEST: 12 STEPS TO BETTER CODE
- 1. Do you use source control?
- 2. Can you make a build in one step?
- 3. Do you make daily builds?
- 4. Do you have a bug database?
- 5. Do you fix bugs before writing new code?
- 6. Do you have an up-to-date schedule?
- 7. Do you have a spec?
- 8. Do programmers have quiet working conditions?
- 9. Do you use the best tools money can buy?
- 10. Do you have testers?
- 11. Do new candidates write code during their interview?
- 12. Do you do hallway usability testing?
- Four Ways to Use The Joel Test
- Postscript: June 14, 2004
- four: THE ABSOLUTE MINIMUM EVERY SOFTWARE DEVELOPER ABSOLUTELY, POSITIVELY MUST KNOW ABOUT UNICODE AND CHARACTER SETS (NO EXCUSES!)
- five: PAINLESS FUNCTIONAL SPECIFICATIONS PART 1: WHY BOTHER?
- six: PAINLESS FUNCTIONAL SPECIFICATIONS PART 2: WHAT'S A SPEC?
- seven: PAINLESS FUNCTIONAL SPECIFICATIONS PART 3: BUT...HOW?
- eight: PAINLESS FUNCTIONAL SPECIFICATIONS PART 4: TIPS
nine: PAINLESS SOFTWARE SCHEDULES
- 1. Use Microsoft Excel.
- 2. Keep it simple.
- 3. Each feature should consist of several tasks.
- 4. Only the programmer who is going to write the code can schedule it.
- 5. Pick very fine-grained tasks.
- 6. Keep track of the original and current estimate.
- 7. Update the elapsed column every day.
- 8. Put in line items for vacations, holidays, etc.
- 9. Put debugging time into the schedule!
- 10. Put integration time into the schedule.
- 11. Put buffer into the schedule.
- 12. Never, ever let managers tell programmers to reduce an estimate.
- 13. A schedule is like wood blocks.
- ten: DAILY BUILDS ARE YOUR FRIEND
- eleven: HARD-ASSED BUG FIXIN'
- twelve: FIVE WORLDS
- thirteen: PAPER PROTOTYPING
- fourteen: DON'T LET ARCHITECTURE ASTRONAUTS SCARE YOU
- fifteen: FIRE AND MOTION
- sixteen: CRAFTSMANSHIP
- seventeen: THREE WRONG IDEAS FROM COMPUTER SCIENCE
- eighteen: BICULTURALISM
- nineteen: GET CRASH REPORTS FROM USERS—AUTOMATICALLY!
part two: Managing Developers
- twenty: THE GUERILLA GUIDE TO INTERVIEWING
- twenty-one: INCENTIVE PAY CONSIDERED HARMFUL
- twenty-two: TOP FIVE (WRONG) REASONS YOU DON'T HAVE TESTERS
- twenty-three: HUMAN TASK SWITCHES CONSIDERED HARMFUL
- twenty-four: THINGS YOU SHOULD NEVER DO, PART ONE
- twenty-five: THE ICEBERG SECRET, REVEALED
- twenty-six: THE LAW OF LEAKY ABSTRACTIONS
- twenty-seven: LORD PALMERSTON ON PROGRAMMING
- twenty-eight: MEASUREMENT
part three: Being Joel: Random Thoughts on Not-So-Random Topics
- twenty-nine: RICK CHAPMAN IS IN SEARCH OF STUPIDITY
- thirty: WHAT IS THE WORK OF DOGS IN THIS COUNTRY?
- thirty-one: GETTING THINGS DONE WHEN YOU'RE ONLY A GRUNT
- thirty-two: TWO STORIES
- thirty-three: BIG MACS VS. THE NAKED CHEF
- thirty-four: NOTHING IS AS SIMPLE AS IT SEEMS
- thirty-five: IN DEFENSE OF NOT-INVENTED-HERE SYNDROME
- thirty-six: STRATEGY LETTER I: BEN & JERRY'S VS. AMAZON
- thirty-seven: STRATEGY LETTER II: CHICKEN-AND-EGG PROBLEMS
- thirty-eight: STRATEGY LETTER III: LET ME GO BACK!
- thirty-nine: STRATEGY LETTER IV: BLOATWARE AND THE 80/20 MYTH
forty: STRATEGY LETTER V: THE ECONOMICS OF OPEN SOURCE
- Headline: IBM Spends Millions to Develop Open Source Software
- Headline: Netscape Open Sources Their Web Browser
- Headline: Transmeta Hires Linus, Pays Him to Hack on Linux
- Headline: Sun and HP Pay Ximian to Hack on Gnome
- Headline: Sun Develops Java; New "Bytecode" System Means Write Once, Run Anywhere
- forty-one: A WEEK OF MURPHY'S LAW GONE WILD
forty-two: HOW MICROSOFT LOST THE API WAR
- Developers, Developers, Developers, Developers
- Why Apple and Sun Can't Sell Computers
- The Two Forces at Microsoft
- Microsoft Lost the Backward Compatibility Religion
- Automatic Transmissions Win the Day
- One Runtime to Rule Them All
- Oh, Wait, There's More Coming!
- It's Not 1990
- Enter the Web
- I'm a Little Bit Sad About This, Myself
- part four: A Little Bit Too Much Commentary on .NET
- part five: Appendix
- Title: JOEL ON SOFTWARE: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity
- Release date: August 2004
- Publisher(s): Apress
- ISBN: 9781590593899