Similarly a generalist software engineer should know what things are realistic and possible with data mining and machine learning. Just like they should know what is possible and realistic in cpu design or network protocols. They might not know all the latest tricks but they will be able to design and advise on systems which depend on these capabilities.
I'm sorry to say this, but your expectations are insane.
Or maybe I'm misinterpreting you. I know that a CPU has pipelines, multiple cores, an ALU, a MMU, a FPU, several levels of caches, etc., but I have no idea what's "possible or realistic" in CPU design. At least not in any way that I'd be able to argue toe to toe with an actual hardware engineer working on CPUs.
I also know about network protocols, L1/L2/L3/L4(7), IP, TCP vs UDP, etc., but same thing, a real network engineer would wipe the floor with me regarding "possible and realistic" network protocols.
Same for data mining or machine learning. Sure, if you held a gun to my head I could probably design something, but I definitely wouldn't feel confident going to production with it in any serious capacity unless I consulted some people who actually know the field.
This field is way too broad for 1 person to cover everything at a decent level of competence. I think that people who think otherwise are deluding themselves.
Or you're thinking about a generalist providing a shallow level of advice. Maybe that could apply, but I don't know who that would help...
Similarly a generalist software engineer should know what things are realistic and possible with data mining and machine learning.
This is impractical. A generalist software engineer should know that machine learning is possible, and have some idea of who they would ask for help if it became relevant (or to ask if it were relevant). They should be able to design systems which depend on these capabilities in collaboration with a domain specialist, and based on their advice.In this context, ML is like FPGA design, cryptography, network security, or embedded real time systems. A generalist should know they exist and that they contain hard problems.
Likewise, a GP does not in general have a good understanding of cardiology. Rather, they have a good understanding of indications from basic tests that mean they should send their patient to a specialist.