Iniciaremos um novo projeto que envolverá o treinamento de todos os desenvolvedores .net em Java (frameworks / sistema ECO etc). Temos muito código escrito em C # e parece que tudo isso será desperdiçado, pois precisamos reescrever tudo em Java. O problema que vejo é que, no primeiro ano (provavelmente 2 anos), não teremos nada para entregar, pois passaremos a maior parte do tempo reproduzindo o que tínhamos antes, mas agora em Java.
Como nossa equipe está distribuída em diferentes escritórios em todo o mundo e temos um grande número de desenvolvedores java (20 a 30) e 10 desenvolvedores usando .net, queremos que todos os desenvolvedores usem o mesmo idioma / plataforma para que possamos começar a reutilizar componentes / módulos. Para que eu possa entender o ponto de vista da gerência.
Ontem me deparei com o Scala e fiquei pensando se seria melhor usá-lo com o produto atual (que está escrito em C #) e, pelo menos, teremos um produto em funcionamento em um ano. Também em um ano, temos módulos que podem ser usados no mundo Java enquanto migramos outras partes do produto.
O Scala seria uma escolha melhor do que Java, considerando o que estamos tentando alcançar?
Respostas:
Alguns pontos a considerar:
Dado tudo isso, você pode querer proteger suas apostas e optar por uma estratégia Java / Scala mista - ou seja, migrar para a plataforma JVM e se concentrar inicialmente em Java, mas mantenha aberta a opção de usar o Scala quando seus desenvolvedores estiverem confortáveis e / ou ele se encaixa no problema em questão.
Da perspectiva do gerenciamento, isso tem muitas vantagens:
A desvantagem é que você ainda tem dois idiomas principais para oferecer suporte. Mas você provavelmente já tem muito mais do que apenas dois (scripts de shell? Formatos XML específicos do domínio? Arquivos de configuração? Mecanismos de regras? HTML? Javascript?); Portanto, você pode argumentar que não é realmente um grande problema.
fonte
Vou adicionar uma terceira opção. Alguém na sua organização analisou a interoperabilidade entre seus módulos C # e Java? Como você está expondo a funcionalidade C #? Os serviços web SOAP ou RESTFul são uma opção?
Uma reescrita de 2 anos pode ser um sinal de morte para uma organização (basta perguntar à Netscape). No entanto, uma migração gradual, enquanto o código existente funciona bem entre si, tem potencialmente menos impacto nos negócios.
fonte
Reescrever C # para Scala será tão difícil quanto reescrever para Java. Quanto ao idioma "melhor", esse ponto é discutível, cada idioma possui seus próprios pontos positivos e negativos.
Eu não sei o tamanho da sua base de código, mas 2 anos para 30 desenvolvedores parecem enormes para uma simples reescrita. É fácil pegar Java quando você conhece C #. Levei um dia ou dois para me sentir confortável com isso.
Meu conselho seria deixar o gerenciamento seguir o seu caminho e aproveitar o fato de você ser pago para expandir seu conjunto de habilidades.
fonte
Eu acho que a opção mais fácil seria fazer com que os desenvolvedores java aprendessem c #. Os dois idiomas são muito semelhantes em muitos aspectos e não leva muito tempo para um desenvolvedor Java pegar C #. Eu trabalhei com muitos desenvolvedores de java que aprenderam c # e geralmente é uma transição suave. A única área em que eles podem ficar presos por um tempo é o modelo de programação WebForms. Os desenvolvedores Java se ajustam melhor ao paradigma MVC. Dessa forma, você não precisa esperar um ano antes de começar a desenvolver novos recursos. No que diz respeito ao Scala, receio que isso introduza um novo problema com todos os 30 desenvolvedores que tentam aprender um novo idioma.
fonte