10 Practical Tips on Freeing up Mental RAM

In my last post I mentioned that I had recently decided that it was time to overhaul my approach to managing tasks. The changes I implemented were mostly inspired by a book by David Allen called Getting Things Done and I have been extremely pleased with the results so far. As promised, here are some of the concrete ideas that I’ve adopted and incorporated over the last month.

  1. Following a Workflow: I found that my procrastination was mostly fueled by not knowing where to start on something or else feeling that it was too big for the small time slots that I usually had available during the day. Following this workflow whenever I a faced with a new item in my inbox gives me an automatic starting place and a way to boil down a massive, disorganized, tangle of items into a relatively small set of very specific tasks that I need to do.
  2. Treating Collecting, Processing, and Doing as Different Activities - The workflow diagram really only covers the processing part of the equation, which is where you make decisions about things. Two other distinctly different activities are collecting and doing. Collecting simply means recording items that are floating around in your head and placing them into some kind of trusted inbox so that you can process them later (I use rememberTheMilk.com, a Samsung smartPhone which syncs with rememberTheMilk.com, my email inbox, a physical inbox on my desk, and delicious). The idea is that each process requires a separate type of thinking, thus context switches detrimental in terms of productivity and effectiveness. I find that I also gain the most benefit in terms of peace of mind by completing the collecting and processing stages before I attempt to actually do anything (with the exception of the 2 minute rule below).
  3. Transitioning from To Do’s to Next Actions - My TO DO’s used to be very vague, like ‘Get Supplemental Life Insurance’. Now I take the effort to formulate the exact action I need to take and then attach any relevant information that I will need, such as ‘Call Mark (xxx-xxxx) and ask for quote on 20 year, $xx term life policy’. Since all the preliminary decisions and information gathering have been done, I am finding that I am much more likely to actually do it when I have a free minute during the day.
  4. The 2 Minute Rule - If I grab a task from my inbox that will take less than two minutes, I just do it. This keeps my list short. If it will take longer than two minutes, I force myself to put it in one of the ‘deferred’ piles (Next Action Lists) until I am finished processing so I don’t get distracted and run out of time before the processing is done.
  5. Grouping Tasks according to Contexts - Another helpful hint that I picked up from the ‘Getting Things Done’ book is to organize my Next Actions according to the context required to do them (call, errand, home, work, computer, etc.). Now, whenever I am out running errands, I scan my ‘Errand’ list to see if there is any other errand I can tackle that is close to where I’ll be. I’ve been surprised at how much more I get done now that I’ve picked up the habit of scanning the appropriate context list based on where I am and what I am doing whenever.
  6. WaitFor List - This is a very useful list where I now track everything that I am waiting for (the phone company to send me a rebate, the insurance guy to send me a quote, my wife to make an appointment, etc.). I set due dates on them so that I know when it is time to start bugging somebody if things aren’t getting done.
  7. Someday List - By explicitly separating all the things that I am explicitly agreeing to do (my Next Action and Project lists) from the things that are interesting to me but not appropriate to tackle at the current time, I dramatically decrease my tasks list and don’t feel nearly as guilty for those things that I’m not choosing to do at the moment.
  8. Reference Materials - I realized that a lot of items that I thought were TO DO items were simply things that I needed to keep as reference in a system that would allow me to quickly retrieve it when and if I should ever need it (that meant overhauling my existing black-hole-of-a-filing system). To have a good filing system, you really need to take an agile approach and constantly tweak it as new items come in and old ones become obsolete. The best way to do this is to buy an electronic label maker ($30) so that you can quickly relabel folders in a way that is neat and easy to read. 
  9. Delegating and Deleting - These were two activities that I was not nearly aggressive enough with over the years. By having these questions as part of the workflow, I find that I am more likely to weed items out by throwing them away or letting someone else do them instead who is better suited to the task in the first place.
  10. Using Projects to Organize Multi-Step Actions - I found that the items I was most likely to procrastinate on were the things that had multiple steps involved but were too small to traditionally be considered a project. David Allen recommends considering these to be a project, which he defines simply as a place holder that is useful for periodically generating Next Action items and organizing supporting material. This is great for smaller projects because it naturally lends itself to breaking things down into more manageable chunks. He also has some great suggestions for larger projects in terms of defining goals, envisioning outcomes, and brainstorming possible tasks.

If you’re interested in learning more about these concepts, I definitely recommend buying the book (which is a quick read) or visiting some of the resources here.

Related posts:

The Joy of Freeing Up Mental RAM

I’ve always been somewhat prone to procrastination, especially in my personal life, but I’ve watched with growing trepidation as my task list has slowly grown out of control over the last several months.

Part of this trend is due to being a new parent. I expected that having a newborn would consume the majority of my free time, although I must admit that it didn’t completely sink in until it happened. What I didn’t expect was that my “honey-do” and “male provider” lists would also grow dramatically as my both mine and my wife’s biological instincts kicked into high gear. Meanwhile, my list of new tools and technologies to explore continue to mount as suggestions pour in from twitter, my blog, and my RSS reader.

The result is that I have many times more tasks to do than before but now I only have a faction of the time to get them done. This new reality has left me feeling overwhelmed, paralyzed, and generally less productive with the time I do have.

A few weeks ago I finally came to the conclusion that I needed to severely overhaul my approach to managing my tasks if I ever had any hope of feeling calm and productive again. Someone on Twitter suggested I pick up a copy of David Allen’s Getting Things Done book, so I started there. I’ve always had an aversion to business self-help books, but desperate times called for desperate measures so I picked up a copy in the bookstore.

I was surprised by how quickly my skepticism disappeared. I was especially sold on the author’s clear explanation of the negative consequences of relying primarily on our brain (mental RAM) to juggle all of our TO DO’s. Not only is this common approach tremendously inefficient since our brain randomly reminds us of things we need to do repeatedly at times when we can’t usually do anything about it, but it also perpetually consumes a limited resource (especially in my case) thus slowing down our overall mental functioning. In other words, it is like trying to get something done on your computer while running a dozen instances of Visual Studio 2008. You can do it, but it just isn’t what I would call an optimal experience.

