Progressively Sharper Edges

April 2020 · 1700 words · 8 minute read

Given that we’re all in isolation I’ve been attempting to learn a few new skills to add to my repertoire and I’ve observed that a large number of the examples and tools are either too basic or too advanced. They’re, quite frankly, not very good. In my view, the focus should always be on the concept of progressively sharper edges.

The examples and tools are either too sharp or too blunt, almost none of them fall into the goldilocks zone of progressive enhancement that is what makes good tools truly shine. A sharp tool is one where you need to invest significantly in learning the tool itself before you can make any form of progress towards the underlying activity. These are tools designed purely for experts, the kind of tool that only really makes sense if you completely understand the domain you’re working in and are willing to make the investment in the tool itself.

A blunt tool on the other hand is the stripped down version which is offered to beginners, it’s blunt because a large amount of the functionality has been removed and thus it’s difficult to cut yourself with it. Blunt tools can be exceptional learning aids, they can strip away a lot of the complexity around the tooling and enable you to focus on the underlying concept. But blunt tools are always inherently limiting, once your knowledge has extended beyond the basics you’ll find yourself getting frustrated and fighting the tool itself as opposed to making progress. Blunt tools are easy to start with but hard limit your progress.

The best tools are the ones that you can progressively sharpen over time. The grow with you and an investment in it pays off in spades.

The problem, is that most tools and instructional manuals are often made by experts who have already internalised a phenomenal amount of knowledge relating to the subject matter, they build the tool that they want to use as opposed to the one that is best for the beginner or one that will grow with you.

Many experts make terrible teachers because they don’t understand this. They jump straight to the most advanced tools that they can think of and don’t understand why beginners get frustrated. This tendency spreads across domains. Experts are so far beyond beginners that they’ve often forgotten what it’s like to be one. They don’t realise how intimidating it is to have to go through 300 different steps before you can even get to Hello World.

Take a tool like GIMP, it’s notoriously unforgivable for its interface but proponents swear by it. They claim that it’s just as powerful as other tools on the market such as Photoshop and they don’t understand why GIMP doesn’t have the same degree of market adoption.

These proponents all share one thing in common, over time, they have become experts at using GIMP. That is, they are not experts at manipulating images but experts at using one particular piece of software to manipulate images. When you’re an expert at an individual tool you internalise all of the quirks and rough edges that it contains. On the other hand, if you’re a novice who just wants to edit some photos and you come across this field of razors you’ll just end up cutting yourself. You’ll probably quit and then write about your bad experience with the tool.

Sharp edges don’t just exist in tools, they’re also rampant in a lot of instructional manuals (recipes/tutorials/how to guides etc). These sharp edges occur because the writers have implicit knowledge about the subject matter. They often use jargon or breeze over things that they’ve internalised over time, one such example that I’ve found recently has to do with making sourdough bread (hipster I know).

The thing about sourdough is that the people who like to make sourdough, really like to make sourdough. They’re absolute zealots about it, they love sourdough and over time they’ve developed a series of tricks and hints and specific things that they love about their own personal way of making sourdough. This of course makes them absolutely terrible teachers for beginners to learn from. I don’t want to learn some individuals personalised way of making sourdough I want to learn the basic shit version of sourdough. I just really want to eat a loaf of bread that I’ve made myself.

The progressively sharper version of learning to make sourdough must always begin with the simplest possible way of getting a load of bread out the oven and into the mouth of the maker. From this moment the knowledge and techniques can be sharpened with use, for example, you can try different folding techniques, different rising times, cold proofing, using specialised pieces of equipment, using a speciality oven etc. That’s all fine. But if I search a “basic sourdough recipe” that requires me to invest in specialised equipment like proofing baskets and bread sacks I’m putting it down. That’s not a basic recipe for beginner. I’m not going to throw down $50 on equipment just to make my first loaf of bread, the manual is too sharp.

The same occurs in exercise, how many convoluted exercise regimes have you seen out there with advanced exercises thrown in like they’re something that should be done each day. Or perhaps the suggestion is to undertake convoluted periodic cycling loading regimes designed to work towards a competition peaking cycle.

Perhaps, and I know this is blasphemy in certain circles, what’s necessary is the most basic and simple regime possible which is designed to build the habit of exercise over time. Once this has been locked in it should be tweakable towards whatever the user wants to gravitate towards, that is, it should be able to be sharpened.

All of this information and the advanced tools that are out there are enough to leave the beginner gasping for breath at the complexity of it all. Who would have thought that you’d need to learn what an ES6 transpiler (full credit if you know the difference between a transpiler and a compiler) is before you can get a simple webapp up and running. Maybe try installing the LAMP stack perhaps? Who would have thought you would need to master the art of macronutrient timing and carbohydrate cycling before you can lose weight (maybe try counting calories first). Who would have thought that you’d need to learn a special sequence of keyboard presses to be able to exit Vim (maybe try Sublime Text or VSCode first). It’s time that we recognised that these razor sharp tools should only be used by experts and that if we want people to become experts we need to provide them a guided pathway to using them.

It’s enough to leave the beginner gasping for breath at the complexity of it all, it’s also completely unnecessary. These techniques have their place but they’re only useful once the basics have been internalised, they’re the sharp edges that can be valuable in the hands of an expert but to a beginner they’re likely to just end up cutting themselves.

When you’re learning something you want to figure out two things:

  1. How to understand the pure essence of what you’re trying to do
  2. How to use the tools to accomplish what you’re trying to do

Think of the GIMP example above, you don’t use GIMP for the sake of using GIMP. You use it because you want to manipulate some images, likely a photo. This then represents the difference between the essence and the tool. GIMP forces you to learn the tool at the worst possible moment for most people, when they’re trying to learn the essence. You just want to do some simple manipulations to a photo and GIMP is throwing you into a complex interface full of keyboard shortcuts and hidden menus.

This then gives us an objective measure for understanding our tools.

The best tools can be progressively sharpened

That is, they start blunt and get out of our way when we’re trying to do something but they can also grow with time.

VSCode and Sublime Text are good tools because they can get progressively sharper but are still approachable for beginners. Yes, they may lack the raw power of emacs or vim but if your tutorial has someone dropping into emacs to get something done then you’re doing the wrong thing.

Yes, Starting Strength by Mark Rippetoe is basic and has a number of flaws. But if you’re trying to take someone who has never undertaken any strength training before and you start talking about Daily Undulating Periodisation (DUP) protocols then you’re doing the wrong thing.

Yeah, mastering the perfect sourdough recipe may give you a surge of pride but in a recipe for beginners you shouldn’t be focussing on micro optimising the hydration of the dough and talk about developing the optimal gluten component. Instead, focus on the simplest possible way you can think of to get them to bake some damn bread otherwise you’re doing the wrong thing.

A Warning: I am not trying to suggest that progressively sharper tools are blunt tools, the opposite in fact. I hate blunt tools, the ones that are so intentionally crippled that they lock the user into a specific pathway with no possibility of advancement. These are the tools that claim you don’t need to learn anything before you can use them, mobile/tablet apps often fall into this bucket. A food processor and a microwave is another example, a “bowflex” machine is a third.

I am suggesting that we should build tools and write tutorials in a way that enables progression by the users and readers. We should design and develop them so that they can get better over time but taking into account that they will need an escape hatch at the beginning to just get the thing they wanted to do done.