Plataforma de desarrolladores/programadores junior

¿Qué tengo que aprender para llegar a trabajar de X?

Cuando tengas claro que es la X busca tu roadmap aquí y empieza en ello https://roadmap.sh. No es obligatorio ni recomendable acabarlo todo antes de empezar a buscar, pero ya sabes cuales son las cosas que se te suele pedir.

¿Algún recurso para empezar?

aren-pulid0

#4342 no estoy de acuerdo para nada, la cantidad de cosas que aprendes en una prueba técnica decente que te hace salir de la zona de confort es muy grande.

CaNaRy_r00lz

#4350 Si eso es lo que habia pensando pillar una DB y con varias tablas y volverme loco a sacar cosas, pero claro montar todo eso se me hace dantesco, Spring le he cogido mucha mania, sobretodo pk cuando entre en la empresa me soltaron a arreglar codigo de hace 20 años sin tener ni puta idea con Java e Hibernate y Spring legacy un horror, en el equipo que estoy ahora usan quarkus y me parece mil veces mas facil, pero algo asi tendre que hacer, thanks.
Cierto es que tiendo a hipercomplicar las cosas xD

1 respuesta
D

#4352 Es muy simple SOLO existen dos maneras de relacionar los objetos:

class Expediente {
   Id id;
   Usuario usuario;
}

class Usuario {
   Id id;
   String nombre;
}
class Expediente {
   Id id;
   Id usuarioId;
}

class Usuario {
   Id id;
   String nombre;
}

En el primer caso el objeto esta dentro del objeto, es decir cuando hagas una petición a la base de datos, la tabla expediente, te devolverá tambien la información del usuario.

var expediente = repositoryExpediente.get(expedienteId)
print(expediente.usario.nombre)

En el segundo caso usas una FK con el ID, si quieres acceder al nombre de usuario debes hacer OTRA petición a DB.

var expediente = repositoryExpediente.get(expedienteId)
var usuario = repositoryUsuario.get(expediente.UsuarioId)
print(usuario.nombre)

El primer caso se traduce en que tu tabla en la base de datos sera asi:

Expediente IdUsuario IdUsuario Nombre
11Juan
22María
33Carlos
44Ana

En el segundo caso tienes dos tablas:

Table: Expediente

Expediente IdUsuario Id
11
22
33
44

Table: Usuario

Usuario IdUsuario Nombre
1Juan
2María
3Carlos
4Ana

Con Spring por defecto si haces lo primero te creara 1 tabla como te he mostrado, pero podrás tener esto:

@Entity
public record Expediente(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id,

@ManyToOne
@JoinColumn(name = "usuario_id")
Usuario usuario
) {}

@Entity
public record Usuario(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id,

String nombre
) {}

Para decirle que haces joinColumn a otra entidad, o si quieres dejar bien claro que esta todo en la misma tabla esto:

@Entity
public record Expediente(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id,

@Embedded
Usuario usuario
) {}

@Embeddable
public record Usuario(
    Long id,
    String nombre
) {}

Si usas Spring, hibernate/jpa y h2 como base de datos, deberas poder montar varias base de datos y objetos anidados automaticamente en 15 minutos... Creas el objeto, haces repositorio.save(objeto) para ir guardándolos y luego haces los get.

5 1 respuesta
CaNaRy_r00lz

#4353 Ostias muchisimas gracias por la explicacion! usaba Spring e hibernate legacy, ahora uso Quarkus y mybatis que dado el poco conocimiento que tengo le da mil vueltas a lo que usaba antes para mi gusto es mas facil de entender, sobretodo mybatis a la hora de escribir las querys es casi como escribir con sql. Nuevamente muchisimas gracias por el currazo de explicacion

laZAr0

Nunca he hecho una aplicación web, pero por los loles y aprender algo, aprovechando el servidor que tengo montado en casa, he pensado en hacer una web para llevar un registro de apuestas deportivas (matched betting). Básicamente van a ser unos cuantos formularios para llevar el registro de las apuestas y tablas para visualizar y filtrar los registros. No sé si hacerla completamente web o si sería interesante poder hacerla híbrida o PWA para Android.

Había pensado en usar mongodb, por probar alguna base de datos NoSQL, y node.js para el backend, pero como no tengo ni idea tampoco a nivel de diseño ni cómo he de estructurar la aplicación, y me va a tocar comerme tutoriales y trastear, me gustaría no perder el tiempo y por eso os pregunto qué tecnologías me recomendáis usar, que estén más o menos demandadas y con las que vaya a aprender algo útil, y si es posible saber cómo enfocar el desarrollo de una aplicación así con todo en mi servidor local, nada en la nube.

Gracias.

1 respuesta
Kaledros

#4355 En cuanto a demanda para backend en ese plan, y digo demanda y no salario, Javascript/Node y Java son las más demandadas. Si vas a montarlo todo en local una cosa que te puede interesar es orquestar contenedores, busca cosas sobre Docker y Kubernetes para saber como se usan y para qué sirven.

