Thoughts on discipline and habits

All of us want to be more productive. If we are serious about it, we end up trying a lot of different techniques and approaches: ToDo lists, Kanban Boards, Pomodoro, Calendars, eat that frog, etc. I’ve tried them all, and more. They are all good actually. All of them provide the results they promise. But why are we not more productive? And how can we fix that?

Discipline

I believe that the top cause for us not achieving our productivity goals, or any goals for that matter, is due to our lack of discipline. Discipline is what makes us do what we decided to do even when there is an easier alternative. For example, if we want to be good software engineers, we set high standards for our code, and we tell ourselves we are going to follow Sandi Metz rules for developers.

We know if we follow these rules we will have better code on our projects, the hard part comes when we are in a situation where we have to make the decision of having to refactor code because we are breaking one of these rules. At that moment if we are disciplined, we are going to stick with our decision and do the refactor. If we don’t have that discipline, it will be easier just to leave it as it is or just do a workaround.

We all know what discipline is. We have been in a situation that tests our commitment, where we have to have the control to stick to our plan. The problem is not the lack of knowledge about what discipline is, the problem is how we acquire discipline.

Habits

We are driven by habits. What we are not entirely aware of is that everything we do, and I mean EVERYTHING, reinforces a habit. We can think of the power of our habits as the inertia that keeps us taking the same decisions over and over.

For example, if you always tell the truth then when you have to make the decision of telling a lie or telling the truth because you have the habit of always telling the truth, it is easier just to follow the inertia and tell the truth.

What do habits and inertia have to do with our discipline?

We can think of discipline as our capacity to stick to our decisions. Like in our previous example, if we decided to follow some coding standards/rules but we are continually breaking them, which habit do you think we are cultivating? We would be reinforcing the habit of not sticking with our decisions.

The metaphor of inertia is helpful, inertia propels us in one direction and trying to act against that inertia is hard. That inertia can work in our favour too if we have built the inertia of having good coding standards, we are most likely always going to be producing good code and producing lousy code will be hard.

Ok, so how do we become more productive?

We become more productive by having a system. If we don’t have a system that helps us make decisions, we would have to devote a lot of time evaluating tasks and objectives to make decisions. For example, every time we finish some task we would have to compare every pending task against each other to decide what to do next.

So which system to use? There are many options, I mentioned a few at the beginning (like Pomodoro, kanban boards, etc.). Which one should you use? I think you should pick anyone, any of them will make you more productive, try them all but stay be disciplined, use the system until you have proven that it works for you or it doesn’t. I think 1 month to try to stick with your decision is the right amount of time.

Do it incrementally

We all want to do everything. The good news is that we can do everything, the only caveat is that it can’t be all at the same time. Dedicate some time to focus on only one goal or habit, once you’ve mastered it move to the next.

We tend to underestimate long-term goals and overestimate short-term ones. We think that we have to make all the changes at the same time.

Imagine if we were to try and do all of the following at the same time:

How do you think that would go? It will probably fail if you try to do make all those changes at the same time. You are not only trying to build one small habit, but you are also trying to overcome many habits at once.

Do it incrementally. Maybe, to begin with, you can switch your editor. Give it time, get used to it and build the habit of using it. In a month (or a few) you’ll start seeing your productivity with that editor increase.

Then start implementing one of the developer rules in your everyday code. Maybe after a few months, you have mastered that rule, and now that you understand it you can extend it, so you are always creating beautiful code.

After you’ve mastered the developer rules, focus on writing documentation. Learn how to write, share your documentation and ask for feedback. After a few months, you’ll get better at writing documentation.

Start using your new programming language for small tasks, then after some time you’ll feel confident and use it in more significant projects.

After completing all of your previous goals, you’ll be much more productive writing code on your code editor, you’ll write beautiful code and documentation, and you would have a new programming language that you know profoundly.

If you choose to build habits incrementally, it’ll be easier to stick with them and then you’ll start to see your productivity go up.

Final thoughts

Discipline is essential, build good habits, do it incrementally, don’t underestimate the long-term and overestimate the short term. And more importantly, enjoy the process.

This was a different post, maybe more of an opinion than a technical one, but I hope you found it useful. Let me know what you think, all feedback is welcome.


** If you want to check what else I'm currently doing, be sure to follow me on twitter @rderik or subscribe to the newsletter. If you want to send me a direct message, you can send it to derik@rderik.com.
$