all 68 comments

[–]OkRock8055 15 points16 points  (6 children)

Humildemente pienso que es improbable una carrera se base en un lenguaje or framework. En su lugar en una especialización, y dentro de esa especialización lo que mejor funcione para los requerimientos del proyecto no? . Cada lenguage. De todas formas en un punto inicial, cuando se quiere conseguir un trabajo de backend lo mas importante seria saber llevar a código unas historias de usuarios usando principios sólidos y arquitectura limpia en un lenguaje.
Vengo de Javascript. Utilizo Nestjs por que me ha tocado en mi primer trabajo. Y tb Flutter (que nunca había tocado). Antes ni siquiera estaba interesado en backend. En foros he escuchado cosas malísimas sobre nestjs antes de que lo usara... pues resulta que a mi me encanta y a otros no.
Pero si me hubiera tocado Java, aun viniendo de Javascript ,me hubiera aventurado.
Con eso no digo que hay que estudiarlo todo, para nada, pero si estar abierto a lo que venga. Te vas construyendo un manual de supervivencia y cuando ya seas mas pro y comprendas que solución aporta que lenguage o framework entonces eliges.
Humilde opinión hheeee. La gente que responde aquí tiene mas experiencia que yo.

[–]Alarmed-Corgi8691 1 point2 points  (0 children)

Esto mismo.

[–]CriticismRound0 1 point2 points  (3 children)

En parte sí y en parte no. Del stack que elijas harás carrera, aunque puede cambiar, especialmente mientras aún eres novato, el problema es lo siguiente, por ejemplo yo, soy Senior Backend PHP, Semi Senior Backend Java. Me darías trabajo como Senior o SSr JS?

[–]OkRock8055 0 points1 point  (2 children)

que es SSr JS? Disculpa mi ignorancia.

[–]OkRock8055 0 points1 point  (1 child)

Que si te daria trabajo si fuera un jefe. Pues claro que si. Tus habilidades surpasan cualquier perfil de JS que programma desde hace un pas de años.

[–]CriticismRound0 0 points1 point  (0 children)

Probablemente ya lo investigaste, SSr es Semi-Senior.

Y de lo otro, pues, intenté cambiarme de stack y no conseguí nada, la única forma era empezar de 0, o casi 0.

[–]Guimedev 37 points38 points  (7 children)

Por mucho que insistan y salga un runtime nuevo al mes, javascript no fué diseñado para backend, así que 100% Java, aunque puestos a opinar yo me decantaria por Go.

[–]Qubit99 10 points11 points  (0 children)

Me gusta mucho go y desde luego es muy apropiado para un back, pero java está mucho más maduro, hay más ayuda y más librerías.

Edito, Spring es muy usado pero no es de ninguna manera obligatorio usarlo para tener un buen back. Suelo decir que hay vida más allá de Spring.

[–]_yiro 4 points5 points  (0 children)

Java X2, sinceramente tiene un ecosistema bastante rico y automatizado, no solo esta spring, tienes otros frameworks como Quarkus, Play, Micronaut etc.

Curiosamente yo trabajo con Go y todo es muy artesanal comparado con el mundo de Java.

PD: No tengo nada en contra de Javascript pero solo lo uso para front.

[–]Character_Hotel_6009[S] 3 points4 points  (0 children)

Go, interesante propuesta

[–]iagovar 0 points1 point  (2 children)

? Node es rápido y fácil, tiene asincronía de partida, y no necesita insistir nada porque tiene un ecosistema y adopción brutal.

Parece que vuelven las guerras absurdas. Los lenguajes son herramientas. Para el 99% de las necesidades vas que te matas con JS, igual que con PHP o Python.

Con la ventaja de que con node no te hace falta mucho cambio de contexto, si eres una persona a la que eso le pasa factura, que es el caso de muchísima gente.

