Search This Blog

Finding Optimal Friction

In the last twenty years, the Internet and mobile devices have reduced or eliminated friction in numerous industries. Obviously the communication sector has been dramatically affected, including telecom, music, television, and publishing industries. Now anyone with an Internet connection can put their stuff up on-line for the world to see, and new players like Netflix have been able to challenge the big networks for our prime time hours.

The Internet has leveled the playing field across the communication industries, and it's now easier than ever for competing producers to get their products in front of customers. That's one way to look at the concept of friction in markets, from the perspective of producers. Another way to look at friction is from the consumer's perspective, and that friction has been dramatically reduced, as well. From having all of the world's information literally at your fingertips to being able to buy nearly anything at the click of a button and having it shipped to your door, the Internet has gone a long way in removing friction from consumers' lives.

However, not all industries or aspects of our lives have been affected equally by the Internet, and sectors like energy and transportation still have a lot of friction that could be reduced with the right advances in technology. Energy production and automobiles are ripe for a technological revolution.

Reducing friction isn't the be-all and end-all for making our lives easier, though. Reducing friction comes with its own cost, and I think we sometimes forget how high that cost can be. We can end up wasting more time and energy in a frictionless environment due to distraction and an overwhelming amount of choice. Finding the right balance means recognizing where too much friction is wasting our energy so that we can target those inefficiencies and realizing where too little friction is wasting our time so that we can avoid those time sinks. It's a constant struggle as we push forward with technology.

Too Much Friction


When I think about what area of my life has the most friction, it has got to be driving. I'm pretty sure I spend more unwanted hours driving a car than anything else. I do try making the drive more enjoyable by listening to audio books, but the fact remains that I'd much rather be reading a book or doing something else rather than driving.

That's why the prospect of self-driving cars is such an exciting thing. That advancement promises to dramatically ease a part of my life that actually has a lot of friction, not to mention the other major benefits of reduced accidents and increased mileage efficiency that would result. A technology that allows me to ride in a car safely while being able to do other things will have a real impact on my life, resulting in a real reduction in friction that I feel on a daily basis.

If I expand my view out to the world as a whole, instead of my personal dislike of driving, it seems that energy production is one of the largest sources of friction that we have to deal with. Sure, I have to pay for the electricity and gasoline that I use, but that's a relatively minor cost in my life. On the other hand, the amount of energy required to keep our civilization running and progressing is truly staggering, and the overwhelming majority of it comes from sources that need to be extracted from deep underground, refined, and burned to provide us with the electricity for our smart phones, heat for our homes, and gasoline for our cars.

Between the drilling, digging, transporting, and polluting, that seems like an awful lot of friction to endure for the energy that we need. Investing time and effort to reduce that friction seems like resources well spent, especially since we are inundated with energy from a powerful nuclear furnace all day long:

© User:Rfassbind / Wikimedia Commons / CC-BY-SA-3.0

It would be incredible to turn every house into its own power plant using solar panels and a battery to generate clean energy. That kind of reduction in friction has the potential to substantially change our relationship with energy and create new ways of using energy that we can't even conceive of right now. Individual energy generation is likely the equivalent of the Internet for the energy sector. The technology to do it is ready today. We just need to commit the resources to making it a reality.

Too Little Friction


While the transportation and energy sectors have clear areas of too much friction, that is not the case with everything. Some areas of our lives now arguably suffer from too little friction. Take software programs as an example. It used to be the case that you had to go to a brick-and-mortar store, find the software you wanted on a shelf, bring it home, and install it. You could also mail-order software for slightly less friction. Remember that?

The Internet and, even more so, app stores have completely eliminated that friction for consumers. Now you can pop into the app store right on your device, click a button, and the app installs—instant gratification. On the other side of the exchange, the friction of getting software in front of consumers has also been greatly reduced. Instead of having to deal with production, packaging, shipping, and retail stores, anyone with a computer, an Internet connection, and a credit card can potentially be a software producer.

