The Productivity of Themed Work Weeks: Week 5 Assessment

It’s time for a quick update for Week 5 of Themed Work Weeks. This week is devoted to my major client project with Inquirium, building an interactive animated web application to facilitate science education in young children for a research group at UCLA.

Overall? It’s been good, but I’m starting to wonder if I am being too productive at the expense of other activities.

On Themed Work Weeks

As I wrote in my last Groundhog Day Resolution Update, I’ve been feeling really productive thanks to these themed work weeks. By that, I mean:

  • I have been able to reliably get into the “deep dive” state, which is required for difficult work like computer programming and design. This is my most important work, and being distracted by multiple projects in a single day is not conducive to it.
  • I am less stressed about getting stuff done, because the IMPORTANT stuff is getting done.
  • I am still dealing with the other commitments I have, but they are not distracting as they used to be.

On a slightly negative note, I’ve noticed that at the beginning of the week I was not as quick to jump into the week’s work, using the entire Monday just getting back up to speed. However, I was also keenly aware not being ready by Tuesday morning would compromise the rest of the week, so I still made sure I was ready to run with something before I went to sleep.

Still? Overall I am loving themed work weeks. However, I’m actually starting to wonder if I’m being too productive. I haven’t really been giving myself any downtime during the week. I think it’s because now that I have a ritual that is finally working, I’m tempted to really apply myself to get even MORE done because there is SO MUCH STUFF TO DO.

Resetting Expectations

With this increased pace of work has come a kind of tiredness. For the past few weekends, I’ve done NO WORK AT ALL because I needed to relax my brain with plenty of alone time and pure consumption. Last weekend I had very full social days so I didn’t get a chance to really relax, and I’ve been feeling it all this week.

Perhaps I need to rein-in my expectations to avoid burning out. Despite how much more productive I’ve felt, I still don’t feel I’m being productive enough.

To untangle this, I’ll use this week’s activity as a dataset to explore the question, “Why don’t I feel productive when I think I’ve been productive?”

This week has been focused on adding a 2D physics engine to our authoring system. Originally I wanted to get this done during the last “Inquirium Theme Week”, but I lost the last day dealing with a problem with our development environment breaking due to a minor change in a dependent tool that had updated. This broke everything, and I spent hours on the Internet learning about stuff I didn’t want to know about to isolate the specific problems, then hardening our system to prevent similar problems from occuring in the future. That had been very frustrating, so I was looking forward to putting the memory behind me and getting something COOL finished. Today is Friday, so four days have elapsed. At the moment I’m still feeling like, “meh, nothing happened”, but here’s what my development journal says what happened:

MONDAY

  • Spent morning and early afternoon taking care of non-project commitments with local organizations I volunteer with, also website problems that had cropped up post-launch.
  • Got caught up on where I had left off on the project by reviewing the no-nonsense “daily development log” (which exists to help get caught-up fast).
  • Had starter conference call with Ben to talk through next steps for the week.
  • Read-up on the physics engine, MatterJS, that I’d picked to use, so I understood what it was supposed to do and how I would work with it in practice.
  • Added MatterJS as a global unmanaged script, moving ThreeJS as well, and updated the project’s bower.json configuration file, so I’d be ready to work the next day.

TUESDAY

  • Figured out where to add MatterJS elements to our existing class hierarchy and run loop, then started to add test code.
  • Got side-tracked figuring out an elegant way to override methods in Javascript, and realized that I probably didn’t need to do it. Javascript is not designed for large program development, and it sucks at stuff like this.
  • Got rudimentary physics interactions working with a very simple game loop. Woot!

WEDNESDAY

  • Got Ben on Skype and SubEthaEdit to co-write a new tutorial for development guidance: “How to use Physics”, which lead to an important discussion regarding coordinate systems in a pixel-based 3D world.
  • Rewrote the sprite and sprite animation classes to use the background image as the reference for how big they are drawn, no matter how “scaled-up or down” the background image is. Needed to deal with asynchronous loading issues.
  • Noticed that we needed to do the same for positioning, but shelved it for Thursday.

THURSDAY

  • Got Ben on Skype and SubEthaEdit to co-write a new tutorial for development guidance: “How to build a 2D scene”, so we could figure out what the 2D coordinate system should be for positioning purposes.
  • Defined “2D Mode” after talking it through as how the pieces in the world (as opposed to the HUD) are positioned versus “3D Mode”, and worked-through what the implications were for the Piece classes.
  • Added 2DMode rendering context to system so it can be checked at runtime, which sidetracked a bit into the system architecture being able to handle simultaneous running activities.
  • Rewrote Piece class position methods to be 2DMode aware, adding support for intelligent scaling of Visual positioning, standardized use of vectors throughout all calls.

Looking back at all that, I’d say that this was actually a lot of work that required not just writing code, but writing it intelligently after thinking about what we really wanted. The result is a more elegant, forward-looking, and usable authoring system. It seems slow because I’m very aware that people just want stuff right away, and I just can’t zap this stuff into existance as much as I think I should be able to…if I were a competent developer with a bigger working memory. As it is, I’m a competent programmer with a small working memory, and I should just stop comparing myself to others.

Another contributor to this feeling of not being “productive enough” is knowing that our goal is a “final product” that we can use this fall, so I am feeling the pressure of having something done more quickly that not. This is my “manager hat” talking, which is often stupid because it is largely concerned with wanting things ASAP, as opposed to being concerned with “doing things right”. If I use the ASAP mindset as my reference, then what I got done this week is a very small amount of work, and the finished product is quite far away. However, if I use the “Doing it right” mindset as my reference, I can say that what got done was productive because it set foundational principles with the tools needed to express them, which will make the system much more robust, predictable, and easy-to-use.

Finding that balance between “ASAP” and “Doing it Right” is a challenge. Furthermore, I also need to find the balance between the work and other commitments to myself and social time. I’ve been more aware than usual of how little time there is during the day to get everything done. Before when I felt stuck on stuff, I was actually more relaxed about it. Now that I’ve tasted improved, possibly-sustainable levels of productivity, I want more and more. This goes counter to my desire to be a practicing member of the Slow Movement…rather than RACE to get there, maybe I need to start practicing it now by placing even FEWER expectations on myself? But to really enjoy a slower pace of life, I think I need to work hard to bring in revenue to pay for it, or work to build systems and products that will bring in revenue without being in a service industry like contract design + programming.

Oh well! I’ll think about this later :-)