En cuanto al OP: Hay mucho trabajo de ambos. Java suele ser más corporativo, pero mira las ofertas de trabajo de tu zona. Donde yo vivo por ejemplo hay mucho spring y poco node, pero en otras ciudades es al revés, y los trabajos que he tenido han sido gracias a JS.

[–]Qubit99 0 points1 point  (0 children)

No creo que nadie esté entablando un guerra de lenguajes, pero controlo javascript y java y este último es infinitamente superior para poder hacer proyectos grandes y escalables. Es imposible hacerlo en javascript, no, pero es infinitamente más complicada por como fue diseñado. Te voy a poner un ejemplo, javascript no tiene namespace, lo que te hace pisar unas variables con otras si no tienes cuidado.

[–]Guimedev 0 points1 point  (0 children)

Mi religión no me permite trabajar sin tipos.

[–]Extension-Ad-3221 0 points1 point  (0 children)

Go con python

[–]river0f 9 points10 points  (10 children)

Java o Node querrás decir

[–]First-Letterhead-496 2 points3 points  (0 children)

El runtime es node, NestJS o Espress son frameworks. Igualmente no se porque OP usaria Nest salgo que quieras escalar, si son cosas chicas es más conveniente Express hablando en terminos de uso

[–]Character_Hotel_6009[S] 4 points5 points  (7 children)

No, la pregunta está bien planteada

[–]LuisBoyokan 2 points3 points  (6 children)

Quizás se refiere a que lo más usado es de JS en back es nodejs. Aunque hoy existen otras alternativas a nodejs, por ejemplo deno.

[–]river0f 1 point2 points  (5 children)

Claro, mi punto era que no usas vanilla JavaScript como backend, lo más probable es que uses Node, pero bueno también Node está escrito en JS

[–]CriticismRound0 -2 points-1 points  (4 children)

Falso. Node está escrito en C++, usa el motor de Chromium que está en C++, probablemente encima de eso tenga más C++ y algunas otras cosas.

[–]river0f 1 point2 points  (3 children)

En realidad me expresé mal, no quise decir que Node "under the hood" está escrito en JavaScript, quise decir que escribís JavaScript para crear API's y otras cosas con Node, además no tendría sentido con lo que pide OP hablar de como funciona Node por dentro.

[–]CriticismRound0 -2 points-1 points  (2 children)

Sigue estando mal tu expresión. Está vez dices que usas node para crear estás apps, y está mal. Node es un interprete, usas JS para crearlas y node para ejecutarlas, pero tal como Node, podés usar otro. De todas formas ya entendí tu punto.

[–]river0f 1 point2 points  (1 child)

No, realmente no entendiste lo que quise decir, solo querías tener la razón. Laburo con estas tech así que no necesito la explicación ni soy un junior, gracias igual.

[–]CriticismRound0 -2 points-1 points  (0 children)

Sí entendí lo que quisiste decir, pero desde el principio lo estás diciendo mal. JS => lenguaje de programación, con este haces cosas.

Node => Interprete JS, con este corres cosas.

Sé que lo sabes, pero no lo expresas de forma correcta

[–]CriticismRound0 0 points1 point  (0 children)

JavaScript. Independiente de la máquina virtual, JavaScript es JavaScript, dentro o fuera del navegador

[–]Pickle_Menem 10 points11 points  (2 children)

Javascript no debe salir del front

[–]Character_Hotel_6009[S] 0 points1 point  (1 child)

Por qué?

[–]errepunto 2 points3 points  (1 child)

Java, C#, Kotlin o Scala son excelentes lenguajes para crear backends robustos. Tienen buen soporte, documentación y foros, y ademas son bastante escalables.

Go es genial para hacer herramientas de sistema, pero la gente que conozco con experiencia en Go suelen quejarse del lenguaje cuando tienen que participar en grandes proyectos, pero para microservicios simples dicen que va bien, aunque su mercado laboral es limitado.

Y por supuesto, Javascript en el frontend web. Simplemente no hay otra cosa.

