I am a junior at Penn State University pursuing a major in Computer Science. Beyond knowledge taken from the classroom and related work, I code a lot of java web applications on the side. What additional steps can I take to ensure a solid foundation for a career in software development? Do you have any suggestions for internships or work experience I should try and get under my belt? Thanks in advance.
I don't want to downplay the value of internships, but I'd focus on stuff you can do on your own time and under your own control. Here are three ideas:
Open Source - Pick an open source project to either start (harder) or contribute to (easier) or both. If you're not feeling quite confident enough to start adding features, find one with a test suite that isn't complete and start adding tests. Use a test coverage analysis tool and just fill in the blanks. You'll end up discovering code that's hard to test, which will lead to refactorings. It's an excellent experience and will expose you to other passionate members of the community (great networking!) as well as round out stuff you can include in your portfolio/resume when you're looking for work.
Speaking - Try attending and then preparing a presentation for a local user group meeting (or an on-campus meeting if you're more comfortable with that). Get your name out there and also get some experience presenting your ideas to others in a group setting. It's one of the most critical skills to success in a business environment and there's just not enough focus on it in academic curricula. If you can present your technical ideas in the form of a speech, you can interview better, interact with business customers more effectively, teach your co-workers, etc. You can also get more "famous" for what that's worth
Writing - If you don't have a weblog, start one. If you do, start focusing on publishing content that people link to. You can find tons of iffy lists of ways to get more links, but the way you should focus on is writing content that is worth reading and teaches people something. Do this enough, and you won't even have to look for a job by the time you graduate. Potential employers will be contacting you.
The Passionate Programmer: Creating a Remarkable Career in Software Development