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.
Your URL (optional):
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
As someone with over 20 years of software development experience
and currently a small business owner, it has been a pleasure working
with Avonelle. In addition to being a talented developer, Avonelle also
has database expertise and system design skills. Avonelle is open
minded and willing to discuss various methodologies for achieving a
project goal. She is also not afraid to ask questions which is vital in
a software development project. Her up-front project cost (not
estimate) is very helpful in budgeting for a project.
--Dwayne Wolterstorff, Owner @ Fair
Copyright © 2013 Avonelle Lovhaug. All Rights Reserved.
Sitefinity ASP.NET CMS