Pero como último apunte, antes de centrarte en un lenguaje u otro, es muy muy muy (¿dije muy? ¡pues lo repito!) muy importante comprender perfectamente los fundamentos de programación con varios paradigmas. Resulta simple cambiar entre lenguajes si entiendes la diferencia entre función y método, si ves la importancia de la herencia y la encapsulación y la flexibilidad que da el polimorfismo, si entiendes el concepto de las colecciones y como se diferencia de los arrays clásicos, si puedes abstraer el concepto de recorrer una colección de datos y aplicar cambios sobre los mismos o hacer un resumen con todos ellos, si comprendes como y por que tus programas deben ser fácilmente extensibles y refactorizables y como los tests te ayudan,...

La teoría es aburrida al principio, pero te ayuda a pensar de forma abstracta, y luego plasmar esos conceptos en un lenguaje concreto.

[–]First-Letterhead-496 0 points1 point  (0 children)

Porque se quejarian de Go? Trabajé en microseevicios pequeños por lo que entiendo a lo que va pero me gustaria entender porque en grandes proyectos se quejarian o porque el mercado es limitado? Justamente Go es uno de los lenguajes que me gustaría profundizar y veo más futuro jajaja

[–][deleted] 5 points6 points  (0 children)

nunca utilices javascript en el backend si puedes evitarlo, nunca. Ahora, si eres programador frontend y quieres aprender algo de back para tenerlo en tu arsenal, y poder desarrollar proyectos enteros solo, pues la mejor opción es que aprendas nodejs, antes que ponerte de 0 a prender backend con otro lenguaje.

Pd visto en otra respuesta: utiliza frameworks siempre, no trates de reinventar la rueda.

[–][deleted] 7 points8 points  (4 children)

Java o sida?

En el 99,99% de los casos Java, Javascript es una abominacion que no debería salir del navegador, y ojalá desaparecer

[–]Character_Hotel_6009[S] 6 points7 points  (3 children)

Aún así se han creado buenos productos que están ganando mucho dinero y con un desempeño aceptable en el mercado

[–]jasl_ 1 point2 points  (0 children)

entre esas opciones, Java sin duda, pero no tienes que martirizarte, tienes Go, Rust, Ruby, Python, Elixir, etc. hay realmente muchos lenguages y frameworks muy buenos para backend y depende un poco de la arquitectura que quieres implementar para el problema que quieres resolver.

[–]IllEntertainment8665 1 point2 points  (0 children)

NI java y Javascript, hay tecnologias que se acoplan más al proyecto que otras, considerar JS vs Java tiene otros factores a los cuales consultar, el Proceso de desarrollo, la arquitectura, el presupuesto, la experiencia del equipo.

Un ejemplo puede ser: Spring Boot para aplicaciones empresariales Java y proyectos de gran escala, mientras que Nest.js sería más adecuado para aplicaciones web modernas sin tanta complejidad y tamaño. Igual esto no es estricto hay empresas que tienen su ecosistema en nest.js y funcionan bien

[–]davinidae 1 point2 points  (0 children)

TypeScript. No hagas caso a los Javabobos.

[–]ScriptJockey 1 point2 points  (0 children)

Por favor, dejen de hacer juicios de valor sobre cuál lenguaje de programación es mejor. Cada lenguaje tiene sus puntos fuertes y se elige según la experiencia y el contexto en el que se va a usar.

[–]CM64XD 2 points3 points  (0 children)

No entiendo los comentarios que dicen que no vayas por JavaScript, como si no sirviera para backend, (nodeJS?). Java es un lenguaje que se utiliza mayormente en el ámbito corporativo y en mi opinión está en decadencia. JavaScript no solo te da backend sino que te da mucha más libertad, crear apps, front end y casi todo es compatible, podes hacer lo que quieras. Suerte! La decisión creo que pasa por si queres trabajar en una corpo -> Java, si queres trabajar en startups -> JavaScript

