conwy

conwy

What "knowledge moats" do you have conviction in (if any)?

I’ve been thinking of trying to apply the concept of “moats” from investing to knowledge acquisition.

A business moat is a competitive advantage that protects a company from its competitors, helping it maintain market share and profitability over time.

Suppose, as a developer, I want to learn skills that are like a moat.

  1. They are in high demand and well compensated
  2. They have, by nature, limited competition
  3. Both (1) and (2) persist over time

So for (1) the skill needs to be in high demand by employers who are willing and able to pay well. For example, AI researchers are currently in high demand by big tech firms. They are paid extremely well, presumably because those tech firms can afford to pay well for them and because those tech firms have a strong incentive to pay well for them – since those skills produce profit or some other desirable outcome(s).

For (2) the skill needs to have limited competition. If there is too much competition, then the pay will be driven down and/or there will be fewer available jobs in the field. It seems that skills that are difficult and/or time consuming to master should be less competitive. By their nature, fewer people will be able and/or willing to master those skills.

For (3) the skill needs to have persistent high demand and low competition. Demand needs to persist longer than some specific framework’s or library’s “hype cycle”. I’m looking for skills that help me maintain my employability and maximise my income over a period of years or even decades. It’s no good spending years to master, say, AI research, if by the end of my studies, millions of other competitors will have already done the same thing, and now the job market is flooded with AI researchers.


Maybe some will argue that this is impossible and that the very nature of software development is that it is completely mercurial and constantly changing. But it seems to me that it shouldn’t necessarily be the case. Doctors, lawyers and engineers don’t appear to have to constantly re-learn their entire corpus of knowledge. There is a core knowledge set that they acquire early on, through rigorous training, and later learning is just smaller refinements or additions to that core. Shouldn’t it be similar for developers? Our field has existed since the 50s or even earlier. Many of the core concepts such as algorithms and data structures don’t appear to have changed radically since that time.

Focussing on the “moat” aspect, I am looking for some skills that are profitable enough to be worth mastering, but difficult and complex enough to master that they naturally limit the competition.

For example, basic HTML/CSS is a very broadly applicable and useful skill. But it’s also very easy to learn and master. Thus, there is already much competition in that space. So just learning basic HTML/CSS won’t boost my employability much, because so many other people can do it easily that I will have many competitors, so there are fewer job openings and those jobs pay less.

In the opposite extreme, the deep internals of Windows NT would be difficult to learn and master, and thus have very little competition. But it would also have very limited applicability, so it would not help my employability much. Probably only a tiny handful of employers would need that skill, and could not afford to pay much.

At the extreme intersection of applicability/usefulness and difficulty might be, say, AI research right now. Very powerful, very well compensated and very difficult to master (requiring years of post-grad study and doctoral research). But that skill might have limited persistence. Yes, it’s hot right now, but will be it still be hot 10 years from now? If I begin studying AI right now, how do I know it will still be useful by the time I finish studying it? Given it might take years or even decades to really master it, surely I want some likelihood of a payoff. Otherwise I’m kind of gambling with my career, am I not?

So I am looking for some skill(s) which are at the intersection of applicable/useful, difficult/anti-competitive and persistent/durable.


Sorry for the long post and thanks if you read this far.

Also do you have any broad critiques of my thinking? Am I too pessimistic? Am I too optimistic? Am I focussing wrongly, maybe too narrowly?

Keen to get your thoughts!

Most Liked

Bleep9279

Bleep9279

One of my moats is staying off social media and not relying on AI.

This one isn’t really about giving yourself an advantage, it’s just avoiding a disadvantage.

conwy

conwy

Some initial thoughts…

In one sense it seems that the skills in demand are frequently changing. For example, it seems that during one period (say, 60s-70s) COBOL programming was in demand, During another period (say, 90s) Visual Basic, Delphi and SQL programming were in demand. During another period (say, 2000s) Flash and Java were in demand. During another period (say, 2010s) web technologies such as JavaScript, HTML, CSS were in demand. Currently (2020s) it looks like web technologies, AI, data science (like Python, R) and blockchain (like Java-ish smart contracts) are in demand.

In another sense, many of skills are built on computing foundations that were already laid since decades ago. COBOL was built on procedural programming. Visual Basic, Delphi and Flash were built on structured programming, object-oriented programming and graphical user interface principles. SQL was built on relational algebra. Java was built on object-oriented programming and later some type theory. JavaScript and Typescripts were built on object-based programming, functional programming, type theory, some mathematics (e.g. the nature of undefined). And so on.

