Make the Most of Your Limited Willpower to Become a Better Programmer
Make the Most of Your Limited Willpower to Become a Better Programmer
Today we are going to share my process with you and deconstruct some popular myths about productivity.
Join the DZone community and get the full member experience.Join For Free
Discover how you can take agile development to the next level with low-code.
One of the biggest clichés I hear thrown around is that we should all try harder.
If you are not losing weight, then you should try harder. Maybe you would be able to code that solution if you tried harder.
To be honest, I am not a fan of trying harder. I will let you in on a little secret: I don’t try hard at all.
In the last two years, I went from a job I hate to a job I love as a software developer. I taught myself to code while also growing my investments by 100 percent, learning to squat over 170 kilograms, and winning the novice division of my first powerlifting meet. I am not saying this to brag. Instead, I’ve acknowledged my limited willpower and streamlined my thinking so I can do more with less effort.
Today I am going to share my process with you and deconstruct some popular myths about productivity.
Shrugging Off the Try Harder Myth
Since you started reading this article, Bill Gates has earned nearly $1,000.
Is Bill working during that time? Possibly, but he is hardly working harder than the next guy.
Bill Gates has the same 24 hours as everyone else, but he has built a huge system that continues to pay him even if he sleeps. Western culture loves to believe that working harder results in earning money, yet Bill Gates thinks in a very different way that allows him to achieve so much more.
This is similar to any person who achieves more than other people. They have a different way of doing things that corresponds to better results. They build systems similar to a lazy programmer, but somehow they end up profiting. How?
When it comes to getting things done, there are four types of people:
- The person that does nothing.
- The person that does things half-assed.
- The person that does a task in such a way no one has to do it again.
- The person who does the best work every time they are asked, but never builds something that could do the task long-term.
Obviously, number three is the best use of time because the person has built a system that replaces everyone—even themselves. Yet, we are always quick to praise the hard worker in number four, even though number three expended the least energy and cost in the long-term.
We programmers instinctively know that computers are better at doing small, repetitive tasks that save people from needless tedium. Now, what if you could apply this thinking to your willpower?
When it comes to software development, we are always looking for ways to make the project more mentally manageable. A good example of this is the DRY principle. DRY is short for DON’T REPEAT YOURSELF. The idea of DRY is to make sure that the same code is not used throughout a project. Instead, we make it modular, so we can use it anywhere without duplicating the work.
DRY principles don’t only apply to how we build software; we can actually use DRY principles throughout our lives.
Willpower Is Limited
Though we are always told we must exert a ton of energy to get a reward, our willpower diminishes throughout the day. Every decision costs us energy.
In fact, people can have a vastly different opinion at night than they did earlier that day. Even extremely busy people like Barack Obama limit decisions they have to make throughout the day, so they can best leverage themselves when it counts.
When I read that successful entrepreneurs like Mark Zuckerberg do the same thing, it occurred to me that maybe I should limit decisions as well. What follows are a few key ways to do that.
Automating Your Finances
Automating my finances has been the smartest thing I have done with my money. I spend less than an hour a month thinking about my money. It works in the following way:
- Payday is the 25th of every month.
- My pension is taken out from my paycheck before it hits my bank account.
- All my bills are paid via my credit card, which gets cleared on payday.
- Investments and savings are also transferred over, on the next day.
- All the money left is for me to spend freely for the rest of the month.
This structure alone saves me energy from making a ton of decisions and the consequent worry.
By automating your finances, you not only remove the action of doing it, but you also remove much of the emotional involvement in your finances, which frees up a lot of mental space. This structure would instantly make sense to a lazy programmer who adopts Don’t Repeat Yourself mantra that advocates writing code once only so it can be used anywhere in the project where it is needed.
Planning Everything on My Calendar
One of the biggest changes I made in my life occurred two years ago when I put everything on a Google Calendar.
This included the times I go to the gym, appointments with friends, and study groups. An example of one week can be seen here. This frees up that mental space that prevents me from remembering what I have to do at certain times.
My routine is set in digital stone, and this habit has allowed me to continue going to the gym three to four times a week for more than two years.
I never miss hangouts with friends or end up late for meetings because I plan my month in advance.
Outsource Menial Tasks
Every weekend I used to spend my time packing up my clothes and sticking them in the washing machine. Then after they were finished, I would hang them, which would take a day (as well as take up space on my balcony). Afterward, I would have to take away all the clothes and fold them.
This process was a hassle, and worse, I did a bad job of it.
So I did some research and found out I can hire a service that does my ironing and washing, which saves me an average of about three hours a week. It only costs $18 and saves me three hours of time.
This means I have more time to spend on things I would make more money doing—like programming or learning a new skill. My time was worth more than $6 an hour.
I started looking around for other household time wasters and found plenty I could eliminate such as cleaning. A bit of research led me to find a website where I can hire a cleaner for $12/hour. The best part is that the cleaner does a better job than I ever could.
Cooking is another possible time waster. Between shopping for groceries, preparing the food, and then cleaning up afterward, a lot of time can go amiss. Food is important, and I can’t just order takeout as I try to eat healthily. Luckily, there is a service in my city that cooks 10 meals for me in advance that are all healthy. The meals are designed for athletes and since there are so many of them, it is possible for me to take them to work.
Outsourcing does not only involve using services. You can also buy machines that do the work for you. Things like the dishwasher and the Roomba vacuum can be a godsend by saving you time and energy for concentrating on the most important things in your life.
A lot of these things do involve spending a bit of money up front to receive the benefit later. This is where you have to understand what is more valuable: your time or your money.
Eliminate the Unimportant
Once I spent four days on fixing a bug that affected more than five people.
Out of more than 100,000 visitors, I wasted five days on this bug that did not affect revenue at all. After that experience, I realized it was better to focus on the things that have the biggest impact. Our daily lives are fraught with tiny actions that do not contribute to the bigger picture.
Between accidentally causing weird errors due to misspellings, constantly Googling problems, and falling for the legend of super coders, it is hard for a programmer to not be prone to believing we are not good enough. I always have this nagging feeling that someone is going to reveal the truth that I am actually a phony and that I can’t really program.
Despite being paid to be a programmer that is supposed to know code, I always feel like there is a gap in my knowledge and that there is something I always have to learn. I am not alone in feeling this way. Other programmers have written about it, too.
In this industry, if you go down the path of trying to keep up, you will always be fighting the hydra. Cut one head off and another replaces it. My suggestion is to discard trying to keep up. Only learn what’s necessary. Keeping up is a battle that can never be won. I am not saying to abandon the effort to keep up but don’t put yourself under stress trying to keep up to date with information that might not be relevant. It is too much information and can be the distraction that feels like you are being productive. To achieve deep work, we need to treat it like a possible deterrent to action.
For example, I spent the past year developing applications in Ruby 1.9.3. We recently upgraded to 2.0.0. In that year, a whole new version of Rails had been announced, Ruby has been upgraded, and the countless libraries I used in my projects had together released 500 pages of updates. These updates do not really affect me until something happens that causes me to investigate the issue.
It is important to treat some of these updates as a distraction and eliminate them.
When we eliminate distractions such as TV, news, blogs, news aggregator sites, and social media completely and adopt a low information diet, we are able to embrace Deep Work and try to work solely on one task at a time.
New Habits to Replace Willpower
Willpower and the need to exert more willpower often come up when we talk about dieting or going to the gym. A lot of mental energy is spent trying not to think about that last delicious doughnut and the dream of complete satisfaction it represents.
Food is intrinsically linked to our subconscious habits. In the book The Power of Habit by Charles Duhigg, the author describes how these habits define our behavior more than our willpower.
Our brains love habits because they help us exert less energy.
When you learn a new skill, such as cycling, the brain tries to find a way to “create a groove” in its membrane, so it can easily remember how to execute the task when it is needed.
In cycling alone, the brain first has to learn how to pedal by alternating the legs up and down, steering, balancing, changing gears, and applying the brake when needed. In situations where there is a new skill being learned, the brain decides to push these tasks on the part responsible for habits.
Since the brain tries to make almost every action habitual, understanding how to create these habits can really help people do things they never thought possible, such as giving up smoking or learning to code.
There are three steps to habit creation:
- The cue: This is the moment that triggers the action.
- The action: This is the action/routine that you want to perform.
- The reward for the action: This is to trick your body into doing the action more often.
Every morning when I wake up, I used to reach for my phone and browse Facebook while lying in bed. It was a bad habit of mine. The cue for this habit is waking up and turning on my phone, the action is opening up Facebook, and the rewards are the little dopamine hits from seeing what my friends are doing.
To break this habit, I uninstalled the app from my phone and left the phone at the foot of my bed. I am forced to get up, and now I eat a tiny bit of chocolate to reward myself for getting up.
The new cue is the alarm. The action is getting out of bed, turning off the alarm, and proceeding to the kitchen. The reward is a little bit of food. Understanding the power of habit led me to look at how I can change my subconscious habits to become more effective.
Since waking in the morning is one small task, I also applied this example to other areas of my life, which led to massive improvements. I became more consistent in the gym by plugging the gym into the habit cycle. I also learned to sit down and study regularly, which eventually culminated in securing a job as a self-taught programmer.
The best thing about understanding habits is that you are managing the limited willpower you have for the most important tasks which require maximum brain power. As one gets better at this, it gets easier to get into the zen state of coding as well as to adapt yourself to learn new skills.
The Final Wrap: Fixing Limited Willpower
We started off this article by addressing a salient point. We learned that trying harder does not always lead to more results. Bill Gates earns the dividends of his earlier work with Microsoft for the rest of his life (and beyond) because he has created a system bigger than himself that takes care of his needs.
Throughout the day, many small choices and actions deplete our willpower. Even spending a little time deciding what to wear in the morning can cost you later on in the day.
Now imagine what those many decisions cost us throughout the week, month, and year. Time spent handling small tasks begin to add up, and that is why we introduce systems to counter common tasks that we do.
These many little actions accumulate in a massive brain drain. Some suggestions to alleviate this brain drain include automating your finances, planning events on your calendar, outsourcing menial tasks to others, and eliminating the unimportant.
After we have reduced mental load, we looked at how to create automated habits. Most human actions are automated by our brain. Our brains are hardwired to take a new skill and integrate it into our body’s muscle memory when it senses a reward is coming.
Learning how to create a habit can bring a whole host of benefits such as reducing decision fatigue and fixing limited willpower. As we have already addressed, to create a habit, we need to identify the action we want to create, trigger a cue to the habit, and finally, reward ourselves to reinforce the behavior. Habit creation is just another way to reduce decisions.
When I first conceptualized this article, it was supposed to be about fixing limited willpower but has since veered off into avoiding using willpower at all. Some people believe that willpower can be trained like a muscle. The more you use, the better you will get. I am sure it is possible, but it is much easier to avoid using it in the first place.
For instance, when I was dieting in the past, there were days that resisting a chocolate bar was just too much that I couldn’t do anything. One day, I had too many decisions to make, and resisting cravings became too much to handle. The chocolate was delicious, yet it was not good for my diet. By reducing the number of decisions I had to make and learning more about habits, I became better at sticking to my diet.
You can also free up more cognitive space for tasks that will add value to your life and others by reducing the sum of the tiny actions you do on regular basis. Next time you find yourself struggling to meet a goal, give it a try. What have you got to lose?
Published at DZone with permission of John Sonmez , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.