Ask YC: What do I, a graduating CS student, need to know to go into the real world as a 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