In a previous post I ranted about CTOs who allow their products to accumulate technical debt.
Over the past few months, however, I've come to realize that the fault does not lie only with management: the level of craftsmanship displayed by the average coder is dismal -- at least in the environment where I move (spain, startups, new media, PHP). Today I stumbled upon this video by Uncle Bob Martin which makes me realize that the same tragedy also happens elsewhere [well, I already knew, but Uncle Bob provides visual proof -- check it out].
We could go back and forth discussing who is to blame: the employers who don't know how to choose and train their personnel? The people who postulate themselves as programmers without even knowing what they don't know? Others who know what they don't know, but are too lazy or too stubborn to learn and apply it? Our colleges and universities, who don't train would-be programmers properly? But.. what's the point? What would I do with that blame?
Applying the "think globally, act locally" principle, I've decided to start with my direct environment, where I can make the most impact: my team and, first and foremost, myself.
But, what should I do?
Let's face reality: the craft of computer programming is less than 60 years old. If you compare it to pottery, we would be in 24940 BCE. New programming languages appear, expand, and are forgotten every [mercurian] year. Even programming paradigms cycle fast enough that it's hard to keep track of their names. It's not enough to become good once: I and my team-mates can only be good software craftsmen by actively keeping track of all these developments, learning how to apply them, and applying them wisely and courageously.
So I vow to:
1.- Spend a few hours every week reading blogs & books about the craft of computer programming, and learning to apply what I read.
2.- Make everything in my hands to make my team mates do the same (which should be a lot, as I am their functional manager).
3.- Have the courage of applying these new learnings at work whenever we firmly believe doing so is in the best interest of our employer.
I hope this will make me a good software craftsman.
And you? What are you doing to be a good craftswoman or craftsman?