College freshman - what to do over summer?

6 points by dwong ↗ HN
Hi, I'm a college freshman planning to major in computer science. I hadn't really programmed before college. The summer before, I read through an intro Python book and learned basic HTML/CSS. I enjoyed my intro course taught in Java, and will be taking a course in Scheme next semester. I also plan to start learning Django next semester.

I want to learn more about software development over summer. I'm wondering whether I should look for an internship, or study/build stuff on my own. Programming seems to be a field where I can learn a lot from watching someone do it, but I'm worried that I'll be assigned repetitive work in an internship and learn little.

Would you guys recommend for me to find an internship or learn and try to contribute to open source projects on my own? Thanks for any advice.

5 comments

[ 5.3 ms ] story [ 50.0 ms ] thread
It depends on your learning style - I know that for myself (especially when I was in school) my brain was in a mode that worked well for structured learning. When I was just starting the learn the ins-and-outs of programming, I liked the rigidity and direction that classes offered and thus, I did the more formal internship path vs a self-study.

It also depends on the specific internship you hypothetically take - they can vary wildly. A good, established internship program can be invaluable and provide things you can't get studying on your own (team skills, client interaction, mentorship) - but on the other side of the coin you could end up with the repetitive busy work that you are worried about.

Also consider that you can always work on your own stuff even with an internship (assuming it's cool with your company w.r.t IP) - this path is probably the most work but likely to be the most effective.

I'll throw out another option that worked well for me (and also, I think, for my cofounder): Academic CS research.

I tried this the summer of my sophomore year and it was an excellent way to develop my (already ok) scripting/hacking skills.

Methodologically, it was a bit of a mix between internship and self-study. You would likely have a large amount of time in which to indulge/engage your particular interests, but you would also have some semblance of direction (i.e. the research project).

I ended the summer having learned lisp, built a number of frameworks (not all of which related to the research), bettered my scripting skills, and written a paper (which we published). I didn't make a lot of money, but otherwise it was a pretty good deal.

If you consider building a project, I recommend to try to make something significant, keep focus, and do it until finished, not another todo list or alike, or half baked things.

Otherwise, you will feel sorry later for the time wasted.

Definitely build things on your own. Start with some small projects to keep your morale up. Then increase the difficulty and scope of the projects you are building. The good part about building things is that it can be educational and fun. And yeah you should post your code to Github for extra points.
If you want to up the odds that you will get a job when you graduate, try to find an internship. Does not even have to be programming. Just something technical. That might open the door for a position in that company later on.