laZAr0

Con docker he levantado todos los servicios que tengo en el servidor. Supongo que la miga de lo que planteas está más en empaquetar mi aplicación en una imagen para poderla luego ejecutar con docker como el resto de servicios que tengo. La base de datos que utilice, etc, supongo que también pueden ir en contenedores, ¿No?

Lo de "demanda, que no salario", creo que puede ser interesante para mí de cara a meter cabeza en el sector. Ahora mismo estoy hablando con una empresa para ver si puedo hacer las prácticas de DAM con ciertas, si no garantías, posibilidades de que me contraten, pero de momento en el GSFP sólo he desarrollado aplicaciones de consola y Android, nada de web, y creo que me vendría bien tener al menos conocimientos básicos de cómo es una aplicación web, y qué mejor manera que montar yo algo, aunque sea a una escala doméstica.

y34hl0ve

¿Alguien conoce o ha leído estos libros? Me parece un bundle interesante por 22€

https://www.humblebundle.com/books/linux-for-seasoned-admins-oreilly-books

1 respuesta
D

En unos dias os compartiré en un hilo una prueba de backend que he estado haciendo, comentando varios puntos de las cosas que se esperan de un junior, mid, senior, staff cuando evaluamos.

Creo que puede ser un material muy educativo.

La podeis hacer vosotros luego en casa y al final mirar mis respuestas/soluciones.

8 2 respuestas
Chamborz

#4359 debe de estar muy interesante, a la espera quedó

Konishi

#4358 yo me lo pillé pero en parte porque pensaba que acababa hace días y me daba pereza buscarlos en ese momento, si vas justo de pasta o la mayoría no te interesan puedes tirar por otras vías.

No puedo dar opiniones ya que todavía o he leído ninguno pero O'Reilly en mi opinión suelen ser decentes, al menos como toma de contacto (no he llegado a leer nada de temática avanzada o super específica de ellos).

1
C

plan sin fisuras
#4167

laZAr0

#4359 muchas gracias amigo. ¿Puedes adelantar un poco de qué se trata, tecnologías, etc? Seguro que me viene bien para el proyecto que tengo en mente.

1 respuesta
D

#4363 Pues la practica a nivel lógico y fundamental es un CRUD distribuido. Necesitamos una API HTTP para escribir y leer en múltiples base de datos (o en múltiplos nodos).

En el ejercicio que me mandaron, mas en concreto:

  • Si llega una petición para escribir, elige un nodo y escribe, no hace falta replicar en todos los nodos.
  • Si llega una petición para leer, eliges el nodo donde has escrito, y devuelves los datos.
  • Y obviamente puedes tener multiples API corriendo en paralelo.

Y bueno es un proyecto típico de backend... Lo puedes hacer en cualquier lenguaje, cualquier stack, cualquier base de datos te sirve... cloud, relacional no relacional, puede ser HTTP o GRPC... Puedes usar mil historias.

La dificultad del ejercicio serian las restricciones y casos de uso concretos que queremos resolver.

Y la gracia es que Backend es Backend. Todas las entrevistas de Backend son iguales, sera implementar algo similar, a mas o menos bajo nivel, centrándote en una parte u otra... Pero al final es Backend y hay que saber hacerlo todo.

Por ejemplo: en una prueba te dedicas mucho en la parte de la base de datos. en otra prueba hacer la API y websockets, en otra prueba les interesa la security y la autenticación, en otra prueba quizás les interesa un stack concreto (Elixir por ejemplo), en otra prueba te piden algo fácil pero que este muy bien testado, en otra prueba te piden una API muy simple pero que tenga métricas y logs... etc.

Cualquier prueba lo que se va a evaluar según el nivel del candidato es parecido.

5 3 respuestas
laZAr0

#4364 muy interesante. Gracias por la explicación. Me quedo a la espera de que abras el hilo.

Leagrove

#4364 Gracias por adelantado por mostrar la prueba, siempre se aprende mucho de tus diarios.

Me sabe mal decirte esto porque se que estas un poco en contra, pero ojala te abrieras un twitch diario dando estos consejos QUE SI que sirven para junior como nosotros y donde nos das la salsa de la programacion y no te quedas en la base como el 99,99% de youtubers/streamers.

Kaledros
#4364desu:

eliges el nodo donde has escrito

¿Cómo almacenas esta info?

1 respuesta
pantocreitor

#4367 load balancer con política de afinidad me figuro.

Edit: nada, que no son diferentes API, sino una sola con diferentes nodos

1 respuesta
Kaledros

#4368 Si se me ocurren como cinco o seis maneras de hacerlo de más guarra a menos guarra, pero quiero saber como lo hace él.

Chamborz

Que libro me recomendáis en físico para leer un poco en los ratos muertos de playa? Código limpio?

Bueno teniendo en cuenta que voy a empezar 2 de DAW en septiembre, me quiero comprar un libro físico para cuando tenga hueco y no tenga el pc conmigo tener algo interesante para leer

