0x20 Lessons Learned as a Professional Developer


I’ve been a professional software developer for about 6 years (three of those at Atomic Object!). During that time, I’ve learned some important things:

On Personal Growth

  • What I know is way less interesting than what I don’t.
  • The hard part of the project is knowing when I’m done.
  • People problems are more important than technical problems.
  • Sunshine, sleep, and water are important.
  • There is such a thing as too much coffee.
  • What I learn from mastering a weird language is useful even if I never use it on the job.
  • I have biases I’m not aware of, and I will act on those biases.
  • I had way more help getting to where I am than I think I did.
  • It will take less time if you put the problem down right now and address it in the morning.
  • It’s okay to play video games.
  • Learn empathy.
  • Learn to be wrong.

On Continued Education

  • Learn how compression, networks, and cryptography work.
  • Turing completeness is a trap.
  • Software can’t solve most of the world’s problems.
  • Master the fundamentals.
  • I’m not going to like syntax I don’t understand just because it’s different. It’s important to learn the language before passing judgement on whether or not it’s suitable for my task.
  • It can be hard to remember that concurrency and parallelism are different things.
  • Threads aren’t hard. Shared state is hard.

On Running a Company

  • Pay interns.
  • Give interns a chance to fail.
  • Don’t use interns as a cheap source of labor.
  • Boring software is the best software.
  • There’s not a good definition for “bad software”.
  • It’s hard to talk about money.
  • It’s important to talk about money.
  • Guilt-free sick days are essential.
  • Sometimes open-plan offices are great. Sometimes open-plan offices are the worst.
  • If customers are billed hourly, employees should be paid hourly.
  • It’s almost never worth it to sign, or asking someone to sign, a non-compete clause.
  • Measuring people by their open source contributions favors people who have the resources and time to do so.
  • Hiring is easy. Firing is not.

I wonder what I’ll be able to add to this list in the next 6 years.