Editorials

Conflicting Goals When Writing Software

New Show!
SelecTViews: New SQL Server Injection Attack, Cloud Failures and Best Practices to Address Them. Also, hear from LogLogic, hear about security considerations and much more.
[Watch the Show]

Conflicting Goals When Writing Software – Resources, Time, Scope, Money, Quality
Project Management 101 defines a project as three dimensions, Resource, Time, and Scope. You can increase or decrease any of the three and it results in a different deliverable date. Add a resource, and theoretically you reduce time. Add scope and you theoretically increase time.

From the developer perspective Quality is consumed in the Project Managers variable of scope. Quality has its own set of dimensions, many ending in the word ability…

  • Maintainability
  • Testability
  • Extensibility
  • Durability
  • Scalability
  • …ability

Code can be done in many different ways. Code written in three or more tiers generally has higher …ability. Code written in 2 tiers (such as data bound web forms connecting directly to a database) has less …ability.

Code written using good design patterns will have higher …ability than code written differently. For example, lose coupling of objects through interfaces or delegates allows code to be modified or extended rapidly. Code using hard coding objects is much harder to modify due to the close association of the consuming code to the underlying classes; but, it can often be written much more quickly.

From a business perspective there is another dimension, a kind of umbrella over the three project management dimensions and the highly sought after …ability of the developers; Money. You never have enough money, and therefore never enough resources of people, hardware, or software. Time is always in short supply.

These are very real and important conflicts occurring in every day businesses. The smaller the business is, it seems these conflicts grow. Markets demand fast response; but, a smaller company rarely has enough resources to react quickly with quality.

It is fair for a manager to say, I need this done quickly.

It is fair for a developer to determine what is quality.

What seems to be missing is the acknowledgement and agreement on the part of both parties to the level of quality that is acceptable to the business when the software is being written. Poor quality results in technical debt that will have to be paid in the future. High quality may result in lost market opportunities such that the effort ends up being a loss instead of a profit.

I’d really like to hear from our members and readers. I know you struggle with these questions on a daily basis…the tension between getting something done and getting it done right. My theory is that the definition of “Right” may be different based on the situation. So, what do you think? What has your experience been? How do you keep the needs of the business balanced?

Share you opinion and experience. Drop me a quick note on facebook, twitter or Email me at btaylor@sswug.org.

Cheers,
Ben

Featured Article(s)
Database Archiving and Auditing Can Minimize the Potential of a Data Breach (Part 3)
By deploying database auditing software to track who is doing what to which data when, you can uncover threats before they turn into full blown data breaches, as well as take actions to shut them down.

Featured White Paper(s)
Upgrading to Microsoft SQL Server 2008 R2 from Microsoft SQL Server 2008, SQL Server 2005, and SQL Server 2000
More than ever, organizations rely on data storage and analysis for business operations. Companies need the ability to deploy… (read more)