It boils down to two pieces of advice that I convey to my own students:
First, they must be able to program well. This applies broadly to many EE/CS disciplines where the primary end-product is software, and even to many hardware-related disciplines where the design and testing process is done entirely in software (of course, in the latter case, additional hardware-related skills may be required). In particular, it’s not enough to be good at algorithm design at the level of psuedocode. Besides what they have learned in introductory programming classes, and the ability to program in environments geared for scientific experiments (such as MATLAB), they should be familiar with state-of-the-art programming languages, tools, and practices. It is very useful for them to do significant hands-on software projects and industry internships during their Ph.D to gain significant experience in this direction.
As Vivek Haldar puts it:
You must be a great coder. That is a minimum prerequisite. During one interview, I asked a candidate (a recent PhD graduate) to give me some pseudo-code for the solution he had just described, and he went “oh well, if you must make me code…” That pretty much made me go “no hire.” What did you think the job involved?
Where does this advice leave students with a more mathematical bent, those who are primarily interested in proving theorems, whose dissertations don’t require the building and testing of any software artifact beyond some MATLAB code? Not much worse off. Complementing their strong theoretical abilities with practical coding skills will not harm them, even if they do plan to pursue a research career.
Second,they must be able to communicate well in diverse settings. They must learn to communicate their ideas effectively, not only in a deep and rigorous manner as they must when writing for and giving talks to a technical audience of researchers and faculty in their own field, but also in an accessible and engaging manner to a broader audience. In industry, they will need to be articulate in contributing ideas in informal brainstorming sessions and meetings with their colleagues, as well as in formal presentations and reports, when they need to convince managers and clients of the merits of their proposals and solutions. In an industry setting, unlike in academia, they will need to be able to communicate with people from diverse backgrounds. Towards this end, while doing a Ph.D., they should practice giving talks to people outside their immediate field, and writing for a broader audience.
This second piece of advice also works well for Ph.D. students who don’t go on to industry positions. Even at academic interviews one is often talking to smart people who are not in one’s own area of expertise. And whether it is writing grant proposals or talking to students, being able to communicate coherently and persuasively with diverse audiences is an essential career skill for academics as well.
Good advice and equally valid for those in computational areas. Hat tip to Abi for sharing the post on Google+.