small medium large xlarge

Now in print: The Nature of Software Development

February 25, 2015

Now in print and shipping: Ron Jeffries' The Nature of Software Development.

Using simple sketches and a few words, the author invites you to follow his path of learning and understanding from a half century of software development and from his engagement with Agile methods from their very beginning. Come and get copies for your whole team now from pragprog.com/book/rjnsd.

And as an extra bonus, read below for the seven core ideas for effective software development.

The Nature of Software Development: Keep It Simple, Make It Valuable, Build It Piece by Piece

The book describes software development, starting from our natural desire to get something of value. Each topic is described with a picture and a few paragraphs. You're invited to think about each topic; to take it in. You'll think about how each step into the process leads to the next. You'll begin to see why Agile methods ask for what they do, and you'll learn why a shallow implementation of Agile can lead to only limited improvement.

This is not a detailed map, nor a step-by-step set of instructions for building the perfect project. There is no map or instructions that will do that for you.

You need to build your own project, making it a bit more perfect every day. To do that effectively, you need to build up an understanding of the whole process.

This book points out the milestones on your journey of understanding the nature of software development done well. It takes you to a location, describes it briefly, and leaves you to explore and fill in your own understanding.

Seven Core Ideas for Effective Software Development by Ron Jeffries

From deciding what we want, down to programming it and getting it right, software development is very complex. And yet we do best when we can find simplicity in how we work.

In The Nature of Software Development, I have tried to focus relentlessly on the simple core of ideas that make up effective software development. You and I both know that it's not that simple, and that things will get complicated. But if we can keep these ideas in mind, they'll keep us grounded and help us build something of value.

Here are seven core ideas for effective software development:

Begin and end with a focus on value. When we build a software product, we have some value in mind. Not just the money we'll make, but what we really want from the product, whether that's measured in laughs or lives. We'll think about what we value, and how to get a sense of what's more important and what's not so important at all.

Guide the product in terms of small slices of working software. We create teams who are responsible for creating value. We make sure they understand what's needed and how much time is available. We guide them by observing what they actually build, not by examining schedules and promises. We build small slices of value, which we call "features."

Organize around the work to be done, with people who can do it. We organize our teams around the features we need, with teams who can build everything needed. The focus on features lets us plan and build value rapidly. Organizing with good people and helping them build their skills gets the work done efficiently and well.

Plan in terms of features. With teams in place and features in mind, we steer our projects by selecting which features to do next and which ones to defer. We produce highest value first, throughout the effort.

Build in terms of features. Naturally, any product requires architecture and infrastructure. We build based on features, including the architecture and infrastructure we need as we go.

Slice features thinly. We slice each desired capability down to the smallest possible value-bearing size. We build a capable product as early as possible, and then grow it and enhance it as the deadline approaches. Building highest value first, we are always ready to ship the best possible product.

Build quality in every day. Throughout the effort, we apply all the necessary practices to ensure that we always have a good design, and that we are always as close to defect-free as possible. We build value continuously, sustainably, indefinitely.

Is that all there is to it? Certainly not! Software efforts are always complicated, always complex. By keeping our mind on the simple overall arc, with a focus on value expressed in small increments of value—features—we have the best chance of delivering a successful product.

The Nature of Software Development explains and explores this "circle of value," but I've also included a dozen essays, expanding a bit more on topics of interest, and underlining the points of the first part of the book.

The Nature of Software Development is a small, simple book that offers a framework for thinking about your software project. In it, I've tried to tell you what I think about as I guide a project. The ideas have served me well, and I hope they'll do the same for you!

Now available from pragprog.com/book/rjnsd.

Upcoming Author Appearances

  • 2015-02-27 Rachel Davies, NorDevCon, Norwich, UK
  • 2015-02-27 Seb Rose, NorDevCon, Norwich, UK
  • 2015-02-28 Adam Tornhill, Beauty in Code, Malmö, Sweden
  • 2015-03-04 Adam Tornhill, QCon London 2015, UK
  • 2015-03-05 Rachel Davies, QCon London
  • 2015-03-09 Johanna Rothman, Booster Conference, Bergen, NO
  • 2015-03-09 Jamis Buck, Mountain West Ruby Conference, Salt Lake City, Utah
  • 2015-03-10 Johanna Rothman, Booster Conference, Bergen, NO
  • 2015-03-11 Johanna Rothman, Booster Conference, Bergen, NO
  • 2015-03-12 Johanna Rothman, Booster Conference, Bergen, NO
  • 2015-03-23 Seb Rose, DevWeek, London
  • 2015-03-24 Adam Tornhill, DevWeek, London, UK
  • 2015-03-25 Adam Tornhill, DevWeek, London, UK
  • 2015-03-26 Rachel Davies, CukeUp, London
  • 2015-03-26 Chris Adamson, CocoaConf Chicago
  • 2015-03-26 Seb Rose, CukeUp, London
  • 2015-03-27 Chris Adamson, CocoaConf Chicago
  • Google Drive Support

    Good news! In addition to electronic delivery to Dropbox and Kindle, we've added support for Google Drive.

    It works the same as Dropbox: you enable it at https://pragprog.com/my_profile, and our gerbils will drop newly generated books into your Google Drive in the Pragmatic Bookshelf folder.

    The big benefit of this is reading books on Android devices. Install the Google Drive client and the Google Play Reader app, and your bookshelf books are just a click away.

    Enjoy!

    Don't Get Left Out

    Are your friends jealous that you get these spiffy email newsletters and they don't? Clue them in that all they need to do is create an account on pragprog.com (email address and password is all it takes) and select the checkbox to receive newsletters.

    Are you following us on Twitter and/or Facebook? Here's where you can find us and keep up with the latest news and commentary, and occasional discounts:

    Tell your friends! Tweet this

    Follow us on Twitter: @pragprog, @pragpub, Andy @PragmaticAndy and Dave @pragdave.

    Coming Soon:

    • Your Code As a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs, in print
    • Pragmatic Unit Testing in Java 8 with JUnit, in print
    • iOS 8 SDK Development: Creating iPhone and iPad Apps with Swift, in print
    • Clojure Applied: From Practice to Practitioner, in beta

    Recently Released:

    Thanks for your continued support,

    Dave & Andy The Pragmatic Programmers

    Books • eBooks • PragPub Magazine • Audiobooks and Screencasts
    PragProg.com