by ggr2342 on 6/10/23, 6:57 AM with 30 comments
by PeterStuer on 6/12/23, 5:46 AM
Needless to say these projects typically crashed and burned irrecoverably at first contact with production.
by samwillis on 6/11/23, 9:42 PM
The best lesson I have learnt working in product development (both software and physical) is to ask "dumb" questions. The vast majority of the time they aren't dumb. What seems to you, on fist pass, to be a dumb question is almost certainly an insightful one. The person, your customer/client, will be pleased to hear you asking it.
Every answer to a question is a jigsaw piece, ask a question that fills in the next gap until you have the full picture. Each answer gives you a new edge in the picture to ask a question about.
Sometimes the "expert", your customer, who you are asking won't know, and that's just as valuable as it gives you insight into them and the new field you are working in.
Don't stop asking questions, start with them, then Google and read anything and everything you can.
An enormous part of new product development is learning about the field, then applying your learnt knowledge from elsewhere to it.
by oaiey on 6/12/23, 5:58 AM
If you have a domain competent group, your requirements/stories/tasks are faster written, better developed, better tested and quicker delivered. In addition to hitting the market need. If not, you will see money burning.
by BlargMcLarg on 6/11/23, 9:36 PM
The advice is great in a world where people remotely cared about good software and are willing to pay for it. Not such great advice for reality.
by marcod on 6/12/23, 1:35 AM
by pphysch on 6/12/23, 5:19 AM
I like to think it makes knowledge transfer at least a little bit easier across the user-developer membrane.
by erehweb on 6/11/23, 9:28 PM
by Jtsummers on 6/11/23, 9:17 PM
by verbify on 6/11/23, 10:48 PM
My experience is more with CRM. In these cases, domain knowledge is still important, but it's more about the curiosities around how a specific sales/marketing/customer support team is structured - how do they divide up leads? Do they compete with each other within the team or are bonuses given to teams? Usually these decisions are informed by domain knowledge. E.g. the customer support of a boutique expensive watch brand would be more of a concierge service (with tickets requiring immediate attention - a delay in response could represent a big loss in sales), while for a mass manufacture cheaper line it would have more of a volume of tickets and human response times might differ. Escalations would therefore need to be programmed differently. To give another example, I can imagine seasonality having a huge impact on how a financial team want their software programmed, and that is informed by domain knowledge.
But knowing how watches are made wouldn't help me with understanding 'domain knowledge'. I need to understand how they are sold. The domain that I need to understand is 'how does this sales team work' not 'how does this product work'.
I guess what I'm saying is the right kind of domain knowledge to match the task.
by charlie0 on 6/11/23, 11:13 PM
The best organizations will work to leverage the productivity of individual devs over just throwing bodies at the problem, but that doesn't happen everywhere.
by nologic01 on 6/11/23, 11:14 PM
The exception is of course if you work solo, in which case it does indeed become a full stack problem of sorts. Individuals who can pull this of can make significant impact.
by js8 on 6/12/23, 10:48 AM
by AdieuToLogic on 6/12/23, 3:01 AM
This is probably the best thesis statement I have seen regarding S/W engineering in a long time.
by tanepiper on 6/12/23, 8:21 AM
by aryehof on 6/12/23, 4:45 AM
I call domains where expertise lies outside of the software development team - “external domains”.
For these, programmers, testers and managers need additional skills in requirements elicitation and capture, and more importantly skills in modeling a system (real or imagined) based on those requirements.
In a software world dominated by technical requirements, how to determine and model functional requirements in an external domain can be what makes a programmer a great one.
by Dave3of5 on 6/12/23, 10:55 AM
I prefer not to have any vendor lock in so I focus my skills on the parts that are transferable to other companies.
Domain knowledge to me is primarily a BA responsibility. The bits that a dev needs to know are converting that into the implementation.
FYI this also probably comes from someone who hasn't had a very niche and difficult domain. The most complex domains I've worked in would have required decades of training and experience to understand. My job was to know enough to to my job well.
by ChicagoDave on 6/12/23, 6:42 AM
And some domains are extremely complex, requiring an extensive learning process. This is why large consulting-led projects fail, because there isn’t enough time taken to truly understand the domain.
by Domdomkusu on 6/12/23, 5:15 PM
by jameshart on 6/12/23, 12:16 PM
One particular Dunning Kruger trap that devs can fall into is fixating on the most complex parts of the domain that they understand in any depth, and the edge cases that complexity suggests, at the expense of addressing the concerns of the actual experts, that are most relevant to the task at hand.
This can lead to software centering domain concepts that are esoteric and obscure at the expense of the concepts needed to meet the actual requirements. Or embedding rules that to experts are more like guidelines.
Like: it’s great that you’ve developed a deep interest in and love for heraldry, the system of colors and tinctures, and the way flags can be described using a blazon - but it’s probably okay to just have an SVG url for an image of the flag in the database, not a full blown heraldic DSL.