Por um lado a resposta é muito simples: "A MELHOR TECNOLOGIA É AQUELA QUE EU MAIS CONHEÇO ORA..." por outro lado(o certo) não é nada disso que eu acabei de escrever mas sim antes de tudo fazer apenas umas perguntas como por exemplo 'O que é o sistema? Qual a finalidade do sistema? Quem é o público alvo? Envolve grana direta ou indiretamente? Quantas pessoas preciso? Quanta grana tenho disponível? Quanto tempo tenho?' Antes de começar a escrever eu tinha apenas 2 perguntas mas comecei a imaginar enquanto fui escrevendo e percebi que são muitas as perguntas a se fazer...
Por esse motivo que posso AFIRMAR (com todas as letras MAIUSCULAS) que a melhor tecnologia para desenvolver um sistema não é essa que você mais gosta (pode até ser na sorte rsrs) mas sim aquela que se encaixa com o escopo do projeto como um todo. Quem diz que um sistema é feito apenas com uma linguagem de programação anda falando besteira (ou o sistema é tremendamente específico e engessado) pois atualmente para cada necessidade utilizamos uma linguagem não é? Um exemplo do FACEBOOK... vc acha que ele é todo feito em php apenas? e o HTML? e o Jquery? e as milhões de bibliotecas de js que não conheço? Eu posso afirmar que no facebook existem 'n' linguagens e cada uma faz o que é ideal para fazer (jquery para cuidar do elemento DOM, do frontend, php para cuidar do backend e etc...)
A questão aqui não é afirmar qual linguagem é melhor (eu particularmente não gosto desse assunto de futebol de sair falando que a minha linguagem é melhor que a sua inclusive tem um post do meu professor da faculdade que fala justamente sobre essa 'briga' eu recomendo dar uma olhadinha, Blog do Infog) mas sim tentar entender como escolher as tecnologias para um projeto de software.
Eu andei pesquisando pois o tema do meu TCC aborda um pouco isso e encontrei um livro muito legal de Leland L. Beck que fala sobre isso vou colocar alguns tópicos que montei em meu TCC (ainda é inicio dele então me desculpem os erros...)
Fatores que devem ser levados em consideração ao escolher tecnologias para o desenvolvimento de um sistema.
Ambiente no qual o software irá executar ou operar
Há muitos ambientes diferentes em que o software pode ser utilizado e acessado. Isso restringe a desenvolvedores na escolha da linguagem pois certas linguagens de programação podem não dar suporte a uma plataforma mais ampla como por exemplo rodar na internet.
Complexidade algorítmica e computacional
Este fator é algo que deve ser seriamente levada em consideração se o programador quer ter uma tarefa mais fácil na codificação e desenvolvimento do programa. Existem linguagens que dão suporte a novos conceitos como Orientação a Objetos, padrão de Projeto MVC e outras ultrapassadas(ou com outras finalidades) que não atendem a necessidade de um sistema complexo que vive em comunicação e precisa ser desacoplado.
Uma tecnologia que é boa em uma determinada função não necessariamente é adequada para fazer outra coisa um exemplo seria utilizar o php, uma linguagem interpretada livre que roda no lado do servidor para validar dados de um formulário. Ele funciona e muitas vezes é utilizado para isso mas já que roda ao lado do servidor é necessário processamento do servidor, enquanto que fazer essa validação com javascript acaba sendo mais rápido e o processamento é feito apenas na parte frontal ou seja, na máquina do cliente.
Conhecimento da equipe de desenvolvimento de software
Existem muitas tecnologias diferentes que aparecem na área de desenvolvimento de software. Encontrar os recursos adequados humanos, familiarizado com a linguagem utilizada é um problema especialmente se a diversidade de tecnologias é grande e as mesmas tem pouca documentação disponível, a futura substituição de um desenvolvedor pode ser um problema se a linguagem é pouco utilizada, sendo assim é recomendado a utilização de uma linguagem com um boa documentação disponível e atualmente em uso por desenvolvedores.
Custos
O valor é algo importante quanto a escolha da tecnologia, pois ele deve ser comparado ao retorno financeiro pretendido com o sistema para que ele não seja um gasto eterno.
Ambiente no qual o software irá executar ou operar
Há muitos ambientes diferentes em que o software pode ser utilizado e acessado. Isso restringe a desenvolvedores na escolha da linguagem pois certas linguagens de programação podem não dar suporte a uma plataforma mais ampla como por exemplo rodar na internet.
Isso nos traz ao ponto da portabilidade, que a linguagem pode ser usada para desenvolver programas portáveis que podem ser executados em qualquer máquina ou sistema operacional.
(Leland L. Beck , System Software - 1996)
Complexidade algorítmica e computacional
Este fator é algo que deve ser seriamente levada em consideração se o programador quer ter uma tarefa mais fácil na codificação e desenvolvimento do programa. Existem linguagens que dão suporte a novos conceitos como Orientação a Objetos, padrão de Projeto MVC e outras ultrapassadas(ou com outras finalidades) que não atendem a necessidade de um sistema complexo que vive em comunicação e precisa ser desacoplado.
Uma tecnologia que é boa em uma determinada função não necessariamente é adequada para fazer outra coisa um exemplo seria utilizar o php, uma linguagem interpretada livre que roda no lado do servidor para validar dados de um formulário. Ele funciona e muitas vezes é utilizado para isso mas já que roda ao lado do servidor é necessário processamento do servidor, enquanto que fazer essa validação com javascript acaba sendo mais rápido e o processamento é feito apenas na parte frontal ou seja, na máquina do cliente.
Conhecimento da equipe de desenvolvimento de software
Existem muitas tecnologias diferentes que aparecem na área de desenvolvimento de software. Encontrar os recursos adequados humanos, familiarizado com a linguagem utilizada é um problema especialmente se a diversidade de tecnologias é grande e as mesmas tem pouca documentação disponível, a futura substituição de um desenvolvedor pode ser um problema se a linguagem é pouco utilizada, sendo assim é recomendado a utilização de uma linguagem com um boa documentação disponível e atualmente em uso por desenvolvedores.
Custos
O valor é algo importante quanto a escolha da tecnologia, pois ele deve ser comparado ao retorno financeiro pretendido com o sistema para que ele não seja um gasto eterno.
A parte custos não entra em questão no livros ma achei importante colocar e por isso ando pesquisando em grandes empresas de desenvolvimento de software...
Conclusão
Não podemos escolher aquela tecnologia que mais gostamos mais sim a que melhor se encaixe no problema atual...
Espero ter ajudado....
Valeuu