I think the most upvoted answer will be problem solving, but instead I think it should be a broad liberal arts education, ethics, and learning how to say no. We've had enough of building machines as efficiently and ruthlessly as possible, it's time to start questioning the what and the why instead.
I have a friend who quite literally works on cluster bombs at Lockheed Martin and says they see no connection between their work and anything else in the real world. They just make "tools" like people at Facebook, it's not up to them how the tool is used.
We don't need any more software engineers like this who are good at solving problems and not much else.