Después de 8 años en la industria de desarrollo de software, he terminado con Java. ¿Qué debería aprender a continuación para mantenerme interesado en la programación, Python, Ruby, Go o el desarrollo de aplicaciones iOS?

Voz de cinismo aquí. Si has terminado con Java, ¿qué te hace pensar que Python o Ruby flotarán repentinamente en tu bote?

Es exactamente lo mismo. Clases, objetos, constructores. Métodos Bibliotecas interminables. Ruby es exactamente igual pero también completamente diferente, cuyo efecto neto es que tienes que volver a aprender todo lo que ahora sabes, solo para poder hacer exactamente las mismas cosas de una manera diferente.

Piense en todos esos momentos “emocionantes” en desarrollo (sarcasmo):

  • Escribir su línea de acceso a la base de datos número 1,000, igual que todas las demás
  • Oh, mira, necesito una combinación extraña en estas seis tablas para obtener una dirección de correo electrónico.
  • Ah! Otra sintaxis de motor de plantillas web para crear el mismo html que ayer. ¡Qué suerte tengo!
  • No entiendo este código completamente ilegible. Estoy seguro de que esto sería mejor en un idioma que no tenía 8 años de experiencia
  • Sí, jefe, sería un cambio de una línea, pero rompe 38 pruebas de selenio y 226 pruebas unitarias mal acopladas. Algunos de ellos parecen probar algo incorrecto, pero no queremos romper la tubería.

Simpatizo, de verdad, lo hago.

Tuve un intento serio de comenzar un negocio de producción de video web con un amigo. Sin embargo, no por Java. Por eso. Todo el maldito lote. Ágil que no lo es. Código de mierda. Expectativas irrealistas. Jefes de intimidación. Conócelo todo colegas. “La única forma verdadera” que cambia con cada trabajo. Los reclutadores. El reclutamiento roto. Los proyectos cancelados. Las culturas sin culpa que colapsan en el momento en que hay la misma culpa tangible. Las ricas bolsas de frijoles en lugar de pago. JavaScript !!!! (ok, posiblemente te guste JavaScript, solo estoy despotricando). Oh no, todo se ha vuelto funcional ahora: debes ser anticuado y estúpido usando OOP, ya nadie lo usa …

Apesta, y apesta a lo grande, y siempre lo hará.

Cambiar el idioma no solucionará nada de eso.

Entonces, si es realmente la sintaxis la que te deprime, entonces sí. Python es un cambio agradable, y Ruby es lo suficientemente diferente a Java como para ser de interés. Kotlin también sería sensato.

En cuanto a mí, descubrí que tenía que superar las olas de desilusión de vez en cuando. El cambio de verticales ayudó: pasar de incrustado a la web, etc. El cambio de equipos ayudó, a algunos me pareció que me quedaba bien y estaba feliz. Otros, yo era el malo.

También encontré que obtener un “enfoque lateral” fue motivador. En un inicio de conferencia web, donde yo era un desarrollador de Java del lado del servidor, descubrí que también podía escribir sistemas de marketing transaccional en Java, y experimentar con la copia escribiendo el contenido del correo / video / página de destino. Y entre en Optimización de tasa de conversión y pruebas A / B. Nuevamente, nuevas ideas, nuevas motivaciones encontradas.

Genialmente buena suerte para ti, ¡pero piensa un poco más que la sintaxis antes de saltar!

No estoy seguro de si esa lista pretende ser exclusiva, pero Perl 6 tiene ideas más interesantes que cualquier otro idioma que haya encontrado. (Solo tiene similitudes superficiales con Perl, por lo que no debe considerarse como el mismo lenguaje, ya que C ++ no es lo mismo que C.) Tiene un sistema de tipo estático, que puede optar por usar o no usar. (Desafortunadamente, no se verifica estáticamente en su mayor parte). Su sistema de tipos parece resolver la mayoría de los problemas de herencia. Tiene coincidencia de patrones de estilo Haskell para resolver sobrecargas de funciones. Tiene subprocesos, promesas y la capacidad de procesar elementos de lista en paralelo (sin necesidad de un código de concurrencia más complejo). La biblioteca de análisis es potente y relativamente simple. El lenguaje es realmente extenso: me tomó más tiempo de lo habitual orientarme y comenzar a apreciar las cosas. Te estirará la mente.

