Different types of organizations have different goals and priorities when developing software. That’s one of the major reasons why software developers disagree on development approaches and techniques. In this post, I’ll examine a few types of companies and how agile development techniques might apply to them.
There’s no one-size-fits-all approach to software development. The approach that works best in any given context depends on the goals, needs and culture of the organization. You can go completely agile with Scrum, completely prescriptive with waterfall, or define a hybrid approach. Here are a few broad examples to get you thinking.
Consumer Products Companies
The key to success for these firms is the delivery of great products — often. It’s important for these companies to grab media and customer attention then hold on to it by delivering new products and product upgrades regularly. Some software quirks are okay as long as the customer believes that fixes will arrive soon. It’s all about market share and revenue.
Agile development techniques work well for these companies. Agilists love frequent deliveries of working software. Power users will jump at the chance to try something new. It’s a win-win.
Space Exploration (NASA)
This is the opposite extreme. Reliability and longevity are the watchwords for NASA. Fancy features and lots of options don’t matter. Think “minimalism that works”. Building reliable spacecraft is NASA’s life blood. Its very existence depends on getting them right.
Elements of agile development can help such as daily standups and test-driven techniques like ATDD. Of course, NASA only gets one shot at delivery so they need planning iterations at the outset of the development and “hardening” iterations prior to final delivery.
Industrial Products Companies
These firms are in between those above. They need to deliver some fancy features — after all, corporate buyers are consumers too. More importantly, their products need to be robust. Reputation matters a lot in the business-to-business space so there is little room for experimenting.
Again, some agile techniques apply as long as reliability isn’t compromised. Strong customer focus and rapid responsiveness to customer issues are key factors in making agile development work.
Internal Software Applications
Many companies develop custom software for internal use. These apps can be almost anything from financial controls to people management to inventory tracking and point-of-sale. The apps often suffer from lack of focus. Feature lists are usually too long. Even worse, lack of an executive sponsor or product owner makes it almost impossible to prioritize requests. What matters to these firms? Your guess is as good as mine — and that’s the problem.
Agile techniques definitely apply though the business community must be willing to accept and test frequent deliveries. This requirement is often a major barrier. It’s sometimes easier to get end-user cooperation when the number of end users is in the hundreds or thousands — divide and conquer to minimize the impact on any one individual or group. When the user community is only ten’s of people, frequent releases is likely to cause problems because they distract a high percentage of people from performing their daily routines.