The importance of Friction

Note: This is a draft of a post I’ll put on data-goblins.com later, after revising and improving it, adding better art, diagrams, and writing.

A common concern that people voice about AI is that it’s eroding critical thinking skills. That using AI and prompts to reach a solution will limit learning and lead to de-skilling of a userbase. There’s some merits to this; it’s a very real risk, and this is backed by recent academic research. However, I think there’s some nuance missing from this evaluation, particularly when it’s used as an argument by technical experts against the use of AI and agents in work. I think this is not a technology or tool problem… it’s more of a user problem.

Technological advances have always made work easier and more convenient. Usually this is done by reducing friction in a process. This might sound like a good thing, but actually, friction is actually quite important. You need friction if you want to grow as a successful professional; if you want to learn as a healthy human.

Meaningful friction builds growth

If you want to build muscle, then you need to do resistance training. You need to train hard. Really damn hard. Uncomfortably hard, where you lift something heavy repeatedly until you can nearly no longer lift it anymore. Growth is only possible by exposing your muscles to friction and stress, then letting them recover… and doing it again. This is always true… even if you’re on tonnes and tonnes of steroids, or blessed with amazing genetics (and if you are, fuck you, enjoy it :)).

 _________                       _________
|  45 lb  |=====================|  45 lb  |
|_________|                     |_________|

But… if you walk into the gym and lift the lightest weights there for 10 repetitions several times for each muscle group… what do you think will happen? Will you grow muscle? Will you get stronger? Of course not. The only thing that happened was that you spent some time in the gym, and maybe drank some water and walked into the frame of someone’s Insta video.

To be a bit less frivolous, this is actually one of the most common reasons why people often fail in their strength and muscle growth goals. They lift weights, but not enough. Or with bad form, assistive devices or over-zealous spotters, cheating to make it easier and see higher numbers. They stay away from the uncomfortable weights and repetitions. Maybe they start off on the right foot, but as they get stronger, they don’t progress. They don’t increase the weight to keep the resistance. To keep the friction. They avoid it, intentionally or not. When you go to the gym, the purpose is to get fit; to get strong.

Growth only happens from doing the work.