Usualmente les digo a los programadores que Haskell estirará su mente. Lo hará, pero el lenguaje puede ser demasiado matemático. Aprendí mucho de un poco del uso de Haskell, pero nunca me sentí realmente “libre” al usarlo. Trabajar con datos sin realizar ningún cambio (es decir, programación funcional pura) siempre se sintió como un ejercicio.

Si eres como yo, Python no es una opción. No puedo pasar de tener tipos a un idioma con un soporte de tipo tan pobre. Introduce una clase de errores completamente nueva sobre la que espero que el compilador (o el intérprete en algunos casos) me dé una advertencia clara.

Puede que no traiga nada nuevo a la mesa con esto, pero estoy en un momento crucial y no puedo leer todas las respuestas en este momento … lo siento. Solo siendo honesto.
Además, no tratar de sonar negativo para nadie ni para nada. Solo necesito sacar esto a la luz porque me habría ahorrado mucho dolor y sufrimiento en mi carrera …

Comencé con las bases de datos de Access, luego pasé al desarrollo de asp y sql … A partir de ahí aprendí php y una fuente de idiomas, herramientas, áreas (UI, bases de datos, middleware, dev-ops y una larga lista de otras cosas) …

Trabajé como consultor durante muchos, muchos años. La mayoría de los escenarios fueron menos de 1 año. Diferentes lenguajes, herramientas, flujos de trabajo, procesos, gestión, tendencias de diseño, marcos, personas y todo diferente …

Nunca estuve muy satisfecho con lo que estaba haciendo, así que casi siempre estaba feliz de pasar al siguiente proyecto. Puse cada onza de energía en resolver los problemas del proyecto y no importó el idioma que estaba usando. Estaba resolviendo problemas. Pero había un problema gigante que estaba ignorando … Mi propia felicidad.

Lo que finalmente aprendí después de casi 20 años es que hay dos cosas principales que darán satisfacción al “trabajo” más que cualquier otra cosa …

Las personas con las que trabajas

Los problemas que estás resolviendo

Las personas con las que trabajo son lo más importante. Hablo con estas personas más que nadie durante mi día. Necesito algo más que llevarme bien con ellos. Ahora tengo la suerte de trabajar con un par de muy buenos amigos a quienes conocí mientras trabajaba en un trabajo hace 10 años … Hace toda la diferencia. Un mal día puede convertirse en uno decente con los compañeros de trabajo / amigos adecuados. Un buen día puede convertirse en una celebración increíble … Todo depende de con quién estoy trabajando.

Los problemas que estoy resolviendo se han vuelto mucho más importantes que las herramientas que estoy usando. Mi trabajo principal es resolver problemas que no están teniendo un gran impacto en el mundo, pero estoy haciendo cosas que captan mi interés y me alegra sentarme al teclado y resolver las cosas.
¡Mi proyecto paralelo es con algunos muy buenos amigos y estamos trabajando en algo que tiene potencial para ayudar verdaderamente a las personas y que es un doble golpe para SWEET EMOTION! Eso brinda más satisfacción a mi vida que cualquier otra cosa que haya experimentado (en un ambiente de trabajo … NADA se compara con la alegría y la felicidad de mi familia).

Entonces, cuando leo “He terminado con Java”, lo que escucho es que estás buscando algo más significativo y satisfactorio en la vida laboral … Haz un poco de búsqueda del alma y descubre lo que realmente te emociona … descubre los principales problemas dentro de ese tema y comenzar a hacer un plan para resolverlos.
Cuando tengas suficiente idea sobre qué es lo que quieres hacer, busca a personas apasionadas que se sientan similares con el tema y comience a hablar sobre tu idea … Tarde o temprano encontrarás personas increíbles con las que es genial trabajar y son tan apasionado por resolver esos problemas como tú.

No se trata de los idiomas o herramientas que usamos … Es para qué los usamos y con quién los usamos.

Eso es solo mi $ .02 basado en el título de la pregunta. Lo siento si estoy fuera de lugar. Llevaba mucho tiempo queriendo sacar eso de mi pecho y solo tuve unos minutos para vomitar esto a través del teclado …

Daré mi opinión, no tome decisiones basadas únicamente en esta opinión.

