Chad LaVigne is a solutions architect and technical hired gun for Baltimore-based TEKSystems, Inc. He works primarily in the Minneapolis area designing and implementing solutions utilizing Enterprise Java technologies.
SOFTWARE ARCHITECTS SOLVE a lot of very difficult problems but we also solve some relatively easy ones. What we don't want to do is apply a complicated solution to an easy problem. As obvious as that advice sounds, it can be hard follow. People who design software are smart—really smart. The simple problem-complex solution trap can be an easy one to fall into because we like to demonstrate our knowledge. If you find yourself designing a solution so clever that it may become self-aware, stop and think. Does the solution fit the problem? If the answer is no, reconsider your design options. Keep the simple stuff simple. You'll get plenty of chances to showcase your talent when the difficult problems arise, and they will.
This doesn't mean that we shouldn't implement elegant solutions. It means that if we're tasked with designing a system that only needs to support selling one type of SKU-based widget, it's probably a bad idea to design for hierarchies of dynamically configurable products.
The cost incurred by a complicated solution may seem small, but chances are that it's larger than you're giving it credit for. ...