Question

Do most programmers specialize on a single stack, leaving other things be, or are they expert at multiple languages at the same time? If it's more than one, how many is standard?

By expert, I mean more than simply knowing the syntax of a language - an expert knows enough of standard libraries, tools, environments and syntax to be able to write non-trivial programs without having to constantly look things up or read books/tutorials.

Was it helpful?

Solution

The main benefit of knowing multiple languages isn't in writing them directly. All other things being equal, I'd rather work with a C# programmer who also knows C, Python and Lisp (for example) than one who's only ever hacked in C#. It's not that knowing more languages is better, it's that being able to think about problems at multiple levels and from multiple perspectives is really helpful.

A programming language that doesn't change the way you think about programming is not worth knowing. -Alan Perlis

It's not about checking off one more language, or putting it on your resume; you just need to understand its underlying concepts well enough to program in it to get the full benefit. You won't get that from having a basic understanding of the syntax.

The more direct answer is "it depends".

At larger companies you're expected/allowed to specialize, but as I said above, I believe there's still benefit to understanding things beyond your one favorite tool.

At smaller places, you really can't get away with that. If nothing else, you typically need to maintain your app as well as build it, and you probably souldn't use the same languages for running through logs/data munging as you do to actually build your app. I guess you could technically get away with knowing a single language, but the benefit of having a well-performing, strongly-typed (or at least assertion-capable), probably compiled language do the heavy lifting, and a scripting language for maintenance/setup/scripting tasks seems pretty big. I wouldn't want to do without it, certainly.

OTHER TIPS

You have a very interesting question:

I dont think that any programmer should be an "expert" on a specific language. My believe is that as programmers we are meant to be experts at programming, designing algorithms, thinking in clear steps, but a programming language is something that you just learn.

A "good" programmer, by good I mean that handles development projects without scaring behind the classic "I've never worked with that before", should learn a language in less than 5 working days. You learn best practices, tools and libraries mainly from 2 ways, 1: reading and 2: working. Either you bounce your head against the code or read a bunch of books.

In a few years following the premisse of "Good programmers write just code" no C# code or C++ code or Java code, you will realize that after you learn to develop programs, the language and the techonologies are not that important. Sure, you'll know how to move around C# better than PHP, but if you've learnt well, you'll find you'll way through Python if you have to.

Hope my ideas like you!

One, but that doesn't mean you can neglect the others. You have to know enough to justify why you're not using them or know your limitations, so you can ask for help when appropriate.

I think it probably depends on your personality, there are people who revel in digging down into the nooks and crannies of a subject, and there are others who like to get a broad view of things. You probably will need to figure out what type of personality you are. I am not putting one above the other each have their uses.

As the former you will be the expert, the guru, the specialist. As the latter you will be of more general use and possible used in a variety of situations but possibly not go as deep or long into a subject.

One. But you better be damn good at it.

One

The one in front of you.

As Joel said in the SO podcast, it's better to know many many languages and know how/when to use the right language for the task. There are things you can do way faster in one language than another. I think it would be good to know an imperative language and a functional language for example. Many times learning a harder or more esoteric language trains your brain to just be a better programmer overall.

None as there are likely some programmers that won't be experts in any language but they enjoy the diverse environment they have and will use various languages depending on circumstances as some may know a few server-side technologies like PHP, ASP.Net in C#.Net or VB.Net, or Java, a couple of client side scripting languages like JavaScript or Flash, and this is without getting into any hardware used to put up the web stuff here.

At the same time, there may be some programmers that are experts in a dozen languages or more as that is what they study rather faithfully most of the time to keep on top of so much within each language.

One, but must be able to read non-trivial real-world programs that are written in a few other languages from time to time. In some way, the one in which the programmer is an expert is like their mother tongue, they think in it, but learning and speaking other languages is very good in that it shows the programmer can appreciate other ways of thinking. If they can think in more than one language as fluent as their mother tongue, that is awesome.

This is a good question, but I don't think there is a standard. Normally by what I have seen the people are full expert in one high level language (C++, Java, etc. ) in one environment(windows/linux, mac, solaris). They know roughly some other high level language but not fully understand it. (e.g. C++, Java people knows each other roughly). By roughly I mean they can compare the performance of one task in the language they are expert and in the other language. And then they are moderate in some of the scripting language. (e.g. Linux people knows bash, Windows people knows VBA, web people knows PHP).
For me what matters is is the basic algorithm knowledge than the language. If your basics are good, there are less chances to mess up in any language.
But yes, sometimes it may be useful to know what language could be better for what task. e.g the following code is much faster in pascal than in C.

strcat(A,"Hello"); strcat(A,"WOrld");strcat(A,"I say hi!");

This is because Pascal saves the length of the string in the first location and hence it is easy to jump to the last location. In C the string termination is '\0' and hence you will actually have to traverse the whole string for strcat operation.

It depends on the environment where you're programming. At a previous job, most of my work was in Perl; during my time there I got quite proficient at it. Now I work at a place that has legacy programs in three languages that I barely know the syntax; I'm expected to maintain them in addition to my work on new projects. I'm now less a master of any language, but I think I've gotten a better feel for programming. I've learned how to think more abstractly, see the big picture first, and then look up the syntax and the libraries to fill in the details.

Licensed under: CC-BY-SA with attribution
scroll top