Creating a habit: Checklist

Burhanuddin Rashid
7 min readJun 17, 2021

--

For more visibility posting this on medium. The original article is posted on my website. :)

What this blog is about?

You might be wondering why should I read this blog on something trivial as a checklist. You might be thinking “I know what checklist is and how to use it.”

I used to think the same way. But it changed my mind when I read Atul Gawande’s “The Checklist Manifesto” and realize how a small thing can make big difference in your day-to-day work.

Understanding why and how it works was an eye opener for me. The book explains why the checklist was invited and how critical and the life-saving role it plays in the medical, construction, and aviation fields.

But I see the checklist in almost every field. So I started using while developing software.

This blog is not a book review. It is about understanding the mechanism of the checklist and how we can use effectively in software development on daily basis.

Why do we need a checklist?

1. Our brain is not a permanent storage.

Does it happen to you when your mom asks you to buy Dhaniya (Coriander) and you brought Pudina (Mint)?

Or when someone asks you to perform a task and you said: “Oh I don’t need to write it down. I’ll remember it” and after half an hour, you are wondering what you are supposed to do.

This happens because our brain is not good at remembering things (Although there some exceptions). It is designed to create ideas, find problems and come up with solutions. It has very limited memory. This often happens when there are multiple tasks involved.

Using a checklist allows you to ensure you don’t forget any important steps.

For example, I have a checklist for writing a blog. So that I don’t miss any critical tasks.

2. Divide into smaller tasks.

Creating a checklist forces us to divide the big task into smaller executable steps.

It’s easy to remember and execute a small task.

Having a checklist also gives you a sense of progress on how much work is done or needs to be done.

In some cases, you might a need nested checklist. As I’ve shared in the above example where I have a different checklist for publishing blogs inside the writing blog checklist.

This checklist is more helpful when you need something to be done step by step.

For Example my “Creating WordPress website” checklist look like this.

  1. Setup Hosting
  2. Choose a theme
  3. Plugin Required (Plugin checklist)
  4. SSL
  5. Newsletter Subscription
  6. Analytics
  7. Map to custom Domain

How it is related to software development.

Checklists are used in every imaginable field — from building inspections to complex medical surgeries. We can use it in software development too. We can create checklist for stories and sub-stories for a feature (Although stories themselves are a higher level checklist), UI/UX flow, tech debt, test cases, and so on.

The checklist might be different for UI/UX, Development, Management, and QA. I am going to talk about two which I’ve experienced.

1. Management

When planning a feature we can get many questions, follow-ups, and unknowns. All this are a good candidate to be converted into a checklist.

This checklist will help us to organized and track the progress. If the checklist has a lot of steps then it’s a sign to break it down further or an opportunity to cut some scope of the feature.

We can also have checklist for acceptance criteria or to cover the edge cases in the stories.

We can leverage checklist feature in different project management tools . (More on that later)

2. Development

In development, I use static and dynamic checklists.

Static checklists are predefined and change rarely over time. An example would be to have a checklist of libraries while creating a new project or define a checklist to create PR. (You can automate using Github template)

A dynamic checklist is when you keep adding items to the list as you are working on the story. Most of the time while writing code we see an opportunity to fix something or refactoring it. Instead of keeping that in your head, add that to your checklist and see if you have time left to fix this at the end of the story.

I saw first this checklist approach while reading Kent beck book “TDD by example” where he keeps adding a list of test or edge case he needs to cover later and then strike it off when it’s done.

This checklist also helps to track our progress on a task and keep team posted on what we are up to.

Leverage Management Tools

Most of the software management tools have a checklist feature with their variation. But the concept remains the same. I will share 3 tools that I have used so far.

Note: There’s a ton of management tools out there, and you have to experiment with which one works best for you.

1. GitHub

GitHub supports markdown as a first-class citizen. So you can create a checklist in markdown while creating issues, PR and comments. If you create a checklist in issues or PR description it will show the checklist progress as below. This is a really good way to show progress on the issue or PR.

2. Trello

I used Trello most of the time for internal apps in the company. The good thing about Trello checklist is that we can create multiple checklists in a single card by clicking add button and setting a title for each checklist.

This is how the checklist progress looks on the Trello card.

3. Jira

Jira is way more advance. We can create a simple checklist in issues, but we can have a more advanced checklist. For example, To change the issue status to DONE, we can define a QA checklist to show up on dialog before we change the status.

4. Advanced Checklist (Bonus)

Todoist is one example of an advanced checklist. It’s more than a checklist. It’s a checklist combine with a management tools. We can set reminders, labels, and priorities for an task. We can also set recurring tasks on a daily, weekly and monthly basis.

I’ve been using todoist for the last 1. 5 years and one of my favorite feature till now is to add a task using natural language. It like you asking someone to create a task for you. It saves a lot of time on selecting projects, dates, and set priorities.

Let me know in the comment section if you are interested to see my todoist workflow.

Creating as a habit.

As with most habit creation, we need to be consistent here. Initially, It was hard for me to divide a big task into a checklist or define it in several steps. But with consistency it becomes a habit for me. We have to be patient to see the benefit of checklist. It takes time.

Remember, you don’t have to start big or use any advanced todo application. The best way is to start small. You can start simply writing on paper and level up as you get comfortable and used to it. Because the point is not what you use instead how consistently you use it.

You can start this practicing by creating a checklist for grocery shopping. Next time you go for groceries shopping just observe how many people use checklist.

Things to remember.

  1. Avoid a big checklist. If you have a big checklist then people have to read a lot and will soon lose interest in it.
  2. Keep item small. It will make it easy to execute.
  3. Avoid long sentences. Long sentences are sign that you need to break down the checklist more further.
  4. Don’t worry about Grammar until you and your team understand it.
  5. Everything cannot be divided into a checklist.

Conclusion

Checklists will help you to do tasks more effectively. It forces you to think into small executable steps and also gives you a sense of progress. I used it mostly in everything. From things to carry in beg, groceries shopping, new project libraries, PR checks, and so on. You can read more in manifesto of checklists in the book mentioned above.

Thank you for taking your time to read this article.

In case you have any question, you can reach me on Twitter or Email me.

If you like this kind of content then you can subscribe to my blog and be the first one to get notified when any new content is published.

If you like this article, please like and share it with your friends/colleagues and help me to spread the word.

--

--

Burhanuddin Rashid

Google Certified Android Developer #AndroidDev #FlutterDev #flutterio