The premise of the book is that it is possible is overcome this dynamic and achieve a calmer and more productive state of mind by simply transferring all of your tasks from your head to a trusted external system. In GeekSpeak, it would be the equivalent of flushing all those nagging thoughts from RAM to disk, which makes sense since you really only need them in memory when you are actually in a position to do something about them.

This analogy, along with the remarkably clear and helpful diagram below, convinced me to make a several week investment in optimizing my approach to getting things done.

The results have been dramatic. Not only do I feel like a huge psychic weight has been lifted from my shoulders, but I’ve completed a huge list of tasks that I had been procrastinating on for months and in some cases years. I also find myself fitting tasks into much smaller chunks of time during the day because I have organized them in such a way that they take much less mental energy to tackle, thus I no longer feel that I need to set aside a huge block of time to do them.

Even more surprising is that I find that doing things on my “Next Action” list is slightly addictive. Crossing off an item feels like lightening the load by removing something from a heavy backpack I have to carry around with me everywhere I go. There is an immediate relief in it.

If any of this sounds familiar to you, then I would recommend picking up a copy of David Allen’s book. It’s a very quick read.

For those of you that are intrigued but not sold enough to actually buy the book, stay tuned for my next post where I’m going to share all of the concrete tips that I’ve edited out of this post so as to keep it a reasonable length for a change.

Related posts:

Geek Community: Path to Self-Actualization or Pit of Unproductive Negativity?

I firmly believe that the answer to this question is…yes.

A Little Background (a.k.a. My Hermit Roots) - Like most geeks, I’m an introverted fellow by nature. I’ve never had trouble mustering the requisite polish when it came to interacting with clients and executives on the job, but when given a choice I would always rather be absorbed in code with my headphones on and a ‘do not disturb’ look of concentration on my face. Until recently, I preferred keeping to myself when it came my professional development and problem solving endeavors and routinely chose thick technical books, laser-focused research, and solo debugging efforts over blogs and community forums. I didn’t really see the point of developer communities and I doubt that I had a single person in my professional contact list that I didn’t know directly through a current or prior work experience.

The Slippery Slope into Community - I didn’t start to change my solitary ways until a few years ago when I finally decided to start subscribing to blogs in earnest (I know that I was extremely late to the game on this one). Before long, I graduated to leaving comments and then eventually to writing posts on my own blog, thus firmly entering into the realm of geek community by publicly exposing my own thoughts to the world for examination and potential (…ok probable) ridicule. Finally, through the magic of Twitter, OpenSpace conferences, and social networking sites, I began interacting with my fellow kindred geek spirits on a more informal basis and getting to know many of them personally. At the last conference, I was shocked when I realized that for the first time ever I was more excited to meet and interact with the other participants than I was to listen to the content of the sessions. That was the moment I first started to realize that my understanding and appraisal of geek community had significantly shifted.

A Place of Extremes - In the short time that I made the journey from geek hermit to neophyte community member, I have experienced the following highs and lows.

First the good

  • Real World Experience over Theory - Most of the content I see in traditional articles, books, and Knowledge Base entries seem overly theoretical and shallow because many are often based on idealized vendor technical specs or the author’s limited experiences with pet projects and demo applications. By contrast, many of the blogs or twitter rants I read are from people on the corporate front lines who are constantly dealing with the edge cases and pushing the limits of the technology. Despite being less polished than their more formally published counterparts, community based sources of information often yield much more valuable hints, insights, and warnings.
  • Analysis and Recommendations over How-To - While traditional learning venues almost exclusively focus on the HOW, community discussions are often centered around the WHY. In the age of google, learning HOW to use a new tool, framework, or API often borders on the trivial, but figuring out which one to use can become an overwhelming decision. This is where being part of a network of really smart people who readily share knowledge and experience can really pay off.
  • Perspective - No matter how large your IT department is, your work will be confined by a particular culture and set of technologies and practices. By contrast, online communities are usually comprised of developers from all over the world and thus offer fresh ideas and needed reality checks that you just can’t get from your co-workers. While your co-workers may be fearful or too polite to challenge your latest dumb idea, you can rest assured that developers you interact with ‘in the wild’ will be brutally honest.
  • Camaraderie - Besides being a source for excellent recommendations and discussions, I find Twitter and the comment sections of blogs to be a place where I can relieve some stress from the day by being able to joke or rant. Sometimes the lack of “face to face” social constraints has a very positive affect and allows people who are normally quiet and serious in a work setting (like me) to be much more light-hearted and humorous in a virtual community. The Canadian blogging circuit in particular (Justice, Donald, D’Arcy, Tom, et. al) has been a reliable source of comedy relief for me over the last few years.

Now the bad…

  • Anonymity Breeds Meanness - If you haven’t been personally zapped by an unnecessarily rude comment, then you haven’t spent much time in online discussions. In a process that makes road rage look tame, the anonymous aspect of online interactions can turn normally sane people into ranting, frothing-at-the-mouth maniacs.
  • The Need to Shrink the World - The first time I looked at the world map of my readership base in google analytics or scanned the diversity of topics available on reddit, I was struck with the uncomfortable realization that the world was unbelievably ginormous place. Unfortunately, the first reaction that many have to this psychological shock is to try to shrink the world back down to a manageable size by dividing it into a small select group of enlightened technical wizards (to which they belong) and a massive group consisting of the rest of the dimwits. This is the driving force behind the formation of so many identity cliques that divide people along otherwise trivial lines with a frightening religious-like fervor (i.e. Mac vs. Linux vs. PC, Microsoft vs. Sun, Dynamic vs Static languages, Mort vs. Einsteins, etc.). The world is just a more manageable place if you have justification to dismiss a large portion of it as irrelevant.
  • Flame Wars and Twisticuffs - As egos collide and tempers flare, even the most reasonable discussions quickly degrade into purse fights, twisticuffs (twitter fisticuffs), and flame wars. When this happens, the geek blood lust takes over and the pursuit of knowledge takes a back seat to the all consuming goal of winning the argument. I have occasionally been sucked into these “Lord of the Flies” type spectacles and I’ve always emerged feeling drained, dumber, and ashamed of myself.

