Win the Week

I use weekly metrics to reach bigger goals. I love this because I get to reset every week. If I fail one week, I haven’t derailed my entire progress, I just reassess and get back on track Monday. Sometimes when I have nothing to do on a Sunday, I try to win the week by catching up.

But, just like in Win the Morning, I try to front-load successes, so Monday is a big day for me. I try to make a lot of progress on my weekly metric. Today is Sunday, the end of the week for me, and I only have a little more to go on my main fitness goal, which will be easy. This is possible because from Monday to Wednesday, I did a lot. Since I actually do have a lot of time today, and my goal is walking, I’m set to overachieve for the week.

My work goals need to be finished up by Friday, so I make sure to never having meetings Monday and Tuesday unless it’s impossible otherwise. I try to book everything for Friday afternoon, where I’ll be trying to wind down anyway, and not looking to do a lot of focussed work.

I was never this way when I was younger. I was always procrastinating and cramming, which was especially bad in college. I got through it, but with a lot of unnecessary stress. After decades of tinkering, I hacked it so that procrastinating is something that happens at a weekly cadence, if it happens at all. By booking away the end of the week, I don’t give myself time to cram, so I have to get to it.

Double Down on Things that Work for You

At the end of January, I realized that the actions I decided to take for my fitness goals weren’t working, so I decided to add more light-impact cardio.

So, it appears that for me, I might need more cardio. From my research, I know that this may inhibit muscle growth, but that effect is because of calorie deficit. So, I will add more cardio (but low stress activities like swimming, rowing, and the elliptical) and I need to find a good healthy source of extra calories

Right after I wrote that, I realized that more walking might also help and was very easy to fit into my days. It’s only been two weeks, but the effect was obvious enough that I decided to do much more walking than I planned.

I started with a daily goal of 12,500 total steps, but now I get over 20k most days. The extra walking is hundreds of calories, which I eat because I am trying to build muscle.

To get this many steps, I have added the following practices:

  1. Almost all of my reading or video watching is on a treadmill. I don’t need to make time for this. I do it in whatever clothes I’m wearing and keep it at a slow enough pace.
  2. Almost all podcast listening has to be done on an outside walk.
  3. If I have to walk somewhere, I leave a little early and add at least 10 minutes more walking each way.
  4. I installed Pedometer++ on my iPhone/Watch and use their widgets as my scoreboard. My current steps is in a complication I see all day.
  5. I try to get close to 10,000 steps in the morning (to win the morning).

20k might unsustainable long term, but I always dedicate the first thirteen weeks of the year to try to make big changes in my life so I can see what the impact would be. Then, I size it to something I can keep on doing.

Dropping if-bombs

On June 25, 2012, I tweeted:

I believe I just coined a new programming term: if-bomb: adding a bunch of heinous if’s for a special case “Dropped an if-bomb on my code”

To be clear, this is a well-known anti-pattern, covered in Patterns of Enterprise Application Architecture by Martin Fowler. I started calling them “if-bombs” to discourage their use. One remedy is the Special Case pattern, but there are others. A special case of the Special Case pattern is the Null Object pattern, which is used when the special case handles null references.

Win the Morning

Using The Four Disciplines of Execution, I am trying to reach my goals by “playing a winnable game”. The strategy is to develop a lead measure that you can act on at any time (see 4DX: Applying the Second Discipline). But, I find that I win this game more often if I act in the morning.

For fitness, I am doing more strength workouts, incorporating long walks into my day, and eating a healthy high-protein breakfast. I work out at around 7am and eat breakfast soon afterwards, so this is usually done by 9. If I get up early enough, I do a long walk to the gym.

My other two goals have dedicated time allocated to them. I front-load that as much as possible, and move anything that could be distracting to late in the day (especially meetings). I want to work on the important tasks when I have the most energy for them.

According to When by Daniel Pink, for most people, the morning is good for deep work and the afternoon is better for collaboration and ideation. I am clearly one of the “most”, because this works well for me.

January 2023 Roundup

I have two things taking most of my time these days, and I’ve been using them to give me topics to write about.

I am working on a book on Tech Debt

I am working on personal productivity software

I also announced season 4 of my podcast, which I am still working on. I hope that there will be episodes in February, but not sure yet.

Help my book

I am writing a book titled Paying off Tech Debt When You’re Not In Charge.

The intended audience is software engineers working within orgs where they are having trouble getting tech debt paid.

If this sounds like a problem you have and would like to read my first three chapters, let me know. I am in very early stages and want to make a useful book, so the best feedback would be if it was useful to you or not.

Useful Books I Admire

I am trying to write a useful book on technical debt. I am near the beginning of the process and still trying to find the format. To do that, I’ve been thinking about useful books I have read and what I loved about them.

The first one that came to mind is Writing Down the Bones by Natalie Goldberg. It’s part memoir and part writing exercise workbook. It’s similar to the Artist’s Way by Julia Cameron, but the tone resonated more with me. Bird by Bird by Anne Lamott would also fit this category. These are books you are meant to apply immediately.

I’ve been writing a lot about The Four Disciplines of Execution lately. This book’s style is just a very straight-forward business how-to with case studies. For me the technique is so compelling, that the format almost wouldn’t matter. It’s a four-step process with four-steps clearly described.

