The language is not isolated. Language is just part of the broader picture. if you choose.NET, you usually also need Microsoft IDE, windows platform (with all logging, performance monitoring, etc...) which is an investment (in terms of finances AND knowledge). if you choose java, it usually comes with different IDEs, different servers, different ways of logging, performance monitoring and ways maintenance is done. I don't think you can become an expert for everything. Sure, learning new language is quite easy. But learning how to get the best from the language and platform you use takes time and experience. And specialisation has it's advantages too if done with brain. I'd say focus yourself in mid-term, don't lock-off yourself in long term.
You might want to look at it from your customer's perspective - i.e. what does your customer loose and what gains.:
customer already uses a platform and has technical guys to administer it: choose his/her language if possible. If what you're developing is going to be ran by other people, these people probably cannot administer IIS, BEA, Apache, Tomcat, MSSQL, Oracle, Mysql and whatever else comes in mind. This usually counts for big projects. I bet that majority of slashdotters wouldn't like the delivered product be for IIS+MSSQL+C#, whereas it's still standard for lots of companies outsite.
code-maintainability: think why your customer hired a company instead of a freelancer - one reason is continuity of development. if you're going to programm something else than one-off application, you need to have people profound in the technology you used (and it does not only include language, but servers, etc...) and keep enough of them. if you don't use their skills by the time there is nothing going on in the project, you loose. if you fire them, customer looses. if you teach them completelly new stuff, it can get expensive (and specialisation usually brings experteese).
re-use: if you're able to re-use components you already have, your customer can benefit from that as well. and you probably can benefit from that by the time you put your offers.
support: if you're doing some serious development, you want to stay in touch with the future development of your language. be it java, python, c# or php. having more languages requires you to spend more time in this. which usually means more money.
what i'm talking about is usually mid-size computer company doing bigger projects for big companies (like banks, telco, etc...). so I believe, that there is usually no way you can avoid standardisation of a platform in bigger companies. even google, with (i believe) really bright programmers choosed a limited set of languages to work with.
so i'd say: choose a limited set of languages you can support. just one can result in lock-out, too many can proove to be burden if you think about serious more big projects with long live and continuous development. usually decisions like this don't result in either 1 (choose one) or 0 (don't choose any). it's a matter of reasonable amount of them, so that you can have enough people profound in them to be able to help your customer all the time.
AT&T Ripoff As You Go? :)
The language is not isolated. Language is just part of the broader picture. if you choose .NET, you usually also need Microsoft IDE, windows platform (with all logging, performance monitoring, etc...) which is an investment (in terms of finances AND knowledge). if you choose java, it usually comes with different IDEs, different servers, different ways of logging, performance monitoring and ways maintenance is done. I don't think you can become an expert for everything. Sure, learning new language is quite easy. But learning how to get the best from the language and platform you use takes time and experience. And specialisation has it's advantages too if done with brain. I'd say focus yourself in mid-term, don't lock-off yourself in long term.
You might want to look at it from your customer's perspective - i.e. what does your customer loose and what gains.:
customer already uses a platform and has technical guys to administer it: choose his/her language if possible. If what you're developing is going to be ran by other people, these people probably cannot administer IIS, BEA, Apache, Tomcat, MSSQL, Oracle, Mysql and whatever else comes in mind. This usually counts for big projects. I bet that majority of slashdotters wouldn't like the delivered product be for IIS+MSSQL+C#, whereas it's still standard for lots of companies outsite.
code-maintainability: think why your customer hired a company instead of a freelancer - one reason is continuity of development. if you're going to programm something else than one-off application, you need to have people profound in the technology you used (and it does not only include language, but servers, etc...) and keep enough of them. if you don't use their skills by the time there is nothing going on in the project, you loose. if you fire them, customer looses. if you teach them completelly new stuff, it can get expensive (and specialisation usually brings experteese).
re-use: if you're able to re-use components you already have, your customer can benefit from that as well. and you probably can benefit from that by the time you put your offers.
support: if you're doing some serious development, you want to stay in touch with the future development of your language. be it java, python, c# or php. having more languages requires you to spend more time in this. which usually means more money.
what i'm talking about is usually mid-size computer company doing bigger projects for big companies (like banks, telco, etc...). so I believe, that there is usually no way you can avoid standardisation of a platform in bigger companies. even google, with (i believe) really bright programmers choosed a limited set of languages to work with.
so i'd say: choose a limited set of languages you can support. just one can result in lock-out, too many can proove to be burden if you think about serious more big projects with long live and continuous development.
usually decisions like this don't result in either 1 (choose one) or 0 (don't choose any). it's a matter of reasonable amount of them, so that you can have enough people profound in them to be able to help your customer all the time.