tirade - [tahy-reyd] "a prolonged outburst of bitter, outspoken denunciation"

Posts Tagged ‘Design’

Design

May 21, 2009

If a little is good, a lot isn’t better

Tags: , , ,

Lets talk about garlic for a little bit. I love garlic, I know that not all people love it, I do. I think a little garlic is very good and brings out the flavour of a lot of other food. Love it or not, I think we can all agree that some dishes are better with garlic, but not all dishes. I’ve never really liked garlic in my ice cream and that does not make ice cream or garlic evil, they just don’t go together. And sadly, yes you can use to much garlic, even on a pizza. So… while a little garlic is great it does not mean we should put a lot of it on all of our food, right?

So why do so many people make this mistake in software development? In my career I have rescued lots of projects and most of them where because of over engineered crap! People being really clever! Only two projects suffered from lack of process and no design and these are easy to fix so that the project is on the right path in no time. The rest have all been this giant balls of patterns, layers, abstractions, and all round cleverness and these are always very hard to fix. Now before you hit the comment button; I know these are all good, pure, holy and necessary things, but for fuck’s sake all things in moderation.

Factories rock, but not every instance of every object needs two be created by some factory managed by some manger via a facade onto a proxy delegator command adapter decorator visitor thingy. How many of your factory interfaces have only one concrete implementation that creates the same instance every time? How many of your application layers are just simple pass-thru calls in reality? Does every single object in your application truly need to be Spring managed?

So next time you add an abstraction, a layer or any clever trick in your design, please stop and think. Don’t ask yourself if what you are doing is right, ask yourself if what you are doing is right for this situation, is it the right tool for this job, does the system really need this extra complexity, is this as simple as possible, are you future-proofing, are you doing too much of a good thing?

I think that some people are just serial over-designers that will never be convinced that a system can be over-engineered, but not everyone. So please don’t be one of these people! Please stop and think. Remember, there’s a reason why the old principles have stood the test of time! KISS, YAGNI, MoSCoW. Don’t be a Rube Goldberg systems designer.

Licensed and Generic products for canadian family pharmacy !&;[ buy maxalt online used to treat erectile dysfunction. Trusted source for Canada pharmacy @*(* medicines online with the best prices. Learn about an online pharmacy works with a drugstore. Every day we collect the prices of medicines in canadian pharmacies )|# buy viagra soft All goods when entering the pharmacy passes the test of "drug quality".