I have a confession to make: I’m a crappy developer.
If I had to narrow it down, I’d say I’m at the point on the Dunning-Kruger curve where I know just enough to know that I don’t know anything.
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.
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.