Not many years ago, and old CTO of mine told me one thing I still remember. It sounded more ore less like this:
The IT world is full of sirens...
He was talking about Ulysse’s sirens, of coures. The kind of sirens that drive you away from your path keep you into a sort of oblivion for a long long time, untill you wake up and find the strength to break the course and sail away from them.
He was obviously trying to teach me something. I guess the teaching was to beware false promises of the latest technology claiming to be the solution to this and that recurring problem, or to give you that performance improvement your client is crying for. Because they are most likely to absorb your time in learning something new which is old stuff rewritten, or whorse, it’s a buggy piece of code which is not that great improvement after all.
I can’t remember the exact subject of our argument, but I can imagine that it was me trying to introduce some MVC web framework in the company.
I remember I thought something like:
...wwwhhhaattt? Wasn't this craft supposed to have something to do with progress??
I was a naive IT guy at my first real job. I spent the three years before eating everything I could find on the web about the web itself, from Windows to Linux, from ASP to Php, from vector graphics to TCP networking. I was in the middle of a rush I still have to cool down from. It was the moment I realized that this was the world I was curious about, and if I ever had to find a job for myself, then that was the one.
I don’t remember how the conversation went on, but the average memory I have of that work place is kind of desolating.
h2. Six years after
Six years after, I still play those words in my head every time I look at the polished web page of the next NoSQL database, or web MVC framework, or super new programming language which promises to speed up your development process.
...the sirens, watch out...
So I guess the teaching has succeeded to some extent. I pay much more attention than before, and think twice before investing my time in learning a new technology. But I still do, nonetheless.
Many times I found myself in deep waters, though. And most of the times when it happens you are alone with the choices you made, because no collegue is supporting you in the chase.
That’s the game, you can’t avoid that. At moments you feel like you are victim of a suicide tendency that makes you waste the little spare time you have to rollback the code you wrote the day before just because you where too much confident on that brand new PDF library.
Well, now I’m quite sure that’s not a suicide tendency. That’s something that has got to do with life and optimism, the firm belief that things can change in better. If you are not an optimist person, you cannot do this job and have a happy life at the same time. Fear, suspicion and closure are enemies of change, and in a world that changes so fast, if you don’t change you’re a dead man walking. Chances are that if you are not an optimist person and you think you are good at doing this job, you’ll be doing something else very soon.
Some people is so firmly convinced that things can change, that he strives everyday to demonstrate that he’s right. I guess that’s what moves us, the day after a defeat, to open up the code another time and say: ‘ok, maybe I did something wrong’, and restart the cycle.
Unfortunately, optimism is not good by definition. You have to manage it, keep it quiet sometimes and unleash it when needed. It would turn into blindness otherwise.
h2. Innovate, a little at time
So you admit you are an optimist, and that you need to touch by hand the proof that things can change in better. That’s a good starting point. Let’s see how this attitude can fit into the business. You have to optimize your efforts, and satisfy your ego a the same time.
One thing I’m experiencing recently is that innovating too much altogether in a project is not a good technique. Everytime I start a new project, I try to understand how something I recently studied can fit into it. Sometimes I experiment a lot of different stuff, and find myself wishing to try them all in my next project. Ruby 1.9, a new plugin, a new database, a new search engine. Not a good idea.
If this ever happened to you, remember that this is your job, not your personal playground, and you probably also have deadlines to honour. If you really can’t resist and you feel confident enough, you can add one piece at time. You’ll still have to deal with a resonable amount of hazard. I suggest to take a rest for a couple of projects after. Cool down, and watch back that piece of something you added and see how it’s behaving.
Has is it really been an improvement? You have to be honest with yourself then. That’s probably the harder part.