What do I, a new graduate, need to make sure I know to land a decent job in the 'real world' as a programmer? I am graduating in less than 2 months with a Bachelor of Science in Applied Computer Science (BSACS) and feel clueless about what is approaching rapidly - a.k.a THE REAL WORLD. I know this question has been asked and answered countless times (most of which I feel that I have read), but as is the case with all in the tech world, often this information becomes dated rapidly, is one sided or extremely biased. So again, what concepts, technologies, languages and various disciplines do I need to KNOW in order to be proficient, or at least to be good enough to land a job, as a professional programmer?
I find myself feeling as if I know all this 'programming stuff' but have no real clue of how to sit down and work in a development environment with other developers on a real project. Not only this, but I feel that I know a little about a lot - i.e. I am a jack of all trades, but a master of none. Clearly I have done problem solving and system design in my classes, but these projects are limited to core concepts based heavily on CS theory and are often very limited in size and complexity. I have been exposed to C++ (4 classes), Java (2 classes), VB.Net (1 Class), SQL (1 class), Discrete Mathematics (1 class), Project design and management (1 class), Advanced Algorithms and Design (1 class) as well as a sprinkling of various other 'CS-related' classes via my education. On the side I have played and dabbled with Ruby, Python, PHP, C, C# and a handful of other technologies that escape me now. I have a 3.6 GPA and have not made less than an A in my core CS classes since the beginning, but again, I still feel clueless.
Any tips, suggestions or criticisms are warmly welcomed (well, except criticism, which will be welcomed, just without the warm feelings attached). Please, where time and willingness permits, be specific - do I need to know how to design/write a compiler? do I need to know assembly (taking that class this term anyways)? If I want to make money first and worry about fun later, should I focus on corporate adopted technologies (Java, anything Microsoft, etc.)?
Thanks in advance!
-Matt
There are exceptions, of course. Microsoft is infamous for being demanding of their new hires. You'll likely find that the more a company's core business is software, the more computer science skill they will demand of you. But there are lots and lots of companies hiring programmers who have core businesses other than software.
Which languages to be proficient in varies depending on the sort of work you are doing. Browse current job openings; for the ones you find interesting, look at what languages they are using, and then focus on those.
Contributing to some open-source software project is a good way to develop some practical skills. Two months of part-time effort isn't a lot, but perhaps better than nothing. If not that, then you yourself should learn how to use some sort of version management tool, like Subversion. Go through a tutorial, start storing your homework projects in it, etc. You won't get to see all of the ins and outs of version management using it alone, but it'll be a start.