A programmer's life manifesto.

· March 7, 2021

I always find cross functional principles amusing.

Cross functional Principles.

Cross functional principles are principles that were designed to be guidelines for a particular field, but somehow apply to another field. This is not a technical term for such principles, just something I use to describe such principles. I find the idea of cross functional principles really satisfying. It feels like two (seemingly) different worlds having a cross-over.

Recently, I finished reading “The Pragmatic Programmer” 1, a book about the craft of writing good code and building great software. I learnt a lot of great principles on the art of making good software, but also felt like most (if not all) of these principles can be applied to life.

The action manifesto.

I figured the most pragmatic way of applying these principles would be to break them down into short, easy-to-apply tests for the actions/decisions you take. If you want a cringier way of thinking about these tests, they are the CI/CD build pipeline to your life 2

I have derived these tests by adapting (quite loosely sometimes) the hallmarks of a great codebase.

DRY - Don’t repeat yourself.

In my head, this translates to the adage “Don’t solve the problem, solve the family of problems”. A very simple example of this is how I used to always forget passwords. I kept repeating the “Forgot my password” routine. I decided to stop repeating myself, and finally got a solid password manager workflow set up. Been over an year since I hit the forgot password button.

Orthogonality

If an action I take fails spectacularly, how many aspects of my life would be adversely affected? If the action is orthogonal, then it would be only one. This metric can be quite simply applied by splitting your actions into a number of axes. I like to think that all of life’s decisions fall under two axes:

  1. Work
  2. Leisure

The test derived from this principle is simply asking whether an action is orthogonal. An example of this would be this - I am on twitter, and I want to tweet about something spicy. This is an action on the “Leisure” axis. In a worst case that my tweet is grossly misinterpreted (or worse, I am wrong), will my “Work” axis be affected? If the answer there is yes, I shouldn’t do it. The action isn’t orthogonal.

Single Responsiblity

My interpretation of this is very important for me in today’s attention economy world. Every now and then, I want to assess the action that I am performing to make sure that it is towards the output I have decided. The action that I perform must have a single responsibility.

Suppose my intended output for an action is finish writing an article on “Hearing loss”. Ever so often I should poll myself to make sure the actions I am taking do indeed contribute to that very goal, and no other one. I have to keep things single responsibility. More responsibilities may cause tight coupling which, down the line , would cause great pain and unintended second or third order consequences. 3

Avoid tech debt like the plague.

This is a simple principle. Every action you take is either a debt from your future self, or a favour you are doing to your future self. Any debt that you take must be thought of as a high interest, loan shark debt. You will be forced to pay it back at a much worse time and place, with a ridiculous interest fees.

Before performing an action, run the following “life debt” test. Am I taking a life debt? If the answer is yes, avoid the action like the plague.

ETC - Easier to change.

My interpretation of this is a bit of a stretch from the original principle. Here is my adaption - the thought you put into a decision should be directly proportional to how easy that decision is to change (or how easy it is to reverse). Examples:

  • I want to get botox -> Is it easy to reverse? -> Not that much ->Think deeper if I really want to get botox. Sleep on it, put it off for a while.

  • I want to change my hair color -> Is it easy to change/reverse? -> Yes -> Go for it, don’t think too much.

Caveats

These are my interpretations of these principles. I am not sure what kind of adverse consequences they can have long term (second, third order effects?). A lot of these principles do seem quite obvious, but I think the power in them lies in treating them like tests for actions and decision. My personal checklist (“build pipeline”) for my decision would involve the following:

  • Is is orthogonal?
  • Am I taking a life debt?
  • Is my action single responsible?
  • Is it easy to change or reverse?
  • Is this something I have been doing over and over? (am I repeating myself?)

I am hoping that this checklist would help improve my decision making abilities; something I can verify only after my future self’s success (or failure). This is just another one of my Bad Heuristics 4

Footnotes

  1. A book that I wished I read way earlier. For all early career programmers, this is something you must absolutely read. It has aged spledidly. I read the 20th Anniversary update edition, check that one out. 

  2. Sorry, I am not one of those guys who thinks of everything as code or software. This was just too funny to pass up. This is my idea of cringe comedy. 

  3. Second and third order consequences are so hard to predict, I always assume that I can’t predict them. I would like to be safe than sorry. 

  4. If you have read any of my other writing, you would know I am a sucker for Bad Heurstics™ 

Twitter, Facebook