Most developers seems to agree : Laziness is a talent.
The interesting part with this talent is that, when we have boring things to do, we can create a tool which does the boring work for us... And that's interesting! It's what make a boring development funny.
And yet, it seems that there is potential to exploit here in all of us. Not so many developers creates tools for themselves, I'll call this activity Meta-Development, because it's development about development.
In the The mythical man month, Fred Brooks exposes an idea of team organisation it's called "The Surgical Team", without entering in details the "Surgical Team" splits differents role for each member. One of the role I want to talk about is the "Toolsmith", as you might expect, it's the developer who creates tools for other developers, what I call Meta-developer.
Are you a meta-developer ? An easy way to find out, is to ask yourself this question : "Do I eat my own dog food ?". If you don't, most probably you can improve yourself by creating tools for your specific needs (and not the needs of your client).
Too many times, developers seem to be in a hurry : "I don't have time to do that", when I hear that it translates to "I've never done it, so it will take me too much time". And guess what ? It's the same lame pretext that inexperienced programers say to justify their ignorance. If you can't hack a tool for yourself, how are you able to create one for your customers?
There is never time to do well, but always time to restart from scratch.
Indeed, it takes time to create tools for ourselves, but the more we'll do that, the less time it will take.
Well, it seems that a lots of articles on CodeProject are about meta-development (cool tips and tricks for developers only)... but I wonder, how many of article's author eat their own dog food ? Personally, I haven't yet and it's a shame!
My next article Genuilder, (Mix of 'Generator' and 'Builder'), will probably be the first project I'll make on CodeProject that I will use on a daily basis (along with my personnal framework I create with tips and tricks taken all over the net).
If I'm able to eat my own dog food, there is a good probability that others will like it too !