Head First Software Development

Head First Software Development

Available now!

A lot of good people have screwed up a lot of well intentioned software — you already know you don't want to be one of them. Head First Software Development pulls together years of software development experience to give you the hard lessons learned by people who have written software before you (or have tried really, really hard to).

Are you:

— Tired of your clients hoping you're psychic? Read about finding and capturing requirements so you build the right software the first time.

— Finding code in your system that makes you wonder if the developer actually did have a million monkeys? Read about coding standards, code reviews, and how to protect yourself from your zoo-keeping coworker with test-driven development techniques.

— Wondering when your boss is going to hire the other 30 people she'll need to actually complete all of the work? Read about how to improve your estimating and scheduling skills and make yourself feared because of your command of metrics.

— Tired of reading hype about how "Uber Programming" saved a team of two people on a 3-month project? Read about how to tailor a process that solves your problems, on big projects or small ones.

— Ready to build the right software the first time, be confident that it works, lead a team of talented people to success, and still have time for a hot mocha on your way home?

Read Head First Software Development.

We believe there isn't one process to fit every organization. Instead, we take the ideas that work from different processes like iterative development, design patterns, and risk driven scheduling, and help you understand why they work and what they could do for you. Best of all, Head First Software Development puts this information into your brain in a way that sticks. If you've never read a Head First book before, there's nothing like it — great visuals, good stories, and hands-on exercises to let you get comfortable with the techniques. There are a lot of boring books on the philosophy of software; this isn't one of them. Expect to get dirty. Expect to be shocked. Expect to learn.

A collection of images from inside the book.

Read Me: What you should know before reading this book

We assume you are familiar with object-oriented programming.

It would take an entire book to teach you object-oriented programming (like, say, Head First OOA&D). We chose to focus this book on software development principles rather than design or language basics. We picked Java for our examples because it's fairly common, and pretty self-documenting; but everything we talk about should apply whether you're using Java, C#, C++, or Visual Basic (or Ruby, or...) However, if you've never programmed using an object-oriented language, you may have some trouble following some of the code. In that case we'd strongly recommend you get familiar with one of those languages before attacking some of the later chapters in the book.

We don't cover every software development process out there.

There are tomes of information about different ways to write software. We don't try to cover every possible approach to developing code. Instead, we focus on techniques that we know work and fit well together to produce great software. Chapter 12 specifically talks about ways to tweak your process to account for unique things on your project.

Code Downloads

All of the links below are .zip files.


(opens a new window)

Read it on Safari

(opens a new window)

Buy 2 books, get 1 free!

Buy 2 books and get the third free! Use the coupon code OPC10 when you check out.

Who is this book for?

If you can answer "yes" to all of these:

  • Do you have access to a computer and some background in programming? (We use Java in the book, but you can squint and pretend it's C#. No amount of squinting will make you think it's Perl, though.)
  • Do you want to learn techniques for building and delivering great software? Do you want to understand the principles behind iterations and test-driven development?
  • Do you prefer stimulating dinner party conversation to dry, dull, academic lectures?

You should probably back away from this book if you can answer "yes" to any of these:

  • Are you completely new to Java? (You don't need to be advanced, and if you know C++ or C# you'll understand the code examples just fine.)
  • Are you a kick-butt development manager looking for a reference book?
  • Are you afraid to try something different? Would you rather have a root canal than mix stripes with plaid? Do you believe that a technical book can't be serious if iterations are anthropomorphized?


Ask the authors questions and chat with fellow readers in the Head First Software Development Forum.