views:

688

answers:

8

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?

+1  A: 

The 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.

GaiusSensei
A: 

The fine art of asskissing will open all doors for you. If you know some job-related stuff, it will be of benefit.

User
Being talented and prepared will get you much further than being a brown-noser, especially in the programming industry. They don't care how well you suck up, they care that you can write good code, and know what you're talking about. They don't care that you got them their coffee, and didn't ask to be paid back. The boss isn't going to continue to employ you because you buy him coffee.
Sneakyness
+6  A: 

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).

Alex Martelli
If you get a microsoft internship you're pretty much guaranteed to be doing automated testing in C#, I have a few friends that are/have been doing placements there and that seems to be the extent of all the microsoft technical internships. (At least in the UK)
Ed Woodcock
@Ed: I have a friend who's there now and actually developing VS. He's a much different case than myself, though. He completed a college diploma, worked for a few years, then started uni.
Chris
Alex: I have been a professor for 14 years, and I have never once been asked for a recommendation for an undergraduate student for a summer internship. I think the only company that has asked me for a reference at all has been D. E. Shaw in New York. Companies evidently believe they can evaluate candidates better than professors can.
Norman Ramsey
@Norman, wow -- I don't recall ever mentoring an intern who _didn't_ have a professor's recommendation in their file (in twice as long as you've been a professor;-). Different companies...?
Alex Martelli
Keith Smith
@Keith, I'm talking about a written reference letter -- a non-generic one is obviously preferred (like for any reference) but a generic one is better than nothing. Something like a personal phone call as the one you mention is unusual (carries weight, of course, in the rare cases in which it happens).
Alex Martelli
@Alex I got an internship with MS - and I didn't know any .NET technologies. The people who interviewed me were satisfied that I knew Java (OO) and C (how pointers work) and told me that picking up C# wouldn't be that difficult. So while I agree that they might look favorably upon C# (for example), I'm not sure they are looking for "people with lots of experience with MS technologies". If you have that... then you're missing out on a lot of csc anyway.
rascher
+1  A: 

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.

AlbertoPL
+5  A: 
Norman Ramsey
Isn't the term "challenging" a subjective term? Could you please list the criteria you think is necessary and/or sufficient for a course to be challenging?
kunjaan
"Challenging" is indeed subjective, but it's nevertheless easy to evaluate. Just ask your fellow students what courses (or what professors) are hard. I'll bet either compilers or OS is on the list. Maybe both.
Norman Ramsey
+1  A: 

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)

Peter Recore
+5  A: 

Currently in one of the positions you seek, here's my advice -

  1. 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.

  2. Sadly, "what you know" isn't as important as "who you know". You need find opportunities/connections with the employers you seek.

  3. Target yourself toward the position.

  4. 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.

  5. 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!

Rev316
Random question, but is "you're more than welcome to PM me" automatic to you because of forums? SO doesn't have PMs does it? (And since your profile doesn't list an email, he can't email you either.)
Telemachus
Ops! Thanks Telemachus! As you can tell, still a newbie here. I've added it to my profile.
Rev316
+1  A: 

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.

Dean Putney