In fact, the same applies for learning. To learn, you need to involve yourself in a process and experience some kind of mental strain. To get smarter, you have to put your cognitive muscles under resistance just like you do for your skeletal muscles when you want to get strong. You need friction, and to strain against it consistently and regularly, with progressive increases as your knowledge and comprehension grows to keep challenging your perspectives and understanding.

        _---~~(~~-_.
      _{        )   )
    ,   ) -~~- ( ,-' )_
   (  `-,_..`., )-- '_,)
  ( ` _)  (  -~( -_ `,  }
  (_-  _  ~_-~~~~`,  ,' )
    `~ -^(    __;-,((()))
          ~~~~ {_ -_(())
                 `\  }
                   { }

If something is removing the mental resistance that builds this growth, then you won’t grow; you won’t learn. With AI, this means that if you’re using AI to generate code, a semantic model, or an entire end-to-end analytics pipeline (all of which are now possible), you might not learn anything along the way. But again, the answer is more nuanced; AI isn’t removing the friction. It’s moving it. Shifting it.

Using AI doesn’t eliminate friction. When you use AI or agents to do something, the friction is still there… it’s just… different. AI isn’t magic, and it still makes a lot of mistakes, or produces results that don’t align with your expectations. It’s up to you to engage with the new friction and learn:

  • How to evaluate whether the AI or agent is doing a good job, and how to do this efficiently and reliably
  • How to get the AI or agent to improve in its output quality and throughput
  • How the code works that you’re generating, what decisions were made, and why
  • How to improve or extend the result
  • What is or is not possible with the approach, language, or framework

…and so on.

To be clear, in some places, AI might be eliminating friction that you need. Ergo, you might have to add it back. You might do this by forcing yourself to consume articles, books, documentation or videos about a particular topic, function, or code. However, this does require a certain amount of self-discipline. Alternatively, you can also modify your AI tools or agents to forcibly interrogate or quiz you before completing tasks or giving answers. This can be especially helpful if the goal is learning.

However, in reality, the goal isn’t often learning. Often, the goal is just to make the thing. Herein comes a big spoon of nuance…

What is and is not meaningful friction is relative

If you go to the gym, your goal is likely fitness, strength, or health. However, if you’re trying to get a sofa from the top floor of your house to the street… then you have very different goals. If it’s an old couch and you’re throwing it out, then you probably don’t give a fuck how that thing is getting out of your house. You just want it out.

___________________
/                   \
    /     (ascii couch...) \______
   |   _______________    |      |
   |  |               |   |  ~~  |
   |__|_______________|___|______|
      |__|       |__|

If you’re using AI, then your goal might not necessarily to be to learn. Instead, your goal could be to accomplish some task; reach some destination. Solve a problem. Get an answer. In this scenario, you might not care about how to get there, and how it works. You just want the solution. You just want the answer.

This might sound like blasphemy for many, especially in technical fields, where there’s a certain chivalry placed upon “learning to do it right”. But again, in the real world, this is hardly helpful, and we all know this.

To give an explicit example - this website. I created this website with Claude Code in a few hours. With a few specific exceptions at the end, I did not look at, read, or write a single line of code. Honestly, I can guess, but I can’t even tell you all the programming languages that were used to make this. And honestly? I don’t care. Why should I? This is a personal blog with insensitive information and no commercial relevance. I don’t care what the code looks like, I only care about the end result.

Now, I know that would make a lot of people recoil in protest, but let’s be real - things would be very different in a different context. For instance, if I accepted user emails or payments, if I had sensitive information on here, or if this was a commercial project for a client or even a submission for something professional. But it’s not.

A project doesn’t necessarily need to be personal and creative to fall into this category. Other examples might be:

  • Proof-of-concepts or prototypes
  • Tests and explorations (i.e. exploring techniques to use AI and agents and not necessarily what they make)
  • Iterative, business value-oriented work

Now I understand this is still contentious, particularly as we approach closer to the “self-service mentality”. Of course, the more you embrace and engage with learning, the better things you can make, and the better you can orchestrate the AI and agents who make it. But consider it in the context of existing technology, and the people who use it: Do you need to know how to develop photos in a blackroom to become a good photographer? No.

Like cameras on smartphones, many, many people will take amazing pictures that they’re happy with, without giving a shit about how it works or how objectively good that picture is.

        .---.
         / * /|  *
          .---. |    *
        |   | '  *
    | O |/
    '---'

Friction is necessary, sure, but not all the time. Not for every scenario or person equally. Sometimes just getting to a functional result is perfectly fine. I think that’s okay; we should accept that. Embrace that.

Pointless friction wastes resources

Now, friction is not always good. Some friction is a byproduct of bad designs and decisions in processes and products without considering or understanding the people who use it. Sometimes this friction can be even architected intentionally - weaponized - to force certain user behaviors, or even user retention.

+-----------------------------+
|  File  Edit  View  Help     |
+-----------------------------+
|  > Settings                 |
|    > Preferences            |
|      > Advanced             |
|        > More Options       |
|          > Settings...      |
|            > (not here)     |
+-----------------------------+

Some examples of this:

  • The user interface of Microsoft Teams changes for the 84th time and you need to find the “settings” menu again.
  • You need to uninstall Adobe Creative Cloud.
  • You need to understand a new technical product or feature that’s peppered with original branded terminology and jargon that makes it hard to understand.
  • You need to remember a term, a function name, its syntax, or a particular pattern you’ve used before.

When we work, we do waste a lot of time dealing with friction that doesn’t help us advance our goals. Returning to the bodybuilding analogy - if you’re unable to get the weights on the bar (for instance, they don’t fit, they’re stuck, or the bar is just uncomfortable) then that gives you friction. But it’s not helping you get stronger; it’s not helping you grow. This also happens when you learn; if you run into friction on badly designed (or predatory) websites, content, and software, or if you encounter more marketing than information… that’s friction.

This kind of friction is something that I think AI can really help with, and I have zero qualms with being removed.

Interestingly, one of the biggest examples of this that I think of is most user interfaces. Most software do not have good or effective user interfaces. A good example of this is the user interface in Power BI Desktop, particularly the formatting pane. For me this is a brutal, awful, horribly inefficient experience that gives me chest pains each time I have to use it, because of how much valuable time it wastes for me. The same is true when I have to click through Fabric to find some setting, permission, item, or data entity. However, now, with a coding agent like Claude Code, all of that useless friction is gone.

I don’t want to learn your software’s user interface, and if you give me a command line tool, then I don’t have to. I can just use natural language and my own set of personalized agent tools to do whatever I want… and it’s so unbelievably empowering.

    ┌──────────────────┐
    │  ██          ██  │
    │                  │
    ┌───┤                  ├───┐
    │   │                  │   │
    └───┤                  ├───┘
    │                  │
    └─┬──┬──────┬──┬───┘
    │  │      │  │

Conclusion: it’s up to you to find your friction

There are a lot of valid concerns about AI, including the risk of deskilling and eroding critical thinking. That said, this is not something new. It’s happened before from search engines, Wikipedia, “copy-and-pasting” code, and so on. Technology always provides more convenient ways to solve problems by reducing friction of the related processes. However, if your goal is mastery, then you need to chase the friction. Chase the discomfort. Find growth.

It’s worth it.