I don’t know how many hard problems there are in computer science, but now that I’m coding for a living again after ten years doing other things, I think the four that matter most to working programmers are (in order):
- Figuring out what users actually want.
- Managing configuration & deployment. (Used to be an hour a week; it’s now a third of a dev’s time.)
- Getting the next person up to speed with the code base.
- Handling partial/intermittent failure.
I know there are lots of other interesting challenges worth studying in software engineering research, but solutions to these—practical solutions that people would actually adopt—would have more impact on more programmers than anything else.