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.
- They are in high demand and well compensated
- They have, by nature, limited competition
- 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!
First Post!
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. ![]()
| 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 |
Popular General Dev topics
Other popular topics
Categories:
Sub Categories:
- All
- In The News (10583)
- Dev Chat (202)
- Questions (34)
- Resources (119)
- Blogs/Talks (27)
- Jobs (3)
- Events (15)
- Code Editors (59)
- Hardware (57)
- Reviews (5)
- Sales (16)
- Design & UX (5)
- Marketing & SEO (2)
- Industry & Culture (14)
- Ethics & Privacy (19)
- Business (4)
- Learning Methods
- Content Creators (7)
- DevOps & Hosting (9)
Popular Portals
- /elixir
- /rust
- /ruby
- /wasm
- /erlang
- /phoenix
- /keyboards
- /python
- /js
- /rails
- /security
- /go
- /swift
- /vim
- /clojure
- /emacs
- /haskell
- /java
- /svelte
- /onivim
- /typescript
- /kotlin
- /c-plus-plus
- /crystal
- /tailwind
- /react
- /gleam
- /ocaml
- /flutter
- /elm
- /vscode
- /ash
- /html
- /opensuse
- /zig
- /centos
- /deepseek
- /php
- /scala
- /lisp
- /react-native
- /textmate
- /sublime-text
- /nixos
- /debian
- /agda
- /django
- /kubuntu
- /arch-linux
- /deno
- /nodejs
- /ubuntu
- /revery
- /manjaro
- /spring
- /diversity
- /lua
- /markdown
- /julia
- /slackware










