Three Things I Wish I Knew as a Developer
While I would never say that I was some rockstar developer in my prime, I seemed to hold my own well, and folks seemed to regard my work well and ask my advice. So, I thought I’d share some of the less obvious lessons I learned along the way. Obviously, there are many things, and I’m kind of picking three, so this isn’t a complete list.
Slow Down
Our industry prizes speed above everything. A developer who can quickly turn around a solution is revered even if it is buggy and a support nightmare. Developers themselves look to how quickly they can solve a problem as validation that they are good developers. This is a dangerous trap for everyone.
Whenever we act, we strengthen our habits and routines. So it should follow if we focus on how quickly we turn work around and all the tradeoffs we make, we will turn those into habits and instinct. This means that when an opportunity arises to do something without those tradeoffs or that you need to address them, your habit and instinct will fight against you.
Slowing down can give you enough time to experiment, explore, and build better habits and instincts. Believe me when I say that even if you’re a day or two slower, if your work product is better nobody will complain.
Sleep Well
I’ve never been one of those folks who believes or even endorses the idea that if you aren’t coding all night, you’ll never make it. In fact, if I could, I’d slap everyone who propagates that concept. You need your sleep and rest.
Also, I’ve never worked with anyone who coded late into the night that was so much better that it seemed worthwhile.
Let me put another spin on this, though, and talk about support. Most developers will go through a time when they get that 2 AM call that there’s an issue in production. Admittedly, this can be exciting if it’s a fairly rare event. Usually, though, if you’re on a rotation, it isn’t rare. Sleeping well is as much about doing work in a way so your phone doesn’t ring as it is about actually getting sleep.
So, whenever you can, invest in making your code and systems more resilient and of higher quality. This habit will continually raise the bar of quality and, consequently, your sleep.
I remember working with a team of developers fresh out of college who learned this the hard way. They wound up killing themselves trying to eliminate all the bugs they added in their day-to-day work. Eventually, they started adopting some different practices and techniques, and they were able to bring things back under control. That product they launched ran for over two years without a single bug.
Try Everything
This last one might be a bit of a tough pill for folks because I will tell you to try things you think are dumb or stupid or can’t work. When I think back about the most impactful lessons I learned as a developer, almost all of them came from doing the opposite of what my peers thought was a good idea.
Don’t get me wrong, I’m a contrarian at heart, but when you see the same things happening repeatedly, something does have to change. I’m the one who likes to walk through that door to the unknown first.
It turns out, that going against conventional wisdom taught me more than trying to extract more from the same tired lessons. Every developer and organization I’ve ever worked with talks about things like SOLID, Clean Code, and these same materials. Yet, I find almost no evidence of the benefits. So I tell them to abandon these ideas. Do something that seems too crazy to work.
An interesting corollary here is that who we learn from matters almost as much as what we learn. There are everywhere examples of code that solves the problem you’ve got right now. There are very few good examples and almost no great ones. This puts us in the position to continually learn and emulate what we see around us. So we see the same types of examples, and we become proficient in writing code like those examples.
Sadly, knowing who does good or great stuff is pretty hard, so you have to experiment. You have to try things to see what you can learn from them. Some people you might have thought were weird and impractical might also have the keys to some of the best insight in your career. You’ll never know if you don’t try it, though.
For those of you who want to ask, “Well, Ryan, what do you recommend,” I’ll tell you the most impactful technique I ever learned was Test-Driven Development. So, if you don’t know where else to start, give yourself a solid month doing TDD with no excuses.