Wednesday, May 16, 2012

Why things are so damn complicated these days?

I've been going over some older projects these last few months. Partially because this is part of my job as an architect (to know what's in the box and to propose better solutions if the existing ones are reaching to the limit of their usefulness) but partially because I've gotten really passionate about The Legacy. And I don't mean it like "oh, this is the legacy code we hate" and all that but rather to see and understand what causes today's problems and how we can make the world a better place. Well.. at least for us, programmers...

The endless possibilities

If I gave 10 people a general purpose task, let's say describing a simple domain I fear that I'd get back 20 different designs. I get that kind of impression a lot recently when faced with the same problems solved in many different ways by the same person. It is just a matter of time before that happens. Quite frankly that is a good thing: it means that person is trying something new and most probably learning from mistakes they previously made. But what about the code we have already committed? Is it really there to pollute the air for ever and ever? Is this what we call "Legacy Code" today?

We're screwed! What should we do?

Tuck the tail and run like hell! That always solves the problem, doesn't it? You made a mess first trying to do the right thing, then because you were under constant time pressure and later on because things were already so damn bad you didn't really care about this piece of crap. The easiest way out is through the front door. Usually the justification is "because I can't really develop myself any further" or "I'd like to learn more about this and that but the current place I'm in sucks so bad my boss will not allow me to". All those crappy statements are in fact about one and the same: "I've made a mess and as sure as hell I ain't gonna clean this stuff up!". If you think about it, it kind of makes sense, doesn't it? Why should you even remotely care what will the new guy think about your capabilities? You ain't gonna be there to witness it anyway, right?

Are we there yet?

I predict that some time very soon a lot of big systems is going to undergo a series of major setbacks. Anybody wanna take that bet? Would you rather sink with the ship or go down swinging?

I know it is not going to be very popular what I'll say right now but I'll say it anyway: For God's sake! Write clean code! It's not so damn hard, really! If you ain't got the skills then stop complaining about your boss that he/her is not giving you the development opportunities you'd like. It's your job to do it right and it is your job to develop yourself. Nobody is going to do that for you, not in a million years! And if you'll ever find yourself sitting in an open space bitching about the quality of code then don't forget that you have hands, eyes and a biological CPU to clean that up if you think it is a mess. Don't run from it - fix it! If you don't know if it will work after you do fix it - then fix it anyways! Clean code lives shorter, is easier to replace than that old, shitty stuff that stinks like hell every time you touch it!

So why are those things complicated again?

It's easy: we made them that way. We make them that way every single day (despite the heroic efforts of Uncle Bob and others). Period. They didn't create themselves - we're not quite there yet with the AI to procreate on its own. At least it is not a common scenario in the web database front-ends :)

May the force be with you!

No comments: