Background: One of the new responsibilities I have at Groupon is getting lots of awesome developers to work here. [If you are or might be an awesome developer, email my work address - email@example.com - and check out the job openings at http://groupon.com/jobs ] So I’ve put myself out as a representative of Groupon’s dev team, announced hiring, answered questions, etc. In one week, two people have responded asking about summer internships.
[HILARIOUS UPDATE: I left off one sentence that has confused at least one person so far. Groupon doesn't have an internship program right now. We're just barely starting on campus recruiting for college graduates. The friendly advice was a consolation prize since I couldn't help with the internship. Sorry for the confusion!]
Here’s some advice I gave them through email that I thought was worth posting publicly:
- If you’re already reaching out to companies when you’re a sophomore , you should be commended for being so on top of your career this early in school. Too many people wait until two months before (or even after) they graduate. Even if you don’t get the internship, you make an impression.
- If there’s an established technology you’d like to learn, a book is still a good place to start. There’s a balance of theory and practice, it will be edited and consistent, and give you a complete end-to-end look at the technology. But don’t just read the books, do the exercises in them. If you want to learn Rails, the book Agile Web Development with Rails has you build a complete ecommerce website and you can do it in a week or so. Sometimes doing comes before understanding (or rather, you can’t understand without doing). EDIT: How do you tell the good tech books from the bad? Ask someone who is good at that technology. Too shy? O’Reilly and Pragmatic Programmer books are generally good, and you can often get good recommendations by searching on StackOverflow or SearchYC.
- On that note, PLEASE don’t wait for a class to learn a new language or technology. CS classes have their place, giving you a broad foundation of principles and practice in certain specific subjects. But many techniques (e.g. source control), technologies (e.g. server administration, nginx configs, etc), and languages (many schools teach only C and Java) won’t EVER be covered in school. In the workforce, you’ll have to learn stuff on the fly and on your own for your whole career, so you need to start learning things outside of class now if you want to be decent.
- Don’t just focus on specific languages or frameworks, learn some general programming skills. Books like Structure and Interpretation of Computer Programs (free online at http://mitpress.mit.edu/sicp/full-text/book/book.html) , Clean Code, The Pragmatic Programmer, etc are great for that.
- If you glossed over that last point, go back! Reading SICP, watching the video lectures, and doing the exercises will make you a fantastic programmer.
- Learn at least one “obscure” language. It will help you learn things that are hard to learn in mainstream languages like Java. I’m partial to Lisp and the book Land of Lisp is a great, fun way to learn that language.
- Find a project. It doesn’t have to be something meaningful or important, just do it! Write a scraper to find the nearest Starbucks to you. Make a group management website for your study groups. Write software to control a LEGO mindstorm robot. Just do something, post projects online, put code up on GitHub, and write something about what you did, and put it on a blog. This gives you a public record of interest in programming outside of work, which is very, very appealing to employers and probably the number one thing in getting to an interview. It will also give you practice writing and show you how you improve over time.
- Get involved with developers in your area. If there are meetings in your area, you can find them in 5 seconds thanks to the other Big G. If you can’t find any, it’s because those things take time and hassle to arrange. Volunteer to help with the meetings, find locations, etc, or organize your own. That stuff isn’t hard, it just takes time and the confidence to do. That way you will generate a lot of goodwill and make connections with people you can work with and learn from.
So there you go. $100 worth of books to buy, a years worth of homework, and you will have made yourself more appealing to employers than most college graduates!
Bonus points: If someone answers you saying “We’re not ready now but get in touch next year”, make sure you do it!