Exigencia de ofertas de programador en remoto

P

Buenas,

No sabía si abrir este hilo en el subforo de Trabajo pero como es algo tan específico relacionado la programación he decidido abrirlo aquí ya que creo que tendrá más visibilidad.

El caso es que estoy mirando ofertas para trabajar en remoto de programador (Java, React) y bueno, estoy viendo que algunas ofertas piden muchos conocimientos de varias tecnologías (Docker, Kubernetes, ELK, etc) y claro, no domino el 100% de lo que se exige.

Alguien ha conseguido encontrar trabajo en remoto de programador?

Ha tenido que estudiar cosas por su cuenta para lograr cumplir todos los requisitos que exigen las ofertas?

Es que cada empresa exige tecnologías diferentes y no sé si debería ponerme a estudiar como un loco todas las tecnologías que piden en las ofertas en remoto o qué hacer... estoy algo perdido. A ver si alguien me arroja algo de luz.

Saludos y gracias por leer.

ckrass
#1pepe123:

Ha tenido que estudiar cosas por su cuenta para lograr cumplir todos los requisitos que exigen las ofertas?

Tú que crees.

1 respuesta
HeXaN

Hombre, normalmente conoces un grupo de tecnologías que van relacionadas entre sí y pruebas suerte en empresas donde se usen.

Cuando quieres optar a puestos donde hay tecnologías que desconoces lo más normal es aprenderlas a cierto nivel para satisfacer los mínimos de las pruebas técnicas que te harán.

Dicho esto, tampoco es raro que te contraten para puestos donde no conozcas el stack al completo si has demostrado una buena actitud.

P

#2 Pero si cada oferta es diferente a la anterior, cómo haces para estudiarte todo lo que piden? Para cuando vaya a terminar de saber todo lo que se pide lo mismo esa oferta hasta desaparece...

2 respuestas
KoRMuZ

Si cada oferta es diferente a la anterior, o estás cambiando mucho los filtros para que aparezcan, o es que lo que tú quieres, se puede soportar/complementar con mucho por detrás.

Siendo el primer caso, afina un poco la búsqueda.
Siendo el segundo caso, afina un poco la búsqueda. Aprenderlo todo es imposible.

Siendo cualquiera de los dos casos, si estás interesado, aplica y di lo que hay, que sabes muy básico pero te pondrías al día si te contratan

ckrass

#4 Todo no lo vas a conocer, eso está claro. Que vas a tener que aprender cosas por tu cuenta, eso tenlo claro, es el pan de cada día.

Deberás saberte moverte por un stack más algún plus tipo Docker.

Y en algún puesto con experiencia, hay veces que no les importa que no conozcas el stack. Simplemente te piden saber programar bien, buenas practicas, etc

varuk

#4 Tienes que mirar, por ejemplo, 100 ofertas y de esas 100 ofertas estudiarte lo que más coincide en ellas. Si, por ejemplo, Docker coincide en la mayoría, pues empieza por ahí.

Por ejemplo, yo me di cuenta que cada vez, si no todas, en las ofertas que leía se pedía TDD (Desarrollo dirigido por Test). Pues me puse en su día a estudiar a verme eso. También pues otras tecnologías.

También pienso una cosa. No me gustan las empresas que se centran mucho y dan mucha importancia a que sepas X tecnologías ahí como sin fuera el ABC. Voy a explicar esto... Hay empresas que te exigen, por ejemplo, saber X framerwork como si fuera el padre nuestro. Lo veo loable porque ellos manejarán ahí su negocio con ese framework y les será importantísimo. Sin embargo, yo intentaría no buscar trabajo en esas empresas, a no ser que fuera imprescindible o porque esté en paro.

