Go Back
Posted by: Avonelle Lovhaug
Publication Date: 4/22/2009 6:38:16 AM
Good projects (and by “good” I mean “successful” of course) always have a defined objective. Everyone knows the goal, and everyone stays focused on that goal throughout the project.
Also important in a good/successful project is understanding the project sponsor’s values. For example, some customers place a high value on source code portability – the ability to easily take the code to any vendor. Others may prioritize completing the project as quickly as possible. In the case of the former, using a third party component might not be appropriate, but for the second customer this might make a lot of sense.
I mention project objectives and customer values because these can have a big impact on architecture and design decisions. Dare Obasanjo makes this point in his post There are no bad design decisions… While I don’t agree 100% with his title, I think Dare has a point. A design decision that makes no sense in one situation may be perfectly acceptable in another with a different objective and a different set of values. The key is understanding that these decisions involve tradeoffs.
No one really likes tradeoffs. In a perfect world, we wouldn’t have to compromise. And custom software (which by definition is “have it your way” software), may provide the illusion to some that the laws of physics - or in this case the realities of software development - can be broken.
Unfortunately some values will always be at odds. “Completing as quickly as possible” will never be completely compatible with “make the application really easy to change without additional programming”. You can have multiple values, but they need to be prioritized.
While this can be frustrating, it can also be liberating. Trying to be everything for all situations is bound to fail, and take forever in the process. So define a goal, come up with a few key, prioritized values, and stop trying to achieve design or architectural perfection.
Bottom line: You can’t really have it all. That’s life.
Category:
Tags: Consulting
Name:
Email (optional):
Your URL (optional):
Comment:
Type the code shown
Top 5 Programmers to Avoid
What everyone should know about bugs
How to tell if an estimate sucks
The Secret to Building a Crappy User Interface
The Problem with Selecting the Lowest Bidder
5 Ways to Control Software Development Costs
Avonelle has been a pleasure to work with. Working with someone that you know will always deliver is tremendous.
Mark McNamee @ Renewal by Andersen
Sitefinity ASP.NET CMS