I’ve seen this countless times. You’ve seen it too. Software architecture from hell. The architecture which only purpose is to satisfy itself. Architecture that tries to solve imaginary problem and address imaginary constraints. Too complex and completely unnecessary.
When programmer does not care or do not understand the problem that software is trying to solve, often he goes off and satisfies his need to do something with outrageous architecture. Laziness to investigate actual problem is cause of this. Imaginary software problems get invented so that they can be solved only by an amazingly complex architecture. Look at me, this is some crazy complex code I written!
Please don’t be that programmer. Software is made to make life easier. It is developed to add value. Yes, sometimes complex architecture is required, but more often than not, complex architecture is written because that is path of least resistance… It appears like glamorous work that shows off your amazing skills when in fact, it is complete waste of time. Yeah, I speak from past experience. Guilty on that count. I guess every single developer is too… It is part of growing up.
So how do you recognize this tendency? As soon as you start talking about need to create “framework” watch out! You need framework as much as dog needs fleas. Framework is code word for “I need something to keep me interested in this project”. Framework is code word for “I have no clue or care about problem this software is trying to solve”. It is path of least resistance since it keeps you in familiar territory: code.
Solutions are often far simpler that we are willing to admit, but they require in-depth understanding of the problem which does not start with code…
This post in relation to your newest release of your “Knob” thingy made me laugh a bit because that control seems way more complex than need be.
But that aside…
Sadly I can’t find that blog post, but way back when I read a post where a programmer claimed something similar to what you do here.
His argument was the same when it came to why we make things complex, as engineers ect. we have some strange desire to challenge our self in all aspects of what we do, that means that we try to take a programming assignment and we begin to think “Generic”, “Patterns” and so on… Or we try to solve all our customers problems in one single product, to exaggerate a bit.
But this happens weather you talk about frameworks or not… And putting bounds on your self not to do so is hard, because regular programming is boring, and we don’t like to be bored… No one does really…
Frameworks by them self can hardly be a bad thing when you look at how many widely used there is out there… sure things like Log4net, Castle, Spring and so on might seem overly complex but it is hard to argue against there success…
Jens, it depends what is your business. Our business is to solve complex things so you do not have to. We save you time and money. I bet you $100 that you’d end up with similar complexity if you were trying to develop knob control for wide developer audience 🙂 Some complexities cannot be avoided.
My thought for this post is simple, if you are thinking about creating Framework and frameworks are not your business, you are on wrong track. Simple like that.
We are developing “Platforms” for others to build on top of or integrate with, so it’s not really that far off, we don’t have such a broad market though since we are under the Military/Defense segment…
I Just mentioned your Knob because it was a fun thing in the context, while Controls can certainly be overly complex, i have never thought that as much about yours…
I Mostly agree, especially after the pinpoint in that “Frameworks” is not a bad thing to develop if your are in fact selling them… The last thing i just don’t agree with is that it is Just/Only when we are talking about needing a “Framework”, the need for challenge arises all the time and can present it self in so many ways.
“Controls can certainly be overly complex, i have never thought that as much about yours”
Should be interpreted as that I don’t think your controls have ever been overly complex, they are what i would perceive as about right, just complex enough to make them fit in, but simple enough so that your not constantly fighting with them.
So that was a Compliment.
No problem at all. I love these discussions since there is always something new to learn or consider. Your point of view is appreciated. 🙂