There are many things we do that require a large amount of setup before we can actually produce something. For example, these YouTube videos require quite a bit of setup to record. Often, we can increase our productivity in these cases, by learning to produce things in batches.
In this video, I’ll tell you why you might want to consider using batching to help you be more productive and I’ll tell you how I use batching to even make these videos.
This is the 3rd post in a three part series about quitting your job and working for yourself. Check out the first post about why you should want to quit your job, and the second post about the fantasies and realities of quitting your job.
I want to start off by saying that I, myself, have had several false starts and I’ve witnessed countless others who think that they are going to quit their job and live their dream only to wash up, shipwrecked on the shores of reality.
I’ve already talked about the harsh realities of working for yourself. If that part didn’t scare you at least a little bit, or you think that what I said doesn’t apply to you, there isn’t much point reading any further, because this advice won’t help you either.
But, if what I said earlier made you sweat just a little bit; made you just a little bit more unsure of your brilliant plan, then you’ll probably find the advice I offer here immensely useful (I wish I would have had this, advice when I started out.)
Transition into working for yourself
Now, for some people this ends up working out. These are the people you hear of that quit their job to follow their dream and then they created some startup company that got purchased for millions of dollars. Some people also win the lottery and others, unfortunately, get hit by lightning.
But, what you don’t hear about is all the people who quit their jobs to follow their dreams and end up wasting a year or two of their life eating up all the savings they have accumulated from the past 10 years while they suffer from a bout of writer’s block that never ends up being cured.
The truth is, working for the man is quite a bit like slavery or prison. You can’t just be set free and expect that you’ll adapt comfortably to your new life and start fulfilling your dreams. It is a bit like when you get off that 6 week diet you were on and say “ok, I’m just going to pig out a little as a reward, then I’ll get back to ‘normal eating.’” What ends up happening is this instant transformation from the shackles of a restrictive diet to “free eater” doesn’t land us in the comfortable norm of “normal healthy eater” like we’d expect. Nope, instead we take a 1 way ticket to pig-out land until we eventually come crawling back to the comfortable diet prison that we hated, yet required.
The same happens to software developers, and other professionals who go from working for the man to being the man– they can’t handle it! They go nuts, and waste lots of time being unproductive without the structure of a workplace and someone cracking the whip on their back. Eventually, they crawl back to their cruel masters and begrudgingly reenter the rat race.
The problem is that working for yourself requires self-discipline. More than you’ve got right now. Yes, I know that your parents and friends have commented on how self-disciplined you are because you have excelled at your job by actually showing up to work each day and doing your job, but there is a huge difference between doing what you are supposed to do because you are supposed to do it and doing what you are supposed to do, because there are immediate and dire consequences if you don’t.
Stop shaking your head for a moment and listen to me. I know you think you are better than that, but you aren’t. Take a deep breath, dig deep and realize what I am saying is true. If you really want to succeed on your own, you are going to have to learn this skill as well; seeing an unfiltered view of reality.
In order to be ready to be successful on your own, without a boss, without a formalized structure and system of consequences, you are going to have to exorcise a few demons.
The best place to perform this religious rite is at your current workplace, in your current job. You will use this as a transition period and training ground to prove yourself, before you cut loose your chains.
The first demon: productivity
In my last post, I talked about the fantasy and reality of working for yourself and really what it focused on was the most critical component: productivity.
These days, productivity is like a drug; lots of people are peddling productivity hacks and productivity tools as if productivity means more than just working hard on what you are supposed to.
The trick is that it is much easier said than done. As I highlighted in the last post, most of us are spending very little time actually working productively at work. And, you will probably be in for quite a shock when you lose your shackles and find out that you aren’t getting nearly as much done as you thought you were– oh, and now you aren’t getting paid for goofing off.
So, my advice is: before you quit your job, you need to actually be able to put in a 6 hour day of hard work. No better place to practice doing that than in a paid learning environment.
How do we get there?
It isn’t going to be easy. But, nothing ever is, right?
I use a productivity technique called the Pomodoro technique to both measure and help me achieve a high level of productivity. The idea behind this technique is pretty simple. So simple that I actually overlooked it the first time I had been introduced to it and only later came back to it when a friend of mine, Josh Earl, mentioned how much success he was having using it.
The idea is that you set a timer for 25 minutes. During this time, you work on one focused task without interruption. After you are done, you take a 5 minute break and repeat. Nothing magic here. The magic is actually in the measurement. You see how many of these you can get done in a day and you track them. You can actually then plan out your work and estimate your work in terms of Pomodoros, which it turns outs, is extremely useful.
I’d recommend getting this book, Pomodoro Technique Illustrated (Pragmatic Life), to learn more about this deceptively simple seeming productivity tool.
I’d recommend starting to put this into practice at your regular job. Try to achieve 8 Pomodoros a day. This would represent close to 6 hours of productivity. And only count time that you are actually being productive. This means producing something of tangible value. You are going to end up not replying back to lots of emails and dismissing yourself from a bunch of meetings.
The second demon: gold-plating
On someone else’s dime it is pretty easy to forgo pragmatism. But, something I had to learn really quickly when I struck out on my own is that good enough really is good enough.
Don’t get me wrong. I’m not saying do shoddy work. And you already know that I’m not advocating not working so hard. What I am saying is, if you want to be super productive, you can’t make every piece of work you do a masterpiece. You have to find the right balance of time and effort.
Take this blog post, for example. I’m putting quite a bit of work into this post and the series of blog posts it belongs to, but I could actually spend weeks or months writing and rewriting parts of this post. If I did this, I might end up with a true work of art at the end of the process, but I’m not going to do that. Instead, I’m going to ship it when it gets to the 80-90% effectiveness mark and not worry about squeezing out that extra 10% of quality for another 300% cost of time and effort.
Don’t take this as an excuse to do s!*# work and ship a bunch of crap. That is easy, anyone can do that. Instead focus on being pragmatic. Get to the point where the work is good enough and let it go, then move onto the next thing. This is much harder than you might think– it is a delicate balance.
The third demon: consistency
Success is usually not the result of a glorious fight with a single dragon which you vanquish in a fierce battle, instead the road to success looks much more like running around Midgaard naked, killing rats over and over again.
Working hard and being pragmatic is completely worthless if you can’t do these things consistently week after week month after month. It is like starving yourself for a day and thinking you are going to lose weight, or running a marathon and sitting on the couch for the rest of the year.
So, how do you learn consistency? Simple, you cut out all the excuses. Make being consistent a matter of life and death. Don’t act like failure is an option. Pretend like just missing a single day or skipping a beat is the end of the world.
Eventually, you’ll be able to use your judgment to decide what you should do and when to make exceptions, but for now make rules for yourself. Rules that you will not break under any circumstances. Learning to live by rules like this will be a huge benefit to you. Everyone is weak-willed, no one can resist temptation; if you want to be successful, avoid judgment calls and decision making. Make your decisions ahead of time and codify them as rules that you follow every day.
I’ll give you an example, before I wrap up this post, because it is already getting quite long. Right now I am learning Spanish. I am using an app on my iPad called Doulingo to do this. I have a rule that I do this app at least 30 minutes a day, every day– no excuses. What do you think will happen if I obey this rule every single day for a year? I think I am going to be pretty good at Spanish. Unless I stick my finger in an electrical socket and fry my brains, it will be pretty hard for me not to succeed, so long as I follow my rule.
The hard part
If I haven’t lost you yet, you must really be serious. Good. You are going to need to be serious to stomach what I am going to tell you next.
At this point, if you start right now, you are probably still at least two years out from the point where you are going to be able to quit your job and not end up coming crawling back to the rat race battered and beaten.
I see far too many people come up with the ill-conceived plan of saving up perhaps 6 months to a year’s worth of living expenses and then quitting their job to pursue their dreams of starting their own business. (I’ve entertained this idea myself several times in my career.)
But, let me tell you why this is a very bad idea and then give you a much better one– a plan that will actually work and isn’t likely to leave you homeless or broke.
The reason why saving up a bunch of money and quitting is a bad idea is, because if you do this, you will be constantly racing against time. Instead of time working for you, you will have time working against you. You’ll make bad choices, you’ll feel panicked, you will not be operating under ideal conditions and you won’t be giving yourself room to fail– which you will inevitably do.
Here is a better plan. Instead, of thinking in terms of saving up X amount of dollars, think in terms of earning X amount of monthly income from a side business. Whatever business you plan on creating once you quit your job, start doing it now. Start building you future business while you are still working for the man. If you can’t get something going on the side without the stress and pressure of potential financial ruin, you aren’t going to succeed when you go it alone and add all the extra pressure and stress that comes with being self-employed and not getting a pay check.
Sure, it will take you longer. Sure, it is going to be hard to essentially work two jobs, but the question is, how bad do you want it? If you don’t want it that bad, fine, I’m not going to try and convince you otherwise– to each his own. But, if you really want it, and you are willing to both work and wait for it, then do it the smart way; build your business on the side while you are still getting a regular paycheck.
Well, I hope this series was helpful to you. I’m not an expert by any means on the subject, but I can speak from personal experience, and I’ve talked with enough other people who have made the transition to know that what I am telling you here is not my advice alone.
When I first quit my job, I was shocked at how different life was from how I had imagined it would be. I had to make some big adjustments really fast, because I wasn’t prepared. Hopefully, after this advice, you won’t find yourself in the same situation, or at least you’ll have a rough idea of what to expect and how to deal with it.
This is part two in a series about quitting your job. Check out the first post here.
Imagine you are going for a run in your neighborhood; just a casual jog. You are running along comfortably, not really straining that much or breathing heavy, but making good progress. Now imagine that all of the sudden a tiger jumps out of the bushes and starts chasing you.
What do you do?
For the longest time I had this fantasy of quitting my job and working for myself. Well, actually my real fantasy was playing video games all day and not having to work at all, but even fantasies need to have some basis in reality, so I modified it to be a little more reasonable.
Anyway, I always wanted to be my own boss; to work for myself. I thought that life would be so much better if I had more control over my life; if I could come and go as I pleased and set my own work hours.
Now that I’ve actually done it, I’ve found that working for yourself is not exactly as I had imagined it… let me explain.
The 8 hour fantasy
One of the main things I thought about when I had dreams of working for myself was just how much I could accomplish if I had 8 full hours in a day to work on goals and projects that I set for myself.
For a couple of years my life was pretty miserable. I would work 8 hours during the day for my employer and then when I was done doing my first job I would take a little break to eat dinner and spend some time with my daughter and then back to work for another 4 hours doing Pluralsight courses at night. Weekends usually involved at least another 4 or so hours of doing Pluralsight courses and perhaps another 3-4 to create a blog post each week.
I kept thinking to myself that if I could work full time on the Pluralsight courses I would get an additional 4 hours a day and not even have to work nights. I should be able to get twice as much done and work far fewer hours during the week.
I ran some calculations to see if the payment for creating Pluralsight courses would cover the income I made from my regular job if I produced twice as much content. The numbers seemed to say I would come out pretty far ahead, so as far as I was concerned “quitting my day job” was a no brainer.
The 8 hour reality
My first week of working for myself turned out to not be the fun lighthearted adventure I had set out on.
When the end of the first week had come, instead of completing 4 to 5 modules of a Pluralsight course, like I had anticipated, I had actually only barely completed 3, and that was with me putting in the same 12 hour days that I had put in before quitting my job.
Something was wrong; something was seriously wrong. Working a full time job I was completing 2 modules a week, so if I had 40 extra hours in the week, shouldn’t I have been able to easily get done another 2 more, perhaps even 3 more?
I shook it off as just a fluke. The particular course I was working on required a large amount of research and prep-work as well as scripting out paragraphs of text for each slide—it must have just been bad timing.
The next week I fared a little better, but still not anywhere close to what I had anticipated. I got 4 modules done but it still required around 12 hours of work each day during the week and some on the weekend; the math just didn’t add up.
Here I was busting my butt for only slightly improved results over what I was getting before.
There is work and then there is work
I bet you are probably wondering what exactly happened at this point. What can explain the results I was seeing?
You see, at a job you get paid just for showing up. Now I don’t mean to say that you can just sit at your desk and do nothing all day, but in reality you can just sit at your desk and practically do nothing most days at most jobs.
Again, I don’t want to make it seem like I wasn’t working hard for my employers. As an employee, I have always worked hard and done a good job, usually performing well beyond the level that I was expected to perform at. But regardless for how hard I ever worked at any job, I never worked so hard as when I started working for myself.
The reality of the situation is that even the hardest desk worker I know who is working for someone else usually only actually works less than 4 real hours in an 8 hour day. I would actually venture to guess that actual hard nose-to-the-grindstone hours would probably average about 2 per day.
Now, before you get all upset about what I am saying, let’s take a moment to think about why this is.
There are a number of reasons why employees work much fewer hours than the hours they are on the clock. The first, most obvious reason is because they are getting paid by the hour and not the job. When you are getting paid by the hour you have no real motivation to be fast or efficient or to make sure you are working every minute of every hour.
This means that a task that would perhaps take you an hour to do if you were working as diligently and as hard as possible, might take you 2 to 3 hours if you are working, but just not working hard at the task.
Think about the difference between jogging down the street and running for your life because a man-eating lion is chasing you. It isn’t like you are being lazy when you are jogging down the street, it is just that you aren’t in any real rush.
Another major source of distraction is office conversations. In most work environments, people socialize. It is not unreasonable to assume that 2 hours of each day, on average, is eaten up by socializing about non-work related topics or remotely work related topics.
Let’s take another slice out of that 8 hour pie and account for general job overhead. This would be things like checking your work email, reading bulletins and memos, attending pointless meetings, etc. I’ll be absolutely ridiculous and assume this kind of thing only takes up an hour of time a day on average, (although we really know that it probably takes up much more.)
Finally, we get to just plain laziness and doing personal stuff on company time. Life is life and things happen. Your kid gets called into the principal’s office and you get a call at work about it that you have to deal with. You are buying and house and need to fax those loan documents to your mortgage broker. Sometimes you get to work and you just feel burnt out and tired and can’t really manage to do much other than pretend to code while you scroll repeatedly through lines of code waiting for the clock to tick 5:00.
I’ll be nice again and attribute this to only taking up an average an hour a day, but based on my Facebook and Twitter streams, I am pretty sure we all know that number is greater than even the most candid of us will be willing to admit.
So let’s go ahead and do the math. Take your 8 hours and subtract away 2 hours for socialization. That leaves you with 6 hours. Take away 1 for work related overhead and another 1 for life related overhead and laziness and you are already at 4 hours right there. Now take the 4 hours of work that could be done at a running pace and reduce it to a jogging pace, and you are effectively cutting it in half to about 2 hours of actual real work. If you come in late or leave early or you are more social or more lazy or you have more meetings than average, the number could even be further reduced. Some of you might be coming up with negative numbers. It is a wonder anyone gets any work done at all!
So, where did my hours go?
Just because you switch from working for someone else to working for yourself doesn’t mean that you immediately go from getting 2 hours of work done a day to a full 8. Some of the office distractions are eliminated by working for yourself, but others are not.
Most importantly though, there is a big difference and adjustment from being used to working 2 actual hours of real hard work to working 6 to 8 hours of real hard work.
It is sort of like going for a 3 mile jog every day for a couple of years than suddenly one day deciding to start running 12 miles instead. You might be able to do it, but you are going to feel like total crap until you adjust.
It turns out for me that my old routine, before I quit, was working my regular job during the day, which wasn’t all that taxing on me, then working 4 hours each night, at which time I would accomplish perhaps 3 hours of real hard work.
Each day I was perhaps doing 5 hours of real hard work.
When I started working for myself, I found that I was actually doing about 5 hours of real hard work during the day and by the time the night came, I would work perhaps 4 hours, but was so exhausted that I was only getting about 1 hour of real hard work done.
So overall, I was only adding about an hour or two of actual real work worth of progress each day. This lines up about perfectly with the results I was seeing. I was still having to work the same number of hours and I was just getting marginal improvements in my results.
Tracking my time
I’ll put things as civilly as possible here, but to say the least, this was royally pissing me off.
I mean, I was not happy at all with this revelation I was discovering.
I thought long and hard about different jobs I had and what I did during the day at work. I tried to count up the hours and determine if it was really true that I was only spending a couple of hours of real hard work, on average, a day at any given job. Then, I thought about how at most jobs I was getting a lot more work done than most developers were and it made me even more sad.
I decided to start tracking every minute of every day I spent doing work on my Pluralsight courses and whatever else I was working on during the day in order to see where my time went.
My results after several weeks confirmed what I had already known. In any given day, I was lucky to get 5 hours of solid work done during the daytime and 6-7 hours overall in the entire day was about the average.
I was also busting my butt harder than I had ever before.
Summing it up
So, what am I trying to say here? What can you learn from my experience?
Well, first of all, working for yourself is much harder than you might imagine. When you are working for yourself, you are only getting paid if you are working. You don’t just show up and get paid.
You may think you are busting your butt at your job now, and you may very well be, but I can almost guarantee you that you are not working nearly as hard as you would if you were working for yourself. There is a huge difference between doing 2 hours of hard work per day and 6 hours or more of real hard work per day. If you aren’t ready for this change of pace, you can easily be crushed and discouraged by it.
You might just think that this doesn’t apply to you; that you can just sit down at 9:00 AM, plug in your headphones and work hard until 5:00 PM when you disconnect and smile happily at your 8 hours of good old hard work you put in that day.
But, if you are of this mindset, I’d encourage you to do two things before quitting your day job. First, take a week off and try it out. During that week track your time and see how much work you actually get done. Only count work that results in you creating something you get paid for. Don’t count all the overhead and checking emails, etc.
Second, after you see how dismal your results are, get a copy of “The War of Art” and learn that you are not alone. We all struggle with the same problem of being lazy creatures who want to do what is pleasurable instead of being productive and habitually rationalize all our actions until we are reduced into believing that the course of action we are taking is the only possible and reasonable choice.
I’m not saying don’t quit your job. In fact, I encourage you to find a way to build your own business and work for yourself. But, just realize that if you don’t like the idea of working hard every single day you probably won’t like working for yourself very much.
I like to procrastinate.
I don’t really enjoy procrastinating, but it is one of my weaknesses. I’ll delay doing something that I know is important until the last moment that it needs to be done.
I’ve learned to overcome this weakness of mine by trying to be more productive to compensate for it.
Blah, blah, blah, productivity system… procrastination… blah blah blah!
I know you’ve heard it all before, but here is the strange part—I almost always get things done well before the deadline.
So what is my problem then?
My problem is that when I sit down to actually do the work, I end up doing a million other little things.
Even though I am overcoming the results of my procrastination by self-imposing much earlier deadlines, I am still fighting against the core of my procrastinating nature.
It is like I have put the angry demon of procrastination in a cage where he can’t harm me, but because I have to constantly feed him and deal with his demands, he’s still slowing me down.
I call it micro-procrastination
Perhaps you suffer from it to.
The symptoms are as follows:
- Sit down to do work and first check Facebook, Twitter, emails and every other single site that could have something interesting and updated for you.
- Justify in your head that you need a 10 minute or so transition period to check all this stuff before you sit down to actually do the work you intend.
- Pick something smaller that is not important and work on that instead. (Clean out email inbox, etc.)
Just about every week, my goal for the week is to record 2 modules for whatever my next Pluralsight course is.
I really never miss this goal, but it would often take me a while to get started each night. I would sit down to do the work, but not actually get to working until about 30 minutes to an hour after when I had first sat down at the computer.
Once I got started, I usually found that I didn’t have any problem continuing with the work until it was finished.
I tended to do the same thing with my blog posts as well. I know now I need to get a blog post down each week, but it would always take me a while to get started writing the post itself.
Even when I went to write code or solve a programming problem, I noticed that I would try to do many other work related activities like answering emails or further investigating a problem, rather than just working solely focused on the task at hand.
I started to notice a common occurrence between all of these situations in my life. If I got about 15 minutes into actually doing my Pluralsight course, writing my blog posts, or coding up a feature, I’d almost always end up staying focused on the task.
I found that I would often not want to quit something once I got started. I’d even miss lunch or be late for lunch or bed because of this.
The 15 minute rule is born
Based on this observation, I decided to try a little experiment. The next time I was going to work on something, instead of doing my usual ritual of checking email, checking twitter etc, I did the following steps:
- Pick out the single task I am sitting at the computer getting prepared to work on. (It helps to define this very clearly.)
- Turn of all distractions for 15 minutes or just decide not to let them bother me for that time period.
- Work without pause, without break and without excuse for 15 minutes straight.
- At the end of 15 minutes, if I want to quit, then I can quit or multi-task.
What I found is that after 15 minutes of working steadfast and diligently on a single task, I didn’t want to quit.
I found that something that I had no motivation or desire to actually be working on 15 minutes before was now all I could think about.
I found that just like it takes the first few chapters to get into a book and actually feel compelled to continue reading it, it takes about 15 minutes for me to get drawn into my work and want to see it finished.
I’ve been applying this “15 minute rule” pretty regularly now, and I have been having some pretty fantastic results.
I’ve also slipped up on occasion and reverted back to my old ways and have had quite the opposite of results.
I’ve tried other systems
Now I’ve definitely tried many other systems that attempt to solve the problem of procrastination or productivity or both, but none of them seemed to work all that well for me.
I know these other systems work, and I know plenty of people are successful with them and that my system isn’t really much of a system at all—it’s just what I do.
The problem I have found with other systems though, is that they are either:
- Too complicated to apply regularly unless you are 100% devoted. (Big barrier to entry.)
- Only address productivity, and priority, but not actually doing work.
- Assume you can sit down and actually do what you have set out to do. (Which remember, was the hardest part for me.)
I am a big fan of Getting Things Done and I highly recommend it. At the very least read it, because it just has some great overall advice, but…
I don’t apply it anymore, because I don’t need to organize what I need to get done. My life is currently so packed and scheduled every day that I already know exactly what I need to be doing just about every hour of my day.
I don’t even watch TV or movies… Ever. No really, I mean never ever.
So, with my schedule being so packed, my biggest problem isn’t figuring out what I should be doing—I’ve got that covered. Instead, my biggest problem is doing it efficiently.
The closest technique to what I am doing is probably the Pomodaro technique. I also think this is a great technique and is likely to work for many people.
I’ve just found that my mind tends to defeat the technique by telling me that I don’t have enough time to get a whole Pomodoro done right now, so I should just do part of one.
You could call what I am doing a modified Pomodoro technique, whereby I set the duration to 15 minutes and actually try to avoid taking breaks for as long a possible.
Why the 15 minute rule works
I suspect the main reason why this technique works is because of momentum.
When we start to get momentum going for us (and 15 minutes seems to be just about enough time to do so) it is much harder to change course.
Focus is also a big part of the 15 minute rule. The world today is a fast paced multi-tasking parallel processing rat race in which we are conditioned to switch our attention between multiple things all at once.
If you are reading this post right now, you probably have even switched back and forth between multiple browser tabs or chat windows or something else and aren’t focusing 100% on reading. I don’t have 15 minutes to grab your full attention and draw you in (unless you are a very slow reader, in which case I congratulate you for making this far.)
The point is, we have to purposely focus on a single thing in order to turn off that natural tendency to try to be omnipresent.
Doing the 15 minute rule forces me to focus, and that focus tends to shut off everything else in my mind with has the potential to distract me.
The 15 minute rule also prevents me from overthinking about a problem and standing back to admire the problem instead of working on it.
It frees me from obligation. If I know I have to work for 15 minutes, I am not afraid of not making much progress. My only obligation is to be working on the task at hand, without interruption and with complete focus for 15 minutes.
I also find that after 15 minutes, I’ve developed a commitment to the work. Because of the time I’ve already invested in the task, I feel more compelled to complete it.
Applying the rule
Hopefully you’ll find this technique useful and if not perhaps you have a better suggestion or technique. If you do I’d very much like to hear it, since I am always looking for some practical ways to be more efficient.
Before I let you be on your way, I’ll leave you with some parting advice that I’ve found useful when applying the 15 minute rule.
- Remove all distractions. That may mean closing browser windows or turn your phone off or just deciding to ignore everything else.
- Don’t forget to focus. Removing distractions is not enough, you must also focus intently on what you are doing. Be present in the moment.
- Work, don’t think. I know thinking is working, but the mind wanders too easily and merely thinking about a topic doesn’t seem to create that same mental traction. This might mean you start writing a first draft or first hack, but it is important to be actually “doing.”
- If you feel like you can’t start “doing,” make your “doing” brainstorming, but brainstorm by actually writing a list or making a mind map.
- If at the end of 15 minutes you are still not into the work and want to quit, go ahead. Come back a little later and try again.
- Take breaks when you need to, as long as the initial focused 15 minutes has passed, I’ve found that I can take a break and actually want to get back to my work.
- Put a sticky note on your monitor or somewhere you’ll notice that reminds you that when you sit down to work to start off with the 15 minute technique.
Pay attention young programmers, this is the most important piece of programming advice you will ever hear.
Well perhaps not, but it might be the most important piece of programming advice you hear today.
“Switching gears is grinding gears.”
I’ve been doing this programming thing for quite a while now, and I have come to realize that the biggest thing that saps my productivity is switching gears.
What do I mean by switching gears?
Many different contexts
Switching gears can apply to a variety of different contexts, but it is basically whenever you are working on some task or technology and have to stop what you are doing and either do something else or change the type of thing you are doing.
This is really a bit different than multi-tasking. Multi-tasking is really trying to do more than one thing at once. It usually involves a large amount of rapid context switches, but for this post I am more concerned about the general idea of breaking rhythm.
I think it is easier to speak about this subject if we talk about some specific applications of the idea and why they are harmful.
In the Agile world of software development today, we often are required to switch from problem domain to problem domain as many of our iterations contain mixes of different features on different parts of the system and bugs to be fixed.
Have you ever been in the situation where you were just beginning to understand how some area of the code base worked, or how to work with a particular customer on a particular problem space and then had to switch to something else and start all over again?
Even when you switch back to the original context you were working with, if enough time goes by, it becomes new again. You have to relearn much of what you had learned the last time and just when you begin to hit your groove, the cycle begins again.
This form of switching gears is at the very least frustrating, and at the most a complete demotivator and productivity sapper.
Unfortunately for most developers, this problem is out of your immediate control. But, take note product owners and project managers, there is a reason why iterations should have a goal.
If you are in the precarious position of being a developer pinned against the ropes, try to make some noise and let your management and product owners know that your team will be much more efficient when you aren’t switching gears all the time.
In my experience, the results of replacing this constant context switching with the synergy of a common goal and related features in a segment of time has an astounding effect on productivity that is hard for any serious businessperson to ignore. So speak up!
Switching technology is painful!
It really isn’t worth trying to fight this because you are going to be going against the technology grain to do so. Although, I do suppose this may be one of the reasons for the recent popularity of Node.js.
I’m not saying to not learn new things. It is very important to always be learning.
What I am saying, is to try to find some kind of rhythm with the technology stack you are working with and try not to switch that up.
Technology specific training can really help here as well. I for one, need to learn JQuery better. The problem is that when I am working on a web based feature, I am not forced to learn JQuery because I am not in that context long enough.
So what do I do instead?
I waste time Googling for answers. I know that I have a short coming here and I need to just bite the bullet and spend some dedicated time to really thoroughly learn JQuery, because by Googling for little pieces of it at a time, I am not really making much headway and the context switch ends up stealing what I do learn from my memory.
One more aspect of this is the idea of focused teams. Many software development groups do not like to specialize their developers onto one focus area. I agree whole-heartily with the idea of non-specialization.
But! There is huge benefit to be gained by keeping the same group of developers working on a specific set of technology or part of the code base for a set period of time. I’ll talk about this a bit more, towards the end of this post, but the basic idea is that it takes time for people to find their groove.
I think it is optimal to break any large team up into smaller technology area focused teams that regularly rotate every 3 months or so. The idea here is that you give those teams enough time to get good at what they are doing and actually commit what they have learned to memory, but you rotate them often enough that they don’t end up becoming specialists which are unable to see the whole picture.
This one typically isn’t an issue, but it can be depending on the environment that you are working in.
Teams need enough time to go through that forming, storming, and norming set of phases. If you are constantly interrupting this process by switching around team members, you are never going to get the team to act as an entity of its own.
Teams are generally more efficient than individuals, because they benefit from synergy, when 1 + 1 = more than 2.
But just like a big truck taking some time to get up speed, a team takes time to get going. Also like a big truck, a team can gain momentum that individual developers seldom can achieve.
A smaller aspect of this is pair programming. I suppose that many have been successful switching up programming pairs once a day or so, but I suppose that more teams have been successful switching up pairs at longer intervals.
For me, this interval varies. Sometimes, I feel like I need to stay paired with a teammate for longer than 2 weeks, which is our regular interval, sometimes 2 weeks is fine. It depends on what you are working on and how much momentum you have.
They key here is to make sure that you are giving teams enough time to take up their own flag and stake their territory. Teams can take some time to find their common goal. Self-direction can really help with this.
Ever tried to turn a flat head screw with a screwdriver, but it doesn’t quite turn, because you can’t seem to get the head of the screwdriver into the groove of the screw?
You twist that screwdriver around a bit until finally it slips into the groove. Then when you turn the screwdriver the screw turns with it.
As humans, we tend to be like screwdrivers, we have to find our groove. We all have this adjustment period where we are fumbling through things.
It is very important to make sure that we aren’t switching gears so often that we are not actually turning any screws once we are in the groove.
Regardless of what kind of context switching you are doing—whether it is problem domain, technology or teams—it is important to make sure that you are not spending 90% of your time finding the groove and only 10% of your time “in the groove.”
Depending on what you are doing and what the context switch is, the proper amount of time before switching contexts is going to vary, but I think it is very important be aware of this phenomenon and plan around it. If you don’t you are going to end up spinning your wheels, which is unfulfilling to say the least.