views:

67

answers:

3

Just two years ago, Java and C++ were my only languages. Today, I'm familiar with a lot more, including PHP, Python, C, the Java Enterprise libraries, and I'm starting to learn C# (both for desktop and web applications). Before, it was easy to choose a language to use, but now, it's a lot harder.

What kinds of things are important when taking a look at the languages you know (or even including those that you don't know, but some members of the team do)?

+2  A: 

I think most folks go with level of familiarity. Few people are equally fluent in PHP and C#, for example. If you do feel that you have equal ability in two different technologies, consider other aspects:

  • Can you find enough people that know that tech to build a team?
  • How much do the tools cost
  • How long does it take to perform common tasks in X as opposed to Y
  • Can you do unit testing, project management, etc

If you really know a particular technology well there's not much you can't do. That said, there are some specific things that are much harder in one technology than another. Review your requirements and do a quick assessment of work effort for every major aspect. If some features must be executed in a very particular way and there's no flexibility (management says it must be so) then that's where your choice will matter.

Dave Swersky
+1  A: 

One of the considerations (assuming you've already eliminated the technologies which are no good for the application) is what technology would be comfortable for the highest number of developers on the team. There might be a tailored language that is perfect for the project, but if it has a high learning curve, and no one already knows it, then the benefit to using it would be more than washed out by the cost of retraining everyone and the extra bugs they would create while learning a new language.

When you're working in teams, comfort is key because your code doesn't only need to work it needs to play nice with others.

Is there a time when comfort is not key and it's time to hunker down and learn a new language, assuming that it's a toss-up between a well known language and a lesser known language or toolset?
Thomas Owens
Yes. If there are crucial benefits implicit in the new language that outweigh the cost of (the whole team) learning it.This usually applies to cutting edge techs like Silverlight, where there will be few coders who already know it.
+1  A: 

Most of the time it is not so much the language I know. The language is decided by:

  • Which tools are available and their bindings
  • Client requirements if it's a SDK
  • Existing solutions, if any

Rarely, when we are lucky to do a 1.0 product, we do spend some time brainstorming the skill set of the team undertaking the task and the prevalent technologies. An example is in order here -- Suppose the client wants a driver SDK for their USB hard-drive, then we'd go with C++ based library and expose a C interface for the clients. However, if we are going to write a plug-in to reflow some Word documents we'd better go with C#. But now, if the team is more comfortable with C++ we'd stick to that. It's just one of those many, many trade-offs you make when you design/develop/test and ultimately sell a product.

dirkgently