Fork me on GitHub

Iterative software development

Software Development
Image via Wikipedia

Most of my professional life, I’ve worked in organizations with formal, long, software development processes, although in some there have been attempts at adopting agile practices, but not necessarily iterative, frequent software releases. It was pretty clear to me back then that the marketing/tech requirements driven development cycle with projects that lasted years at time didn’t cut it. My experiences, mostly indirectly, of the modern web development process has only confirmed that opinion

Greg Linden has an article in Communications of the ACM where he talks about how frequent releases change software engineering. He points out

Frequent releases are desirable because of the changes it forces in software engineering. It discourages risky, expensive, large projects. It encourages experimentation, innovation, and rapid iteration. It reduces the cost of failure while also minimizing the risk of failure. It is a better way to build software.

Why is that? Well, when you are pushing out software frequently, you have to be maniacal about version control, and build rapid deployment and prototyping tools (continuous integration). Your learn to manage bugs and risk differently; you just have to. In the large software development projects I’ve been part of, a good chunk of the release cycle was spent fixing known big, then a whole chunk of time fixing new bugs, and then finally in a QA process where you found new bugs and then had to figure out which bugs were showstoppers. In an iterative development process you’re forced to test as you integrate, and in a release early (even if it is a limited release), you get the software in hands on users (internal or external) who can provide you the feedback required to fix features and unexpected bug.

Which is why I like some of the more nimble software teams out there in the life science world. It keeps your costs down and just makes you more efficient. It’s not the only way to develop software, but it sure as heck is a good one.

Reblog this post [with Zemanta]

This entry was posted in Programming, Software & Internet. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

2 Comments

  1. Posted September 15, 2009 at 13:54 | Permalink

    Well said. As I mention in my current blog post, my team is currently involved in assessing iterative and agile methods as part of the way we engineer software for the life sciences industry. Personally, I'd like to see more focus on this at the industry level to help drive best practices with regulated systems.

    Best,
    Jason
    http://blogs.sas.com/hls

  2. Posted September 15, 2009 at 20:54 | Permalink

    Well said. As I mention in my current blog post, my team is currently involved in assessing iterative and agile methods as part of the way we engineer software for the life sciences industry. Personally, I'd like to see more focus on this at the industry level to help drive best practices with regulated systems.

    Best,
    Jason
    http://blogs.sas.com/hls

2 Trackbacks

  1. By Great Software Engineers Fail | iThoughts.de on February 4, 2010 at 13:33

    [...] Iterative software development (mndoci.com) [...]

  2. [...] Iterative software development (mndoci.com) [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

blog comments powered by Disqus
  • Archives

  • Disclaimer

    All opinions on this blog are my own and do not reflect those of my employers, past or present