What to Do? I admit that I occasionally have days where I am tempted to crawl back into my introverted shell and seal myself off permanently from blogs, twitter, and all other forms of geek community. Despite the silliness, meanness, and time-wasting qualities that lurk behind some online community interactions, I still have to conclude that it is the only viable option for a geek looking for self-improvement.

Nevertheless, before diving headfirst into community, you’ll need to learn to recognize the potential pitfalls and devise strategies for avoiding them. This could be as simple as unfollowing, unsubscribing, or generally avoiding people who trigger your geek rage or it could involve a more radical approach of taking a periodic hiatus from the online world to recharge your batteries. Failure to do so could lead you down the path to the geek dark side and eventually turn you into one of those curmudgeonly old trolls that lurk on mailing lists waiting for their next unsuspecting newbie victims.

In the spirit of community interaction, I leave you with the following questions for you to ponder and respond to:

  1. What are the other positive and negative aspects to geek community?
  2. Do you really think community is the fastest way to self-improvement?
  3. If you are a believer in community, how do you avoid all the negative aspects?

No related posts.

ALT.NET Conference Part Deux: Was the Sequel Better than the Original?

As I mentioned in this last post, the Austin Alt.NET conference last fall was one of the best conferences that I had ever attended. Nevertheless, I liked the second one in Seattle this last weekend better.

Here are a few reasons why:

  1. Alt.NET has finally been defined - There was quite a bit of time spent at the first conference and in the news groups afterwards arguing about fundamental issues like what Alt.NET meant and whether or not the name was too divisive. Although these questions were important to hash out in the beginning, the topic quickly grew stale for me and I certainly didn’t relish the idea of listening to even more debate about it. Apparently I wasn’t the only one that felt this way because the only mention of it was a topic suggestion done in jest about renaming Alt.Net which was promptly greeted by groans and eye rolling. No longer having to deal with this mental baggage meant that there was much more time to focus on substantive technical issues. For example, I was pleasantly surprised when the opening night fishbowl immediately delved into a top notch discussion about whether or not polyglot programming is a desirable industry trend.
  2. Open Space Format No Longer an Issue - Another roadblock that caused the first conference to get off to a slow start was the skepticism regarding the Open Space format. While everyone eventually warmed up to this approach, I remember quite a few sarcastic barbs the opening night that were funny but ultimately detracted from the quality of the discussion. The fact that the organizers didn’t really have to waste any time explaining or converting people to the Open Spaces philosophy this time around was another contributing factor to how quickly discussions became productive.
  3. Better Mix of Geek Celebrities, Alpha Geeks, and Regular Geeks - Expanding the participant list to 150 and reserving 50 spots for invitation only celebrity geeks was a stroke of genius. The mix at the first conference was great, but the mix at this one was even better. In my opinion, the biggest threat for future conferences in terms of “jumping the shark” would come from altering the number of participants or unique geek ratio too much.
  4. Microsoft Employees No Longer on the Defensive - In Austin, I definitely got the sense that Microsoft employees were either walking on eggshells or else (often legitimately) defensive. Since then, I believe that the ALT.NET group has collectively decided that the ideology\movement is ultimately grounded in .NET and thus the purpose of the group is to push Microsoft into improving the current development experience rather than trying to instigate a mass exodus of developers to other platforms. I think this shift in mind set made a huge difference in how productive conversations were and how willing prominent Microsoft employees were to attend. Some of the more notable Microsoft attendees included Scott Guthrie, Scott Hanselman, Phil Haack, Brad Abrams, John Lam, Dustin Campbell, Glenn Block, Howard Dierking, and many more.
  5. More Focus on Positive Examples of Microsoft Technologies- Instead of focusing too much on canonical examples of tools and technologies that Alt.NET’ers have traditionally criticized, such as the Entity Framework, Enterprise Library, or SSIS, many of the discussions focused around technologies that are being received more warmly, such as the MVC Framework, IronRuby, IronPython, and F#. Besides demonstrating how scary smart he was by diagramming out some of the internal implementation details of the DLR, John Lam impressed many Alt.NET’ers by mentioning things like his regular IM conversations with the head of the JRuby project or his team’s painstaking efforts to move towards passing 100% of the Ruby community test suite. Phil Haack enjoyed similar kudos for the efforts that he and his MVC team have made to solicit and incorporate community feedback into their product as well as learn from existing MVC frameworks in the industry and even openly release the source code.
  6. Leadership - I hesitate to even mention this one because Scott Bellware contributed so much to the first conference and he was so relaxed and agreeable this weekend. But let’s face it, as a conference leader, David Laribee just doesn’t have the same baggage to contend as Scott Bellware, whose publicly confrontational demeanor tends to cause friction at every turn. Despite poking fun at him from time to time on my blog, I respect Bellware and wish he was still blogging, but I have to admit that I’m glad that Laribee took over the organizing reigns for this conference. By the way, be careful about complimenting Laribee on how well the conference was organized or he will try to rope you into helping organize the next one…:-)

So what about a future Part 3 to this conference series?

I heard about 3 different potential follow up Alt.NET conferences this weekend that would take place in Canada, Austin, and possibly Boston. I’m not sure which one will emerge as the next viable option, but I’m definitely going to stay alert for any news.

I don’t know if the next conference will be as good as this one, but the odds are that it will still be much better than the passive, spoon fed material that you can expect from traditional conferences.

Related posts:

Alt.Net: The View from the Cheap Seats

I’m currently en route to Seattle to attend my second ALT.NET conference, so I thought I would take the opportunity to organize some pre-conference thoughts.

ALT.NET in a Nutshell (at least by my reckoning)

