Realmente me gusta Scala y quiero hacer una carrera en él, pero mi compañía decidió ir a Python para un desarrollo más rápido. ¿Qué tengo que hacer?

Voy a ser franco:

Deberías superarlo.

Bien, déjame explicarte, antes de soltar a los aldeanos enojados.

Personalmente amo C #, me gusta Scala, no me gusta Java y, en general, soy indiferente a JavaScript. Etcétera. Todos tenemos opiniones y sentimientos sobre varios idiomas.

Sin embargo, estos son puntos menores e irrelevantes en el contexto de la construcción de soluciones del mundo real. En un solo día puedo codificar en cuatro idiomas diferentes, pero me dedico a un tipo de ingeniería . Al final del día, resolver problemas del mundo real es lo que estamos contratados para hacer y así es como creamos valor y justificamos nuestros salarios absurdos. Resolver bien estos problemas es una tarea que es principalmente independiente del lenguaje de programación.

Ciertamente importa a qué idioma / plataforma se dirija si está construyendo plataformas centrales. ¿Estás construyendo una nueva versión de Spark? ¿Está creando un motor de base de datos o una puerta de enlace API? Quizás esté codificando un servidor web desde los primeros principios. O escribir un sistema de archivos o sistema operativo. Bien, entonces su elección del lenguaje de programación tiene un impacto significativo.

De lo contrario, si está haciendo lo que la mayoría de nosotros estamos haciendo, que es escribir microservicios, lógica de negocios y otros sistemas de nivel medio, entonces los verdaderos problemas a resolver están en el nivel de arquitectura y diseño. Y, francamente, en ese espacio, para la mayoría de los problemas, Python va a patear el trasero de Scala por todo el lugar sin sudar.

No es una o una solución, de todos modos; siempre puede mezclar idiomas y elegir el que mejor se adapte al problema que está resolviendo, y el signo de una buena compañía es que toma decisiones muy pragmáticas al respecto: nuestra propia plataforma utiliza media docena de idiomas: Java , Scala, TypeScript, Flow, C ++, etc. Cada uno en el lugar donde tiene más sentido.

He sido ingeniero profesional de Scala durante los últimos 5 años. ¡Bienvenido a la rebelión! (No, no se trata solo del idioma, sino que los idiomas son indicativos de los tipos de problemas de ingeniería para los que son adecuados. Algunos que podríamos preferir más que otros. Por ejemplo, los desarrolladores de motores de juegos pueden no considerarse “ingenieros de CPP” pero probablemente tienen poco interés en ese trabajo de “ingeniero de Python”)

Ahora la pregunta que realmente me gusta de Scala, ¿cómo hago una carrera en ella? Es el único que vale la pena responder. La parte sobre su compañía actual y Python no es importante.

En realidad me pasó algo similar. Llevaba algún tiempo trabajando en C en una empresa bastante grande. Desafortunadamente, a medida que nuestro producto se hizo más maduro, el motor central tenía cada vez menos que hacer. En un momento me pidieron que hiciera un proyecto razonablemente grande en .Net. Yuck No me interesaba. Sin embargo, noté este lenguaje F # y decidí explorarlo. Me enamoré profundamente de eso. Pero, por supuesto, finalmente me informaron que no podría usar F # ya que nadie más en el equipo lo entendió o quería aprenderlo, y tendría que volver a escribir todo mi código F # en C #. Yuuuuuck !! Ok, esto me molestó. Más de 5 años después, todavía siento una punzada de dolor al escribir esto.

De todos modos, esto me pone en una posición similar a donde estás ahora. Me estaba entusiasmando mucho con la programación funcional, así que simplemente solicité a todas las empresas que usaban Scala u ocaml o f # de haskell.

Obviamente, la comunidad Scala es mucho más grande que el resto, por lo que no es de extrañar que me hayan contratado en una tienda Scala. Esto fue en 2011 y la comunidad Scala es mucho más grande y más corriente ahora.

Es una filosofía muy autoseleccionante. La mitad del beneficio de elegir un idioma como Scala es que atrae a ingenieros curiosos, no mentalmente vagos. La mayoría de las compañías no esperan que usted sepa el idioma. Esperarán que esté emocionado y dispuesto a aprender, que es exactamente como suena a partir de su pregunta.

Entonces, la respuesta es simplemente auto-seleccionarse en una de las excelentes compañías que construyen con Scala.

Depende de por qué te gusta Scala.

