Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I maintain proficiency (if not expertise) in multiple languages?

In any large organization it seems necessary to know more than one language. For example, this week I've looked at if not written code in the following languages.

  • VBA
  • C
  • C#
  • Java

Thankfully they're all imperative languages, or I would have lost my mind.

I struggled for a day or so with the C as it's been a while (read: years) since I've used it seriously.

What tips, habits, and training is there for keeping up your knowledge in so many languages?

share|improve this question

closed as off-topic by durron597, GlenH7, Snowman, MichaelT, Dan Pichelman May 13 '15 at 2:27

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." – durron597, Snowman, Community
If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 6 down vote accepted

Well, use them regulary. For example, I'm not doing much in C now, but whenever I need a little one-off program that reformats text files or whatever, I do it in C just to keep in touch with that language, even if the same program in Java would be more beautiful/shorter/easier to understand.

share|improve this answer
I pity the fool who codes in C for fun. +1 for the methodology though as this is precisely how to stay in touch with languages. Sometimes projects at work run for months and I do the same thing so I do not lose touch with the major languages. – Chris Oct 29 '10 at 19:47

I like to play strategy games. Seriously. My experience has been that it's less about retaining proficiency or expertise in particular skills and more about maintaining the focus and mentality it takes to learn (or relearn) things quickly. One week I'll be developing in C#, able to experiment with WPF and new techniques in unit testing, whereas the next I may be waist-deep in a hack job on a legacy VB6 code base. Or I might be asked to learn Python while on a flight overseas to help optimize a system I've never even seen before. A month later, I can be deeply entrenched in a ladder logic program, where you still have to think about how you want to arrange your bits in the few thousand words of memory you're given, taking care not to exceed the 10,000 instruction limit.

There's no way that I could find time to keep up on all of the different systems I might need to maintain, so if you're in this kind of highly mutable environment (as it sounds you are), the best advice I can give is to use your personal time to unwind so that you can approach your professional challenges with the full energy and focus required to navigate the maelstrom. It also helps a lot if you enjoy the variety and the challenge. If you'd much rather dig deep into a particular domain, try expressing your concerns to your boss; a good manager will want to get the best results they can from their team and allocating the right kind of work to people is a big part of that.

share|improve this answer
+1 awarded for "...use your personal time to unwind so that you can approach your professional challenges with the full energy and focus required to navigate the maelstrom." Well said, and very wise. – codeasone Apr 23 '12 at 20:51

In our large organisation we have C#+T-SQL or Java+PL/SQL or Java/C++ according to the team.

I'm quite surprised you have to use so many in one place professionally. Some of the c# guys I know tinker with, say, IronPython in their own time for interests sake, but this is hobbyism.

Sorry to say, but "Jack of all trades, master of none" would be my sentiment,

I can imagine in a small shop you're exposed to much more, but a large shop would have dedicated teams.

share|improve this answer
Such a mix is not uncommon for programmers doing maintenance, especially in companies that have failed to standardize on one toolset. Been there, done that, sucks. – user281377 Oct 29 '10 at 17:25
@ammoQ: I guess my experience has been different. Quite inefficient surely....? – gbn Oct 29 '10 at 17:27
@ammoQ I feel your pain. Or you feel mine. It hurts ... – C. Ross Oct 29 '10 at 17:28
I agree, it's not a good situation, but it happens. – C. Ross Oct 29 '10 at 17:40
gbn: "Quite inefficient"... well, the main problem was that for several projects, there were only one or two programmers who could read all of the code, because it contained e.g. some parts written in Java but hardly anyone knew Java. There were important cash-cow projects written in VB, but only one or two programmers know VB. Add a high fluctuation rate, and it's just a matter of time until some projects become unmaintainable. – user281377 Nov 2 '10 at 23:57

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