There is only one trait you need in order to be a computer scientist: persistence. And I mean dogged persistence. Like you spend 10 hours on a problem persistent.
This is actually a learning exercise. After some time, you start to discern patterns in how things tend to break, and you see them in multiple places. Even as operating systems, programming languages, and applications change, you see these patterns of how to fix broken things, because you have experience under your belt.
The truth is, if you have no patience for such things, or if you want to quit after an hour of working on something, chances are you won't last long in this field.
I can tell you, though, that persistence pays off. After awhile, the mystery of machines begins to go away, you begin to see patterns, and your frustration dissipates. And best of all, when you do have that breakthrough and fix the damned thing, you feel an overwhelming sense of accomplishment.
It feels like this is difficult to communicate to "kids today". I think it's hard for them to see the point of the struggle, when there are so many other fields that don't require nearly so much frustration. (A friend once described it as constantly banging your head against the wall and then feeling really good when you stop doing it, which perhaps is apt.)
Often people ask me why I became a computer scientist, and I always reply honestly - it never occurred to me to do anything else. (And I'm as stubborn as a mule, which helps. :-))