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!

First Post!

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

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

wolf4earth
@AstonJ prompted me to open this topic after I mentioned in the lockdown thread how I started to do a lot more for my fitness. https://f...
New
AstonJ
Or looking forward to? :nerd_face:
490 12945 266
New
AstonJ
SpaceVim seems to be gaining in features and popularity and I just wondered how it compares with SpaceMacs in 2020 - anyone have any thou...
New
Rainer
My first contact with Erlang was about 2 years ago when I used RabbitMQ, which is written in Erlang, for my job. This made me curious and...
New
New
AstonJ
Saw this on TikTok of all places! :lol: Anyone heard of them before? Lite:
New
PragmaticBookshelf
Author Spotlight Jamis Buck @jamis This month, we have the pleasure of spotlighting author Jamis Buck, who has written Mazes for Prog...
New
RobertRichards
Hair Salon Games for Girls Fun Girls Hair Saloon game is mainly developed for kids. This game allows users to select virtual avatars to ...
New
PragmaticBookshelf
Fight complexity and reclaim the original spirit of agility by learning to simplify how you develop software. The result: a more humane a...
New
Fl4m3Ph03n1x
Background Lately I am in a quest to find a good quality TTS ai generation tool to run locally in order to create audio for some videos I...
New