Obsessive Code Structuring and 15 Minute Task Breakers (GHD052-054)

Obsessive Code Structuring and 15 Minute Task Breakers (GHD052-054)

Friday through Saturday (March 25-26) were days largely devoted to work, because work = money and money means I will have the means to pursue my own goals! To make the work more interesting, I livestreamed my Javascript work session on Friday; it turns out that when I believe people might be watching, I try to be more of an example! On Saturday I used the momentum I had built-up to keep going, and Sunday I took it easy as I reflected on two major insights about being continuously productive.

The Joy of Being Obsessive

With the Friday/Saturday work, I allowed myself the indulgence of taking the time to converge on the best solution, as opposed to pursing the most expedient solution. This makes a big difference in my personal satisfaction, but can be sometimes hard to justify to a manager-type person. For example, here’s the essence of what I accomplished over two days: an improved directory layout for the project!

-- BEFORE ----------------   -- AFTER -----------------

   assets/                      assets/
   . images/                    . images/
   . javascripts/               . modules/
   ... 1401/                    ... 1401/
   ... 1401-games/              ... 1401-games/
         demo/                        demo/
           game-main.js                 game-init.html
   ... app/                             game-init.js
         viewmodels/                    game-run.js
           demo.js              ... app/
           shell.js                   viewmodels/
           welcome.js                   welcome.js
         views/                       views/
           demo.html                    welcome.html
           shell.html                 main.js
           welcome.html               shell.html
         main.js                      shell.js
   . styles/                    ... vendor/
   . vendor/                    ... vendor-extra/
   . vendor-extra/              . styles/

Some of you might be thinking, “This took two days of work? What’s so hard about that?” Well…LOTS OF THINGS! :)

  • I didn’t know if I could easily move these files without breaking the webapp framework I’m using, a nice one called Durandal. This meant understanding how the framework itself functioned; sort of like understanding how your car engine produces power and converts that to forward motion, rather than just knowing it ‘makes the car go’.
  • Renaming a directory means checking the entire project for references to that directory. An important top-level directory like javascripts is gonna be seriously linked across many files.
  • I needed to consider and refine the contextual function of each file and folder so they made more “semantic sense” to me. Then I needed to do additional coding in the compiling tool so adhering to the semantics doesn’t impose an additional burden. The goal is to making it easier by having to remember less.

So what did I buy for all this effort? Two things:

  • It’s a lot easier to infer the runtime structure of the webapp just from the folder and filenames, which is ludicrously difficult in a lot of other frameworks.
  • It’s a lot easier to duplicate-and-modify an existing game by just copying a folder and editing its contents. Before, you had to edit 4 different files across 3 different directories which was error-prone and irritating.

I think these are important changes, and it’ll make it easier to explain how the system works when I get around to teaching based on it. However, because a lot of these tweaks are for my benefit as well, I bill them at 50% rate as a concession to not prioritizing expediency. The functionality of the system is exactly the same as it was two days ago, after all. For the coming two weeks I will be focused on building NEW functionality.

Important Productivity Lessons!

It’s hard for me to maintain motivation and focus working solo, so I’ve found the following approaches helpful this week:

  • Livestreaming is a good way to “work socially”, at least so far, without actually having to go to an office. I might still be in the novelty-enjoying phase of livestreaming, so it remains to be seen if this is a long-term strategem I can employ. For now, streaming and talking about what I’m working on has helped me stay focused and accountable, while also encouraging me to share and explain what I’m thinking. This might help me code, though I’m not sure if it’s less efficient. I have avoided taking “headache naps” while I stream, so there is that!

  • I’ve found that I can start a project faster by just allocating 15 minutes to starting it to see how far I get. I usually am obsessed by how long a task will take, and long tasks tend not to get started because I want more instant gratification. I can sidestep that issue by fixing the amount of time to 15 minutes only, eliminating a great deal of uncertainty about the length of time. In almost every case, just starting that 15 minutes has led to much more progress than I foresaw. I can see a new form coming out of this!

I’ve also been mindful of scheduling puttering time into every day, low-level side projects that lead to environmental improvements. For example:

  • Bought a lot of small lightstand / microphone / camera adapters to switch between 3/8″, 5/8″, and 1/4″ screw mounts and stud connectors, so I could more flexibly mount my Zoom H5 recorder/audio interface.
  • Bought a new monitor and rearranged my desk setup for improved space utilization.
  • Replaced the batteries in my car’s electronic key fob, which had died. The new batteries fixed it!
  • Bought some new tools to replace the gas cylinder in my office chair, an old Steelcase Leap V1. It has been sagging too low even for my stubby legs.
  • Bought some headphone hangers so I could stow them out of the way, but still access them quickly.
  • Tweaked the camera setup for my Open Broadcaster setup.

This stuff has helped fill-in the days. I’m actually feeling pretty good about them. A lot of them started with the 15-minute time block, too!

GHDR Points Earned

Currently I’m not tracking points until I redesign the GHDR tracking form. I may bite the bullet and buy a new printer, dumping the old one at Good Will because I can’t see it ever becoming a viable long-term printer even if it was repaired. It just makes me angry every time I try to use it, an inherent flaw in the inkjet technology. I could put another 5 hours into it, or buy a new printer that hopefully never irritates me again AND allows me to start prototyping forms again.

For the fun of it, though, I’ll just allocate myself 12 points for Friday, Saturday. I’ll give myself 3 points for Sunday.

22 FRIDAY Work Deliverable + LiveStream
12 SATURDAY Work Deliverable
3 SUNDAY Posted words on this website, researches games

This week I will have to focus on paying work, so I’ll have to apply that 15 minute chunk rule as often as possible. I will try to do it at least three times every day, and report on that!

About this Article Series

For my 2016 Groundhog Day Resolutions, I'm challenging myself to make something goal-related every day from February 2nd through December 12. All the related posts (and more!) are gathered on the Challenge Page.