This week marks my 10th year as a professional programmer!
Though I got my start in junior high programming jaggy Hexen clones in pirated copies of Visual Basic, it wasn’t until I went to college that I started writing code to pay the bills.
Over the past decade, I’ve made an incredible amount of mistakes and written an enormous amount of garbage-tier code. In most cases, I learned a lot from these mistakes. Still though, there’s a couple things that I still struggle to grok after 10 years in this business.
I’m not sure if I’ll ever learn these lessons 100%, but I’m sharing them in the hopes that maybe you might!
1. You can’t write perfect code
Code quality is important. Like, really important. In my mind, a grasp of design patterns and the principles of clean code is what separates the champs from the chumps. If I had to call out the biggest thing that’s wasted my time over the past 10 years, it’s been trying to untangle Griswoldian code — both other people’s and especially my own.
There’s a lot of reasons why code ends up less than stellar. Sometimes a design pattern doesn’t map perfectly to the problem you’re trying to solve. Usually you don’t have as much time as you’d like to work out the best class structure or namespaces or whatever.
Too often, sadly, the language you have to work with just isn’t very good at the things you need to make it do. (I had a party when Webserve finally upgraded to PHP 5.3 so I could use closures again).
There’s a big difference between trying to write clean, maintainable code, and being a perfectionist. I’m getting better about it, but I wind up being a perfectionist more than I’d like, and that makes me less productive than I want to be. I need to worry less about hitting the Platonic ideal of code (and being judged for missing it, see below) and more about how well my teammates or my future self can fix and build on what I’ve written.
2. You can’t compare yourself to other programmers
There’s a lot of really badass web people out there. Pop on Google or YouTube, and you’ll see all kinds of good-looking west coast hackers changing the game with their super-popular pervasive frameworks, entire new languages, and packed keynotes at international conferences.
Looking at these people, it’s really easy to feel like you’re some scrub-tier nobody who could never hope to contribute to the field in the way they do. They’re out there setting the trends and creating the tools, and you’re the one just forking them on GitHub and then never making a single pull request.
It’s a challenge a lot of the time — but really important — for me to remember that I’m doing important work in the College that’s making an impact. It’s likewise hard for me try to keep in perspective that none of these people were overnight superstars. They paid their dues for years (if not decades, like Rich Hickey or Jason Fried) and took every opportunity to put themselves and their work out there.
3. You can’t take things personally
I’m an incredibly self-conscious guy. I also take my work really seriously. To be honest, programming is the only thing I feel like I’m somewhat good at, and a big part of my identity is that I’m a programmer.
You can guess how I feel when someone isn’t terribly happy with work I’ve done. You can also probably guess how I feel when I don’t meet the perfectionist standards I set for myself (see above).
I’m getting better about it, but if there’s one thing that I really need to keep working on as a professional programmer, it’s that I can’t take people’s criticism or negativity as a judgement on me as a person. “You are not your work,” as the cliche goes. I put a lot of unnecessary stress and pressure on myself when I take feedback personally, and I can’t imagine the people around me find it fun either.
Wrap it up
Ten years feels like a long time to be doing something, but I’d like to think that I’m still just ramping up in my career and still have a lot of growing to do and time to do it.
I’ll check back in 2026 and let you know how I’m doing on these lessons. By that time, my post about immutable data should hopefully be up.