Summer Internships - The Good, and the Bad?
loquacious d asks: "This has been a spectacular summer for open-source student internships. Google funded a huge variety of open-source projects through the Summer of Code, including GCC-CIL and other improvements to Mono, new features and fixes for Gaim, and even new packages for Common Lisp. Joel Spolsky at Fog Creek hired four interns to produce a highly modified version of VNC called Fog Creek Copilot, and Paul Graham's new venture capital firm Y Combinator helped students create their own tech companies. What internships did people enjoy this summer, and which ones didn't work out so well? Which ones would you recommend to next year's applicants, and which should they avoid?"
Paul Graham's and the Fog Creek internships aren't necessarily open source. VNC isn't in a copyleft license, and the web backend to the system probably won't be released anyway.
--
WHO ATE MY BREAKFAST PANTS?
I'm an intern at Sun Microsystems this summer, working with the Java Swing team on look and feel oriented stuff. It's very interesting to work on such a huge project. I've also had the chance to talk at JavaOne. Overall it's an excellent and wonderful experience.
Common Lisp has been attracting a lot of attention lately, compared to previous activity. Several of the Common Lisp projects funded were for the purpose of improving things like foreign function interfaces, and thus speed Lisp's popularity and utility even further.
There are a lot of applications written in Lisp that are special enough and powerful enough to justify lots of attention. For example:
ACL2 : http://www.cs.utexas.edu/users/moore/acl2/
This is a high powered proof assistant and IIRC was used by AMD to verify some parts of their chip design.
Maxima: http://maxima.sourceforge.net/
This is a computer algebra system, with the ability to do things like symbolic integration. Not your run of the mill program, and very difficult to do except in a language like lisp or a similar language
Axiom: http://www.axiom-developer.org/
A second computer algebra system, with a slightly different approach than Maxima. Also extremely powerful, and is pushing the envelope of robust, literate program design for computational mathematics.
None of these has a pretty interface, granted (at least not one written in lisp) but these are not your everyday programs. Lisp is a real language in real, non-trivial use.
There are a variety of other projects being undertaken, check out http://common-lisp.net/ for many of them. And if you want to code lisp remember to explore SLIME+Emacs.
"I object to doing things that computers can do." -- Olin Shivers, lispers.org
And that's a crapton of open source software.
Chris
Co-Editor, Open Sources
Open Source Program Manager, Google, Inc.
For anyone looking for good internships, I highly recommend undergraduate research. I found the experience to be quite fun and educational. This summer, I did some Linux kernel research and built an extension of the kernel. The project records system call information. (It's similar to the Linux strace utility, but with several important modifications.) During the spring, earlier this year, I started looking for a summer internship. I didn't find my school's career fair too helpful. Submitting a resume via email is also rather impersonal, and doesn't allow you to show an employer why they should hire you. If you want to find a good internship for the summer, getting in front of someone who can actually hire you is key. (As oppose to some human-resources person). Also, ask about the project(s) you'll be working on. Make sure it fits your interests. At the same time, keep some opportunities as backups, even if you're not that interested in them. I got my internship by going around to different professors, asking them what projects they were researching, and if they'd like any help on the project for the summer. Most universities post the professor's research-interests on the staff webpage for the department. That's a good place to start when looking for interesting projects.
I did internships a few years ago (yikes, I feel old) at three different companies. Regardless, of the company, I highly recommend them for obvious reasons, i.e. you get great work experience.
One tip I would give, though, is that wherever you do end up working, you are going to have to prove that you can take on challenging tasks. No matter how smart they are or think they are, companies who hire interns assume interns aren't very knowledgeable and aren't responsible enough to take on more challenging tasks. I can see where they are coming from, so I don't dispute the validity of their actions. With that in mind, if you really are good, don't be afraid to ask for more work, and more interesting stuff at that. I've found that in the past, I was able to breeze through tasks and was quickly bored. Initially, I was too shy and lacked confidence to ask for something more difficult, so I "wasted" my first internship by repeatedly doing simple things they tossed at me because I thought that I shouldn't rock the boat.
Also, don't be surprised to find that you are left on your own and have nobody to hold your hand through things. I've never worked anywhere where somebody has always been around to help answer questions or knew enough to answer all my questions. But then, that's the reality of the work (and "real") world.
I interned for Amazon.com this summer, and it was an awful experience. It seems that my case was particular though, as most of the interns here are working on interesting projects.
Yup tomorrow is my last day as an intern at a pretty large(think largest) financial institute.
I am a CS major, one semester left. Basically I am working with a team of developers and tech support(internal tech support) and my awesome summer internship consisted of waiting around for tech support to write up procedures so I could mark them up in html and post them on some crippled website. I was lucky it let me use css. The job should have taken a week max, but the ones afraid to lose their jobs by publishing their tasks streched it out to 10 weeks. About 3 weeks in I approached my manager(very hands off type of guy) and told him of the situation and asked if I could work with the developers in my many downtime hours.
Scheduled a meeting...
"Hey website looks great, content is key, make sure we get those procedures up"...walks away.
So I took it upon myself to offer my services to the developers, well, the project is so far ahead of schedule, the developers have no work for even themselves.
So, I waited out the summer, and tried to learn about my favorite new technologies, even started do top coder competitions during work.
And for those saying get research experience, i've also had bad luck with that. Pretty much since sophomore year, I have offered my time, for free, to every professor in my department. No interest. I applied to every REU site listed, got accepted by colorado, then rejected 3 days later.
Its not as easy as you people make it out to be.
As one of those interns at Sandia National Laboratories, I can say it was an excellent experience. I learned a lot and got experience working with a software development organization that is very well organized. I got to meet some of the other interns, and have been really amazed by the breadth of work being done here. I've got some real world experience, something that looks good on my resume, and plenty of opportunities are opened up that I might not have had otherwise. Today I demoed the project I've been working on for my coworkers, and they were all very happy with it. I not only have a lot of experience to take away from here but I feel like I've also left behind something that will be useful for the people I've had the pleasure of working with for the last few weeks. And, in very non-Slashdot style, it looks like I got a girl out of it too :)
The eID program (for undergrads) at GE comes highly recommended. I've spent the last 3 summers working for the GE Healthcare company working on Java for their upcoming Java-based patient monitor.
Had I been working on a Bachelor of SCIENCE degree instead of a BA, I could have moved on to the Edison Engineering program, a *very* prestigous post-undergrad internship program that pays you (VERY well) while you get to travel (if you want), earn 2-4 credits for a masters degree (or PhD if you already have a masters).
If you want more information (all of this stuff isn't on GE.com for some reason), please e-mail me at: my slashdot user name @gmail.com.
Obviously if you have a moral objection to working for Microsoft, then don't bother applying. But if that doesn't apply to you and you like hacking code, MS has been a great experience for me in the past.