Doing things the right way == impossible?


Everyone has good and bad days. Today I've had one that started quite well but got worse and worse as the afternoon came. So, in order to reminder myself that I'm doing the right thing, I'm writing this post.

One of my defects is that I always tray to do things the best way I can. I'm never fully satisfied with the results of a project, there is always room for improving, optimizing or making the same in a better way.

At work this means that as soon as I finish a project I start thinking about how it could be better, faster or less resource-consuming. Sadly, sometimes I start thinking the same before ending the project (which usually means something is going the wrong way), but more on this later.

Since I started my website, initially just my spanish development portal and manual "library" www.lawebdeprogramacion.com, I've always tried to improve. From the initial, JS & HTML only website, to the ASP 3.0 + SQL Server 2k "2.0 version", and now a part of a blog community and resource portal, I've fight and spent countless hours not only learning programming languages, but redesigning, creating javascripts, fighting for better free hostings (which finally ended ;), promoting the website everywhere I could, gathering new materials...

I don't believe in perfection, but ironicaly I'm always trying to achieve it (I've still got a loooong way to go ;)

Now in Kartones.Net slowly it is being noticeable, because as I learn how Community Server works, I can make my own modules, customize blogs, disable or create new sections, create mashups (like the home twitter news)... and some surprises that I hope to show soon.

But going back to the "sadly" part, at work I've only once been able to see a project evolve, grow, get mature, improve... Almost all times is the same: I develop something and then I take another project and the last one "dissapears" from sight, many times forever.
And when it doesn't, usually is to come back as a nuisance, just knocking your door to say "hi, remember my small problem with this or that? I'm here for it". But you can't open the door and invite it inside, serve a tea and talk about the problem. You have to take your first-aid kit, cut here, patch there and kick it off your house.

The problem usually is "delivery times". Rush time comes, and we start to ponderate between "do it right and not be able to finish in time" or "do it as well as you can in the provided time frame, hoping to improve it in the future". And usually, resulting software gets degraded quality. Notice I'm not saying "bad software", just degraded, not as good as I would like to.

Sometimes it's the customer, sometimes the bosses, the tight schedule, the technology restrictions... but it's a pity that happens way too often.

I would love to create not one or two, but most (if not all) projects as "my proud sons", as masterpieces that worked flawlessly like a mechanical clock's gear system. I try to do it with "my own projects" (my portal and my experiments and internal mini-tools), but I almost always hit a wall when doing it professionally.

My current project is going very well thanks to PedroA's incredible effort and the fact that we make an almost perfect pair-programming team, delivering every requisite and change in time (when not ahead of schedule), surviving insane last-minute changes and new functionalities, but, as always, some things could have been done better. We've avoided a lot of possible constraints and have almost ready a product I'm very proud of, but mostly because of our overwork and sometimes even "law-breaking" techniques of ignoring everyone and trying to do something as we risked betting to be a more correct approach.

Until that utopic day in which we can work as we see fit/100% right, we'll have to stick to our personal projects to trully work "correctly and flawlessly".

Comments?

Posted by Kartones on 2008-02-20