Four Things I Wished I Knew When I Started Programming For a Career
This year will mark my twentieth as a professional programmer of some sort. I joke that I’m old, but secretly I hold out hope that I’m not that old. Nevertheless, I’ve learned a lot, and I was thinking about some of the things I know now that I wish I had known at the dawn of the 2000s.
I did not know how to do software engineering, and wouldn’t for years
My favorite definition of software engineering is from Russ Cox:
… what happens to programming when you add time and other programmers
It would be a long time before I worked with other programmers, and while I was productive in those early years, I was writing code that made sense to me and possibly no one else. To really hone the skill of software engineering, you need to find work on a team that also programs; then, it just happens.
Find the fastest way to test your work, and make that the focus of everything you do
I do this now, and these days you and I both would wire up unit tests for this kind of feedback. But not all testing is done, or should be done, in unit tests; early on, I didn’t know anything about unit tests. I did a lot of manual testing, which is still important. Whatever you do, find a way to make it easy to write code that you can check for correctness. Otherwise, you’re coding blind.
Don’t worry about programming languages
At the time I started professionally, the work that was out there required one of two languages that I wasn’t super interested in: C++ and Java. I’ve since made my peace with them both, but it turned out fine in the end, as there would be an explosion of programming languages in industry use: PHP, Python, JavaScript, then Ruby, then all the JVM languages, Erlang and the BEAM languages, Node, TypeScript, Go, Rust–it goes on and on.
It’s all fine, and the main thing is you need to be open to learning new languages, rather than focusing on just one.
There’s always something you can learn
The best engineers I’ve ever worked with were people who loved to learn, and never felt like they couldn’t or shouldn’t learn more. Learning makes you more humble, because to learn you must accept that there are things you don’t know. In turn, a focus on learning allows you to empathize with others who are also learning–they’re you, just somewhere else on the path–and overall this makes you a kinder person.
That isn’t to say that everyone who has a strong personality is someone who doesn’t learn or can’t move forward in their career. But there’s something grounding about acknowledging that you don’t know something, and you still have more to learn.