views:

195

answers:

7

Right now I've been studying programming at a local college full time for 1 year now and so far, we touched on C++, VB.net, Java, XHTML and CSS. I only know the basics of these and I certainly don't believe that I have a "working knowledge" of any of them.

I've been reading here at SO and people seem to say that programmers should somehow be a "jack of all trades." My problem right now is that soon, I would really love to have the opportunity to contribute to open source in some way and maybe get an internship as early as next January because I'm already eligible and I don't think I'll be able to do this if I will only keep on learning new languages even with a different paradigm like Scheme.

Should I at least get a working knowledge of a certain language before moving on? If so, which one would be best for me?

Thank you!

+1  A: 

Yes, get a working knowledge of one. Which one depends on what you want to do with it.

Does what you want to do depend on a particular platform or don't you care?

Do you want to do fiddly stuff with C++ or work at a high level of abstraction with .NET's Workflow Foundation, or somewhere in between? Is there a niche you're particularly interested in that has (a) framework(s) optimised or only in a particular language?

Don't just think about the language, there's the programming paradigm to think about as well: OOP, AOP et al.

EDIT:

Presumably, if you're a student you're skint. So be practical, pick something that's in use in the industry but not the latest e.g. .NET 2.0. You can get many books with good recommendations at very low prices. e.g. ASP.NET 2.0 Unleashed (I'm not recommending this book or technology - I just grabbed a cheap 4.5 star book.)

serialhobbyist
I don't really care about platform. I do enjoy fiddling with C++ but whatever helps me in the end, I'm there. I guess right now, I'm not really "picky" when it comes to language, maybe because I haven't been exposed to a lot yet
Updated my post.
serialhobbyist
+2  A: 

It depends on what your goals are. Why are you studying programming? Do you wish to become a software developer? Or do you only want to be able to grasp the concepts of developing software without actually getting your hands dirty (e.g., for project management/advising/consulting/managing roles).

If you want to become an actual programmer, then, yeah, pick a language that "feels right" or one that is relevant to either an internship or an open source project of your liking and dive into that. Even if you're not going to work on an existing project, always try to actually build something with a purpose. It doesn't have to be unique, but by setting targets in terms of functionality, you get a much better feel for a language or technology. I've built several CMSs and blog engines just for this purpose...

I'd start with a common language that covers a lot of basics, one you know is in high demand, preferably an OO language. From your list, I'd stick with either VB.NET (or try C#, easier on the eyes) or Java, and, like I said, build something with it.

tijmenvdk
Yes, I do wish to become a software developer one day
+3  A: 

Should I at least get a working knowledge of a certain language before moving on?

Definitely yes.

If so, which one would be best for me?

You'll get as many opinions on this as you ask. If your goal is to contribute an open source project, perhaps have a look at this. Even if it's controversial, it nevertheless lists the most popular languages near the top.

And actually your first language doesn't matter too much; it's programming that matters. Once you learn to program a bit, you can learn your next language much more easily.

Joonas Pulakka
+1 for mentioning how learning to program is more important than the language. Keeping in mind PHP isn.... Nevermind.
Elizabeth Buckwalter
PHP isn't what?
eyelidlessness
A programming language, I guess. And kind of agree :) Better start with something else.
Joonas Pulakka
A: 

It always helps to have a good working knowledge of one or two languages but I wouldn't say you should force yourself to know one language well before trying another.

I have a background in C++ for example, and it lends itself to learning Java/C-based languages but there's also quite a lot of differences between languages that keeps you hitting the Help/Google button.

Nick Bedford
+1  A: 

I do agree with what was said here. You would need at least working knowledge of a language in order to do something a bit "bigger", which is what I think you're looking for.

Charles Khunt
+1  A: 

You should get something done in this language - otherwise, you haven't really learnt it.


Know a little about a lot of things, and know a lot about something particular.

Having completed a small project in different languages - e.g. C++, C#, something functional, something scripty - should give you a good feeling for programming rather than a particular language.

Equipped with this background, find a project that interests you.

peterchen
A: 

With regards to open source, there are a lot of ways that you can help - testing, etc

But I believe that in order to actually be a developer, if that's what you wish to do, you probably need more than working knowledge.

As for language, whatever interests you will work. Just remember that being a programmer is not all about languages.

Coding District