¿Cómo anima a su organización a pasar de Java a Scala? [cerrado]
15
¿Alguna organización ha comenzado la migración de Java a Scala? Si es así, ¿cómo haces eso? ¿Qué puedo hacer para alentar a mis colegas a hacer lo mismo?
agregue scala y migración a la etiqueta si tiene autoridad para hacerlo
nanda
99
Quizás deberías explicar por qué
TheLQ
Necesita suficiente conocimiento interno para garantizar un factor de bus "suficientemente alto".
Respuestas:
15
Probablemente la forma más fácil es usar Scala primero solo para pruebas. En este caso, es posible que incluso no tenga que decirle a su jefe :-) Si le pregunta, dígale "ese es solo mi caso de prueba privado, es mucho más fácil y rápido usar Scala para ello". Una vez que usted (y su organización) tenga suficiente experiencia con Scala, puede comenzar a usarlo para el código 'real'.
Estos fueron mis pensamientos, exactamente, para la migración de C # a F #.
GregC
7
Desde la perspectiva de las empresas, es mejor quedarse con Java si no hay una ventaja clara que obtendrán al migrar a Scala. Es más fácil para ellos contratar programadores Java para construir y mantener la aplicación. Podrías irte después de implementar todo en Scala :-) Sin ofender :-)
Plain Java está aquí para quedarse. Scala puede o no. Es muy temprano para saberlo.
"Es más fácil contratar desarrolladores de Java" probablemente sea cierto. Pero contratar a los que son "fáciles de contratar" puede no ser la forma más económica de completar su proyecto.
Kevin Cline
7
Haz que tu jefe lea experiencias como esta:
Actualmente estoy haciendo la mayoría de mis cosas en Scala en este momento. (Debo mencionar que creo que Scala es lo mejor desde la invención de la rueda hace algún tiempo. :-D)
En mi humilde opinión, es el único lenguaje que realmente permite a las personas elegir el mejor enfoque para una tarea sin cierta división innecesaria entre (más) enfoques orientados a objetos y (más) funcionales.
Mirando los idiomas que afirmaban algo como esto antes, básicamente puedo ver dos campos de diseño de idiomas en competencia:
Los del lado orientado a objetos que vieron que la programación funcional ganó algo de fuerza últimamente y pensaron "Bueno, realmente no entendemos esa cosa funcional, pero agreguemos un poco de azúcar sintáctico elegante a nuestro lenguaje, para que podamos afirmar que es funcional ¡también!"
(ejemplos: Java, Python)
Luego, los del lado funcional, que pensaron "Bueno, nuestro enfoque funcional es muy superior a cualquier otra cosa y esa tontería orientada a objetos es molesta, pero pongamos algunas palabras clave adicionales en nuestro idioma, eso hará que nuestro idioma escape de la academia con seguridad ! " (ejemplos: F #, OCaml)
Los diseñadores de Scala unificaron muchos enfoques provenientes de ambos lados y crearon un lenguaje bien diseñado, que es, en mi humilde opinión, la mayor diferencia con otros lenguajes, que decidieron adoptar el enfoque "Frankenstein" para el diseño del lenguaje de programación.
Habiendo hecho solo cosas más pequeñas con Lift y solo una experiencia superficial con Rails y Django, tengo que admitir que la mayoría de las veces cuando me preguntaba por qué algo en Lift funcionaba de manera diferente a lo que esperaba, esto se debía al hecho de que mis expectativas eran defectuoso y el enfoque de Lift superior.
Sin duda, Lift no es una "introducción fácil a Scala", pero aprender cómo funciona Lift fue casi tan gratificante como aprender Scala antes.
La capacidad de tener una vista "limpia" sin ninguna lógica es una gran mejora para otros marcos que afirman lo mismo, pero no lo lograron. El soporte literal XML de Scala hace posible verificar la buena forma de su respuesta: el compilador demostrará en tiempo de compilación que solo emite XML bien formado a un cliente.
Lift es una tecnología viable y, por el momento, el único enfoque real si desea crear aplicaciones web que se vean, se sientan y se comporten como aplicaciones de escritorio "reales" sin escribir cantidades de código increíbles.
En los últimos dos años hemos progresado bastante en este viaje en guardian.co.uk: nuestra plataforma abierta está construida en Scala, nuestro CMS central (originalmente en Java) está incorporando gradualmente más Scala (pronto nos moveremos de Maven a SBT para nuestra compilación) y ha sido una experiencia maravillosa, realmente vigorizando a nuestros desarrolladores, algunos de los cuales se estaban volviendo un poco hastiados con Java :)
Te animo a que leas estos dos artículos sobre nuestra transición, y tal vez los uses como evidencia de apoyo con tu pelo puntiagudo:
Comience por escribir sus pruebas en Scala: de esa manera puede familiarizarse con el lenguaje, aumentar su confianza en él y no tener que vencer los temores que pueda tener sobre agregar el tiempo de ejecución a sus servidores de producción de inmediato.
No pidas permiso para probar nuevas tecnologías. Es mejor pedir perdón si tienes que :-)
+1! para "No pidas permiso para probar nuevas tecnologías. Es mejor pedir perdón si tienes que :-)"
Giorgio
2
Esta pregunta encaja en otra pregunta. ¿Para qué tipo de proyectos o migraciones proporciona Scala valor agregado? Hago el día de Java mi trabajo diario, pero sueño con el día en que pueda usar Scala "con ira".
Un par de respuestas a mi propia pregunta:
Problemas para los cuales la concurrencia basada en actores proporcionaría un gran beneficio (Akka)
Aplicaciones web que tienen datos enviados a través de COMET (Lift)
Estoy escribiendo pruebas para mis aplicaciones Java en Scala y estoy de acuerdo en que es un buen lugar para comenzar. La cobertura de mi examen es mejor porque es más rápido y fácil escribirlos (también desde que uso Scala, de buena gana me concentro en escribir más exámenes).
También comencé a hacer prototipos y POC desechables en Scala casi exclusivamente. Trato de hacer que los gerentes y supervisores estén lo más conscientes posible de que usé Scala para estos casos únicos y enfatizo que pude poner en marcha algo rápidamente gracias a Scala. Necesitábamos (bueno, más o menos) una aplicación web para rastrear nuestro juego de elefantes blancos de fiesta: 1.5 horas con Scalatra y MongoDB y todo mi departamento está viendo esta aplicación y preguntando al respecto. Seamos realistas, nunca llegarás a ningún lado describiendo a los gerentes cuánto más expresivo es el lenguaje o si su modelo de concurrencia es mucho mejor. Pero si les muestras que puedes hacer más cosas más rápido, ganas terreno.
Pero creo que lo más importante es entusiasmar a los desarrolladores con Scala. Estoy seguro de que todos trabajamos con desarrolladores que no se mantienen al día con las nuevas tecnologías, y a veces es difícil entusiasmar a esas personas por hacer algo nuevo (por qué, realmente no entiendo). Mostrarle a esas personas algunos beneficios de Scala (pruebe REPL) es clave. Si obtiene suficientes desarrolladores que hablan sobre los mismos beneficios de la productividad, entonces es mucho más probable que Scala sea adoptada oficialmente en su organización.
Difundir la palabra y poner en marcha ese esfuerzo de base es mi objetivo clave en 2011. Veremos cómo funciona, porque no puedo esperar el día en que pueda usar Scala para la mayor parte de mi trabajo.
Me pregunto por qué elegir uno u otro. ¿Por qué decidir tirar a Java por la puerta e ir a Scala por completo?
No existe la herramienta perfecta para el trabajo. No hay razón para tirar por completo la experiencia en un idioma y reemplazarlo por otro.
No me gustaría trabajar (más) en una empresa que se centra en un idioma o entorno, tbh. Es mejor saber muchas cosas y elegir la herramienta adecuada para el trabajo.
Además de eso, es difícil, si no imposible, hacer que su organización cambie completamente a Scala. En cambio, trataría de hacer algunos proyectos (o incluso partes de proyectos) en Scala, en lugar de optar por el enfoque de todo o nada. Podría, por ejemplo, optar por probar su código Java con Specs2, que tiene una sintaxis bastante buena en comparación con JUnit antiguo, y tampoco es un código y paradigmas Scala complejos, confusos y duros, solo azúcar sintáctico en torno a la definición del comportamiento de su aplicación .
Una buena manera es demostrar dos versiones del mismo programa. Al hacerlo, puede mostrar a sus colegas (en la práctica) la expresividad de Scala . Hacer lo mismo para otros problemas (XML, concurrencia, etc.) puede demostrar los beneficios de usar Scala en lugar de Java para abordar problemas específicos.
Por supuesto, no esperes que la migración ocurra en un día. Hay muchos problemas que puede subestimar: la curva de aprendizaje, la base de código existente, etc.
Respuestas:
Probablemente la forma más fácil es usar Scala primero solo para pruebas. En este caso, es posible que incluso no tenga que decirle a su jefe :-) Si le pregunta, dígale "ese es solo mi caso de prueba privado, es mucho más fácil y rápido usar Scala para ello". Una vez que usted (y su organización) tenga suficiente experiencia con Scala, puede comenzar a usarlo para el código 'real'.
fuente
Desde la perspectiva de las empresas, es mejor quedarse con Java si no hay una ventaja clara que obtendrán al migrar a Scala. Es más fácil para ellos contratar programadores Java para construir y mantener la aplicación. Podrías irte después de implementar todo en Scala :-) Sin ofender :-)
fuente
Haz que tu jefe lea experiencias como esta:
[ Fuente ]
fuente
En los últimos dos años hemos progresado bastante en este viaje en guardian.co.uk: nuestra plataforma abierta está construida en Scala, nuestro CMS central (originalmente en Java) está incorporando gradualmente más Scala (pronto nos moveremos de Maven a SBT para nuestra compilación) y ha sido una experiencia maravillosa, realmente vigorizando a nuestros desarrolladores, algunos de los cuales se estaban volviendo un poco hastiados con Java :)
Te animo a que leas estos dos artículos sobre nuestra transición, y tal vez los uses como evidencia de apoyo con tu pelo puntiagudo:
http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala
http://www.infoq.com/articles/guardian_scala
Algunos consejos rápidos:
Comience por escribir sus pruebas en Scala: de esa manera puede familiarizarse con el lenguaje, aumentar su confianza en él y no tener que vencer los temores que pueda tener sobre agregar el tiempo de ejecución a sus servidores de producción de inmediato.
No pidas permiso para probar nuevas tecnologías. Es mejor pedir perdón si tienes que :-)
fuente
Esta pregunta encaja en otra pregunta. ¿Para qué tipo de proyectos o migraciones proporciona Scala valor agregado? Hago el día de Java mi trabajo diario, pero sueño con el día en que pueda usar Scala "con ira".
Un par de respuestas a mi propia pregunta:
Problemas para los cuales la concurrencia basada en actores proporcionaría un gran beneficio (Akka)
Aplicaciones web que tienen datos enviados a través de COMET (Lift)
¿Alguna otra idea o mejor aún experiencias?
fuente
Estoy escribiendo pruebas para mis aplicaciones Java en Scala y estoy de acuerdo en que es un buen lugar para comenzar. La cobertura de mi examen es mejor porque es más rápido y fácil escribirlos (también desde que uso Scala, de buena gana me concentro en escribir más exámenes).
También comencé a hacer prototipos y POC desechables en Scala casi exclusivamente. Trato de hacer que los gerentes y supervisores estén lo más conscientes posible de que usé Scala para estos casos únicos y enfatizo que pude poner en marcha algo rápidamente gracias a Scala. Necesitábamos (bueno, más o menos) una aplicación web para rastrear nuestro juego de elefantes blancos de fiesta: 1.5 horas con Scalatra y MongoDB y todo mi departamento está viendo esta aplicación y preguntando al respecto. Seamos realistas, nunca llegarás a ningún lado describiendo a los gerentes cuánto más expresivo es el lenguaje o si su modelo de concurrencia es mucho mejor. Pero si les muestras que puedes hacer más cosas más rápido, ganas terreno.
Pero creo que lo más importante es entusiasmar a los desarrolladores con Scala. Estoy seguro de que todos trabajamos con desarrolladores que no se mantienen al día con las nuevas tecnologías, y a veces es difícil entusiasmar a esas personas por hacer algo nuevo (por qué, realmente no entiendo). Mostrarle a esas personas algunos beneficios de Scala (pruebe REPL) es clave. Si obtiene suficientes desarrolladores que hablan sobre los mismos beneficios de la productividad, entonces es mucho más probable que Scala sea adoptada oficialmente en su organización.
Difundir la palabra y poner en marcha ese esfuerzo de base es mi objetivo clave en 2011. Veremos cómo funciona, porque no puedo esperar el día en que pueda usar Scala para la mayor parte de mi trabajo.
fuente
Me pregunto por qué elegir uno u otro. ¿Por qué decidir tirar a Java por la puerta e ir a Scala por completo?
No existe la herramienta perfecta para el trabajo. No hay razón para tirar por completo la experiencia en un idioma y reemplazarlo por otro.
No me gustaría trabajar (más) en una empresa que se centra en un idioma o entorno, tbh. Es mejor saber muchas cosas y elegir la herramienta adecuada para el trabajo.
Además de eso, es difícil, si no imposible, hacer que su organización cambie completamente a Scala. En cambio, trataría de hacer algunos proyectos (o incluso partes de proyectos) en Scala, en lugar de optar por el enfoque de todo o nada. Podría, por ejemplo, optar por probar su código Java con Specs2, que tiene una sintaxis bastante buena en comparación con JUnit antiguo, y tampoco es un código y paradigmas Scala complejos, confusos y duros, solo azúcar sintáctico en torno a la definición del comportamiento de su aplicación .
fuente
Una buena manera es demostrar dos versiones del mismo programa. Al hacerlo, puede mostrar a sus colegas (en la práctica) la expresividad de Scala . Hacer lo mismo para otros problemas (XML, concurrencia, etc.) puede demostrar los beneficios de usar Scala en lugar de Java para abordar problemas específicos.
Por supuesto, no esperes que la migración ocurra en un día. Hay muchos problemas que puede subestimar: la curva de aprendizaje, la base de código existente, etc.
fuente