1 respuesta
D

#4370 A mi me recomendaron 'El programador pragmático' , está en ingles/castellano y 'Codigo limpio' que imagino es el basico que suele recomendar casi todo el mundo, luego tengo 'Grokking-algorithms' que no se que tal será.

Wei-Yu
  • apprenticeship patterns
  • outcomes over outputs
  • thinking in systems
  • design of everyday things

ninguno es técnico y diría que cualquier trabajador del conocimiento de casi cualquier ámbito se beneficiaría de ellos, el thinking in systems es 11/10, debería usarse en el instituto ese puto libro

el último no lo he ojeado though, así que aprovecho y recomiendo otros que tampoco me he leído

  • cathedral and the bazaar
  • architecture of open source software
5
Daraen

Perdón porque no se si este es el espacio adecuado para esta pregunta, si no lo es borro el mensaje.

Hace casi tres años que termine el FP de DAW y estoy muy oxidada en cuanto a practica debido a que al poco de terminar el FP entre a trabajar en el área de sistemas y no veía casi nada de código.

Quiero retomarlo por mi cuenta y ya tengo un buen ordenador de sobremesa pero tengo en mente pillar un portátil y he visto el macbook air M3. ¿Lo recomendáis para programación? Yo no he tocado un mac en mi vida pero quiero un portátil con buena duración de batería y que sea silencioso. Pillaría el modelo de 16gb

De lenguaje me inclino actualmente por tocar Python y C#

3 respuestas
pantocreitor

#4373 una papa cocida te sirve casi para programar xD
No os comáis la cabeza con el equipo que al final la gran mayoría de cosas que vais a hacer por vuestra cuenta no va a ser muy diferente a escribir en un bloc de notas y correr 4 tonterías.

Otra cosa es que te quieras comprar un MacBook porque te apetece y si, te sirve al igual que cualquier PC con Windows o Linux

1 2 respuestas
CaNaRy_r00lz

#4373 Sinceramente , no te recomendaria un Mac, pagar ese dineral para programar, como dice #4374 puedes programar en una cafetera sin problema. Te ahorras dinero pillandote un portatil con windows ahora si lo que quieres es un Mac si o si, pues adelante

p.d yo en el curro tengo un lenovo de 15" con gen 11 de Intel que son una basura y tengo 0 problemas con 16gb de ram para que te hagas una idea

1 1 respuesta
Daraen

Gracias #4374 #4375 , la verdad que no es que quiera un Mac por ser un Mac, yo preferiría gastarme menos dinero pero si que me resulta importante el tema de la batería.

Ayer mismo estaba con el portátil del trabajo que ronda los 900 euros y la batería duró menos de 3 horas realizando tareas que casi no consumen.

Cuando miro equipos con buena batería casi siempre me salen los mac, es por eso que lo estaba meditando

1 respuesta
Kaledros

#4376 Como portátil de ocio y trabajo está a añísimos luz de cualquier otro (también lo está el precio, claro) y es una compra que te va a durar muchísimo más que cualquier otro portátil a igualdad de rendimiento. La batería dura una puta barbaridad, para que veas un ejemplo, este es el rendimiento de la batería de mi MacBook Pro M2 de 16" de un año y medio de antigüedad las últimas 24 horas:

He estado toda la noche mirando pelis, que tengo comprobado que consume bastante, y ayer de 13 a 20 se lo pasó cerrado y sin enchufar, como ves la batería no cayó ni un 1%. Usándolo para programar, internet y ver vídeos ocasionales igual te dura un día entero.

También te digo que es el mío personal, el del curro no sé como andará.

1
Hurtiek

Primera prueba técnica hecha en HackerRank, creo que ha ido bien pero no sé cómo evalúan en estas cosas.

Desde HackerRank les pasan una nota, como a modo de examen? O es un grabación con la resolución de los ejercicios tal cual?

uvelongboard

Hola, sabeis de empresas en remoto que puedas trabajar en el huso horario que quieras?

Gracias!

wolfie6949

#4373 Yo desde hace años estoy comprando Thinkpads reacondicionados y son una maravilla para uso multimedia y desarrollo. Les suelo poner Linux con auto-cpufreq y me suelen hacer unas 7-8h de uso mixto, son muy fáciles de reparar / upgradear y los puedes conseguir por dos duros (el mas reciente que compré, un Thinkpad T490s me costó 290€). Además suelen ser portátiles que provienen de un renting a empresas, por lo que en muchos casos nunca se han movido de una oficina y están impecables.

Como alternativa los Macbook, tienes los nuevos ordenadores Copilot+ con Snapdragon X, que viene a ser el procesador con el que Windows va a intentar competir con los M de Apple. Al ser ARM ya se van a autonomías y rendimientos muy similares al del Mac y a un precio mucho menor. Si no me equivoco el más económico es uno de Lenovo que sale por unos 1600€, pero otras muchas marcas han sacado su variante así que tienes donde elegir.

2