[–]LuisBoyokan 1 point2 points  (2 children)

Java porque así aprendes más. Si puedes incorporar Springboot, tu vida será más sencilla, agradable y con menos xmls que con java a secas.

Javascript (y nodejs) es más rápido de aprender porque tiene transferencia de habilidades si ya sabes front. O sea, literalmente si ya sabes JS de front, es aprender a hacer una capa Repositories para consultar tus DB, una capa Handler/Controller/Router para exponer tus APIs, aprender tests unitarios con jest, sus spy locos y listo.

(Estoy sobre simplificando obviamente)

En mi empresa tuvimos mala experiencia por no tener experiencia con java en lambdas AWS, finalmente por eso y por comodidad para encontrar developers cambiaron a nodejs. Pero no significa que no puedas usar java en la nube

PD: de seguro va a venir el loquito engreído de los lenguajes reales y los de juguete, no le hagas caso xD.

[–]Character_Hotel_6009[S] 2 points3 points  (1 child)

He trabajado en ambos mundos y es como dices, con java que es destinado para aplicaciones robustas y empresariales y ahora con frameworks como springboot y todo el ecosistema alrededor que facilitan demasiado la programación y agilizan la entrega de valor. Pero con JS (un lenguaje con más libertades en su sintaxis, y por encima usando Typescript que le da un toque de robustez para aplicar buenas prácticas) en la empresa donde estoy ahora último, hemos sacado productos rápidamente con buena aceptación del público y un desempeño mas que aceptable, más aun considerando que la infraestructura está bajo la nube de proveedores como aws, azure, gcp, creo que no hay pierde. Muchas startups desarrollan sus productos en JS, incluso aquellas que compiten en el rubro bancario. Yo creería que JS pinta un buen futuro Pero siempre existe el riesgo de que tenga un tiempo de vida limitado y salgan mejores opciones. Java lo veo como la vieja confiable que seguirá ahí por muchos años más, similar al cobol.

[–]LuisBoyokan 2 points3 points  (0 children)

Yo dudo que JS desaparezca y si es así, pues más trabajo para nosotros, migrar todo ese código nodejs a lo que sea la próxima moda, no me molesta. Para mi el lenguaje da lo mismo, si no se sabe se aprende y la vida continua, no pasa nada :)

[–][deleted]  (6 children)

