I have a confession to make: I’m a crappy developer.
Sure, I may read an article or two about functional programming now and then, try to understand how Git really works beyond the usual commit and push, or click my way through Hacker News (top story: “Show HN: I created a self-aware AI in Go”).
But if I’m being honest, most of it goes right over my head.
My lack of technical knowledge becomes obvious to me any time I meet up with fellow hackers. The discussion will quickly veer towards comparing different languages, running framework X on platform Y (wherein Y is defined as “any platform that X was definitely not made to run on”), or any number of esoteric technical topics.
It’s plain to see that these people love what they do. They love being heads down in code, trying to figure out the best way to crack that particular puzzle. The harder the problem, the better!
And I believe that’s exactly the trap so many of my developer friends fall into: they like coding too much. They enjoy it so much that it becomes a goal in itself, and not just a means to an end.
I on the other hand see coding as an obstacle: it’s what’s standing between me and my goal.
I’ll deal with it if there’s no way around it, but that doesn’t mean I have to enjoy it. So the gratification happens when I finally ship a new feature, not while I’m building it.
At least, it used to be this way. As I spend more and more time hacking on Telescope, my coding skills are slowly but surely getting less crappy, a tiny bit at a time.
And recently, I’ve been catching myself thinking things like “what need to be done is refactor those views to use the same controller!”.
And of course, I know that’s not true. What needs to be done is fix that weird bug where people can’t create new accounts if today’s date ends in a 3. But you see, that wouldn’t be fun to do. It wouldn’t be a challenge.
I end up refactoring the controller, and when I proudly announce the results of my work to the world, nobody cares. Because of course, that new controller makes no difference whatsoever to anybody’s experience.
So I need to go back to my previous state of crappiness, when each line of code was a hurdle standing between me and the finish line, and not a chess problem to be solved in five moves or less.
Only then will I be able to truly get things done. And that’s why crappy developers are more productive.