Do I know how life works? Not a clue. Ignorance is bliss, they say. Well, knowing that you’re ignorant is wretched at times. And then all you can do is shrug and move on.

Here are two rules I’ve introduced recently, with the development of a new software product:

  1. No backlog
  2. No to-do comments, no NotImplementedExceptions, no enum values for future scenarios, no placeholders in my code: YAGDI (You Ain’t Gonna Do It)

Here’s why.

First, the word “backlog” means “Things I really should have done already but haven’t gotten around to yet”. A webshop with a backlog of orders means “should have been shipped already”. In other words, the very word backlog means: I’m running behind. What an awful state of being. I used to have one of those. First step of many greenfield projects: make a backlog. Ooooh and doesn’t that word prime you subconsciously. Mine ended up full of things to fix, to cleanup, to do better. The problem is that once you start writing down what you ought to have done better, or worse, might have done better or might one day do better, your development process changes from a line into a tree. You’ll drown. You start to think too much about what could have been better. First, you had to build one thing. Now you have a ticket to build a thing and two “ideas for improvement”. Then four. Then eight. It’s like, the garden could be prettier and the curtains are from our old house and the cutlery bores me and my clothes are fine but I’d like…

“But, but, things could be better! We should strive, shouldn’t we?”. Yes, certainly, and the no backlog rule is not an excuse to do a bad job and smile that nobody has a record of a botched job that requires a clean up crew. No. You set the bar and work to reach that bar. Afterwards, you are not allowed to say the bar could or should have been higher. It’s pass or fail.

But what about when I think it’s not good enough and my boss wants it delivered now? What about that time when… I’m sorry, I can’t help you there. I have no clue what you should do. This is just me talking, in my little life, my little world. Frankly, it’s up to you to judge if you think a situation is pass or fail. Context is everything. What do I know.

Here’s the normal state of being for a human: You need to choose your regrets. That means you might not do the garden at all this year. And not put it on a list that it could potentially be better. And not beat yourself up over it. Just not going to happen. Period. But, shouldn’t we write it down for next year then? Why? To drive yourself insane? Same with the boss who demanded a shortcut. What good will writing down “clean this up some day” do?

Fine, I’ll admit it, I’m human. I have ideas. Lots of them. My brain chatters a lot. I do jot things down. But I’ve drawn a sharp line. Nowadays, I have:

  • One physical paper agenda with social appointments and a schedule for the household chores.
  • One Jira “backlog” for software that only contains things I will implement.
  • And one Trello board that is an ungodly mess of ideas, thoughts, wishes and nice to haves.

My actual backlog is clean. It is lean. It is mean. It contains nothing, nothing that I’d “like to maybe do one day”. Nope. Only an “I shall do this”-issue get a place there. Sure, some are as of yet unrefined, like “host it somewhere”. But I’m being strict with myself, when I refine a ticket, out rolls a list of I-shall’s.

Now, as for no placeholders: Suppose you wanted to paint the living room wall. Some day. Not that important really, the wall looks fine, no tears or bumps at all, it’s in good shape. You’d just like it to be a different color. Do you put the tin of paint in your living room for three years? Or are you better off not buying any paint at all until the actual frickin Saturday morning in the weekend that you’re actually going to do it? I’d recommend the latter.

Do I know how life works? Hell no. Am I perfect in following my own advice? Certainly not. But I aim for it, and it really helps me focus. I regularly have these moments, in code and in life, where I see things I’d like to have improved one day. So many projects. By moving some (a lot) of that to a separate pile, the one that I ignore as much as I can, and only putting a few actionables on a dedicated list and accepting that the rest is on hold, out of scope, heck, I pretend they don’t exist, life becomes much more manageable.

I have three sewing projects, in progress. One for the sewing lessons from my mother in law who is a professional seamstress, and two easy projects at home for whenever I feel like it (and as soon as my sewing machine is back from maintenance).

I have two software projects. One with the clean backlog, my primary project right now. And one with a pile of issues from before I learned this lesson… As soon as my primary project is finished, I’m going to return to the secondary project and apply this lesson.

I have one home improvement project right now: painting the fence. I’ve done six (two-sided) sections, two more to go and it’s as good as new. Other home improvement projects are on a hand written list on the fridge and are ignored until this one is done.

And of course a gazillion other ideas, on that Trello board I try not to open too often unless it’s to throw an idea in there and close the door before any of the other ideas grab my attention.