Personally I'd say: computer science is not needed, a (strong) programming background will help tremendously though. "a bit of C++" does sound like that could be improved.
I'd start without any ROS (seeing as you're starting a PhD, you should have some time to ignore ROS for now), but some good tutorials on:
- Linux (command line and daily usage)
- C++ (perhaps your university has a course)
- perhaps Python
- and as @VictorLamoine suggested: take some time to look into CMake (as the build tool underlying Catkin)
You don't need to be a wizard (so don't overdo looking-for and completing tutorials), but you do need a decent background in these things.
Then look at ROS.
(you could of course always parallelise things, but I've noticed with 'my' students that this can cause them to be overwhelmed by new concepts, and have a hard time properly integrating all the new knowledge).
Finally: understand that software engineering (the art of putting programs / structures together in a logical and maintainable way) is just like any other engineering dicipline:
- identify a problem/task
- divide it into smaller problems/tasks
- solve subproblems
- combine solutions into final solution
ROS ideally helps with steps 2 and 4, by making the effects of dividing solutions into smaller parts almost transparent to your program (ie: communication is taken care of for you).
Programming is just a way to encode your solutions in a format that allows them to be executed by a machine -- in this case a computer.
Learning to program is the process of being able to do that.