Conocer cualquier tecnología adicional lo hará calificar para múltiples oportunidades de trabajo.

Según la tendencia actual, puede seleccionar Golang con Devops. Como muchas tecnologías de Devops, como kubernates, ya usan go. Un nuevo campo como Devops mejorará su interés migratorio.

Si está interesado en la ciencia de datos, entonces python es inmejorable, obtendrá trabajos bien remunerados, con conocimiento de python y datascience.

Ruby on rails también es una buena tecnología para el desarrollo web y la calabaza basada en Ruby se usa para probar aplicaciones de Android e iOS.

El desarrollo de aplicaciones iOS también es una buena opción, para llegar a un público más amplio, muchas empresas desarrollan aplicaciones nativas e híbridas, sabiendo que iOS le dará una ventaja en su búsqueda de empleo y aumentará su interés en la programación.

Recomiendo Elixir + Phoenix.

Elixir es como “Erlang” con más sintaxis tipo Ruby que hace que sea cómodo codificar. Es un lenguaje funcional que te obliga a codificar de una manera diferente. Si intenta comenzar a hacer las cosas de una manera diferente, puede sentirse confundido y un poco desconcertado.

A diferencia de muchas otras opciones más oscuras, parece comercialmente viable ya y definitivamente es bueno para aplicaciones basadas en web.

Phoenix es como Rails pero con un rendimiento “más duro”.

Ruby está disminuyendo en este momento, aunque los desarrolladores involucrados están trabajando para mejorar su rendimiento.

Recursos:

Elixir (lenguaje de programación) – Wikipedia

Prueba Elixir en Code School (Gratis) – Prueba Elixir | Código escolar

Idiomas: bastante inútiles: LateX, Prolog, Forth, idiomas ofuscados. Los lenguajes que le darán trabajo probablemente sean muy parecidos a Java.

Dominios: Programación integrada, en tiempo real, paralela (GPU?), Seguridad crítica, juegos, criptografía, estenografía, IA …

Algoritmos: elija algoritmos de un libro y piense en aplicaciones. Implemente el algoritmo

De todos los idiomas que he aprendido, iOS ofrece la mejor plataforma. Si eres un programador de Java sólido, podrás retomarlo. Lo más difícil del desarrollo de iOS es la abundancia de información desactualizada. Descubrir cómo realizar una tarea simple puede ser complicado porque todas las respuestas están desactualizadas.

Python también es muy divertido, esta es una buena opción si está interesado en el desarrollo de back-end en lugar de front-end. Me gusta Python porque hay tantas bibliotecas disponibles que proporcionan una funcionalidad increíble, es un sueño para los desarrolladores. El único inconveniente en mi opinión es que la mayoría de las bibliotecas GUI no son tan buenas en este momento (esto probablemente cambiará en los próximos cinco años).

Si has pasado 8 años con Java, ¿por qué no aprovechas esa experiencia y echas un vistazo a Kotlin? Es un soplo de aire fresco, totalmente intercambiable con Java con una sintaxis mucho más agradable. Incluso puede cargar el código existente en IntelliJ y desde el menú Código seleccione ‘Convertir a Kotlin’ 🙂

Probablemente sea en lo que Java debería haber evolucionado … en lugar de los fragmentos actuales de esto, fragmentos de esa … cosa

Si te sientes aburrido con la programación Java, mira Go. Es bastante genial y emocionante. Go es muy pequeño y minimalista, lo que lo hace extremadamente fácil de aprender. Go tiene un soporte fantástico para la programación concurrente. Go tiene muchas herramientas divertidas. Ve compilando como un murciélago fuera del infierno, ¡no más esperas en tus construcciones!

Go es el futuro de la programación del lado del servidor. ¡Ha subido de cero a Top 10 en solo 3 años, el lenguaje de programación de más rápido crecimiento en la historia!

Sube a la planta baja ahora y conduce hasta la cima. Muchos trabajos de Go llegarán pronto.

Ok, tuviste suficiente Java. Comer 8 años la misma comida … lo entiendo. Estás perdiendo interés en la programación.

Pero aprender un lenguaje de programación más no cambiaría las cosas . Independientemente del idioma que elija, estará haciendo lo mismo pero con una sintaxis ligeramente diferente. Entonces, ¿por qué invertir 1000 (?) Horas dominándolo …

