If you’re anything like me, you’ve got a healthy list of non-pressing, but important goals that you’d love to accomplish, but never find the time. The list probably spans both work and personal life and is comprised of a lot of endeavors that would take our life and productivity to the next level. For me, it’s a variety of things. Writing the use cases for an epic idea I have for Uber. Building out the framework for on-boarding new hires effectively. Writing up insights into how our team can execute most effectively. Publishing a series of blog posts that I could eventually turn into a book. Creating that machine-learning-movie-search-app idea I’ve had forever. Taking an online course for the Go programming language. Building out an original production in Ableton Live. Training for an upcoming half marathon. The list goes on and on.
However, in any given day, there are constant distractions and other priorities that demand time. When a few free minutes do free up, procrastinating around on social media seems so satisfying. However, wouldn’t it be amazing to just snap our fingers and flip into super-productive mode and start kicking ass on the things that are most important to us? For example, do you ever notice that you are really productive right before vacation, the night before a big presentation or when a work deadline is looming? Why can’t we apply that same focus and vigor to the rest of the things in our life?
The problem is that for so many important, but not urgent projects, we aren’t being forced to take action. There’s no immediate deadline and nobody is asking us for an update on progress. So, the question is, how can we create that same sense of urgency when a real one doesn’t exist? By creating forcing functions. Forcing functions are defined as any task, activity, or event that forces you to take action and produce a result.
The Productivity Hack
The hack is to create a forcing function for yourself along with a bit of social pressure. There are lots of ways to do this, but there are at least 2 primary methods I’ve found to effectively create forcing functions in your everyday work and personal life:
- Time-boxing tasks
- Make & share commitments
Strategy One: Time-boxing Tasks
A simple way I’ve found to hack my productivity and create a forcing function is to start working on something when I know I have a time-based commitment coming up. For example, if I have dinner plans at 8:00, then at 7:00, I’ll start in on the task at the top of my list. I’m forced to time box it to 45 minutes, so I’m not late. Plus, if it’s at all interesting, I know I’m likely going to talk about it at dinner which adds an additional bit of social pressure. When I was at Hack Reactor, we used to have “extreme blogging” sessions where we would write and review an entire blog post in an hour. By knowing someone else was going to read your post in 60 minutes, you were forced to get focused and write something rather compelling, rather quickly. When I have an hour break in my day between meetings at work, I’ll block out my public calendar for that hour with the name of the task. Knowing that others can see what I’m working on creates a mini-commitment for me and forces me to make every effort to complete that task in the hour.
One thing to note is that the key part for this strategy to work is to have all of your work broken down to bite size chunks. You don’t need to have every task created, just have the next task created. To get started, the first task may actually be to to break down your project to the next couple hour-long tasks that you can complete in bite sized chunks.
Strategy Two: Make & Share Commitments
This technique is probably the most bold, but also most effective. Make & share commitments. Lots of research supports making commitments public, even if it’s just with your spouse is beneficial. At work, even if your company doesn’t have a formal goal-setting process, you should write out your quarterly professional goals using the SMART criteria and share them with your team. Sign-up and pre-pay for a weekly class at the gym or make plans to meet your cyclist friend for a bike ride at the same time every week to stay in shape. Tell your sister you’ll do portraits of her kids for their birthday to work on your photography skills. Look for ways to commit to yourself, commit to others and commit to society. Share your commitments and dates you’ve set with your boss, your friends/family and your social media worlds. Intentionally put yourself in a situation where it’s really hard or embarrassing to back down. The more serious you are about your goal, the bolder the commitment you should make, and the more publicly you should share your commitment.
How to Apply Forcing Functions With Your Team
Within a team environment, one of the most effective ways to create forcing functions is to set milestones and deadlines. Deadlines are what we are held accountable to, how performance is measured and what we communicate to others, including our customers. They are rich with commitment and are classic forcing functions. As an Engineering Manager, I make my professional life very deadline-driven. It’s my job to make sure our team is accountable. I’ve witnessed how engineering projects can drag on forever when there are no deadlines. It’s easy to take your time, focus on what-if scenarios, find reasons to refactor code, and generally not deliver when you don’t have a real deadline you are committed to. Projects tend to take up as much time as you allot for them. Therefore, if you have unlimited time to work on something, there’s a chance you will never finish it. However, when milestones and deadlines are added to a project and the dates are publicly tracked and discussed, it’s amazing how much more efficiently we build software. Tough conversations around prioritization are forced to happen. We take the luxury of ample time off the table. While this is counter to some of the principals of scrum, my experience has been that without committed milestones and deadlines, scope creep is common and idealism can outweigh productivity and customers be left underwhelmed. To be successful, we need to use forcing functions to strike a balance between good development practices and getting shit done.
Another scenario where we have an opportunity to apply a forcing function is when we have a potentially important, but daunting, project that sits on the backlog because it’s going to be really tough to figure out and isn’t the most pressing thing we can work on. We can add a forcing function by clubbing some or all of this tough project with another commitment. For example, my previous team has had a long-standing, very challenging project to rebuild Amazon’s music detail pages on a new technology platform. However, we had higher priority projects to redesign the UX and add music playback to our pages. Our decision was to do the design changes and add playback for detail pages in conjunction with rebuilding on the new technology platform for overall efficiency gains. By doing this, we forced ourselves to figure out a lot of the tough problems with regards to the new platform. The framework update may not have never happened otherwise.
How I Apply Forcing Functions to Everyday Life
I’ve been keeping a to-do list for as long as I can remember, but the simple act of breaking down items to hour-long tasks and committing to them in tight time slots has made such a difference in productivity. Last year, to stay in shape, I signed up for a half marathon and committed to the training plan to get me ready. To stay involved in day-to-day coding, I’ve publicly committed to creating an internal tools app that is in my quarterly goals and visible to the whole team. When something matters, I look for ways to create forcing functions to make progress. Today, I have plans at 4:00pm and I committed to having this blog post done by then. It’s currently 3:58pm.