I'm a data visualization expert. While my undergrad in CS prepared me to hack, optimize, test, render, and model with the best of them, I don't believe that code + graphics + machine learning are sufficient for dealing with large data sets.
The bulk of my graduate training focuses on the messy human side of data and computing—in academic land, we call it Design Study Methodology. It's all about figuring out from people why (and whether) they care about data, what they actually need to see in it, prototyping custom visualization solutions, testing whether visualization tools actually give users the exposure and control over their data that they need, and helping them to record and present their discoveries effectively.
Of course, with a PhD, there's a little something extra on top. For my research, I went back to the thing about computers that obsessed me as a child: creative software. I'm a firm believer in software that enables people to create, not just consume. But creating with data is really hard (see my 2014 AVI publication).
Part of the problem is that data tends to require automation—which doesn't jive well with the manual aspect of things like drawing. One thing we tried that seems to work is to bridge different tools that use each approach. For details, see my 2016 InfoVis publication, or the Hanpuku bridge between Illustrator and d3.js.
Another problem that we're trying to tackle is how to let people reshape graph data to fit their mental model, instead of being constrained by the given structure. For example, if I'm given Actor and Movie nodes, connected by Role edges, but I'm computing Bacon numbers... I might prefer Movie edges, connecting Actor nodes. How do I go about making this shift? For details, check out Origraph, a kind of "Excel for graphs" project.