Si estuviera en tal situación, comenzaría a aprender administración de proyectos o análisis de negocios …

Haskell Lo digo sin dudarlo. Si ha terminado con un idioma, debe estar un poco agotado. Debes permitirte aprender a pensar de nuevo. Dale algo de comida a tu cerebro hambriento. Aprende a articular la estructura detrás de la tarea.

Después de haber sido desarrollador ac y c ++ y luego desarrollador Java durante años, ahora uso dos herramientas que me encantan: Go y Node.js.

Go es un maravilloso lenguaje esbelto y mezquino que hace que la verbosidad de java parezca una vieja charlatanería. Y el rendimiento es lo mejor que puedes tener hoy.

Node.js por la misma razón es genial, e incluso puedes escribir menos código o hacer lo mismo.

Ya no voy a mirar hacia atrás a Java.

Sugiero ir. Es conciso. El paquete de reflejos de Go es increíble y nada supera la concurrencia de Go. No hay VM para ejecutar. Y Go también tiene un recolector de basura. Todo se puede construir en un binario. GRPC / Protobuf hace que sea muy fácil implementar micro servicios.

Nota: GRPC / Protobuf también están disponibles en otros idiomas.

Si un nuevo lenguaje es realmente la solución (ver otras respuestas …), ¿por qué no intentar algo diferente a Java? Swift, Python, Ruby, Java, todo es lo mismo.

Encontré que Lisp y Haskell me abrieron los ojos a los estilos y aspectos de la programación de maneras que mejoraron significativamente mis habilidades en todos los idiomas.

He estado exactamente en alguna situación como tú.

Mi consejo sería el siguiente: encuentre un problema interesante y observe sus propiedades específicas. Luego elige un idioma que creas que podría ser adecuado para él. También debería ser algo que consideraría divertido de aprender.

Go parece muy interesante desde una perspectiva de concurrencia y escalabilidad.

Python probablemente te dará mucha alegría al programar de vuelta. Muchos de los tipos de lenguaje molestos y detallados de Java estarán ausentes. Por otro lado, una vez que profundice y obtenga experiencia práctica, puede comenzar a apreciar algunos de los aspectos de seguridad de Java que ahora da por sentado.

Siento lo mismo que usted ahora porque siento que Java está atrasado en innovación en comparación con otros desarrollos en el espacio del lenguaje. Algunas sugerencias que tengo es buscar en otros paradigmas, como la programación funcional y el desarrollo basado en tipos; por ejemplo los idiomas Haskell e Idris. Si desea tener un lenguaje más interesante en el espacio OO, busque el lenguaje Crystal. Incluso en Java hay algunas bibliotecas y marcos que ayudan a facilitar nuevos patrones de diseño de programación como el diseño orientado compuesto.

Pruebe iOS y / o AI / Mahcine Learning. Ambos son temas candentes, por lo que hay muchos buenos materiales para ayudar a un inicio rápido y también bastante diferentes del desarrollo de Java (supongamos que el desarrollo de aplicaciones empresariales de back end) Además, dado que estos son temas candentes, habrá muchos artículos de evangelistas tecnológicos y nuevas chispas de vez en cuando para ayudar a continuar antes de que se aburra.

hacer un poco de elixir u óxido, o algo de haskell, o incluso más ponis marginales … esos son bastante diferentes de Java

En un momento u otro trabajé / aprendí C, C ++, Java … pero profesionalmente trabajé más en mainframes: cobol, JCL, etc. tecnologías antiguas. No se puede hacer mucha experimentación con mainframes.
No estoy seguro de por qué estás aburrido con Java … probablemente porque trabajaste en cosas similares en el trabajo … Así que aquí vienen mis 2 centavos … puede que busques cosas más interesantes en tu tiempo libre en Java … como competencias de codificación, crea un proyecto a largo plazo que resuelve algo real.
Si ha hecho todo eso … no hay un nuevo lenguaje que lo ayude con el aburrimiento … probablemente sea la naturaleza del trabajo … cambie su campo de trabajo totalmente. Vuélvete loco … aprende a cocinar, fotografía … pero precaución: ¡asegúrate de estar financieramente seguro! 🙂

Pague por IntelliJ. Hará que escribir en Java se sienta como un nuevo lenguaje mágico y te mantendrá interesado.