Comment encouragez-vous votre organisation à passer de Java à Scala? [fermé]


15

L'organisation de quelqu'un a-t-elle commencé la migration de Java vers Scala? Si oui, comment faites-vous cela? Que puis-je faire pour encourager mes collègues à faire de même?


veuillez ajouter scala et migration à la balise si vous êtes autorisé à le faire
nanda

9
Vous devriez peut-être expliquer pourquoi
TheLQ

Vous avez besoin de suffisamment de connaissances internes pour garantir un facteur de bus "suffisamment élevé".

Réponses:


15

Le moyen le plus simple est probablement de n'utiliser Scala que pour les tests. Dans ce cas, vous pourriez même ne pas avoir à en parler à votre patron :-) S'il le demande, dites-lui "c'est juste mon cas de test privé, c'est tellement plus facile et plus rapide d'utiliser Scala pour cela". Une fois que vous (et votre organisation) avez suffisamment d'expérience avec Scala, vous pouvez commencer à l'utiliser pour le «vrai» code.


Telles étaient mes pensées, exactement, pour la migration C #-vers-F #.
GregC

7

Du point de vue des entreprises, il est préférable de rester avec Java s'il n'y a aucun avantage distinct à obtenir en migrant vers Scala. Il leur est plus facile d'embaucher des programmeurs Java pour créer et maintenir l'application. Vous pourriez juste partir après avoir tout implémenté dans Scala :-) Aucune infraction :-)


1
Plain Java est là pour rester. Scala peut ou non. Il est trop tôt pour le dire.

«Il est plus facile d'embaucher des développeurs Java» est probablement vrai. Mais embaucher ceux qui sont «faciles à embaucher» n'est peut-être pas le moyen le moins cher de mener à bien votre projet.
Kevin Cline

7

