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

closed as off-topic by gnat, MichaelT, jwenting, Thomas Owens May 18 at 8:49

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, MichaelT, jwenting, Thomas Owens
If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers 3

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

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

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

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