Las mejores empresas que me he encontrado, las de calidad y no las chapuzas, son las que se centran y piden aplicar buenos principios de desarrollo ya sea en programación orientadas a objetos, funcional, etc. Realizar un código bueno, sin chapuzas, teniendo una capacidad analítica y haciendo las cosas lo mejor posible, hacer los tests, aplicar principios SOLID o arquitecturas oportunas, etc. Es decir, centrarse en ser bueno analizando y desarrollando código. Por ejemplo, una pregunta clave para mi en una entrevista que haría es "¿Qué opinas del uso de la herencia?". Si el tío me responde "La herencia es lo mejor, la uso siempre"... pues yo no cogería a ese a persona. Si me dice algo "Bueno, hay casos que puede ser útil, aunque casos muy concretos. Podemos hacer uso de la composición en vez la herencia", pues ya para mi gana +1. Decir que soy un poco anti-herencia, aunque eso es otro debate.

Pues eso, las ofertas de trabajo que mejor he visto te piden 3-4 cosas y no una pila de tecnologías del a leche. Yo hace tiempo que no hago uso de la librería de Bases de datos de ROOM de Android ahora mismo... si mañana me pidieran hacer algo con ella pues tendría que vérmela y echar un rato para recordar como funciona. Igual que hace tiempo que no me encargo de hacer peticiones api y ahora tendría que volver a verme Retrofit. Simplemente sé que está ahí esa herramienta y que cuando me haga falta la usaré. Eso es lo importante. Saber qué existen y entender de qué van.

Lo que sí veo importante es más saber programar bien. Saber que si a un método le tienes que pasar 5 parámetros es que estás haciendo algo que puede ser un poco chapuza o que si haces algo que luego cuesta mucho hacer un test o mockear mil cosas para conseguir hacer un test pues estás haciendo algo deberías hacer diferente.

Mi consejo es que seas un buen desarrollador, que estudies arquitecturas, principios, paradigmas de programación, aprendas el lenguaje que estés usando (conozco gente que sigue haciendo en Kotlin el clásico bucle FOR para buscar en una lista los números pares y quedarse con ellos), aprender buenas prácticas, etc.

Que sí, que para buscar un trabajo de Android debes conocer el framework de Android, está claro, y si vas a hacer backend pues lo que toque en su momento. Pero no croe que haya que obsesionarse con sabérselo todo como si fuera el padre nuestro, respecto a tecnologías... que la diferencia está en hacerse preguntas tipo:

¿Cómo separo la capa de la peristencia de la lógica de la app? ¿Merece a pena separarlas? ¿Tengo que hacer un patrón adapter si voy a usar una librería de terceros para encapsularla en una interfaz y no meterla a lo loco en la aplicación? ¿Debería crear mapeadores entre los datos que recojo de una petición y luego el modelo de datos de mi aplicación para no usar las miasma clases para las 2 cosas y tenerlos separados? ¿Igualmente debería hacer lo mismo para la clases que simplemente va a usar la vista?

Esto es una opinión abierta que hago aprovechando el tema. No quiero decir que una empresa no pueda estar buscando el tío más experto en X tecnologías y no sea buen sitio para trabajar, pero si quiero decir que no nos tenemos que obsesionar tanto con la lista de mil tecnologías que a veces nos piden. A mi en una entrevista de trabajo me preguntaron "¿Te consideras rápido o lento para programar?". Yo le dije "mira, yo tengo capacidad analítica y me gusta pensar las cosas... si me vas a pedir que escriba código a 100 por hora... no soy quien buscas. Si quieres gente que piense las cosas y no agache la cabeza y empiece a picar código sin mas, entonces ese soy yo".

Para terminar, ya corto el rollo, a mi me gustó mucho cuando descubrí este canal:

https://codely.tv
En youtube están aquí: https://www.youtube.com/CodelyTV

Creo que tienen buenos cursos orientados a lo que te comento. Cursos que no se centran en saber poner una librería si no en hacerte buen programador. Échale un ojo a sus vídeos, sigue su canal y luego a los cursos. Creo que valen aunque seas backend, frontend, móvil o uses el lenguaje X o Y. Bueno, en general, algunos son más específicos. Te recomiendo ir viendo sus vídeos gratuitos de youtube y verás lo que te quiero transmitir en mi post.