All of Rob Fitzpatrick’s books are great, but The Workshop Survival Guide is particularly useful. The authors assume that you have a workshop coming up and are in a hurry. They don’t waste time and get right to helping you design it.My favorite part is the structures for workshops of various lengths. Best tip is to use Q&A to make the timeline springy. Makes me want to give a workshop.

Looking at my post on Great Software Writing (that influenced me personally), eXtreme Programming is the one that strikes me as the most useful. This book introduced me to CI, unit-testing, pair programming, and refactoring. I use the lessons from this book daily.

4 Week 4DX Checkin

I’m using techniques from The Four Disciplines of Execution (4DX) this year to help me reach my important goals. I documented my setup process in these posts:

  1. 4DX: Applying the First Discipline
  2. 4DX: Applying the Second Discipline
  3. 4DX: Applying the Third Discipline
  4. 4DX: Applying the Fourth Discipline

The gist is that you (1) identify an important goal (2) design and act on lead measures — things you control that you can do at any time that will add up to that goal (3) create a compelling scoreboard and (4) have regular accountability.

I chose to have 3 goals in 3 separate areas of my life that have segregated time. The book stresses having only one goal, because they are imagining that you apply this to work—I do have only one work goal.

For my work and personal growth goals, I have done my lead measures at or more than the level I wanted and I am making progress. Things seem to be going fine there.

For my fitness goal, I am doing what I set out to do, but I am not seeing progress, so it’s time to rethink if my lead measures are right. In my case, I think they are generally good things to do, so I will keep doing them, but they are obviously not enough.

In 4DX, we are supposed to periodically make sure our lead measures are taking us where we want to go. So, I want to share my thinking. The point is not my specific fitness goals or process—if you disagree with my fitness approach, that’s fine—the point is that I am trying to incorporate new knowledge and try something else.

Here’s my thinking:

My fitness goal is to reduce body fat with the lead measures of strength training and higher protein breakfasts. The result so far is that I am getting stronger (can do more pullups, lift more), but my body fat % hasn’t changed at all. My weight also hasn’t changed, but I am ok with that. I have been using a body fat scale since 2019, so I looked at my history, and I see that my lowest body fat % was when I was doing the most running. This is frustrating.

I chose to lower the amount of running I do because I am trying to avoid knee problems. I don’t have any now, and I want to keep it that way. During my lowest body fat periods, I was training for half and full marathons, which I am not planning to ever do again.

So, it appears that for me, I might need more cardio. From my research, I know that this may inhibit muscle growth, but that effect is because of calorie deficit. So, I will add more cardio (but low stress activities like swimming, rowing, and the elliptical) and I need to find a good healthy source of extra calories. I hate to rely on protein shakes, but that will be part of it. I have also seen some research that would indicate that I should substitute whole starches for tofu and tempeh because of their high fat content.

So, my breakfast will have fewer tofu scrambles with tempeh bacon and I’ll have to come up with a bean/quinoa breakfast. I also make an egg substitute from mung beans that has better macros than Just Egg, which I’ve been having a lot of. I will also cut bread as much as I can—mostly this is a problem because I use plant burgers as an easy lunch—I’ll just have to have it with no bun.

So, my new lead measures are to keep the strength workouts, add three 30+ minute low-stress cardio workouts, and keep the breakfast, but lean more on beans/quinoa/mung beans and less on tofu and tempeh, and skip the bread as much as I can. I will need more calories, but I will find them in whole starches.

In any case, don’t let my fitness choices distract you. The point is to periodically look at your desired lag measures for your goal and make sure your lead measures are moving towards it. It’s not something you can see every day, but I think four weeks is enough.

Write for Yesterday

I aspire to write a post every day, but sometimes I’m busy and I forget. I don’t want to break the streak, so I allow myself to post to yesterday, which I’m doing today.

Build a Progress Bar for Your Work

When I begin a coding session, I start by taking the task I need to do and breaking it down in fine detail. For example I am working on personal productivity system, which has a “Project” concept. In my first pass, Projects just had a name field. I was just working on getting the relations right. Now, I want to flesh it out a bit. I have a Jira issue with the title: Add “color”, “startDate”, and “endDate” fields to Projects.

Here’s how I break that down:

  1. Add fields to DB entity
  2. Add fields to DB createProject, updateProject
  3. Test DB
  4. Add fields to server GQL createProject, updateProject
  5. Add fields to client GQL createProject, updateProject
  6. Add fields to client GQL project query
  7. Add fields to client model and redux initialize
  8. Add fields to redux createProject, updateProject
  9. Add fields to API/Optimistic updateProject, createProject
  10. Test API/optimistic update/redux
  11. Add a color picker for setting color
  12. Add UI to create project dialog
  13. Add UI to update project dialog
  14. Test UI

I could get more granular, but this is about the level I like. I put them in my task manager to keep me on track and to make sure I’ve thought the problem through. This will roughly be the order I do it and the commits I make.

It guides the session and keeps me on track. If I don’t finish, I just move the incomplete tasks to the next day, which lets me preserve some of the momentum from the previous one. Also see: Green, Refactor, Red, where I end the session with a failing test for the next task I want to do.