Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently a student going to an 8 month internship this January after my first year of studies and I'm planning on expanding my programming skills maybe during weekends or weeknights. For around 2-3 years, I've been learning as much as I could just because I enjoyed programming so much when I started 2 years ago. Some things I know include:

  • source control
  • Java
  • Python
  • C
  • C++
  • Bash
  • Linux

The problem is that I only know the basics of the above, nothing in depth (except Java) and I'm wondering what would benefit me more in the future when I finish my studies. Should I learn something new? (I've been wanting to take a crack at SICP) Or should I expand on something that I know right now (I enjoy programming low level) and build something useful and big?

FWIW, I'm going to use Java(JSP, servlets) and SQL for my internship.

share|improve this question

3 Answers 3

It takes quite a while to achieve mastery of anything and basically the primary thing you should do in your studies is to get as broad a foundation as you can possibly get. Learn all you can! It will never be easier to take in new stuff than while studying, because that is what educational institutions do best.

I would suggest you take a closer look at

  • Database theory and SQL.
  • Prolog
  • Functional programming: Haskell
  • Lisp

and many more but this is a start. The reason why? Read Paul Grahams essay on how he made a lot of money by knowing better tools than the others

share|improve this answer
Students should aim to be jacks of all trades because they're almost certainly going to be masters of none - at least for a while... –  Jon Hopkins Dec 14 '10 at 9:46

Do you REALLY know what you want to do? You might think that you know - and that is good - but few of us end up doing what we started out doing.

Use this opportunity to get exposure to as much as possible! Your horizons will never again be as wide as they are now.

share|improve this answer

There's no easier way to learn than to find something that you truly enjoy doing, and spend time learning how to do it well. If you are producing quality work, many of the skills you learn will be cross-functional, and will apply no matter where you end up working, or with which tools.

I would advise you to find things which are not directly already covered at work, which you find fascinating, and dive into them as deeply as you can while your interest holds. Try to build tools, or work on projects, which you can then either open source or post somewhere online for others to see, the feedback you'll get will prove very useful. And, most importantly, make sure, what ever you're doing, it's something you enjoy and care about. It is the most important part of the learning experience, I think.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.