Si simplemente te gusta Scala porque te apetece, por ejemplo, a algunas personas les gusta Rojo, a otras les gusta Azul, así que no es gran cosa, aprende Python. Python es un buen lenguaje también.

Sin embargo, si tiene buenas razones técnicas, lógicas o científicas por las que le gusta Scala mejor que Python, debe dejar el trabajo. Encuentra un trabajo con Scala. No es tan difícil, y también podrías obtener un mejor salario.

Un buen ingeniero debe tener opiniones científicas y debe poder mantener sus principios. De lo contrario, no vale la pena.

Una vez trabajé en una plataforma IoT para una compañía Fortune 100. Es realmente interesante porque creamos una plataforma que manejaba una gran cantidad de datos y un gran flujo de información concurrente con un procesamiento complejo, para hacer cosas geniales con los dispositivos IoT en todo Internet. Lo construimos en Ruby, usando Sinatra. Fui ingeniero senior en un equipo de ingenieros expertos y nos respetamos mutuamente, trabajamos muy bien como equipo.

Luego se fue un vicepresidente de la compañía, llegó un nuevo vicepresidente. El nuevo tipo era un viejo pedo de Java, residual del siglo pasado, por lo que desechó a Ruby y decidió construir todo en Java. Me preguntaron si quería seguir en el equipo y trabajar con Java, porque yo era un ingeniero senior y tenía más de 10 años de Java y J2EE también.

Pero dije que no, lo dejé. Me gusta más Ruby, dejé Java para Ruby hace más de 10 años y nunca miré hacia atrás. Ya no quiero mirar miserable código Java. Entonces renuncié.

¿Y adivina qué? Después de 2 meses, desecharon toda la maldita idea de Java, me invitaron a volver y construimos la plataforma IoT en Ruby.

Ni siquiera me importa Mantengo mis principios y mi creencia. Por eso soy un buen ingeniero. Pero no soy fanático. Cuando veo que usar Elixir es mejor que usar Ruby, también uso Elixir.

Y quienquiera que diga “Un lenguaje de programación es solo un lenguaje”, son irremediablemente estúpidos y deben ser despedidos.

No veo demasiada diferencia en 2 idiomas, particularmente Py3:

Ambos son cortos, OOP, funcionales, lenguajes reflexivos (por definición funcional solo significa que puede pasar funciones como parámetros y obtener otro valor / función).

Con un fuerte apoyo de las disciplinas informáticas numéricas / analíticas / distribuidas.

Por lo tanto, su experiencia en uno será útil en otro.

No te metas en la división y el bipartidismo.

Es divertido escuchar “un desarrollo más rápido” como una razón para Python: hemos usado ambos de manera bastante extensa y encontramos que es mucho más fácil escribir código sólido rápidamente en Scala. Los programadores de Scala tienen una gran demanda si estás en el Área de la Bahía, por lo que no debería ser tan difícil encontrar un trabajo si eso es lo que quieres. Diablos, estamos contratando: Carreras – Euclid Analytics

Dicho esto, debe tratar de desarrollar una comprensión amplia de lo que hace que un trabajo sea divertido para usted y si la elección del idioma es importante. Realmente me gusta la programación funcional, y realmente me gusta Scala, pero los encuentro casi irrelevantes junto a cosas como cuánta autonomía tienen los desarrolladores, en qué tipo de proyectos trabaja la compañía o si la base de código existente está bien probada.

Si los lenguajes dinámicos son un factor decisivo, eso es totalmente comprensible, solo asegúrese de que esa sea realmente su prioridad.

Tienes 3 opciones.

  1. Sigue el flujo y solo usa Python por el momento.
  2. Sal y busca un trabajo donde puedas hacer Scala.
  3. Encuentre algunos proyectos para hacer en Scala alrededor de su empresa que no afectarán el desarrollo u operaciones de la línea principal.

No soy un gran admirador de Scala, sino de cada uno lo suyo. Creo que podría reemplazar los 2 idiomas con 2 por ahí y el argumento sería el mismo. Tal vez hay virtudes para un idioma sobre el otro en alguna aplicación, pero no tome eso como una razón por la que hay un idioma para gobernarlos a todos. Habrá lugares donde Python realmente se balancea, y habrá lugares donde Scala se quita los pantalones. Con esfuerzo, los roles se pueden revertir, pero no siempre vale la pena hacerlo.

No hay nadie más manejando tu carrera excepto tú. Es por eso que siempre debe actuar en su mejor interés a largo plazo. Si su empleador actual no satisface sus necesidades, busque uno nuevo.