Simplify Your Workflow: Be Your Own GC

In An Architect's Life, Effective Communication by Eric Lynn0 Comments

Purging brings clarity.

I don’t know how. I don’t know why – but for some reason there is inevitably a sense of clarity and a release of creative energy when we purge our stuff.

David Allen, in his breakthrough book Getting Things Done, talks about the fact that our mind has a background loop going over all the things that don’t have closure. When we don’t purge, our brain is still spending cycles on anything and everything that remains unresolved.

Purging also brings clarity because, frankly, our brains are not that great at handling large lists. We have a very limited number of registers in our brain; studies show that it is 7 plus or minus two. Any set over 10 items must be handled by abstraction and categorization.

But stuff, on the other hand, seems to proliferate. Whatever management systems we use to organize our stuff – from stacks on the floor to mind maps on our hard drive to proprietary “Stuff Management” systems – once the number of items in a category gets large, we tend to abstract the whole set to – “Stuff I Need to Do” or “Stuff I Should Read” or some other useless category. But even when we organize our stuff into well managed, small-list categories our priorities change over time. Time opens up a gap between the organizational structures of our management systems and how we think about things today.

Given the value we gain from purging our stuff, why do we do it so infrequently?

Personal Garbage Collection

We need to establish the habit of personal garbage collection.

In software frameworks, Garbage Collection (GC) involves walking a heap of stuff and discarding every object that no longer has “liveness” – that is, they are no longer reachable through the active set of objects. Modern frameworks have determined that memory is precious enough that it is worth the time to “stop-the-world” and execute an efficient GC algorithm.

As a software architect, the most precious resource is focus, so for us it is worth it to make frequent “stop-the-world” personal GC Sessions.

Yeah, that CORBA security book needs to get tossed

Run a GC on Your Office

Most of us have a bookcase, or maybe two in our office. Glance over – what percent of those books have any value right now.

Seriously, it’s time to purge.

Yeah, that CORBA security book needs to get tossed and the Pro Silverlight 2 in C# 2008 can go. What about those free books you got at the conference 3 years ago – yeah, they are worth what you paid for them – time to go.

It’s time to go through your books, your magazines, the crap stacked on the floor. Most of that has to go.

The pointers to those objects have long since been deleted. It’s pretty amazing that a query with the predicate – “Will I ever open that book again?” can probably yield false on 80% of the books on your shelf. Clearing out the chaff is good for the mind.

Next time you glance at the shelf you will see books that are useful, books that inspire you, books that you could read.

Purge Your Physical Work Space

When’s the last time you purged your physical work space?

“Wait a second,” you say, “I have 3 hours to finish the initial design and present it to the stakeholders.

Seriously, you’re telling me to take time to purge my physical space.”

You know what good old Abe Lincoln said – “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.”

To work on a design, your axe is your brain. The process of software design is the creative process of balancing forces. It is complex. It requires some serious focus.

Purge, and then think. We know we need to close the door, turn off e-mail, silence our phone, whatever else we can do to cut out distractions. But distractions can be internal as well as external and purging removes distraction. Looking down at an empty, clean desk somehow triggers the brain that there is just one task for the next 3 (ok, maybe 2 ½) hours.

Of course, it could just be me – but I don’t think so.

Run a GC on Your Management Systems

The systems we use have a tendency to get stale. I love mind maps for visualizing what I’m working on.  Adding elements is an extremely low-friction activity. But mind maps seem to have a half-life. They have to be garbage-collected on a regular basis.

Mind maps, bug/task management systems, all those “Read Later” folders in your e-mail system, they all represents heaps that need to be walked.

Personal GC Algorithms

So how do we actually perform the GC?

I’ve found three algorithms valuable.

Purge by Moving

One algorithm mirrors what happens when we physically move – whether it is our home or our office. Stuff accumulates because once it is in place it takes effort to remove it. When we move, it takes more effort to move than to throw away. That effort differential gets weighed against its value and suddenly a high percentage of stuff gets thrown away.

Of course, digital assets take no effort to move. We have to artificially create the dynamics of a physical move.

When you come to the end of a milestone (real or simply a time marker like the end of the month), force yourself to recreate your lists.

Friction is good in this instance. Make it so that it takes an action to bring forward items in your list. This forces you to re-evaluate every task/item in terms of your current interests and priorities.

Purge everything that can be purged. Be brutal.

Another heap to walk!

Rank and Cut

A second method for purging is Rank and Cut.

So, let’s say you have a “stack” of articles you’ve bookmarked or, if you’re old-school like me, you have printed out to read when you find yourself with a few extra minutes.

This is a great plan, but after a while the “stack” gets a bit large and, more importantly, stale. This means that the stack no longer inspires you.

You don’t look at the stack and say – “I wish I had a minute or two to get into those interesting articles,” but more like “Someday, I really should read through those articles.” Inspiration has turned into duty. The size of the stack is inversely proportional to the likelihood that anything will get read.

It’s time for “Rank and Cut”. Here’s the algorithm…

  • Step 1 – Select an integer <= 9 (the max # of registers in your brain)
  • Step 2 – Bubble sort
  • Step 3 – Truncate to that integer.

Step 1 usually is pretty easy. My advice, go low. Let’s say we pick the number 5.

Ok, now do the bubble sort. Select the first article and put it at number 1. Pick the next is it more interesting than #1? If yes, put it as #1, else put it as #2. Pick the next, is it more interesting than #1? If not, is it more interesting than #2? If no … yeah, yeah, you know how to do a bubble sort. In the end, you have the stack listed by how much they inspire you to read them. Of course, you will find several that inspired you in the past but have no interest to you now – you can simply purge those.

Now the hard part. Truncate to that number 5. Don’t waver at this moment. You must be brutal – just cut to 5.

Now you have a stack of articles that are truly interesting, and the most interesting is on the top. The stack should inspire. The next time you head to the dentist, you are much more likely to pick up the top one or two and use your time in the waiting room better than leafing through a 10 month old golf magazine.

Archive and Purge

For some reason, we have a reticence to purge. For the most part I think this is F.O.L.S. – the Fear of Losing Something. What if things change and we need it?

The best way to overcome this obstacle is a two-step process – archive and then purge. Fortunately, because we live in a digital world this is a pretty simple process.

Make a backup before you start your purge.

One version of this strategy is great when preparing a presentation. Let’s say you’ve been gathering material for a presentation. You have a document with notes from several articles, snippets of code you might use, ideas about points you want to emphasize, rules-of-thumb you have gathered from your experience, etc. And now it’s time to put together the final presentation.

Take the document you have created and make a copy (I call it my “Tear Down” copy). Now work only with the Tear Down copy. At the top of this document, put 3 things –

  1. Attributes and goals of your audience
  2. Your mission for the presentation
  3. A short list of goals to support that mission

Now, with those key elements in mind, heap-walk your document and delete everything that does not have an active reference to your audience, your mission or the goals you have chosen.

Be absolutely brutal.

You can have the courage to be brutal because you have an archive copy of your document in case you realize you need something. When you are finished, the document will be much more focused toward the presentation you are preparing and you won’t have to wade through pages and pages of irrelevant material as you put together your outline and content.

When the time comes to cover the same material for a different audience, run the algorithm again using the original document applying the new attributes and goals of your second audience.

Be Your Own GC

Most modern apps rely on frequent and efficient GC.

Being a good modern architect can be supported through the habit of frequent and efficient personal GC.


Leave a Comment