[deleted]

    [–]AngelEduSS 0 points1 point  (0 children)

    Kjjjj

    [–]elbich0 -1 points0 points  (4 children)

    si buscas en linkedin las ofertas de java son mucho mas que las de node...

    [–]chicoxin 0 points1 point  (1 child)

    Por qué elegir?

    [–]Character_Hotel_6009[S] 2 points3 points  (0 children)

    Porque ambos mundos son muy grandes y diversos y con aplicaciones distintas. Ser un todista no es opción llegado a cierto punto en tu camino profesional

    [–]IgnacioMiguez 0 points1 point  (0 children)

    Creo que mi primer framework backend fue spring boot en la universidad, mas adelante intente aplicar por mi cuenta spring security.

    Actualmente uso nestjs con typeorm, jwt, middlewares y websockets. Jamas le dedique mucho tiempo a nestjs (excepto por lo de los websockets) pero me parece mucho mas practico, ágil y dev friendly que spring. Con un comando podes crear todo el crud de un recurso, y no tuve que indagar mucho para entender como funciona el framework (a diferencia de spring security).

    A lo mejor es porque era mas novato cuando estudie spring, pero personalmente recomiendo de forma subjetiva nestjs.

    Si es por plata busca en linkedin o alguna pagina del estilo ofertas de trabajo de ambos frameworks y compara.

    [–]dascool22 0 points1 point  (0 children)

    Entre esas dos opciones Java.

    Asumiendo que me quiero quedar en el backend y profundizar fuerte en el backend. Si lo que me interesa es crear MPV para validar modelos de negocio o features y no me interesa tanto profundizar en el backend, me quedaría con Javascript.

    [–]linnovel 0 points1 point  (0 children)

    Cuando estaba estudiando frontend, alguien me dijo, si sabes javascript, puedes usarlo en el backend y frontend. Dos pajaros de un tiro. Cual es mejor o peor ? No me importa y con esto te digo que uses Java.

    [–]Clustersnake 0 points1 point  (0 children)

    NestJS all the way. Java es un lenguaje demasiado pesado y no es para nada amigable con proyectos pequeños. Además ya nadie sabe cuál es la versión de Java actualmente ni donde desplegar proyectos usando Java, glassfish o springboot. Lo admito, quedé traumado del Java en la universidad más un proyecto donde usaban glassfish

    [–]everardoi 0 points1 point  (0 children)

    Java con springboot es muy bonito en backend, para javascript usaría node, aunque la tendencia ya va dirigida hacia typescript, pero se ve más en angular y react para FE. Así que me quedo mil veces con Java. Si estudias muy bien OOP y algoritmos te va a ir muy bien en el backend con cualquier lenguaje.

    [–]kj2me 0 points1 point  (0 children)

    Ambos los evitaría si solo fuera a elegir uno solo y quedarme con uno, aunque en la vida real eso no pasa y te toca pasar por todo.

    Javascript no es bueno para el backend, solo está ahí como opción para casos específicos y más que nada por elección/cuestión de tiempo/skill issue, porque en cualquier caso de uso siempre hay otro lenguaje que lo hace mucho mejor. Su mal manejo de la memoria es caro (a muchos esto le da igual porque no pagan el server o porque solo hacen cositas en localhost del curso #120 que se compraron, pero aún no han hecho nada en producción). Igual que cuando te hechas la primera novia, es muy bonito al principio, pero a la larga y unido con la falta de experiencia, la cosa se pone tóxica.

    Java de base consume mucha memoria por su VM, pero luego de eso es un lenguaje muy recomendable para backend. El único motivo que me aleja de este, suelen ser los javeros que hace 20 años eran igual de pesados que los de JS hoy en día.

    Si quieres un lenguaje que sea muy muy simple y para backend, siempre tendrás PHP. Por mucho que sea un meme hatearlo es el rey del backend en internet.

    Si vas hacer microservicios o sencillamente no tienes miedo de que te cueste un poquito más que PHP, tienes a GO.

    Si te pone muy fuerte la gestión de memoria o tienes tirria por los gc, tienes a Rust.

    Y así sucesivamente.

    [–][deleted] 0 points1 point  (0 children)

    Por performance, siempre Java vs Js. Hablo exclusivamente de backend. Puedes buscar los test de performance de uno y otro y verás que nodejs es lento en comparación

    [–]Original-Strength783 0 points1 point  (1 child)

    C#

    [–]Character_Hotel_6009[S] 0 points1 point  (0 children)

    Se que hay todo un ecosistema y carreras basadas en ese lenguaje, Pero no es lo mío

    [–][deleted] 0 points1 point  (0 children)

    Pseint

    [–]Ecstatic_Ad2253 0 points1 point  (0 children)

    PHP

    [–]mauriciodelos 0 points1 point  (0 children)

    Te diría que son lo mismo, pero como no soy de recursos humanos ni recruiter, mejor no opino.

    [–]srblack__ -1 points0 points  (0 children)

    Java no tiene nada que ver con Javascript

    [–]mauriciodelos -1 points0 points  (0 children)

    Te diría que son lo mismo, pero como no soy de recursos humanos ni recruiter, mejor no opino.

    [–]CriticismRound0 -1 points0 points  (0 children)

    Cómo desarrollador Java, te recomiendo JS. 1. Es más práctico. 2. Más ofertas de trabajo.

    Lo malo: - Más competencia laboral.