Keep Your Tools Sharp To Avoid Personal Technical Debt
By Brian Gadoury · Tuesday, October 12, 2010
One of the things that really struck me when I started working here at End Point was how all of my co-workers possessed surprisingly deep knowledge of just about every tool they used in their work. Now, I've been developing web applications on Linux for years and I've certainly read my fair share of man pages. But, I've always tended to learn just enough about a specific tool or tool set to get my job done. That is, until I started working here.
I've always thought that a thirst for knowledge and an inquisitive nature are both prerequisites for becoming a good developer. Did you take apart your toys when you were a child because you wanted to see how they worked? Were you even able to put some of them back together such that they still worked?
I did, too. I wanted to know how everything worked. But, somewhere along the line I seem to have decided that there "wasn't time to learn about that" (where "that" was git rebase or mock objects in unit testing, or NoSQL databases like Cassandra) because I live and work in the real world. I have projects with milestones and deadlines. I have meetings and code to review. I have a life outside the office. These are common constraints, and I had often let them prevent me from learning something new. In retrospect, that was a tremendous cop-out.
Look around you. I bet you can find a co-worker with that same list of obligations who is learning something new right now. If not, I'm sure there are developers working for your company's competition that are learning something new right now. They are keeping their tools sharp and rust-free.
When you decide you "don't have time to learn about that," you trade a small time-savings now for less mastery of a tool, technology or methodology going forward. You quietly accumulate a little more "personal technical debt." This is the same kind of technical debt that affects projects and companies, but now if affects you directly and almost immediately. You'll start paying interest on it as soon as that meager time-savings is burned up.
So, where does this leave you and me? We still don't have any more hours in the day. How do we get our work done while continuing to keep our tools sharp by learning new things? Here's the secret:
Start out small and stick with it.
Dig into something small and relevant to your work today. Start using it to make yourself more efficient. If you're a Perl developer, learn basic unit testing with Test::More or start using Mouse to simplify and streamline your object-oriented development. If your app uses the Postgres open source database, learn more about how EXPLAIN ANALYZE can help you optimize your queries faster and cheaper than throwing more hardware at the problem. By starting out small, you'll find it easier to make that initial time investment, and you'll see a quicker return on it. You'll create a positive feedback loop almost immediately.
Once you're seeing these dividends, the next step might be for you to leverage your personal technical investment by sharing them with your peers and facilitating them in doing the same. Schedule a 30 minute training session every Wednesday in which a member of your team gives a quick and dirty talk about something they've learned. I'm talking black and white slides - no clip-art and no star wipes. The presentation file gets copied to your company's wiki or file server where people can grab it afterward. Get management to buy lunch. Make sure the food and the projector are set up 5 minutes early so no one feels their time is being wasted. At the 30 minute mark, pick next week's presenter. Anyone who wants to continue the discussion beyond the 30 minutes is free to do so.
So, again: Start out small and stick with it. You'll see an immediate payoff in terms of increased quality of work and productivity, which in turn, means more job satisfaction for you. And that will put you on a path towards the wizardry that my fellow End Pointers seem to perform every day.