ti-enxame.com

Como você incentiva sua organização a mudar de Java para Scala?

Alguém já iniciou a migração de Java para Scala? Se sim, como você faz isso? O que posso fazer para incentivar meus colegas a fazer o mesmo?

15
nanda

Provavelmente, a maneira mais fácil é usar primeiro Scala apenas para teste. Neste caso, você pode até não ter que dizer ao seu chefe :-) Se ele perguntar, diga a ele "esse é apenas meu teste particular caso, é muito mais fácil e rápido de usar Scala para isso ". Assim que você (e sua organização) tiver experiência suficiente com Scala você pode começar a usá-lo para o código 'real'.

15
Thomas Mueller

Faça seu chefe ler experiências como esta:

  1. Atualmente estou fazendo a maioria das minhas coisas em Scala agora. (Devo mencionar que acho que Scala é a melhor coisa desde a invenção do roda há algum tempo. :-D)

    Na minha humilde opinião, é a única linguagem que realmente permite que as pessoas escolham a melhor abordagem para uma tarefa sem alguma divisão desnecessária entre abordagens (mais) orientadas a objetos e (mais) funcionais.

    Olhando para as linguagens que reivindicaram algo assim antes, posso ver basicamente dois campos de design de linguagem concorrentes:

    • Aqueles do lado orientado a objetos que viram que a programação funcional ganhou um pouco de força ultimamente e pensaram "Bem, nós realmente não entendemos essa coisa funcional, mas vamos adicionar um pouco de açúcar sintático extravagante à nossa linguagem, para que possamos afirmar que é funcional também!" (exemplos: Java, Python)

    • Em seguida, aqueles do lado funcional, que pensaram "Bem, nossa abordagem funcional é muito superior a qualquer outra coisa e esse absurdo orientado a objetos é irritante, mas vamos colocar algumas palavras-chave adicionais em nossa linguagem, que farão com que nossa linguagem escape da academia com certeza ! " (exemplos: F #, OCaml)

    Os designers do Scala unificaram muitas abordagens vindas de ambos os lados e criaram uma linguagem bem projetada, que é - na minha humilde opinião - a maior diferença para outras linguagens, que decidiram adotar a abordagem "Frankenstein" para design de linguagem de programação.

  2. Tendo feito apenas coisas menores com o Lift ainda e apenas uma experiência superficial com Rails e Django, eu tenho que admitir que na maioria das vezes quando me pergunto por que algo no Lift funcionava de maneira diferente do que eu esperava, isso foi devido ao fato de que minhas expectativas eram erradas e a abordagem de Lift superior.

    O Lift certamente não é uma "introdução fácil ao Scala", mas aprender como o Lift funciona foi quase tão gratificante quanto aprender Scala antes disso.

    A capacidade de ter uma visão "limpa" sem nenhuma lógica é uma grande melhoria para outras estruturas que afirmavam o mesmo, mas ficavam aquém disso. O suporte literal XML do Scala torna possível verificar a boa formação de sua resposta: O compilador provará no momento da compilação que você apenas emite XML bem formado para um cliente.

  3. Lift é uma tecnologia viável e, no momento, a única abordagem real se você deseja construir aplicativos da web que se pareçam, sintam e se comportem como aplicativos de desktop "reais", sem escrever quantidades insanas de código você mesmo.

[ Fonte ]

7
missingfaktor

Do ponto de vista das empresas, é melhor ficar com Java se não houver nenhuma vantagem distinta que eles obterão ao migrar para o Scala. É mais fácil para eles contratar Java programadores para construir e manter o aplicativo. Você pode simplesmente sair após implementar tudo em Scala :-) Sem ofensas :-)

7
Geek

Nos últimos dois anos, progredimos bastante nesta jornada em guardian.co.uk - nossa Plataforma Aberta é construída em Scala, nosso CMS principal (originalmente em Java) está gradualmente incorporando mais = Scala (em breve estaremos mudando do Maven para SBT para nossa construção) e tem sido uma experiência maravilhosa - realmente revigorando nosso desenvolvedores, alguns dos quais estavam ficando um pouco cansados ​​de Java :)

Eu encorajo você a ler estes dois artigos sobre nossa transição e talvez usá-los como evidência de apoio com seu cabelo pontudo:

http://skillsmatter.com/podcast/home/how-we-moved-from-Java-to-scala

