Personal Meditations on Software

Series: reflections June 29, 2014

I’ve been reading Marcus Aurelius’ Meditations. I haven’t gotten far, but I like the concept of “thoughts addressed to yourself”. So when I came across Sean Cassidy’s post on collecting reminders to himself, I decided to take 15 minutes and do the same.

Some of this list is very personal, other items are widely applicable. Some are things I’m striving to achieve, others are deeply ingrained but worth being reminded of.


  • Bugs will come in after you hit feature-complete. Don’t get upset. It’s not a big deal nor a reflection on quality.

  • Getting mad when doing a code review is irrational. Calm down and go take a walk. Passive aggressive review comments make you mad so don’t write them yourself.

  • If you have the nagging thought that something could break, it’s going to eventually. Make sure you tell someone else or document it (even better: fix it).

  • Estimates aren’t fair. You will never have enough context to feel completely confident. Don’t let someone bully you into a number; express your uncertainty, but at the end of the day, take your best guess and move on.

  • Make sure you are following a practice before chewing out someone else for not doing it. Lead by example. If you don’t follow something 100% of the time, why do you expect everyone else to?

  • Having an uncomfortable conversation is hard. Letting something fester and build resentment is not any better. Neither option is great, so weigh your decision with care.

  • Change makes you anxious and scared but you usually get over it.

  • You are less happy at the start and end of projects. Probably related to change. Things start looking up when you have a routine.

  • More often than not, a planned project falls through. Don’t get so bent out of shape about a project that might not even happen.

  • You like to complain about things your predecessors did not do. Sometimes you don’t do them either! Assume people did the best they could given their knowledge, resources, and deadlines at the time.

  • A good team can make a bad project bearable. A bad team can make a good project miserable.

  • Speak your mind in retrospectives, but remember your words have impact. Don’t take out frustrations on teammates, especially publicly.

  • No code will ever be perfect and you need to accept that it is okay. Gold-plating isn’t always obvious.

  • No one writes code exactly like you (or anyone else). Be okay with small — or even medium — differences in implementation. If the differences are large and frequent, you should pair or re-evaluate your own preferences.

  • You are fortunate to be able to make a living doing something you also consider a hobby. Not everyone is that lucky; not everyone wants to code after work and you should respect that.

  • At the end of the day, you are just a guy sitting in an office pressing buttons. It could be a lot worse. Relax.


built with , Jekyll, and GitHub Pages — read the fine print