Alt.NET is a nascent, loosely organized ideology that started as a vibrant blogosphere reaction to this post by David Laribee and has since evolved into a number of conferences, user group meetings, and mailing list discussions.

Alt.NET conversations I’ve followed tend to focus on…

  • Shifting the emphasis away from the latest and greatest API and towards a discussion of sound principles and practices that transcend specific technologies.
  • Shunning “Demoware” and visual designers that offer quick, flashy functionality at the expense of long-term maintainability.
  • Taking a “best of breed” approach to tools and frameworks and frequently looking to the open source community or competing vendors rather than the traditional Microsoft fare to enhance the .NET development experience.
  • Fostering a healthy debate regarding the best way to develop software, thus shifting learning away from a vendor-centric, how-to learning experience toward a more interactive dialog.

The canonical example of an Alt.NET view of the world is the vocal criticism by many in this community of the Entity Framework. Most Alt.NET’ers prefer open source ORM alternatives, such as NHibernate or Ibatis.NET, because unlike the Entity Framework they follow the principal of persistence ignorance, which removes database dependencies from the code thus allowing business objects to be tested more easily and cheaply. While this position may seem like common sense to many, it is considered “Alternative” to most because it challenges the default behavior of many executives and mainstream developers who are more comfortable with following Microsoft’s lead on all technical issues.

If you want more information on the question of “What is Alt.NET?”, I recommend reading this short MSDN article by Jeremy Miller . If you have some free slots in your podcasting queue now that lawn-mowing season has started, then I also recommend the Hanselminutes episode with David Laribee or the recent DNR episode with Laribee and Jeremy Miller. You can also read about some of my own impressions of the first conference in Austin along with a humorous pictoral retort that I put together in response to some of the public criticisms of the conference being too elitist.

Why am I in the cheap seats?

A quick glance at the participants list reveals a high number of well-known speakers, authors, tool creators, and bloggers. I was a little bit star-struck by being surrounded by such a high concentration of geek fame during the last conference and this time around the participant list is even more impressive. I would consider this group to occupy the box seats in my little sports event analogy and I’m not even close to being there. In fact the guards would probably beat me mercilessly if I even deigned to stare wistfully at this section for too long.

Next comes the middle seats. These are the ones occupied by the B-List bloggers and dedicated open source contributors. I hadn’t heard of many in this group before, but was duly impressed last time with their extensive experience with topics that I only had a cursory knowledge of, such as Domain Driven Design, Behavior Driven Development, DSL’s, IoC Containers, MVC Frameworks, and Mocking containers. Unfortunately, I’m not in this group either.

That leaves the cheap seats. That is where those of us who are seasoned developers and agree with the alt.net principles, but have little experience with most of the tools and practices discussed at the event sit. Last time I mostly just shut up, listened, and tried to learn a few things while sitting in this section. Although lurkers are not generally appreciated at an open spaces event like this, I was at least comforted by the thought that I might eventually help spread the good word to my fellow Joe-developers back in the trenches.

I’m afraid I am destined to sit in the same section this time around. I’ll do my best to be a more active participant in conversations, but realistically I still don’t have enough experience with most of the popular ALT.NET tools and concepts to shed my lurker ways just yet. So, if you see a little unobtrusive speck high up in the nose bleed section of the conference, that is probably me.

What am I hoping to gain from the cheap seats of the conference?

  1. Feel more stupid than I do now - My primary professional growth strategy so far has been to surround myself with really smart people in hopes that I will learn something by osmosis. I’m pretty sure this will be one of those situations. One unfortunate side effect of this approach is that I am perpetually humbled, which makes it really difficult to bask in the glow of a good old fashioned geek superiority complex. However, it is a small price to pay for all the fancy new developer tricks I learn.
  2. Improve my criteria for evaluating tools and products - The one thing that prevents this type of gathering from devolving into a geek popularity contest based on which tools you use is the genuine attempt by most of the participants to define somewhat objective criteria by which to judge technology. For example, if I explain to my coworkers that we should use NHibernate instead of the Entity Framework and or the MVC Framework instead of WebForms, then I want to be able to articulate that these products are inherently more testable, which will help us modify our applications more quickly and with less risk. This type of approach tends to hold much more sway in the IT world than the old standby “all the cool kids are using it” argument.
  3. Explore the development landscape - The .NET open source community may be relatively young and small compared to the Java community, but it nevertheless represents an overwhelmingly enormous amount of information for one person to sift through. When you throw on top of that the deluge of technologies being released by Microsoft as well as all of the relevant competing vendor products, then there is simply no way to adequately survey the development landscape other than through a sharing of ideas by passionate developers with diverse experiences in conferences like this.
  4. Finally meet people I know - Huh? It sounds weird, but in the last year I’ve corresponded with a large number of people through blogging and tweeting. It seems that most of them will be in attendance this weekend. The small, open space format of this conference is ideal for making and strengthening professional contacts and becoming more engaged with the developer community. While google is still my fallback research tool of choice, I’ve been amazed at how valuable the daily conversations I have over email, twitter, and blog comment sections with like-minded developers all over the world can be. Hopefully this weekend will help me begin to tune into and use the developer community even more effectively.

In conclusion, I’m obviously excited about this weekend, despite my relatively lowly status on the ALT.NET food chain.

If you’re new to ALT.NET, I highly recommend attending one of the upcoming conferences or joining one the main mailing list to find out for yourself what all they hype is about.

No related posts.

The Case Against Overtime

I remember reading the eXtreme Programming Core Practices several years ago and smirking when I got to the practice that called for regular 40 hour work weeks for programmers.

Like many of my fellow developers, I saw overtime as a geek badge of honor and felt pride at having enough stamina to regularly work 60-80 hours a week on my death march project.

Although I occasionally received half-hearted warnings from management to slow my pace down in order to avoid burn-out, the underlying message from above was clearly that my willingness to work long hours made me an exemplary employee and that overtime was one of the surest paths to professional growth and advancement.

