Three Things I Wish I’d Learned Earlier About Making Software


Having been a software developer for nearly 15 years there are dozens of lessons I learned the hard way. These are just a few of the practical pieces of advice I wish I had learned earlier in my career.

1.) Perfectionism Stalls Progress

Any developer worth keeping should strive to release solid, well-tested code. Typical developers are analytical creatures savoring the details of elegant design. But code minutia is a double-edged sword. Lingering too long on any particular refactor/feature suggests one of two things, either:

    1. A.) Your ego prevents you from shipping the current design because you can’t let your code be anything less than incredible .
    2. B.) Your code is too complicated. You opted to make it so future-proof that it can’t be finished on time. It’s so complicated that you’re in over your head.


Don’t let perfectionism prevent you from getting your code out the door. In fact, here’s a Protip : your code will never be perfect. Ever. Let it go. Let’s use the author of Ruby on Rails, David Heinemeier Hansson ( @dhh ), as an example. DHH extracted Rails v1.0 from Basecamp nearly 10 years ago. A quick survey of the git commit history and we see that news flash even DHH ’s code was far from perfect. Good code is made better through iteration and collaboration .

2.) Love Your Enemies

Since all software design is a combination of style and semantics your work will always have its critics. Consider these naysayers a valuable asset. People who poke holes in your code or make remarks like, “that solution is bush-league” may be just jerks trolling the Interwebs but when they offer an alternative way of doing something it’s time to put on your big boy pants and pay attention . Sometimes these arrogant bastards folks are your fast track to advancing your skills.

Choose to learn from them. Don’t let your pride prevent you from hearing the wisdom in their remarks regardless of how poorly it is communicated. Though this lesson may be painful to learn I implore you to embrace this paradigm as early as possible .

3.) Find a Mentor

Developing your code chops in a vacuum is a sure fire way of keeping your design and perspective small. As the analogy goes, if you’re skill set only involves a hammer then all your problems look like nails. A mentor will add to your toolbox more regularly and effectively then a dozen books. The people who have been doing this longer than you know more than you. Leverage them. Thank them. Find your Obi Won . Become the padawan. ( Here’s a nice list of how to get started )


This is by no means an exhaustive (or even a prioritized) list, but these are a good start. If there are any insights you wish you’d been given early on in your career please feel to share below.


Author: HiringThing

HiringThing is easy to use, intuitive online recruiting software that makes it easy to post jobs online, manage applicants and hire great employees.