En fin, para terminar pondré el ejemplo que siempre digo. Tú conoces GIT y lo importante no es ser el típico que se sabe los comandos de memoria. Lo important es saber lo que ofrece. Qué tienes el Merge y el Rebase. Que tienes luego el stash y el pop y cómo usar eso, etc. Luego usas un programa tipo Gitkraken y no vas a tener que estar con comandos y es mucho más cómodo. Si un día necesitas hacerlo sin interfaz visual pues irás a buscar cómo hacer el stash por comando y punto... El tema es saber lo qué tienes y para qué sirve. Pues eso igual con lo demás.

Céntrate en desarrollo TDD, arquitectura, buenas prácticas... etc. Las buenas empresas es lo que quieren, al fin y al cabo. Las tecnologías las irás aprendiendo por inercia, aunque ya sepas la base de ellas.

Importante: Igual que en una entrevista de trabajo a ti te preguntan (hablo de cuando ya tienes un trabajo y quieres cambiar, no de si estás en paro que entonces entiendo que te interesa tener trabajo cuanto antes) cosas sobre ti y conocimientos, o lo que sea. Es bueno que tú también preguntes a ellos sobre qué metodologías usan, por el equipo y compañeros que estarán contigo, cómo se llevan a cabo los proyectos, que se está usando en la empresa (no sé de backend y eso pero por ejemplo en Android yo siempre pregunto si están usando MVP, MVVM, otro... si siguen usando Java o Kotlin o si están migrando...), cómo se organiza el trabajo diario (reuniones, análisis de las tareas a hacer, quién y cómo se establece el tiempo para hacer X tarea, etc. Si ves que todo esto les suena un poco a chino pues entonces plantéate si de verdad quieres trabajar ahí. Es decir, busca también trabajos que te permitan a ti crecer como desarrollador y no solo sea aporrear el teclado y que luego la empresa no tenga una filosofía de querer hacer que tú sigas formándote y mejorando y que solo le interesa que saques proyectos como churros aunque sea eso ahí como quien pone un andamio con palos y cañas que se cae en cuanto viene el primer soplo de viento.

10 2 respuestas
P

#7 Muchísimas gracias por todas las recomendaciones, la verdad es que era justo lo que necesitaba leer.

Es cierto que me estaba obcecando demasiado con las tecnologías en si en lugar de centrarme en lo que has comentado (TDD, buenas prácticas, arquitectura, ...). De momento me centraré en aprender y asimilar bien todo eso porque, aunque llevo ya unos 3 años picando código, tengo la sensación de que aún me falta por saber bastante sobre lo que recomiendas aprender. De nuevo, gracias!

wdaoajw

Lo que suelen pedir de docker, kubernetes, elk y todas esas cosas del mundo "devops" para un trabajo de dev es simplemente que sepas que es un contenedor, que sepas que es kubernetes y que sepas visualizar logs en un kibana. Que sepas que no se Jenkins y seas capaz de darle al botón de "Build job" para que se ejecute el flujo de ci/cd. No te van a pedir que sepas administrar un clúster de kubernetes, ni un elasticsearch ni nada parecido, y si lo hacen, huye o pide gritones de euros porque estarías haciendo el trabajo de más de una persona.

1
JuAn4k4

El stack de las ofertas de trabajo es:

20% inventado, no lo usan
50% lo usan, pero la mayoría no tiene npi
20% lo conocen algunos, pero muy vagamente y lo justo para trabajar
10% lo conocen en una parte importante, pero la mayoría no son masters ni seniors

Cuando piden tantas cosas, es para filtrar, y para que el recruiter tenga info de cómo hacerlo.

El ejemplo claro es #7, todas las empresas poniendo TDD en la oferta y seguramente el 2% lo habrá usado una o dos veces.

4
P

quieres decir que estamos rodeados de ignorantes y gilipuertas no? .... asi nos va XDD

Usuarios habituales