While I may have agreed with the XP practice of capping the work week at 40 hours in theory, my traditional geek machismo prevented me from accepting it as anything other than a naive and idealistic goal that would probably never be gain widespread acceptance in corporate America.

That was then.

Now, when given a choice, I rarely opt to work overtime for my employer (at least not directly according to my task list). I would never hesitate to work extra hours prior to a release or due to unexpected production problems, but I now view anything more frequent than that as a serious problem and even as a potential reason to start looking for another job.

Why the dramatic change in attitude?

Here are some reasons that finally caused me to stop seeing overtime as a heroic effort and start seeing it as a destructive practice that is a sign of a seriously broken process within an IT organization.

  1. Lost Opportunity Costs in Professional Growth - Once I completed a handful of large projects in my career, the opportunities I saw for professional growth started coming more and more from external sources outside of my job. While I  still learn plenty during the day by observing my co-workers and attempting to solve common problems in novel ways, I often feel that my skills grow faster outside of work through reading, writing, presenting, social networking, and pet projects. It is sometimes tempting to spend 10 extra hours a week clearing the items from my daily TO DO list, but I believe that I am accomplishing much more for my professional career by devoting those hours to catching up on my RSS feeds, working my way through my tech book reading list, or exploring new programming languages instead.
  2. Increased Professional Risk from Lack of Diversification - Everyone knows that diversification is the key to managing financial risk, but few people seem to apply this principal to their professional careers. Most developer shops are relatively limited when it comes to the number of technologies and problem domains they deal with. If you want to diversify your resume without job hopping every year, then it makes sense to actively seek out technology experiences that are different from the ones you use in your day job. By this reasoning, working overtime will increase your professional risk by reinforcing skills you already have whereas working on open source or pet projects that require you to learn new skills will mitigate your professional risk and make you more marketable should you ever decide to leave your current job.
  3. Decreased Professional Passion - To paraphrase Jean-Paul Boodhoo, the best fuel for professional growth is always a developer’s joy and passion for his or her craft. I find it much easier to sustain this passion when I am allowed free reign to follow my curiosity. Work doesn’t usually allow for this type of unstructured exploration, but free time does.
  4. Lost Productivity - Overtime work is highly susceptible to the law of diminishing returns. Spending long hours on the same tasks in a high stress environment leads to fatigue, which in turn leads to producing poorer quality work at a slower pace. When you factor in the time it takes to find and fix bugs and design flaws produced by overly tired developers, the net gain for twenty hours a week of overtime probably drops down to only a few hours while at the same time greatly increasing the risk to the project. Overtime just doesn’t yield the results promised by management Gantt Charts which provide an oversimplified view of the software development process by only measuring the quantity of the hours spent on tasks without also taking into consideration the quality of the time.
  5. Poor Code Quality - Besides being more likely to miss obvious errors, developers who are under pressure and fatigued are far more likely to cut corners and engage in shallow thinking when it comes to design solutions. Besides driving up the long term cost of a project by making it more difficult to maintain, code quality issues can put the whole project or even business at risk by introducing critical errors and undermining customer confidence and loyalty.
  6. Lost Personal Revenue - If you are a salaried employee and your are concerned with maximizing your personal income, then you should read this post by Max Pool where he points out that you are almost always financially better off to focus your time across multiple revenue streams rather than allowing your time to be sucked up by one job through excessive overtime.
  7. The Usual Personal Reasons - These are all the usual things that workaholics neglect until it is too late, such as family, friends, health, and entertainment. Although I think they are among the most important reasons, many of us seem to have blind spots when it comes to these issues due to cultural biases so I chose to focus on other more novel arguments about overtime in this post instead. Nevertheless, these are some of the most compelling reasons to question any work schedule that consistently includes overtime.

If you are convinced about the evils of chronic overtime but don’t know how to break out of your current overtime cycle at work, then meditate on the following two concepts:

  1. Time Should Be Fixed, but Features Should Always Be in Flux - If a customer went into a store and put more items in their shopping cart than they had money for, then they would reasonably expect to have to put a few items back while checking out. This is exactly how it should work in software, but the reality is often that customers naturally have a very difficult time connecting their feature requests to a real cost because IT departments have traditionally been so willing to hide the extra cost through overtime. Agile iteration planning and planning poker does a great job of addressing this issue by having developers assign a relative point cost to each feature, tracking an average velocity of points completed each week, and then only allowing customers to choose enough features to equal the velocity points in any given iteration. Besides providing a much more realistic expectation of what can be accomplished in an iteration, this approach emphasizes that developer time is a fixed resource and that feature requests must be variable based on continual assessment and reprioritization.
  2. A Large Number of Proposed Project Features are Unnecessary and even Harmful to the Project - It is amazing how many "must-have" features suddenly become unimportant when a project is time-boxed and resource-boxed in an effective way. I’ve actually seen overall  product quality and customer satisfaction increase in these circumstances because it helps focus stakeholders on what is essential about a project and aids them in more easily spotting bloatware features that would otherwise delay implementation, increase cost, and hinder usability without returning discernible value.

Sometimes you just can’t change the way your processes work or management thinks, but you can always change your own attitude by resisting self-imposed or peer pressure to work overtime. I’m guessing that the majority of overtime is not officially mandated, but rather manipulated through subtle peer pressure. If that is the case, just say no.

If your goal is constantly to maximize your own professional growth, then you’ll be surprised at how much respect you can still win without playing the overtime game. For example, who do you think is going to get noticed more, someone who closes a few more issue in the bug tracking system, or someone who is able to introduce a new concept, process, tool, or technology to the group because of work done in their spare time?

In conclusion, the next time the opportunity for overtime arises, ask yourself if you are really maximizing your professional growth or if you are just focusing too much on short term job goals and not enough on long term career goals .

Related posts:

Conspiracy++

Don’t worry, I’m not going to join the growing ranks of developers with false claims of responsibility for the the Alt.NET pursefight blog (i.e. Bil Simser, Donald Belcham, Derik Whittaker, Sergio Pereira, Tom Openorth, David Woods, and Kyle Baley) .