You would think that this tremendous reduction in friction would lead to a utopia of software apps. There's an app for every problem you could possibly have, and competition creates better, more user-friendly apps that are a pleasure to use. That may be true in many cases, but first you have to find the app you need. At last count, the Apple App Store had 1.5 million apps and Google Play had 1.6 million apps! How do you know that the app you're looking at actually solves the problem you're having in a way that's better than what you were doing before, without the app? Even more troublesome, there are probably apps buried in those stores that could make your life easier in ways you didn't even realize were a problem. The best method of finding good apps seems to be serendipity, or stumbling across an app recommendation on a random web site or via word-of-mouth.

The increase in choices creates its own friction. You can end up spending more time searching for and evaluating apps than you would doing things the old way. The xkcd comic "Is It Worth Your Time?" definitely applies here:

xkcd: Is It Worth Your Time?
Be sure to include the time it takes to learn how to use the app well enough so that it actually saves time, and account for the fact that it's one of many apps that you use. Will you remember to use it when you have dozens of apps on your phone? How about hundreds? The paradox of choice can bite you many times over when friction doesn't limit your options.

Speaking of the paradox of choice, let's consider software development for a moment. The Internet has definitely reduced friction in this arena. There's an open source library for almost anything you can think of doing in most of the popular languages. GitHub has over 29.4 million repositories and counting. For whatever you're trying to do, there's probably a library out there that could support your work. The question is, can you find it?

Even after you find a library that seems to suit your needs, you need to make sure it's properly licensed for your use, you need to figure out how to use it and integrate it with your software project, and you need to keep up with any bug fixes and breaking changes that happen. Library maintenance is its own special kind of time sink because active libraries will not stand still, and you need to stay current on bug fixes that may affect your code, especially security fixes. You may also want to use new features that get added to your libraries, or you may want to switch to a new library that does something similar but better than the library you're using now. As the number of libraries you use increases, library maintenance will take more and more of your time.

Optimal Friction


So in many cases reducing friction increases choice, which adds its own type of friction. This trade-off leads to an optimization curve with both ends turned up. Too much friction wastes effort, but so does too little friction. The question is then, where is it best to spend your time? Do you do it yourself (whatever 'it' is), or do you look for a ready-made solution? This is not an easy question to answer. It all depends on what you're doing and what your goals are, so the answer is quite a personal one.

If you plan on using a library (or an app or whatever) a lot and it's of good quality, then it's quite possibly worth your time finding it and learning it. This likely holds true for the major, common libraries and frameworks. If you are already overwhelmed with libraries, then maybe you can't handle the maintenance costs of yet another library. It's also worth considering the value of doing something yourself. The more problems you solve on your own, the better you get at solving problems. Practicing the art of problem solving pays big dividends over time, and the mental acuity that you develop will come in handy for all kinds of problems, not just the ones that are similar to what you're working on now.

Some amount of friction can be good for you because it keeps your mind active and able to remember how to actually do things. As a specific example, let's consider git. We now have plenty of quite good GUIs for using git, including the GitHub client, Tortoise Git, and SourceTree to name a few. These are all fine interfaces for using git, but don't forget about the git CLI (command line interface). Besides the fact that the CLI can do more powerful operations (with the risk of doing more powerful damage to your repositories), using the CLI is a good way to keep your mind nimble. To use the CLI effectively, you need to learn and remember a set of commands, and you can piece those commands together to do different things to your code repositories. It's a kind of puzzle that you are constantly solving whenever you use the CLI.

If you work at it and get good at using the git CLI, you can do a lot of code maintenance tasks quickly, and you're exercising your brain as well. As a programmer, keeping your mind sharp is important. Now, I'm not advocating using CLIs for everything, otherwise you end up in the same overwhelming position of having too many apps or libraries to deal with. On the other hand, only using GUIs threatens to turn a mind soft and lazy. A mind needs at least some challenges to stay in shape so you can keep improving as a programmer.

This balancing act between too much friction and not enough is a tough one. In general there is no right answer, but there are areas where it's obvious that we could reduce friction to great benefit and areas where we've probably gone too far so that we're now swamped with choices we don't have time to make. Instead of fiddling at the margins of making easy things even easier, we should be spending more resources on those high impact areas where friction is significant and ripe for reduction. We should keep in mind that some friction is often better than no friction, and be alert for those opportunities to find optimal friction.