This is quite insightful. Often in my projects, some central nouns come up over and over again in discussions about architecture, until they become embedded in the actual software and the interface.
Since I started using AI tools to assist, I've found a lot of both utility and frustration revolves around my use of these nouns in prompts (in the context of, e.g. "during the 'quickpay' confirmation phase..."). When the bot settles into understanding these nouns, it seems to get a better handle on the architecture as a whole. When it suddenly forgets them and has to go figure out what they mean by scanning the code base, I know it's about to do something staggeringly redundant and stupid.
Nice article Ben! I think the HN crowd would be more familiar by calling those "Entities" but I like the new perspective of all companies only handling two or three of them really well.
I think there is more nuance about it for the SaaS-pocalypse though. I have been talking to hundreds of B2B companies and customers are now vibe coding solutions when they need something that the platform doesn't support: a dashboard, a workflow, or an integration.
And once a B2B customer gets a taste of vibe coding... then it's just a matter of time before they start to think about replacing the entire SaaS completely. I have seen this play over and over again so many times in the last few months, it's honestly shocking.
I am working to find solutions to the SaaSpocalypse but don't want to derail from the main topic, there's more info in my profile if this has been something you're thinking about!
Something I'm really good at is ending my articles with half-baked ideas :) so thank you for challenging it
Regarding "entities", totally understand. I like to write in ways that my mom would understand- not the HN community. In fact, I have a post called "Everything is a Spreadsheet", where I explicitly defined that Entity<->Noun relationship. Should have linked it!
Back to the Saaspocalypse... my startup is reckoning with this like all others. My next blog post will be titled "What's Preventing Me from Building Your App in a Weekend?". The ultimate "what's your moat" question. I think every SaaS should be forced to answer this on their marketing site. Thinking aloud, I'm considering good answers companies can say to this question... I think a perfectly legitimate answer is still "our prompts are better than your prompts". There are some companies where I simply believe the founders/engineers when they say they understand the problem better than I, because they've explored it more deeply. This is kinda what I was hinting at at the end... softwares that go mega-vertical in one or two nouns accrue more subject matter expertise than I ever will. Thus, that gives me more reason to trust their infrastructure, their configurations, and their prompts. This is not new but rather an extension of what created the SaaS economy in the first place.
I will definitely check out your profile- thank you for the thoughtful reply!
Domain specific knowledge has been the moat for a long time, hasn't it? Outsourcing isn't new. Maybe you can do in a weekend for $500 what would have taken a month and $20k before, but code itself isn't a barrier to competition - even really good code.
On the other hand, much of the code I write is in an industry where training and operations manuals are closely guarded corporate secrets that make up the recipe or soul of a company. The job of the SWE is to deeply understand the processes and procedures that employees follow, and to write code that helps facilitate those and then gets out of the way. A lot of it comes from walking around and seeing how people are actually using the software and what works, and what's a pain point. I've always maintained that the value is in the operations manuals, and the code is just a logical extension of that. But that's where SaaS usually is insufficient because regardless how versatile and broad it is, it doesn't usually encapsulate enough domain knowledge, let alone the proprietary stuff.
"Knowing names is my job. My art. To weave the magic of a thing, you see, one must find its true name out. In my lands we keep our true names hidden all our lives long, from all but those whom we trust utterly; for there is great power, and great peril, in a nam- what's that? Yes, I did move the Issue into the Backlog before starting the Sprint. No, it was seven Story Points. Break it down into two Subtasks? Yeah, can do. Then I'll mark it as Ready." -- Ursula K. Le Guin (mostly)
Makes me wonder if a similar level of analysis was done in reverse to conceive these, hopefully not word yahtzee. At least they don't end with "ly" - the horror.
Identifying the right taxonomy is not only an exercise in naming things, but also building the appropriate data structures and systems in your programs. I think this exercise is incomplete in the absence of studying how these nouns interact with one another.
I don't think that a loose-hanging 'payment intent' evokes a particular emotion, without its constituents' (credit cards, direct debits, cryptocurrencies) relationship to other nouns (customers, invoices, taxes, countries).
This is a great point. I did bring up the relationship exercise in the post, but admittedly I didn't give it enough respect.
In college, my database teacher told us to design a database with at least 50 tables and 100 relationships by the end of the lecture. "It will be easier than you think", he said. And it was! And I thank him for that, because that lecture alone probably got me through more progress in product design discussions than anything else.
This makes me think of domain models in domain-driven design. Very useful to think about what these models are and how it makes sense to set them up & relate them in your area of work.
Never heard of this! This would’ve saved me a blog post. I tried all sorts of queries to see if this philosophy existed, and “domain” didn’t pop up in my head. Thank you!
Kinda feels like identifying the key user stories with a bit too much naval gazing at the implementation.
That said, the implementations start to gain their own weight as user expectation grows to meet the implementation. I suppose the noun thinking is not entirely frivolous for an established app with expected core workflows and design language.
Something frustrating is when a company is being _clever_ with their nouns. Sometimes it's relatively innocuous, but spending time remembering what unique name I should be searching for instead of something obvious is not my idea of a good time.
Since I started using AI tools to assist, I've found a lot of both utility and frustration revolves around my use of these nouns in prompts (in the context of, e.g. "during the 'quickpay' confirmation phase..."). When the bot settles into understanding these nouns, it seems to get a better handle on the architecture as a whole. When it suddenly forgets them and has to go figure out what they mean by scanning the code base, I know it's about to do something staggeringly redundant and stupid.
I think there is more nuance about it for the SaaS-pocalypse though. I have been talking to hundreds of B2B companies and customers are now vibe coding solutions when they need something that the platform doesn't support: a dashboard, a workflow, or an integration.
And once a B2B customer gets a taste of vibe coding... then it's just a matter of time before they start to think about replacing the entire SaaS completely. I have seen this play over and over again so many times in the last few months, it's honestly shocking.
I am working to find solutions to the SaaSpocalypse but don't want to derail from the main topic, there's more info in my profile if this has been something you're thinking about!
Regarding "entities", totally understand. I like to write in ways that my mom would understand- not the HN community. In fact, I have a post called "Everything is a Spreadsheet", where I explicitly defined that Entity<->Noun relationship. Should have linked it!
Back to the Saaspocalypse... my startup is reckoning with this like all others. My next blog post will be titled "What's Preventing Me from Building Your App in a Weekend?". The ultimate "what's your moat" question. I think every SaaS should be forced to answer this on their marketing site. Thinking aloud, I'm considering good answers companies can say to this question... I think a perfectly legitimate answer is still "our prompts are better than your prompts". There are some companies where I simply believe the founders/engineers when they say they understand the problem better than I, because they've explored it more deeply. This is kinda what I was hinting at at the end... softwares that go mega-vertical in one or two nouns accrue more subject matter expertise than I ever will. Thus, that gives me more reason to trust their infrastructure, their configurations, and their prompts. This is not new but rather an extension of what created the SaaS economy in the first place.
I will definitely check out your profile- thank you for the thoughtful reply!
On the other hand, much of the code I write is in an industry where training and operations manuals are closely guarded corporate secrets that make up the recipe or soul of a company. The job of the SWE is to deeply understand the processes and procedures that employees follow, and to write code that helps facilitate those and then gets out of the way. A lot of it comes from walking around and seeing how people are actually using the software and what works, and what's a pain point. I've always maintained that the value is in the operations manuals, and the code is just a logical extension of that. But that's where SaaS usually is insufficient because regardless how versatile and broad it is, it doesn't usually encapsulate enough domain knowledge, let alone the proprietary stuff.
One effective moat might be "Your LLM has never been trained on our closed source codebase."
Sometimes the nucleus aren't just nouns are barely mentioned.
I don't think that a loose-hanging 'payment intent' evokes a particular emotion, without its constituents' (credit cards, direct debits, cryptocurrencies) relationship to other nouns (customers, invoices, taxes, countries).
In college, my database teacher told us to design a database with at least 50 tables and 100 relationships by the end of the lecture. "It will be easier than you think", he said. And it was! And I thank him for that, because that lecture alone probably got me through more progress in product design discussions than anything else.
That said, the implementations start to gain their own weight as user expectation grows to meet the implementation. I suppose the noun thinking is not entirely frivolous for an established app with expected core workflows and design language.