My confession is way more shocking.

The more astute among you have noticed that D’Arcy Lussier has shown signs of instability and even mental illness lately. Who can forget the now infamous post that featured many Paint.NET atrocities that are now banned in most civilized nations?

The reason for this disturbing behavior is simple.

His entire blog has been an elaborate hoax that I invented while freebasing experimental, synthetically engineered, black-market coffee beans during a mind-numbing HR meeting one day.

Yes, I have been ghost writing the 50 plus posts a day for years under the guise of a batcrap crazy Canadian to keep up this charade. I even went as far as to hire a homeless guy who I found mumbling to himself on a street corner to impersonate this fictitious D’Arcy character of mine at various User Group meetings and conferences to lend credence to my misguided prank.

But no more…

Due to the recent addition to my family, I’ve decided to expose my blogging sins and turn full control of the blog over to the homeless guy, Burt. For those of you who actually do like D’Arcy’s blog, I’m sure that Burt will be able to maintain the quality of the content that you have grown accustomed to in between his frequent drinking binges.

Forgive me dear readers and may God have mercy on my soul for the havoc I have wreaked on the blogosphere with this cruel practical joke.

No related posts.

Introducing Little Miss Caffeinated Coder

It is my great pleasure to introduce my new daughter, Sofia Isabel Ball.

She decided to make her grand entrance in the wee hours of the morning on the first day of Spring, March 21st, 2008. Sofia wiggled her way out into the world less than 90 minutes after we arrived at the hospital, thus demonstrating that she takes after both her mother and I when it comes to patience or rather lack thereof.

It has been a little over a week since she joined our little family, but I am just now emerging from my new parent stupor enough to give her a proper blogosphere introduction.

Below you can see me attempting to explain anonymous delegates to her.

Here are a few things that she has taught her newbie father so far:

  1. Epidurals Keep Daddies Safe - Contrary to the mild false contractions that my wife experienced in the weeks leading up to that night, the actual labor contractions came on fast and furious. Despite treating all the red lights as stop signs on the way to the hospital, we still didn’t arrive until she was still over 8 cm dilated so she rode out a full hour of intense labor pains while the hospital staff did the prerequisite blood work, tests, and IV prior to administering the epidural. My primary responsibility during that time was endure her kung-fu labor grip, pretend that I wasn’t worried, and not say anything stupid. Once I surreptitiously removed my wedding ring, I was able to endure her freakishly strong grip, but all was nearly lost when I made the mistake of trying to sooth her by saying sh-sh-sh (in my defense it works for babies). She interpreted that as me telling her to be quiet and promptly yelled at me, much to the amusement of the nurses. I managed to avoid any further labor induced abuse until the epidural finally took affect, at which point I could probably have said just about anything.
  2. Babies are more Addictive than Crack Cocaine - I distinctly remember rolling my eyes at people who fawned excessively over babies as little as 5-10 years ago. Now I am physically incapable of not grinning like an idiot every time I look at her. Other addictive behaviors that I’ve noticed in myself include staring at her features as though in a trance, taking ungodly amounts of photos, sharing baby stories with complete strangers, inventing a new pet name every 5 minutes, and reacting to toxic diaper born substances with enthusiasm rather than the normal repulsion.
  3. WWF Style Swaddling - I am seriously considering writing a letter to the hospital and recommending that they have professional wrestlers rather than nurses demonstrate swaddling and diaper changing techniques. There is nothing like trying to swaddle a flailing baby at 4 am in a semi-dark room while sleep deprived to humble a man. I won’t even speak of the dangers of changing a stinky diaper in similar conditions for fear of traumatizing some of my younger readers.
  4. The Truth about Sleep Deprivation - I can’t believe that I was actually foolish enough to think that my late night blogging habit would prepare me for the sleep deprivation havoc wreaked by a new born. On a good night, I’ve gotten a few hours of light sleep at a time (…was that the sound of the baby choking?). On a bad night, Sofia plays this game where she cries every time I put her down and then watches with big innocent eyes as daddy starts to hallucinate while pacing the halls with her. The worst part is that even though she is a perfect angel during the day, I still can’t do anything productive because my mental acuity is so diminished from the night before that I have to struggle to even keep up with reality TV shows. I recently heard that sleep deprivation is sometimes used as a torture technique and now I know why.
  5. Best Activity to Soothe a Fussy Baby - My television repertoire is normally pretty limited since I am usually focused on my laptop whenever the TV happens to be on at our house. However, with a fussy baby in one arm and my intellectual capacities greatly diminished due to sleep deprivation, I have a whole new appreciation for TV. The best find of the week was definitely “My Redneck Wedding” hosted by Tom Arnold. I usually hate reality TV shows, but this one is pure comedic genius.

I’ll leave you with a few parting images:

This is Sofia trying to convince me that she needs coffee to wake up. I’ve decided to hold firm on this issue and not allow her to have any caffeine until she’s at least 2 years old.

This is me demonstrating to Sofia what to do during an Audit or HR meeting.

Finally, this is Sofia all decked out in her Road Warrior attire.

In summary, a) I love being a new daddy and b) please excuse the lower number of posts over the next few weeks as we all adjusts to the new lifestyle.

Related posts:

A Caffeine Inspired Interview with Jeff Atwood from CodingHorror.com

I’m nearing my one year blogging anniversary.

That is just long enough to know that I enjoy it and want to continue doing it for the long term.

It is also long enough to make me start wondering about what comes next. For example, will I find blogging more or less enjoyable a year from now? Will I ever run out of things to say or start to feel burned out after the newness has thoroughly worn off?

I also wonder what it would be like if I ever became a popular blogger and if that is even something I would like to happen. Although it is still thrilling for me to see one of my posts be widely read, my recent experience with a relatively popular post left me feeling as though I wouldn’t scale well in this respect if the number of comments I received on average ever changed from a half dozen to a couple hundred.

