What are first principles?
Overview
First principles are the genesis of a domain.
I'm going to write several blogs this topic so it's important to define what first principles and domains are. This blog defines both first principles and domains.
Everything I write on this topic will have a focus toward corporate software development.
The eventual end goal is to write about Domain Modeling. Domain modeling is most important thing that exists in software development and I've never seen anyone discuss it in a meaningful way. (Domain modeling as a term has been hijacked and inappropriately used in titles of various software books).
I'm going to slay this dragon and that adventure starts with this blog.
What are first principles?
Let's start with an example from the economics domain.
Specific example
First principle: Resources are scarce, but human wants are unlimited.
Here's how that relates to a real world scenario.
Imagine you have $100 to spend. You might want a new video game, a nice dinner out, and new clothes. However, since your money is limited, you can't buy all three. You'll have to choose based on what you value most at that moment.
Understanding this first principle allows one to build several rules of economics. These rules could be concrete like laws of physics or simply heuristics which are true most of the time. But the important thing is that first principles allow you to logically deduce the next level of understanding.
Rules such as:
- Scarcity Leads to Choice
- Unlimited Wants Drive Demand
- Scarcity Promotes Innovation
- Resource Allocation Leads to Trade
- Unlimited Wants Encourage Economic Systems
- Scarcity and Time Preference
Definition
So what's a first principle?
A first principle is a basic truth which rules or laws can be logically derived. If you understand the first principles of a domain, you can deduce all the rules of that domain.
They are the starting points that allow you to explore and learn about a domain. First principles are like building from the ground up.
When learning a domain, books and professors don't always start with first principles. They often just give you rules to memorize. If you only understand the rules, it will be next to impossible to derive more rules. You need the first principles for that.
Learning how to use databases is a good example of this phenomenon. You learn SQL and things like 3rd normal, but you aren't taught how the database stores and retrieves information. This creates developers who inadvertently code database performance problems into their applications. This crisis would be avoided if developers learned the first principles of databases.
First principles are the genesis or the big bang of domains.
Final example: First principles create domains. That's a first principle of first principles.
What are domains?
There are a lot of definitions of a domain.
The definition I'll use for this blog series is a domain is a specific sphere of knowledge. This is the definition that's most useful for corporate software development. A business tries to solve a problem that plagues a domain.
Turbo Tax tries to solve the problem of filing taxes in the domain of finance. Dropbox tries to solve the problem of sharing files in the domain of business. If you work at either of these places, you'll learn about their domains (finance, business) just by being around it every day. The language they use to talk about their solutions is the Domain Model. I'll explain the Domain Model in a later blog.
Conclusion
With these definitions we can now drill down into specific domains and highlight their first principles. Once you have the first principles (which aren't always obvious) you will have root level power over the domains. No need to memorize all these rules and facts. You'll become a wizard of sorts.
People will marvel at your insight all because you know the first principles and they don't.
The following blogs will highlight the first principles of software development, management, and life as a corporate software developer. All driving towards teaching Domain Modeling as a skill.
Will I slay this dragon or will the dragon eat me?
References
The economic first principle and its following rules were generated by Grok.
Add your thoughts to the discussion
I have a level headed thought I want to share
I have an totally unhinged thought you must know about, RIGHT NOW!