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.

So the issue I have as an undergraduate Software Engineering student, is the topic on which languages must one carry under their belt for future markets. I've been having this debate with teachers and students alike on which language takes the stand. The other debate I've been having is: what does it mean to be "knowledgeable" or "proficient" when it comes to a specific language? More specific:

  1. Is it how well you can organize and structure and construct your code, based on the language's syntax, structure etc, but little knowledge about what's under the hood, e.g libraries ?
  2. Is it how much experience you've had working with language: graphics, animation, complex projects, vast knowledge of libraries etc.

Although this may seem trivial, if a person has never coded in a specific field, such as graphics, does that make him less worthy of a candidate for a job? Does it make the person less "knowledgeable", if you will, in that language? In other words, if you've been working with C# for most of your career, and suddenly are faced with a Java-based project, given that you fall under category 1 (above), would you be worthy to be part of this project?

The reason I'm asking this, is because I'm trying to figure what to learn and to what extent. Learning to do animations won't do you any good if you're future career is going to be doing everything BUT that. Or are things in the real world not measured in that way?

If I don't make sense, I do apologize as I'm trying to make sense of it myself!

share|improve this question

closed as off-topic by Aaronaught, gnat, Michael Durrant, James McLeod, MichaelT Nov 23 '13 at 17:00

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, Michael Durrant, James McLeod, MichaelT
If this question can be reworded to fit the rules in the help center, please edit the question.

    
While this is a good question - questions about what to learn next are not allowed on this site. I think you could edit it though to avoid that (even though it might still be too opinion based). –  Telastyn Nov 23 '13 at 0:16
5  
Learn fundamental concepts, they are guaranteed to last, unlike particular languages and technologies. –  SK-logic Nov 23 '13 at 0:22

2 Answers 2

up vote 1 down vote accepted

It honestly depends on where you're working and how much experience you have with programming in general.

Its not uncommon that somebody who is considered an "expert" in one or two language can easily pick up another rather quickly. That said, its also not rare to see the same type of person struggle with even the simplest concepts in another language.

Having said this, most experienced programmers don't have much trouble with picking up a new language. All programming languages generally contain the same fundamental concepts (e.g. variables, strings, classes, etc.). Once you grasp these concepts in one language, it shouldn't be hard to pick up another.

Going on to your question, "proficiency" in a language comes from experience. You can't learn how to code without actually doing it. Knowing this, a lot of companies don't care too much if you have experience in the language they work with, because a good programmer should be able to pick it up rather fast.

share|improve this answer
1  
Those were my thoughts as well. If you're capable of picking up concepts, APIs, regardless of no past experience, then you're in a good place. –  Dimitri Nov 23 '13 at 0:33
  1. Is it how well you can organize and structure and construct your code, based on the language's syntax, structure etc, but little knowledge about what's under the hood, e.g libraries ?

  2. Is it how much experience you've had working with language: graphics, animation, complex projects, vast knowledge of libraries etc.

Both. If you know syntax well, but no tools to use in that syntax, you won't be very productive. Likewise, if you know tools, but cannot put them together cohesively...

share|improve this answer
2  
Although it might help, but it is not at all necessary to be knowledgeable in tools and language specifics. Knowing how to solve problems in general, knowing which options are out there for solving a particular problem, and knowing how to dig out the mundane details (like syntax, APIs, tool usage) is a way much more important. –  SK-logic Nov 23 '13 at 0:25
    
This is where my debate all started. The fact that APIs are so large, I don't see how you could know everything, especially having everything at the at the top of your memory. I'm guessing things are measured on quickly you can pick up? –  Dimitri Nov 23 '13 at 0:30
    
@sk-logic - sure, but the question is about getting hired and way more often than not a balanced approach is necessary to do that (even if foundational problem solving and computer science background is what makes you succeed once there - as well as making learning both halves easier.) –  Telastyn Nov 23 '13 at 1:13
    
@Telastyn, once you outlived technologies you knew in depth when you were fresher, you should already be in position where nobody is going to question your ability in particular technology - it's rather general problem solving skills which employers value in the seniors. Therefore, choosing a long-life pasteurised language is not going to help to maintain hireability. –  SK-logic Nov 23 '13 at 15:03
    
@sk-logic - While they value that, in my experience that's not the thing they evaluate when hiring. –  Telastyn Nov 23 '13 at 15:56

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