http://www.infoq.com/articles/guardian_scala

Algumas dicas rápidas:

  • Comece escrevendo seus testes em Scala - dessa forma você pode se familiarizar com a linguagem, aumentar sua confiança nela e não ter que vencer quaisquer medos que possa ter sobre adicionar o tempo de execução à sua produção servidores imediatamente.

  • Não peça permissão para experimentar novas tecnologias. Melhor pedir perdão se você tem que :-)

3
Roberto Tyley

Esta questão se desdobra em outra questão. Isto é, para quais tipos ou projetos a migração para Scala fornece valor agregado? Eu faço Java dia meu trabalho diário, mas sonho com o dia em que posso usar = Scala "com raiva".

Algumas respostas à minha própria pergunta:

  • Problemas para os quais a simultaneidade baseada em ator proporcionaria grande benefício (Akka)

  • Aplicativos da Web que têm dados enviados a eles via COMET (Lift)

Quaisquer outras percepções ou, melhor ainda, experiências?

2
user3463

Estou escrevendo testes para meus aplicativos Java em Scala e concordo que é um bom lugar para começar. Minha cobertura de teste é melhor porque é mais rápido e fácil de escrevê-los (também desde que comecei a usar o Scala, vou me concentrar mais em escrever testes).

Também comecei a fazer protótipos e POCs descartáveis ​​em Scala quase exclusivamente. Tento deixar os gerentes e supervisores o mais cientes possível de que usei Scala para esses itens únicos e enfatizar que consegui colocar algo funcionando rapidamente por causa do Scala. Precisávamos (bem, meio que precisávamos) de um aplicativo da web para rastrear nosso jogo de elefante branco de festa natalina - 1,5 horas com Scalatra e MongoDB e meu todo o departamento está vendo este aplicativo e perguntando sobre ele. Sejamos realistas, você nunca chegará a lugar nenhum descrevendo aos gerentes como a linguagem é muito mais expressiva ou que seu modelo de simultaneidade é muito melhor. Mas se você mostrar a eles, poderá obter mais feito mais rápido, você ganha terreno.

Mas acho que a maior parte é deixar os desenvolvedores entusiasmados com o Scala. Tenho certeza de que todos trabalhamos com desenvolvedores que não acompanham ativamente as novas tecnologias e, às vezes, é difícil deixar essas pessoas empolgadas para fazer algo novo (ora, eu realmente não entendo). Mostrar a essas pessoas alguns benefícios de Scala (tente o REPL) é a chave. Se você tiver um número suficiente de desenvolvedores comentando sobre os mesmos benefícios de produtividade, então é muito mais provável que obtenha Scala oficialmente adotado em sua organização.

Espalhar a palavra e fazer com que o esforço de base funcione é meu objetivo principal em 2011. Veremos como isso vai dar certo, porque mal posso esperar pelo dia em que poderei usar Scala para o volume do meu trabalho.

1
Janx

Estou me perguntando por que escolher um ou outro? Por que decidir jogar Java fora da porta e ir Scala todo o caminho?

Não existe ferramenta perfeita para o trabalho. Não há razão para jogar fora completamente a perícia em um idioma e substituí-lo por outro.

Eu não gostaria de trabalhar (mais) em uma empresa que se concentra em um idioma ou ambiente, tbh. É melhor saber muitas coisas e escolher a ferramenta certa para o trabalho.

Além disso, é difícil, senão impossível, fazer com que sua organização mude para Scala completamente. Em vez disso, eu tentaria fazer alguns projetos (ou mesmo partes de projetos) em Scala, em vez de ir para a abordagem tudo ou nada. Você poderia, por exemplo, optar por testar seu código Java com Specs2, que tem uma sintaxe bastante agradável em comparação com o antigo JUnit - e é não é complexo, confuso e difícil Scala também, apenas açúcar sintático em torno da definição do comportamento de sua aplicação.

1
Cthulhu

Uma boa maneira é demonstrar duas versões do mesmo programa. Fazendo isso, você pode mostrar aos seus colegas (na prática) o Scala Expressividade . Fazer a mesma coisa para outros problemas (XML, simultaneidade, etc.) pode demonstrar os benefícios de usar Scala ao invés de Java para resolver problemas específicos.

Claro que não espere que a migração aconteça em um dia. Existem muitos problemas que você pode subestimar: a curva de aprendizado, a base de código existente, etc.

0
sakisk