Home > Articles > Programming > .NET and Windows Programming

Methodology Design: The Way We Do Things Around Here

Matthew Heusser
  • PrintPrint
  • Share ThisShare This
  • DiscussDiscuss
When people talk about "improving" software methodology, they rarely talk about tradeoffs. Requirements freeze, for example, runs the risk of delivering exactly what the customer asked for - and not what he needs. Concrete, detailed estimates take a considerable amount of time to create, and that's time that could be spent writing code or executing tests. Matthew Heusser discusses the tradeoffs and choices you'll have to make when the goal is improving (or even initially developing) your methodology.

You might be coming back from the big meeting where the boss announced the methodology improvement program. Perhaps the subject showed up at your annual review as a "goal" for next year. Or maybe you’re the boss, and the subject keeps coming up in leadership meetings. It doesn’t really matter. The point is, you’ve got to improve your software development methodology.

Whatever that means.

Let’s face it—a software development methodology is just a fancy term for "the way we do things around here." Saying that you want to improve the methodology doesn’t really mean anything. There are piles and piles of factors in software development; simplicity, reliability, performance, fitness for use, response to change, accountability, speed, defect ratio, customer satisfaction, "making sure you pick the right projects," or "making sure you run the projects right"...the list seems endless. To reduce the "goodness" of your process to a simple one-dimensional statement is somewhere between immature and unethical.

At the same time, it is possible to improve a specific attribute of the way we develop software—for example, to make delivery dates more predictable, to make the state of the project more visible, to improve overall development speed, or to more easily respond to changing demands. Specific attributes of the methodology can be improved.

What the Textbooks Don’t Say

Tradeoffs are not just something you have to deal with now and then; methodology in design is all about tradeoffs. For example, if the organization wants accountability and predictability, it may require documented requirements with various levels of review and signoff, and create a change-control board with the power to line-item veto changes in requirements that may affect schedule.

Everything sounds good so far...until about six months later, when the VP of New Product Development can’t get the feature set changed in order to respond to a market demand. Some ninny down in software engineering is holding up the company’s ability to deliver products to customers, all in the name of "process improvement"!

Then again, perhaps you work in a stable field where the requirements don’t change much—such as defense contracting. In that case, locking down changes might be exactly what the organization needs.

My point is that improvement in software development must be subordinate to the needs of the business; the key is to trade away problems that bother the organization for problems that don’t. As SourceGear CEO Eric Sink puts it, "You can’t eliminate problems, but you can make trades to get problems that you prefer over the ones you have now."

Consciously or not, the trade is going to happen. If done unconsciously, the team could very well end up in worse shape than when it started. Then again, sometimes the organization wants everything: Predictability, accountability, visibility, and the ability to respond to change. In that case, either some genius is going to innovate something (more about that later) or else the system will find some tradeoff you haven’t thought of yet—probably something that’s hard to measure. In the case above, a constant pressure to meet mutually exclusive goals could lead the team to work on only those specific measures, ignoring the support they historically gave to the sales department. When the sales department has to cancel a series of web-based-meetings because they can’t figure out the system, costing the organization six months worth of sales leads, your raise, your bonus...it’s really hard to call that process improvement.

Since it’s better to make tradeoffs consciously, let’s talk about a few of the most common ones.

  • Share ThisShare This
  • Your Account

Discussions

Make a New Comment

You must log in in order to post a comment.

Related Resources

Jennifer  BortelWin FREE iPhone Developer Books and Videos- Introducing @InformIT Giveaways
By Jennifer Bortel on February 5, 2010 No Comments

Apples’s recent iPad announcement made our hearts flutter so we couldn’t resist making an announcement of our own!

Today marks the first ever @InformIT Giveaway!

We’ll regularly post a video like this one profiling spectacular prizes we’re giving away—from books and videos to T-shirts and other exciting stuff. Check out the video below to see the giveaways for today, and then scroll down for more prize details and instructions on how to win them!

Dustin Sullivan"Every OSX developer should have this book on their desk."
By Dustin Sullivan on February 1, 2010 No Comments

That was the sentence Mike Riley ended his recent Dr Dobb's CodeTalk review of Cocoa Programming Developer's Handbook with.

David ChisnallCocoa Tip of the Day, 1/29/10
By David Chisnall on January 29, 2010 No Comments

Don't ignore old versions of OS X.

See All Related Blogs

Informit Network