The software development process… it’s not something the average person spends a lot of time thinking about. And, frankly, if you don’t work in the software business, it’s kind of hard to get very excited about it.

But if your organization happens to be in need of a new web or mobile application, and you’re considering outsourcing the project to a firm specializing in custom software development, process is a very important consideration. At minimum, you’ll want a basic understanding of the different approaches that can be used and the relative strengths and weaknesses of each.

Why is this important? Because in the long run, the more you understand what goes into the planning, execution and delivery of a successful software project, the more likely it is that you will be able to contribute and influence important aspects of it as it unfolds.

And if you’re able to do that, the chances are much greater that you’ll end up with a high-quality application that provides the best possible experience for your users and serves the specific business needs of your organization.

In this case, as in so many others, knowledge is power!

Software Development Process Primer

If you find yourself in the position of being in charge of managing an outsourced software project – maybe it’s even your first – there’s no better time  to start learning the basics of process than right now.

To help you, here’s a quick primer on the key differences between the two most common approaches that software teams use today to develop new applications: Waterfall and Agile.

The Waterfall method

Let’s start with the “Waterfall” software development process, since it’s the more traditional of the two for taking a software project from conception through to completion.

When you think of a waterfall, it flows continually downwards from a high point, thanks to the magic of gravity. With the Waterfall method of software development, progress follows the same trajectory. Activities flow steadily downward towards delivery. They do so sequentially through the various phases of conception, analysis, design, testing, and delivery.

When one phase is completed, more or less, the next phase begins. When the requirements have been defined, design can begin, and when design is complete, implementation can begin, etc.

The Waterfall software development process is very much based on a manufacturing production model, which relies on extensive up-front planning and then careful execution of each phase, one after the other. Many software development organizations use this method and it definitely has its advantages, depending on the nature of the software that’s being developed. One such advantage is that it gives the stakeholders a carefully defined set of requirements and a clear, detailed plan to implement them.

The disadvantages of this approach are mostly related to its lack of flexibility. Once the plan is set in motion, it becomes very difficult to go back to any previous stage and make changes. And if the initial requirements are based on faulty assumptions (usually as a result of not having enough relevant information at the beginning of the project), things can go south in a hurry. Deadlines slip, the project goes quickly over budget and the final result doesn’t end up meeting customer expectations.

The Agile Method

There was a time when pretty much all software projects used the Waterfall method. Then, back in 2001, a group of software developers published something called the Agile Manifesto. This document contained some bold statements about how its authors believed software development could be done more predictably and successfully. It ushered in a new era in process that focused on (as outlined in the manifesto) individuals and interactions; working software; customer collaboration; and responding to change.

When I mentioned jargon, I was thinking in particular of the “Agile” software development process. As you begin speaking to more people in the software business, it’s likely you’ll hear some bewildering terminology related to this process. It’s not hard to figure out what agile itself means in this context (the ability to adapt and change quickly), but then you hear someone talking about scrums, scrum masters and sprints. You might even hear someone talking about code smell!

So what’s this all about? With the Agile software development process, monolithic plans are eschewed in favor of building successful prototypes of smaller chunks of functionality and then repeating this process to gradually arrive at the finished application.

There can be many of these iterations or “sprints” during a particular project, which last a relatively short period of time, from “a couple of weeks to a couple of months” (according to the Manifesto). The overall framework for doing these iterative development projects is called “Scrum” and the person responsible for leading these projects is the “ScrumMaster”.

When you’re talking Agile, keep in mind that there are many variants and practical implementations of the Agile process. So it’s likely the developers you’re working with do not conform to every aspect of a strictly-defined Agile process.

At a high level, the advantage of the Agile approach (as compared to Waterfall) is its flexibility. When you focus on building small pieces of functionality, it’s much easier to get customer input often during the project, and it’s much less likely that you’ll stray too far from what your customer wants.

What really matters – results!

And while this is just a brief summary of software development process issues, it should give you the ability to discuss software process intelligently with any development firms you’re working with, which is going to help you decide which one is the best fit for your organization, your culture, and your project. And that will bring you one step closer to your goal.

JamieBlog
Jamie Boyes

Jamie is NetFore’s Vice President of Business Development