Possible Duplicate:
most desirable skills for a graduate software engineer
I'm currently doing my PhD in physics and will be finished in about two years from now. I plan to become a software engineer afterwards. I'm now looking for advice on which skills I should improve during this time in order to reach my goal.
My background: For my research I need to write my own programs. I've been programming every now and then since I was a child but only in the last 2.5 years I've actually spent a lot of time coding. I've got around 2 years of experience in C++ now and consider myself being good at it. Recently, I started learning Python. I didn't attend any university courses on algorithms, data structures or databases, so maybe I'm lacking some basic knowledge here.
I thought about reading books on the following topics:
- General books like Code Complete or The Pragmatic Programmer.
- Test-driven programming and agile development methods (though I'm not sure how widely they are used in companies)
- Databases
- Algorithms and data structures
I also thought about learning Java...
What would you consider useful in my situation? Which skills are important for a company?