My curiosity led me to take a chance and ask Jeff Atwood, the author of codinghorror.com, his thoughts on the subject. Besides being one of my favorite bloggers, Jeff has been a role model for me whenever I think about how I would like to approach my blog in the future. With over 80,000 subscribers, 4 years experience as a blogger, and an amazingly consistent schedule for publishing posts, he is also in a unique position of authority to offer insight into these issues.

On a whim, I emailed Jeff last week and included a list of questions that are in bold below along with a request to publish his answers in an interview style format on my blog. To be honest, I really didn’t expect him to respond given the huge number of emails that he probably gets on a daily basis, so I was more than thrilled when I got a friendly email from him the other day that was not only encouraging, but also contained some incredibly interesting and well-thought out responses to my questions.

Without further fanfare, here are Jeff’s thoughts on blogging. Enjoy.

1. Do you think the style and content of your blog has changed much over the last four years?

I have gotten better over time at writing, simply through the sheer force of doing it every day. That’s one of the biggest reasons I encourage other developers to balance writing code to satisfy the compiler with writing code to satisfy other people. The latter is much more difficult, but it can get you places in life you’d never be able to go using code alone.

As the audience for the blog has grown, I have found it increasingly difficult to justify posting about small, specific, technical problems that I run into. You’ll find quite a few of these in my older blog entries. I naturally tend to enjoy the larger “why” questions anyway, so it’s not much of a limitation.

Honestly, the only difference between good and great blogs is that the good bloggers kept writing until they became great bloggers.

Do you think the blogosphere in general has changed much over that same time period? If so, has it been for the better or for the worse?

I was technically late to the blogging game, only starting in early 2004. Even in the last four years, I’ve seen wide mainstream acceptance of the word “blog” and the idea that random people writing random stuff on the internet can actually influence what happens in the world. It’s a big deal. People take you seriously when you say you have a popular blog. I can’t believe it myself, and I’m not entirely sure how it happened. I think it’s generally a change for the better, in the sense that average people with blogs can have measurable effects in the world.

2. Has your enjoyment of blogging changed any since you started? Did you enjoy it more in the beginning when it was new or later in your blogging career as you became more proficient and your subscriber count grew? Do you think you’ll still be blogging 4 years from now?

I think blogging was unusually natural for me, because I was a decent writer to start with, never shy about sharing my opinions, and I truly enjoyed digging into research for whatever subjects I was infatuated with at the time. I’d say my enjoyment level is the same as it was four years ago, but there’s a deeper sense of satisfaction in knowing something I enjoy doing is interesting (and ideally helpful) to so many other people in the world.

About a year in, I realized that if I hadn’t gotten sick of writing blog posts or run dry of topics by then, I probably never would. The world is an infinite source of inspiration and insight; if you can’t find one interesting thing worth talking about every day, you’re not looking hard enough. Don’t get me wrong, though– writing it up in a meaningful way is still very real work.

3. Have you ever gone through periods where you’ve felt burned out on blogging or felt like you were in a writing slump? If so, what did you do to reinvigorate yourself?

I don’t think I’ve ever been burned out. I sometimes wish I could take a two or three week hiatus from writing for scheduling reasons. My wife is, shall we say “not fond” of the way my laptop is a constant companion with us on vacations so there’s not a long gap in blog posts.

On some level, the blog becomes a part of your personality, an expression of who you are and what you’re interested in. So then not writing blog posts feels unnatural, too. You can’t win.

4. How much time do you spend blogging per week? What percentage of your time do you spend researching vs. writing vs. reading & responding to comments? Do you have a particular schedule you follow?

Considering I am writing this response at 4:23 am, I can assure you that I am not the person you want to ask about scheduling in any way, shape, or form. I’d say as a rough guesstimate that I spend about 3 hours every day on the blog, so perhaps 21 hours a week on average. Sometimes more, sometimes less.

5. Do you ever set subscriber goals for yourself? Do you think that you can scale yourself in terms of comments if you were to double or triple your current subscriber base? Do you always read all of your comments?

I don’t think subscriber goals are helpful. You should have one goal: write to satisfy yourself first and foremost, otherwise you’ll quickly burn out. If you’re even the slightest bit self aware you’ll inevitably be your own worst critic anyway, so if you can satisfy yourself, you’re doing better than most. The audience will come when it comes.

I always read every comment, absolutely. If someone is going to invest the time to post their thoughts on my blog, I can at the very least return the favor by reading their comment. Some of my best blog post ideas come from comments. It’s an open secret in the blogging world that the comments are the best parts of any blog, so ignore comments at your peril. I’d no sooner want a blog without comments than I would want Amazon sans user reviews. They’re incredibly useful.

There is a “web gardening” aspect to comments, where you have to weed out (literally) the occasional evil. A flat, linear list of comments– although pleasingly simple– doesn’t always scale to very large communities, either, and I fear Coding Horror is getting close to that point. The gardening tax gets pretty high as the community grows. I may need industrial farming equipment, and government subsidies. We’ll see.

6. Who has been the most influential blogger for you? In your opinion, what are some of the key differentiators between technical blogs that are just good versus those that are great?

I’d definitely have to cite Joel on Software as one of the key “just one of us programmers” guys out there blazing a trail for quality writing about software engineering and small business since the dark days of 2000. Every technical blogger finds Joel at some point early in their career and takes something from that well, simply because I think he was one of the first to do it really well.

But beyond that, there are so many influences. I love the diversity of the internet, the many voices, the fact that strong writing from any blog is every bit as good writing from one of the anointed “influential” bloggers. I’m constantly stumbling across blogs (not to name drop, but like yours, for example) that pair excellent writing and strong insight. They’re all influences, including you. It’s a two-way street.

That’s one reason why I’m reluctant to maintain a “blogroll”. The world is a big place, and there are lots of smart, interesting people in it. I’d rather people blaze their own trail and discover what they find interesting rather than relying on my recommendations. And then share what they found with the rest of us, of course.