If one had learned these abstract fundamentals early on, maybe it would have been much faster to learn the more concrete manifestations later on. Maybe this speed of skill learning would have permitted access to jobs demanding those skills at a time when it was most profitable to know them.

Maybe this then is the value of traditional computer science education? Unfortunately it’s taken me until almost 40 years of age being uneducated to realise that. :laughing:

Fundamental Application
Procedural programming COBOL, ALGOL, etc
Structured programming Visual Basic, Delphi, C
Object-oriented programming Delphi, Java, C#, C++
Graphical User Interface principles Visual Basic, Delphi, CSS
Relational algebra SQL
Type theory Typescript, Haskell
Functional programming Javascript, Typescript
Object-based programming Javascript
Mathematics Javascript, R, Python
Statistics R, Python, Blockchain

conwy

conwy

Some additional points, sorry, I’ll try to keep them brief.

  1. To maintain their competitive advantage, those with foundational skills, and awareness of the value of those skills, might instinctively prefer to keep the facts about those foundational skills secret, in order to maintain their moat (competitive advantage).
  2. Some individuals/groups will use the foundational skills to build various products and/or a kind of cult around them. For example, the inventors of Flash seemed to have a strong commercial motive and also a cohort of users to monetise (young enthusiasts and later digital agencies).
  3. Businesses that want to apply technology to their own specific use cases will choose to adopt the products because the cults around those products provide a ready labour pool much larger than just the limited pool of the formally educated (e.g. computer science graduates). Though that seems to be changing lately.
  4. Confusingly, for the less-educated like me, there will appear to be large overlap between educated and non-educated practitioners, making it appear as if education is optional. In reality, the educated (or at least, those who really absorbed it) have a distinctive knowledge advantage, which will bear out over time, in the form of good execution, promotions, business success, etc.

On point 4 … as someone who entered the industry straight out of community college with little formal education … this would explain why certain people in the industry, including some who I physically used to work alongside, have suddenly “zoomed” ahead into becoming successful entrepreneurs with profitable firms, executives, etc. It’s not just “luck” or “who you know” … it’s actually a lot of fundamental knowledge which I didn’t realise I didn’t have.

Where Next?

Popular General Dev topics Top

brentjanderson
From wikipedia: The zettelkasten (German: “slip box”) is a knowledge management and note-taking method used in research and study. ...
New
PragmaticBookshelf
Craft your dream role at work by guiding your manager to take your priorities into account when making decisions. Ken Kousen @kenko...
New
AstonJ
On my Mac I would just use Apple’s Preview which open’s PDF files, and on the Kindle their standard app. On the iOS devices I am preferr...
New
OvermindDL1
An interesting and yet simple programming question making the rounds the past few days, how does everyone here answer: Given an input f...
New
AstonJ
Have you changed the way you learn? Maybe you started off using docs and tutorials and are now an avid book reader or course watcher? Or ...
New
conwy
I’ve been thinking of trying to apply the concept of “moats” from investing to knowledge acquisition. A business moat is a competitive ...
New

Other popular topics Top

PragmaticBookshelf
Learn from the award-winning programming series that inspired the Elixir language, and go on a step-by-step journey through the most impo...
New
New
Exadra37
I am asking for any distro that only has the bare-bones to be able to get a shell in the server and then just install the packages as we ...
New
AstonJ
If you get Can't find emacs in your PATH when trying to install Doom Emacs on your Mac you… just… need to install Emacs first! :lol: bre...
New
New
hilfordjames
There appears to have been an update that has changed the terminology for what has previously been known as the Taskbar Overflow - this h...
New
PragmaticBookshelf
Author Spotlight: Peter Ullrich @PJUllrich Data is at the core of every business, but it is useless if nobody can access and analyze ...
New
PragmaticBookshelf
Develop, deploy, and debug BEAM applications using BEAMOps: a new paradigm that focuses on scalability, fault tolerance, and owning each ...
New
PragmaticBookshelf
A concise guide to MySQL 9 database administration, covering fundamental concepts, techniques, and best practices. Neil Smyth MySQL...
New
PragmaticBookshelf
Use advanced functional programming principles, practical Domain-Driven Design techniques, and production-ready Elixir code to build scal...
New