It is my belief with some exceptions it is almost always easier to teach a domain expert to code than it is to teach a software developer the domain.
It is my belief with some exceptions it is almost always easier to teach a domain expert to code than it is to teach a software developer the domain.
For problems that can be solved with only a small amount of simple code that is true. However software can become very complex and the larger/more complex the problem is the more important software developers are. It quickly becomes easier to teach software developers enough of your domain than to teach domain experts software.
In a complex project the hard parts about software are harder than the hard parts about the domain.
I've seen the type of code electrical engineers write (at least as hard a domain as software). They can write code, but it isn't good.
That's true both ways though: if a theoretical physicist wants to display a model for a new theorem, it'd be probably easier for them to learn some python or js than for a software engineer to understand the theorems.
If this is the case is discoverable, for at least one direction. Reproducability is known to be a problem in some of the sciences, for various reasons. Find a paper that includes its data and software/methodology used for analysis, and try to get it running and producing the same results. Evaluate the included software/methodology on whatever software quality standards you feel are necessary or appropriate.
Hard disagree with hard parts of software are harder than domain. I don’t know your story, skills, or domain. But this doesn’t match my experience and others around me at all.
Really depends on the domain. I've been in jobs where the domain was much harder than my job as a software engineer, but I've also been in jobs where I quickly got to understand the domain better than the domain experts, or at least parts of it. I believe this is not because I'm smart (I'm not), but because software engineering requires precise requirements, which requires unrelenting questioning and attention to details.
The ability to acquire domain knowledge quickly however, isn't exactly the same as the ability to develop complex software.
Maybe you and others around you are all in some form of engineering capacity? Because I have seen software everywhere from coffee shops, bicycle repairs, to K12 education - all of whom would hard disagree with you.
Not all kinds of programming are the same.
Web dev is low entry barrier and most web devs don’t need a very deep knowledge base.
Embedded, low level language, using optimizations of the OS / hardware require MUCH more specialized knowledge. Most of the 4 year undergraduate program for Computer Science self selects for mathematics inclined students who then learn how to read and learn advanced mathematics / programming concepts.
There’s nothing that is a hard limit to prevent domain expert autodidacts from picking up programming, but the deeper the programming knowledge, the more the distribution curves of programmers / non-programmers will be able to succeed.
Non programmers are more likely to be flexible to find less programming-specific methods to solve the overall problem, which I very much welcome. But I think LLM-based app development mostly just democratizes the entry into programming.
Every single time I try to get a domain expert at $job to let me learn more about the domain it goes goes nowhere.
My belief is that engineers should be the prime candidates to be learning the domain, because it can positively influence product development. There’s too many layers between engineers and the the domain IME
I mostly agree, but I see programmers more as “language interpreters”. They can speak the computer’s language fluently and know enough about the domain to be able to explain it in some abstractions.
The beauty of LLMs is that they can quickly gather and distill the knowledge on both sides of that relationship.
It is my experience that most of these business domain experts snore the moment you talk about anything related to the difficulties of creating software.
Yeah, I think the issue has more to do with the curiosity level of the participant rather than whether they are a business domain expert or a software engineering expert.
There’s a requisite curiosity necessary to cross the discomfort boundary into how the sausage is made.
Until a few months ago, domain experts who ciuldn't code would "make do" with some sort of Microsoft Excel Spreadsheet From Hell (MESFH), an unholy beast that would usually start small and then always grow up to become a shadow ERP (at best) or even the actual ERP (at worst).
The best part, of course, is that this mostly works, most of the time, for most busineses.
Now, the same domain experts -who still cannot code- will do the exact same thing, but AI will make the spreadsheet more stable (actual data modelling), more resilient (backup infra), more powerful (connect from/to anything), more ergonomic (actual views/UI), and generally more easy to iterate upon (constructive yet adversarial approach to conflicting change requests).
We have monthly presentations at my job and the business folk are really leaning into AI. The biggest win so far are them being able to generate new user experiences and get them into figma by themselves. They're able to test a design, get it into figma, generate some code, and get it in front of users without a developer or designer at all. It's not perfect but the tests show what we need to focus on vs what falls flat when put in front of users. It's very impressive and I'm proud of them.
Super interesting. I don't know why, but something about this comment made something click for me, as an "AI fatigued" engineer.
From the view you describe, it seems AI just lets you experiment faster, when all you want to do is experiment. You find product market fit easier, you empower designers more, etc. Much easier to iterate and find easy wins from alternative designs - as long as your fundamentals work!
Only problem is that you are experimenting in public, so the massive wave of new AI generated features come to the public from everywhere at once. Hence the widespread backlash.
Not to mention, the core job function when you are experimenting is different from what defines a lot of hard technical progress: creating new technologies, or foundational work that others build on, is naturally harder and slower than building e.g. CRUD services on top of an existing stack. Deep domain expertise matters for selling, deep programming expertise matters for stability. I don't know, curious where the line will end up getting drawn.
Yeah, the examples I've seen really focus on experimentation which my employers's platform is designed around. We are constantly testing changes in design and copy and hoping that we get small incremental increases in user attention. AI is really suited for these small changes and it allows us developers to build platforms specific stuff instead of working on baby tweaks. We already had a pretty good system where astute business people could tweak HTML and CSS but now their lives are even easier and they can focus on their actual job which is increasing customer sign ups and attention
> AI will make the spreadsheet more stable
Hallucinations sure make spreadsheets nice and stable.
One of my favorite things about this field is getting to learn about all of these different business domains.
In practice, does that happen? Usually companies try to bring the best of both and build from there.
I wouldn’t argue how things historically worked, but rather where the LLM innovations suggest the trajectory will go.
This is interesting. Do you know of any examples of successful tech companies built by non-technical founders?
Your question kind of answers itself with the filter of "tech companies". If you asked broadly about successful companies, the answer would be more apparent.
But an answer to your question would be Capital One.
I think a more appropriate question would be:
"Are there more or less examples of successful companies in a given domain that leverage software to increase productivity than software companies which find success in said domain?"
Eh, this is the kind of pithy soundbite that sounds vaguely deep and intelligent but doesn't hold up.
In what domains have you had experience taking non programmers with domain knowledge and making them programmers?
That doesn't track at all IME.
Programming is not something you can teach to people who are not interested in it in the first place. This is why campaigns like "Learn to code" are doomed to fail.
Whereas (good) programmers strive to understand the domain of whatever problem they're solving. They're comfortable with the unknown, and know how to ask the right questions and gather requirements. They might not become domain experts, but can certainly learn enough to write software within that domain.
Generative "AI" tools can now certainly help domain experts turn their requirements into software without learning how to program, but the tech is not there yet to make them entirely self-sufficient.
So we'll continue to need both roles collaborating as they always have for quite a while still.
Conversely, good developers can now leverage LLM’s to master any domain.
Hhmm I think that's more difficult than using these tools for creating software. If generated software doesn't compile, or does the wrong thing, you know there's an issue. Whereas if the LLM gives you seemingly accurate information that is actually wrong, you have no way of verifying it, other than with a human domain expert. The tech is not reliable enough for either task yet, but software is easy to verify, whereas general information is not.