It might be unfair for me to comment on what makes a good vs. great blog. I’m like one of those people you see on television advertising weight loss pills. Look at me, I lost 200 pounds in three months! And then there’s that little teeny-tiny asterisk: results not typical. My results from blogging, I think, are not typical. I wish they were, because I desperately want everyone else to have the same level of success that I have had with my blog.

Once again, I want to thank Jeff for taking time out of his busy schedule to do this.

No related posts.

Rethinking Twitter

A couple of months ago I wrote a post that dismissed micro-blogging as white noise.  I had been only half-heartedly following the twitter page on GeeksWithBlogs and noticed lots of rather dull tweets of the "I’m hungry" and "Just rebooted my computer" variety. I quipped in my post that I might be able to justify Twitter for entertainment’s sake if people posted messages that looked more like this:

* Was attacked by a band of ninjas. I dispatched with them quickly but got ninja blood on my new shirt… about 3 hours ago from jail

* I just took a dump on boss’s Lexus. Suddenly I feel much better about having to work this weekend… about 5 hours ago from whore house

However, nobody seemed inclined to take my advice so I concluded that the medium was probably only suitable as a form of social entertainment for teenagers and was not a worthwhile pursuit for a software developer looking for professional development.

I just didn’t see how value could be provided in 140 characters, especially since the macro-blogging format was already being criticized for promoting superficial knowledge of topics and an even shorter attention span for a profession that is already notorious for ADD.

Well, that was two months ago and now I have a confession to make.

I just checked my Twitter home page and noticed that I have posted over 75 updates (mostly in the last several weeks) and am following over 40 people (mostly other bloggers).

It appears that I have caught the twitter bug.

Why?

  1. Sarcastic Quips - I’m not sure if this is a permanent trend or not, but I’ve noticed that the tenor of my blog posts has strayed from my sarcastic roots and they have tended to be more on the serious side lately. I’m not intentionally doing this, but as I put more effort into the content the humor aspects don’t always naturally fit in as well. Luckily Twitter provides a perfect medium to channel all of my sarcastic energies into nice, concise bursts throughout the day. It refreshes me mentally like a good run refreshes me physically.
  2. New Writing Challenges - My favorite twitter experiment so far has been Twaiku, which is what I call technology related Haiku that follows the traditional 5-7-5 syllable pattern. I’ll probably do a compilation post along with a call for contributions soon. I also like the challenge of trying to squeeze thoughts into 140 characters. One major twitter anti-pattern that I see is continuing single thoughts or even rants across multiple tweets. To me that is a sign that the writer needs to be more disciplined or else move to a different format like email or regular blogs.
  3. Recommendations - I have a whole list of thoughts and impressions about tools that I will probably never turn into blog posts because of the commitment it entails in both writing and research. By contrast, twitter encourages these types of half-formed thoughts. Ad hoc recommendations for tools and resources is one of the more common topics that I see in the twittersphere (right behind potty humor, bizarre links, and TMI confessions) . 
  4. Personal Interactions - One of the more unexpected aspects of twittering for me was the refreshing informality among micro-bloggers. The comment section of blogs can be serious and sometimes even adversarial as people debate the merits of various ideas. Although I’ve seen a few episodes of "twisticuffs" (twitter fisticuffs) between Scott Bellware and …well…lots of people, I mostly see tweeters joking around and having friendly exchanges. While I sometimes wish that the technology to personal/trivial ratio was a little higher for some micro-bloggers, it is still refreshing to see a completely different side to otherwise serious bloggers like Jeff Atwood, who recently twittered a link to a photo of a skydiving cat.

I do still have some reservations about Twitter regarding the overall signal-to-noise ratio, but I think this will improve as bloggers gain more experience with the writing format and Twitter clients start providing more sophisticated means for categorizing and filtering information.

For now, I will continue to take advantage of the freakishly slow compile times on my laptop and consume copious amounts of twitter brain candy.

For those of you who are relatively new to Twitter, here are some of my favorite Tweets from the last several days from macro-bloggers that you’ll likely recognize:

* Scott Hanselman "You know you are coding too much when you secretly wish you had a catheter in your backpack." [blog\msg]

* Phil Haack - "My guess for @codinghorror’s and @wilshipley’s new venture…codingwhore.com! porn == $$$" [blog\msg]

* Jimmy Bogard - "New personal reading material: "physics of the impossible"…has not explained how william shatner’s toupee stays attached (yet)" [blog\msg]

* Eric Engtech- I’m at about 500 lines of code without having checked it into source control. It’s kind of like having sex without a condom." [blog\msg]

* Jeff Atwood - "Computers change; people don’t. 72 years and counting. http://tinyurl.com/2npfyd." [blog\msg]

* Scott Bellware - "Microsoft keeps customer expectations artificially deflated so that they never exceed the capabilities of its products" [*blog* *updates*\msg]

* Mike Gunderloy - "I’m going to get my dog a phone. And then start giving HER number to PR people." [blog\msg]

* Rob Conery - "Twitter is conversational DCOM." [blog\msg]

* David Laribee (a.k.a. "the beatnik tweeter") "The Person Under The Stairs." [msg] …or "Omitting myself" [msg] [blog] (yes, a tad surreal at times…)

* Dewayne Christensen: Public service announcement: Make sure you have extra hose before you try to burn off that dead patch of grass in the yard. [still not sharing sarcasm with macro-blogging world\ msg]

* CaffeinatedTwit (that’s me) - "Twitterer Archetype 1: Person who can’t scale using regular IM, so they eliminate the communication bottleneck by going asynchronous." [msg]

* CaffeinatedTwit (that’s me) - "Twitterer Archetype 2: A person who is only a few bad days away from becoming that guy who mumbles to himself all day on a street corner." [msg]

* Scott Koon (a.k.a LazyCoder): response - @CaffeinatedTwit The bottleneck, in some cases, is that one or more of the participants is batcrap insane!" [blog\msg]

See you on Twitter! (assuming you’re batcrap insane enough to follow me after this)

Related posts:

Next Page »