I'm currently in the third year of my comp sci undergrad degree. Before graduating, I'd like to experience a co-op term with a heavyweight in this field. What topics do you think are most pushed for when trying to get a co-op placement with these companies?
views:
688answers:
8The basics.
It's easy to overlook if an interviewee/intern doesn't know some of the more advanced programming concepts, but if you fumble on the basic parts it will reflect poorly.
The fine art of asskissing will open all doors for you. If you know some job-related stuff, it will be of benefit.
Good grades and a strong recommendation from a professor are important -- selection of interns are always influenced by those. Strong fundamentals in algorithms, data structures, and programming methodologies (unit-testing, integration testing, iterative approaches, ...) won't hurt in any job nor in any internship.
What else a specific company is going to be looking for in a give internship candidate is an iffier question, because the companies you've listed use and develop different technologies.
I imagine MS will look favorably upon strong command of .NET technologies, which Apple no doubt cares less about, and viceversa for Objective C and the various Cocoa frameworks (there is of course some group at MS that's developing apps for Macs, and some group at Apple who deals with interoperability with MS boxes, and in consequence SOME interest in each other's technologies -- but in terms of number of developers, AND of interns, such groups are a tiny minority of the positions available with the company).
You should learn about Software Development process. The software lifecycle and its various stages is fairly well-known in all of industry. Also, learning how to design proper software IMO is probably the MOST useful skill if going for a job in the business sector. This means learning proper object-orientation (if working with an OO language), common best practices, patterns (in moderation!), etc.
While Mastermind put it very cynically, his point is valid. When looking for jobs and internships (especially internships, i think) knowing people is at least as important as knowing certain technologies. Build a relationship with your professors (this does not have to be asskissing. It can be working on projects with them, or just stopping by their office for extra help, or whatever.) Network with your friends to find someone who knows someone at the company you want to work for. A company is going to (hopefully) care a lot about the technical qualifications of a new permanent employee. But that same company might bring on a summer intern just because they are the nephew of so and so, or because one of their other interns recommends them. That is certainly how it works at my company, for better or for worse. (usually it's worse when it's somebody's nephew, and better when it's a recommendation from someone we already trust)
Currently in one of the positions you seek, here's my advice -
Grades are over-rated. Recruiters know this, and unsurprisingly they're not stupid. However, you do need to retain a reasonable GPA. Otherwise, you'll have some tougher questions to answer to. It's primary used for initial candidate filtering, and I was quite shocked to notice they don't really care after that.
Sadly, "what you know" isn't as important as "who you know". You need find opportunities/connections with the employers you seek.
Target yourself toward the position.
Detach yourself from required Academia. Meaning, start personal projects, blog, get involved in some open source project, and keep yourself updated (stackoverflow is a great start!). Merely siting still throughout college won't cut it.
Plan on failure. It's a rough gig going through it. Some interviews are only technical (dehumanizing), and others more conceptual (personal). It's a crap shoot. Be warned, it's the worse feeling in the world when you botch up an interview because your fluency in some language is rusty or they expected more.
Practice. Fail. And Repeat.
Your more then welcomed to email me if you have any specific questions! Good luck!
Know the position you're applying for.
If you don't understand what you're applying for, or don't understand what it takes to fill that position, you aren't going to get it. Period.
Keep this in mind when applying for positions. Don't apply for positions you don't completely understand. In large companies like Apple, you often can only interview for one position at a time. No matter how early you get in on the cycle, getting caught up in interviewing for a position you don't fit into can destroy your chances of being offered a position you would work well in.
Know the people you're talking to.
It doesn't matter where you're applying. You need to know the names of everyone you're speaking with, their telephone numbers and email addresses. Call back semi-regularly to check up on your application process. Build a relationship with your recruiter, and you are more likely to get a position.
This is extremely important. I have interviewed for positions, not qualified due to age restrictions, and called back the next year and been bumped to the top of the list. I have also been offered a job, not called back, and missed my opportunity.
The gist
- Apply for positions you're sure you belong in. Don't push it for a position.
- Make sure you follow up with the people you're working with on your application.
Neither of these points will make any difference if you don't know your stuff, as a lot of the other answers here say. Know the basics, demonstrate that you can learn quickly, and show that you're motivated to provide quality work on time and on budget.