By Dave Sayles, Director of Software

To say I have an obsession with historical figures is an understatement (let me put it this way: I actually have a favorite Pope that predates the 20th Century.  It's Leo X, BTW).  One character I enjoy in particular is the philosopher-king (ok, technically emperor, but king sounds better) Marcus Aurelius.  My favorite trait of Aurelius' is that during his lifetime he would write messages to himself that he would later review with the hopes of reactualizing those comments.  This concept is called Hypomnemata and is a tenant of Stoic philosophy, to which Aurelius was an adherent.  Aurelius' memorandums were eventually rediscovered, and became known as his "Meditations".

As a software engineer in the 21st century, I call this exercise "Optimizing for Enlightenment".  By recording and rereading your everyday thoughts, you can continue to better yourself with the hopes of one day reaching a point of peak efficiency (or, in the good emperor's case, enlightenment).

In emulation of Aurelius I too catalogue my thoughts.  Throughout my day, I commit messages to my future-self for the sake of both guidance and self-improvement.  When I started, I told myself that I'd periodically read through my history and contemplate my entries.  There's no time like the present!

For your enjoyment, here are some excerpts that I tend to concentrate on:

Date: Mon Oct 26 16:48:58 2015 -0400
Keep your PRs small. It'll make it easier for the reviewer. If you're
PR is that big, you're probably biting off too much anyway.

Date: Thu Sep 24 14:37:53 2015 -0400
Always lint your files

Date: Wed Sep 9 10:40:28 2015 -0400
Always use a virtual environment. It's the best.

Date: Wed Aug 19 08:00:22 2015 -0400
I enjoy the idea of not using a computer or being aware of the outside
world for the first couple hours of a day. It gives me time to focus and 
ready myself.

Date: Tue Aug 18 15:58:47 2015 -0400
I think my biggest problem for the first ~10 months I was managing the
software team is that I never asked what the devs actually wanted, I just
always did what I thought best. If I had opened it up to other people, I
could probably have made better decisions.

Having more discussions, especially during our regular weekly meetings, is
a good place to start.

Date: Tue Jul 28 07:47:41 2015 -0400
Future Dave: read everything, everywhere.

I can't tell if my reading comprehension is poor, or if I'm just not
reading things and skipping them over. I think it's the latter, but I
won't know until I've started reading everything.

Date: Mon Jul 27 10:37:33 2015 -0400
I really hate sprints.

Unless we're doing really scoped work (i.e. contract web stuff), what's the
point? Our tasks seem too open ended to really use sprint points in a
sane way.

Date: Mon Jul 20 12:00:53 2015 -0400
You should listen to The Brandenburg Concerto more, since it's probably the
best piece of music ever written.

Date: Thu Jun 25 14:45:22 2015 -0400
Patience.

Date: Wed Jun 24 12:48:20 2015 -0400
When given a task, the first thing you should ask is: why do we need this.

Date: Thu Jun 18 18:16:29 2015 -0400
It doesn't make sense to have all decisions go through one person. By
empowering an entire department to be self-sustaining, you allow them to
all gain efficiency and reduce the amount of interruptions and decisions
you need to make.

Date: Thu Jun 18 10:05:07 2015 -0400
When running through a difficult problem (or anything really), write out a
dialogue between you and yourself. It'll help you understand your thoughts
and decide what's really important (or confusing).

Date: Wed Jun 17 00:42:11 2015 -0400
Only do enough to get you going. It's usually not worth it to polish
something that hasn't even been used yet.

Date: Tue Jun 16 23:38:45 2015 -0400
Keep it simple, stupid.

Date: Tue Jun 16 23:37:15 2015 -0400
Everybody has their opinions. Listen to them, but don't confuse wisdom
with hindsight.

Date: Tue Jun 16 23:36:59 2015 -0400
Learn from your mistakes. Reflect on them. Also, don't be so hard on
yourself.

Date: Tue Jun 16 23:36:03 2015 -0400
You can't split dev time with manager time. You need to be one or the
other. Don't try to straddle both worlds; you'll end up doing both jobs
poorly.

Date: Tue Jun 16 23:33:36 2015 -0400
You don't know everything. You can't solve every problem. You don't know
every answer. Even if you can solve the problem, you should absolutely
consult other people, since they may have better ideas.

Date: Thu Jun 4 10:37:23 2015 -0400
Remember Marcus Aurelius: everybody has their own demons. They're human,
just like you.

Date: Thu Jun 4 08:01:51 2015 -0400
Never be afraid to say "No" to something, especially if it's proposed by
management. The majority of ideas are bad ideas.

Date: Wed Jun 3 15:52:17 2015 -0400
Automate everything.

Date: Wed Jun 3 10:31:38 2015 -0400
Dissenting is like the tuning of an orchestra. Nobody wants to listen, but
afterwards it was worth the pain.

NB: Unfortunately I can't take credit for the above quotation. I think
it's a rehashing of Will Durant.

Date: Mon Jun 1 12:49:50 2015 -0400
Always try your best to do as little work as possible. There's always an
untapped resource that can do the job just as good as you can that doesn't
cost as much.

The constant assessment of what my previous self experienced allows my present and future selves to iterate and become more skilled.

As the Director of Software at Neverware, I use this same idea of Optimization for Enlightenment with the rest of the department.  Each interaction I have with an engineer is another chance to listen to what they're thinking about. Each thought about what works, what doesn't work and what we should be doing is a new idea for me to meditate on and another chance to iterate on how we operate.

Optimizing for enlightenment is neither quick nor foolproof.  Constant self-review can be a bit of a harsh reality as well.  But, by never staying satisfied with the way things are, you can hopefully live like Aurelius and hill climb your way to peak efficiency.

1 Comment