Demandez à votre patron de lire des expériences comme celle-ci:

  1. Je fais actuellement la plupart de mes activités à Scala en ce moment. (Je dois mentionner que je pense que Scala est la meilleure chose depuis l'invention de la roue il y a quelque temps. :-D)

    À mon humble avis, c'est le seul langage qui permet vraiment aux gens de choisir la meilleure approche pour une tâche sans un clivage inutile entre des approches (plus) orientées objet et (plus) fonctionnelles.

    En regardant les langues qui revendiquaient quelque chose comme ça auparavant, je peux essentiellement voir deux camps de conception de langues concurrents:

    • Ceux du côté orienté objet qui ont vu que la programmation fonctionnelle a gagné du terrain ces derniers temps et ont pensé "Eh bien, nous ne comprenons pas vraiment ce truc fonctionnel, mais ajoutons du sucre syntaxique sophistiqué à notre langage, afin que nous puissions affirmer qu'il est fonctionnel aussi!" (exemples: Java, Python)

    • Ensuite, ceux du côté fonctionnel, qui ont pensé: "Eh bien, notre approche fonctionnelle est bien supérieure à toute autre chose et ce non-sens orienté objet est ennuyeux, mais mettons des mots clés supplémentaires dans notre langue, ce qui fera que notre langue échappera à l'université ! " (exemples: F #, OCaml)

    Les concepteurs de Scala ont unifié de nombreuses approches venant des deux côtés et ont créé un langage bien conçu, qui est - à mon humble avis - la plus grande différence par rapport aux autres langages, qui a décidé d'adopter l'approche "Frankenstein" pour la conception de langage de programmation.

  2. N'ayant encore fait que de petites choses avec Lift et seulement une expérience superficielle avec Rails et Django, je dois admettre que la plupart du temps, lorsque je me demandais pourquoi quelque chose dans Lift fonctionnait différemment de ce que j'attendais, cela était dû au fait que mes attentes étaient défectueux et l'approche de Lift supérieure.

    Lift n'est certainement pas une "introduction facile à Scala" mais apprendre comment fonctionne Lift était presque aussi gratifiant que d'apprendre Scala avant lui.

    La possibilité d'avoir une vue "propre" sans aucune logique est une grande amélioration par rapport à d'autres cadres qui revendiquaient la même chose, mais ne l'ont pas fait. Le support littéral XML de Scala permet de vérifier la bonne forme de votre réponse: le compilateur prouvera lors de la compilation que vous n'émettez que du XML bien formé à un client.

  3. Lift est une technologie viable et pour le moment la seule véritable approche si vous voulez créer des applications Web qui ressemblent, se sentent et se comportent comme de "vraies" applications de bureau sans écrire vous-même des quantités folles de code.

[ Source ]


3

Au cours des deux dernières années, nous avons progressé de manière équitable tout au long de ce voyage sur guardian.co.uk - notre plate - forme ouverte est construite sur Scala, notre CMS de base (à l'origine en Java) incorpore progressivement plus de Scala (nous allons bientôt passer de Maven à SBT pour notre build) et ce fut une expérience merveilleuse - vraiment revigorant nos développeurs, dont certains devenaient un peu blasés avec Java :)

Je vous encourage à lire ces deux articles sur notre transition, et peut-être à les utiliser comme preuves à l'appui avec vos cheveux pointus:

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

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

Quelques conseils rapides:

  • Commencez par écrire vos tests dans Scala - de cette façon, vous pouvez vous familiariser avec la langue, augmenter votre confiance en elle et ne pas avoir à vaincre les craintes que vous pourriez avoir concernant l'ajout du runtime à vos serveurs de production.

  • Ne demandez pas la permission d'essayer de nouvelles technologies. Mieux vaut demander pardon si vous devez :-)


+1! pour "Ne demandez pas la permission d'essayer de nouvelles technologies. Mieux vaut demander pardon si vous devez :-)"
Giorgio

2

Cette question s'inscrit dans une autre question. C'est pour quels types ou projets la migration vers Scala apporte-t-elle une valeur ajoutée? Je fais de Java au jour le jour, mais je rêve du jour où je pourrai utiliser Scala "en colère".

Quelques réponses à ma propre question:

  • Problèmes pour lesquels la concurrence basée sur un acteur apporterait un grand avantage (Akka)

  • Applications Web que les données leur sont transmises via COMET (Lift)

D'autres idées ou expériences encore meilleures?


1

J'écris des tests pour mes applications Java dans Scala et je conviens que c'est un bon point de départ. Ma couverture de test est meilleure parce que c'est plus rapide et plus facile de les écrire (aussi depuis que j'utilise Scala, je me concentre volontiers sur l'écriture de tests plus).

J'ai également commencé à faire des prototypes et des POC jetables à Scala à peu près exclusivement. J'essaie de faire en sorte que les managers et les superviseurs sachent que j'ai utilisé Scala pour ces one-offs et je souligne que j'ai pu mettre quelque chose en place rapidement grâce à Scala. Nous avions besoin (enfin, en quelque sorte) d'une application Web pour suivre notre jeu d'éléphants blancs de fête - 1,5 heures avec Scalatra et MongoDB et tout mon service voit cette application et pose des questions à ce sujet. Avouons-le, vous ne pourrez jamais décrire aux gestionnaires à quel point le langage est plus expressif ou que son modèle de concurrence est tellement meilleur. Mais si vous leur montrez que vous pouvez en faire plus plus rapidement, vous gagnez du terrain.

Mais je pense que le plus gros élément est d'enthousiasmer les développeurs pour Scala. Je suis sûr que nous travaillons tous avec des développeurs qui ne suivent pas activement les nouvelles technologies, et parfois il est difficile de motiver ces gens à faire quelque chose de nouveau (pourquoi, je ne comprends vraiment pas). Montrer à ces gens certains avantages de Scala (essayez le REPL) est la clé. Si vous obtenez suffisamment de développeurs qui bourdonnent sur les mêmes avantages de la productivité, vous avez beaucoup plus de chances que Scala soit officiellement adopté dans votre organisation.

Faire passer le mot et faire rouler cet effort populaire est mon objectif principal en 2011. Nous verrons comment cela se déroulera, car je ne peux pas attendre le jour où j'utiliserai Scala pour la majeure partie de mon travail.


1

Je me demande pourquoi choisir l'un ou l'autre? Pourquoi décider de jeter Java par la porte et d'aller Scala jusqu'au bout?

L'outil parfait pour le travail n'existe pas. Il n'y a aucune raison de jeter complètement l'expertise dans une langue et de la remplacer par une autre.

Je ne voudrais pas (plus) travailler dans une entreprise qui se concentre sur une langue ou un environnement, tbh. Il vaut mieux connaître beaucoup de choses et choisir le bon outil pour le travail.

À côté de cela, il est difficile, voire impossible, de faire basculer complètement votre organisation vers Scala. Au lieu de cela, j'essaierais de faire certains projets (ou même des parties de projets) à Scala, au lieu d'aller pour l'approche tout ou rien. Vous pouvez, par exemple, choisir de tester votre code Java avec Specs2, qui a une syntaxe assez agréable par rapport à l'ancien JUnit - et ce n'est pas non plus complexe, déroutant et dur, le code et les paradigmes Scala, juste du sucre syntaxique autour de la définition du comportement de votre application .


0

Un bon moyen est de démontrer deux versions du même programme. En faisant cela, vous pouvez montrer à vos collègues (dans la pratique) l' expressivité de Scala . Faire la même chose pour d'autres problèmes (XML, simultanéité, etc.) peut démontrer les avantages d'utiliser Scala au lieu de Java pour résoudre des problèmes spécifiques.

Bien sûr, ne vous attendez pas à ce que la migration se produise en une seule journée. Il existe de nombreux problèmes que vous pourriez sous-estimer: la courbe d'apprentissage, la base de code existante, etc.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.