que es una entrevista técnica - parte 1

desu

Y como sacar buena nota.

part 1

Cientos de personas me suelen contactar para pedirme ayuda cuando tienen que hacer una práctica para la universidad o una prueba de trabajo. Me dicen este es el enunciado, qué me recomiendas? No sé qué tengo que hacer para pasar la prueba! Entiendo la confusión por dos motivos principales.

La confusión

Primer motivo de confusión

Mucha gente, con poca experiencia aún en la industria, piensa que las pruebas de programación sirven para encontrar buenos candidatos para un puesto de trabajo. No es cierto. El objetivo para la empresa es encontrar un pica código con las neuronas justitas para hacer el trabajo sucio pagándole el mínimo dinero posible. Para estas posiciones, los procesos suelen tener múltiples pasos y pruebas técnicas: algoritmia, estructuras de datos, teoría, system design... Muerte por desgaste.

Ahora, todo el mundo con experiencia suficiente en la industria sabe que encontrar a un buen ingeniero es fácil porque solo requiere cuatro sencillos pasos:

Encontrar a una persona y que esta persona sea ingeniero. Hablar 5-10 minutos con esta persona. Una conversación de 5-10 minutos es suficiente para cualquier buen ingeniero para determinar si otra persona tiene las capacidades técnicas necesarias para el puesto. Ofrecer al ingeniero una oferta atractiva. Que este ingeniero quiera trabajar contigo. Porque una entrevista funciona en ambas direcciones y una conversación también.

Segundo motivo de confusión

Las malas pruebas son ambiguas. Dejan espacio a la interpretación del lector. Normalmente, quien escribió el enunciado tampoco tenía mucha idea de lo que pedía... Y raramente sabría el mismo resolverlo.

Aclaración necesaria realizada. Es importante antes de poder resolver una duda y dar una respuesta, entender la propia pregunta. Si no entiendes la pregunta no podrás entender nunca la respuesta. Tras esta fascinante deconstrucción del mundo corporativo podemos avanzar.

La pre-prueba

Antes de hacer una prueba hay que realizar un paso previo. Y es el más difícil que vas a realizar en tu vida. Un difícil acto de sinceridad y honestidad propio. Evaluar "objetivamente" nuestro nivel.

Queremos trabajar haciendo algo, podemos hacerlo? Si la respuesta es no, en un mundo donde se busquen buenos candidatos no habría manera de que pases ningún proceso. Por suerte o desgracia, en el mundo real, puedes mentir y estudiar lo necesario para terminar moviendo tests unitarios en una gran empresa sin mucha dificultad y mantener código escrito por influencers de Tiktok y Twitch. Lo siento mucho por este bache en tu vida, y espero que si estás aquí, algún día puedas salir de esa mierda.

La prueba

La prueba técnica es junto a la conversación de 5-10 minutos, la manera más fiable, simple y fácil de determinar el nivel de un ingeniero. Si no lo entiendes es porque aún no eres un buen ingeniero. Por eso me lo preguntas y por eso no sabes qué hacer para pasar pruebas. Pero no te desanimes porque todos hemos pasado por ahí en algún momento en nuestra vida. Algunos incluso han pasado por el bache de la deshonestidad y han terminado en alguna jaula de oro odiando su existencia a diario. Lo importante es que después de la tormenta sale el arcoiris, y si tienes las cualidades de un buen ingeniero algún día saldrás de ahí.

Si crees con honestidad que tienes los conocimientos y cualidades de un buen programador, vamos a realizar una prueba y te voy a guiar en el proceso. De hecho, recuerda siempre que estés programando y tengas una duda que no estás solo. Puedes contar conmigo. Cuando creas que no eres lo suficientemente bueno o que estás escribiendo código caca puedes pensar en mí. Imagínate que estoy sobre tu hombro y te estoy gritando: si eres un paquete, dedícate a otra cosa pero por favor deja de programar. Seguramente ambos estemos en lo cierto y estés escribiendo caca, deja de escribir código caca.

Junior

Voy a hacer algo que no me gusta, que es utilizar estos pseudo-rangos que usan las empresas para dividir a los compañeros. Ya sabéis que yo respeto y valoro a todos los compañeros independientemente de su nivel o rol en el equipo. Seas un Product Manager o un DevOps recién salido de la universidad, si estás en mi equipo es porque tienes algo que aportar. En este caso, veamos qué puede aportar alguien que acaba de empezar. Comúnmente denominado un sucio "junior".

El único objetivo de una prueba técnica a este nivel es el siguiente: QUE FUNCIONE. DEMOSTRAR QUE SABES PROGRAMAR.

No hay que pensar más en ello porque este es el primer paso que todo ingeniero y programador debe completar en su día a día. Que lo que haga funcione. El objetivo es simple, la realidad es que la mayoría de programadores no saben aún programar y su código no funciona. Tu objetivo es demostrarme que sabes hacer código que funciona y me lo demuestres.

Imagina que te pido que me hagas un código que lea un archivo y me cuente las veces que aparecen las palabras en ese archivo y me lo ordenes. Me da igual qué lenguaje uses, qué paradigma, si haces TDD o Arquitectura Hexagonal Chupiguay al cuadrado, no te estoy pidiendo nada de ese buzz wording para Tiktokers. Te pido que el código funcione.

  • Resuelve el ejercicio
  • Escribe unos tests que yo pueda fácilmente validar
  • Asegúrate de que tu código se puede compilar y ejecutar de manera simple
    • Aquí puedes utilizar Github Actions o similares si quieres

Fíjate que no estoy entrando en ningún detalle, porque los detalles me dan igual. Solucionar un problema y que funcione ya es un nivel de dificultad que la gran mayoría de programadores no será capaz de realizar, te lo aseguro. He entrevistado chavales recién salidos de la universidad a los que les pedía hacer el típico for loop de Fibonacci, me decían que lo harían en Haskell porque sacaron un 10 en la asignatura, y no consiguieron en 1 hora hacer que el código compilase...

Si es una prueba con el entrevistador al lado y quieres impresionar al entrevistador, por favor, no me hagas perder mucho el tiempo y resuélvelo sin darme dolores de cabeza. Porque tengo otras cosas que hacer, como irme a la piscina ahora en verano después de comer, y estoy ocupando la tarde contigo.

Cuando un compañero entra al equipo, da igual el nombre que ponga en su Slack: junior, mid, senior o rockstar developer. Lo único que le vamos a pedir es que el código que escriba funcione.

Mid o Senior

El siguiente paso es el que se esperaría de una persona que ha trabajado en la industria. Comparado con la gente que nunca lo ha hecho. Y ojo, aquí me gustaría dejar algo claro. Esto incluye a gente que lleva trabajando 1 año y gente que lleva trabajando 40 años como programador. Como dicen los sabios:

1 año de experiencia 20 veces, no son 20 años de experiencia.

La gran mayoría de programadores suele quedarse en este rango para el resto de sus vidas. Y aquí hay que decir que no hay nada malo con ello. Estamos hablando de "profesionales capaces" que además pueden formar a otros ingenieros noveles como los que vimos en el paso anterior.

La diferencia entre un Mid y un Senior? El salario y las canas. Técnicamente ninguno.

Volviendo a la prueba. El mayor error que cometen los programadores en este nivel es olvidarse del paso número uno. Que el código funcione y saber programar. Que el código funcione es programar la solución al problema que te piden. Por lo general, nos encontramos con candidatos que se pierden en los detalles irrelevantes, en las arquitecturas, en los procesos que no solucionan problemas sino que generan nuevos problemas, en las supuestas buenas prácticas que han aprendido, candidatos que han leído cuatro libros de Clean Code y se han olvidado que lo más importante es hacer que el código funcione.

Objetivos de la prueba:

  • Cumplir con los requisitos del paso anterior: saber programar.
  • Demostrar que sabes programar... en el mundo real.

El mundo de fantasía en que viven estudiantes y gurús de software que publican libros de buenas prácticas de programación, no tiene nada que ver con el mundo real. En el mundo de fantasía, se resuelven problemas de fantasía. En el mundo real, resolvemos y nos encontramos con problemas reales. El objetivo de esta prueba es demostrar que conoces estos problemas y resolver algunos en la prueba. Menciónalos durante la conversación de 5-10 minutos.

Volviendo al caso de contar palabras de un archivo. Fíjate qué ejemplo más simple estoy usando, y fíjate cómo lo podemos usar en todos los niveles.

Seguramente te vas a encontrar con que las cosas en el mundo real fallan. Vas a tener caracteres raros, archivos corruptos, algún quinceañero con granos en la cara te intentará meter un XSS para hacer la bromita. Cuando las cosas se rompen tienes que debugar, necesitas sacar métricas y logs básicos del producto. Estos procesos consumirán CPU y MEM, necesitarás tener unos conocimientos de hardware y de cómo provisionar.

Todo esto desde el punto de vista técnico. Un ingeniero capaz seguramente le interesa trabajar para una empresa capaz, durante la entrevista lanzará muchas preguntas y estará encantado de revisar el código de sus futuros compañeros si está en GitHub disponible. Una entrevista, como hemos comentado, funciona en ambas direcciones. Y para la mayoría de buenos ingenieros que saben programar y saben programar en el mundo real, que su equipo también cumpla estas cualidades es crucial. Y como he comentado, la gran mayoría de ingenieros no sabe programar. En este punto, lo más normal es que rechaces más entrevistas de las que aceptas, y es probable que rechaces muchas empresas si no te dan buena espina.

Niveles superiores en la jerarquía burocrática de tu empresa

Los siguientes niveles en general suelen ser ingenieros que cumplen los dos pasos anteriores. Sabes programar, sabes programar en el mundo real. Y es aquí donde el tener experiencia entra en juego. Pero hay distintos perfiles. Según donde hayas acumulado experiencia en tu vida, tendrás unas características que te pondrán por encima del resto del mundo.

El proceso es exactamente igual que el anterior, te daré un objetivo simple, resuélvelo. Enséñame que sabes programar, que sabes programar en el mundo real y demuestra por qué te mereces más dinero que el resto porque sabes hacer cosas que el resto no sabe.

La verdad, no hay muchos ingenieros así en el mundo. Y si lo eres, no necesitas mi ayuda.

Conclusión

Si habéis llegado al final. Enhorabuena. La conclusión es leerte el texto de arriba.

En la parte 2 compartiré un poco de código que he hecho para una ofertita de 100-150k, y comentare los detalles explicados arriba.

14
richmonde

Buen post, pero no estoy de acuerdo con esta afirmación.

#1desu:

La diferencia entre un Mid y un Senior? El salario y las canas. Técnicamente ninguno

La diferencia entre un mid y un Senior, es que el mid es el que ha salido del cascarón y empieza a ser autosuficiente, y aunque no es una hard skill per-se, a nivel empresarial es una diferencia abismal entre un senior. Al mid lo guias, pero no le "ayudas" con la solucion ni le enseñas. El senior, guia al Mid y ayuda al Junior.

Todo esto, como mencionas, asumiendo que un senior sea eso... alguien con experiencia, y no un experiencia repetida X años.

Por no desviar tu punto, el senior posee las capacidades técnicas de ser capaz de resolver el problema de manera más eficiente, más rápida, y de la forma más reutilizable, democratizada y siguiendo estándares que un mid a esas alturas todavía está en proceso de aplicar como hábito. Y aquí incluyo documentar (y bien).

Por lo demás poco que decir, comparto bastante tu visión.

3 1 respuesta
desu

#2 En mi literatura, todo miembro de un equipo que colabora en el producto es igual de importante. Da igual su edad, su rol, su genero, e incluso en informática nos puede da igual si es programador o ingeniero informático. Por eso no suelo utilizar los términos habituales, hablo de programadores o ingenieros. Y estos tienen distintos roles en un equipo. Solo cambia el rol a desarrollar. Pero un equipo, es un equipo.

Una persona con menos experiencia, mas joven o que viene de otro campo que no es la informática o que ha cambiado de stack, aporta creatividad, ideas alternativas y crea discusiones de alto valor dentro del equipo. Si esta gente no existe, esto nunca se generaría.

Un ejemplo típico que he visto muchas veces:

  • Tienes 3 ingenieros, con "30 años de experiencia" en Python. Tienes que desarrollar un servicio nuevo, lo van a hacer en Python. Sota, caballo y rey.
  • Tienes 3 ingenieros, distintos años de experiencia en varios stacks, quizás uno estudio Marketing. Tienes que desarrollar un servicio nuevo, discutirán ideas, probaran varias propuestas y elegirán la "mejor solución". El que estudio Marketing te hace una presentación para venderla a management que flipas.
#2richmonde:

El senior, guia al Mid y ayuda al Junior.

  • El junior da ideas que el resto desconocen porque no esta al día de las ultimas novedades.
  • El junior da ideas alternativas que el resto no implementa porque están fuera de su zona de comfort y tiene bias.
  • El junior pregunta PORQUE? Y el resto al resolver la duda documentan entre todos mejor el producto.
  • El junior dice "no encuentro estas API KEY, donde están?" Y el resto se da cuenta que el proceso de on-boarding esta mal.

Una persona que no ha estudiado informática y trabaja de PM por ejemplo:

  • El PM pregunta que significan estas palabras raras, como consecuencia se hace una presentación mas adecuada y accesible
  • El PM pregunta por demos para entender mejor el producto, como consecuencia se graban videos que se pueden compartir
  • El PM plantea ideas que un ingeniero nunca habría pensado

Para mi, y en mi experiencia, no hay diferencia entre alguien que lleve 5 años y otro que lleve 25 años. De verdad, lo que uno gana por un lado, lo perderá por otro... Y si es una excepción, esta en el ultimo nivel.

Hay que ser objetivos, el paso mas difícil de todos.

Tengo un post que aun no he posteado sobre como evaluar a un ingeniero, y como valorar un buen equipo cohesivo y productivo, que características son importantes, los detalles técnicos solo son una parte, hay muchísimo mas.

2 2 respuestas
laZAr0

Gracias por el esfuerzo @desu

Aún estoy en proceso de convertirme en un "sucio junior". Y aunque es probable que esté escribiendo caca, como dices, al menos consigo que el código compile y funcione. Si es más o menos eficiente, si es más o menos óptimo, es harina de otro costal que aún me falta por cargar.

1 respuesta
GlitterSpark

#3 hay que hacer un post de como trabajar en equipo y ser buen compañero, que siempre hablamos de nivel individual, y al final esto es un trabajo en equipo.

En mi experiencia trabajando en FAANGs, he tenido la desgracia de toparme con 2 cracks con un ego y una mala educación que tenia a los juniors casi llorando. Los 2 acabaron despedidos.

1 respuesta
desu

#4 Esta perfecto.

SI tu prueba te pide hacer algo con unos requerimientos y tu lo cumples. Es que estas completamente capacitado.

Ahora como ha comentado el compañero o comentas tu.

Si UNA PARTE de "HACER QUE FUNCIONE" es tener que desarrollar rápido, solo tienes 1 hora para hacer la prueba, o tienes que hacerlo con unos requerimientos de velocidad o consumo de memoria concretos. Esto es algo que se debe incluir en la prueba.

Si es una prueba muy fácil o una prueba muy difícil técnicamente, dependerá del equipo. Puede ser una prueba que requiera conocimientos de matemáticas y física avanzados, o puede ser una prueba que requiera saber de economía... Todo esto estará incluido en la prueba.

Todos los requerimientos forman parte del "funcionar" o "resolver". El primer nivel de la prueba.

#5 Si... no es tan dificil

2 respuestas
GlitterSpark

#6 en FAANgs, hacer que funcione no es suficiente. La mayoría que pasa phone screens (ya ni te hablo de onsites) les funciona todo y con un time complexity optimo. Hay una diferencia bastante grande entre los que te solucionan mediante brute force, y los que tienen en cuenta time complexity.

Aunque también soy de los que cree que entrevistas rollo leetcode son una mierda, y es a lo que estoy acostumbrado a ver

1 respuesta
Kaledros
#6desu:

solo tienes 1 hora

Ojo con esto. Me he encontrado con pruebas técnicas que en 4 horas te pedían montar la API, testearla (unitarios e integración), añadir cinco o seis casos de uso, crear excepciones para errores conocidos y meterlo todo en contenedores... para un sueldo de 30K.

Hay que aprender qué cosas estás dispuesto a hacer por cuánto dinero y qué cosas no vale ni la pena esforzarse.

1 2 respuestas
GlitterSpark

#8 yo tuve algo similar en Netflix, y eso era la prueba para ver si podias ir a la onsite. Ahora si, hablamos de 500k/año y no 30k

1 respuesta
Kaledros

#9 Es que es eso. Por un sueldo de 500k haces esfuerzos que no merecen la pena en otros casos. Además de que si ya antes de entrar ves esa disparidad entre lo que se exige y como se compensa ya te puedes imaginar lo que te espera.

desu

#7 Primero.

Cuando hablo de resolver pruebas, no me refiero a leetcode, sino en este hilo hablamos de pruebas como implementar un mini redis, o hacer una API... El hilo va de este tipo de pruebas que haces en casa.

Segundo.

Bueno el proceso en FAANGS esta muy roto, como dices y yo tambien he comentado. Luego esta gente no sabe trabajar en equipo, se matan entre compañeros, hay malos rollos... Ese es el objetivo de las FAANGS? Pues seguramente, les interesa que haya malos rollos. En la grandes empresas hay mucha política.

#8 Pues voy a defender la prueba.

Estan buscando un tio que sepa hacer las cosas super rapido, si en lugar de 30k, pagasen 300k, seguro que encontrarían alguno.

La prueba me parece bien. En una prueba puedes pedir lagrimas de unicornio...

1 respuesta
perez_chuck

Las pruebas con X años de experiencia me parecen surrealistas y de vergüenza ajena.

Pones 1 mes de prueba y a correr.

2 respuestas
Kaledros

Also: el leetcode es muy mala idea en según qué tiers porque un tío puede pasar una prueba por cabrona que se la pongas simplemente metiéndole ocho horas diarias a Codewars durante tres meses y luego no ser capaz de montarte ni un servicio.

#12 Yo ahora mismo me niego a hacer pruebas que sean repetir lo mismo que llevo haciendo en mi trabajo todos los putos días porque si mi CV no vale no me interesa tu empresa. Al final es lo que dice desu, charlar un rato y si eso proponer algún problema y tratar de exponer soluciones dándole vueltas a las cosas, proponer escenarios, etc. Porque después de cinco años trabajando en lo mismo se me supone un nivel técnico capaz de implementar esas soluciones o de aprender a hacerlo en poco tiempo.

2 1 respuesta
GlitterSpark

#13 leetcode es una mierda. En Amazon, los recién salidos de la universidad, sobretodo los de China, te pasaban las leetcode con los ojos cerrados. Luego los mid y los seniors que no lo practicaban en absoluto se atascaban, y es lo lógico.

1
R

Como de mal visto usar Google o chatgpt en una prueba?
Para contar las palabras de un f ibero te va a dar la respuesta sin problemas

GlitterSpark

#11 100% de acuerdo en la prueba

desu

#12 hay varias opciones:

  • eres el entrevistado, eres peor que el equipo al que aplicas
  • eres el entrevistado, eres igual, en el rango, que el equipo al que aplicas
  • eres el entrevistado, eres mejor que el equipo al que aplicas

que pasa si el entrevistado pasa la entrevista y entra en el equipo? quien gana y quien pierde en cada situación? cuales son los intereses del entrevistado y cuales los del equipo?

para el entrevistado depende de si tenemos:

  • un mal equipo, todo quema, todo se rompe
  • un equipo neutro
  • un buen equipo, todo va sobre la seda

y nos importa el dinero y las horas de trabajo

para un equipo pues que las cosas funcionen rodadas es el objetivo principal, en una empresa no tóxica

en la intersection de los elementos encontraremos el balance

1
richmonde

#3 No has argumentado mi punto. Y contradices lo que tu mismo citas en tu post.

  • El junior da ideas que el resto desconocen porque no esta al día de las ultimas novedades.
  • El junior da ideas alternativas que el resto no implementa porque están fuera de su zona de comfort y tiene bias.
  • El junior pregunta PORQUE? Y el resto al resolver la duda documentan entre todos mejor el producto.
  • El junior dice "no encuentro estas API KEY, donde están?" Y el resto se da cuenta que el proceso de on-boarding esta mal.

De esos puntos:

  • En el punto 1, el junior da unas ideas, el mid las plantea, pero altamente probable el senior te podrá contestar porque en su día a día se asume que esta al corriente de la actualidad. Si más no, saber de las tecnologías que hay y haberlas probado. (Eso, al menos, es lo que hago yo).
  • En el punto 2, el junior aporta unas soluciones alternativas que pueden ser buenas o no, pero posiblemente se hayan pensado con anterioridad y si no se han aplicado tiene una explicación. Ya sea bandwidth, recursos, tiempo, prioridades o urgencia que desde luego, dicho junior no tiene el contexto o visibilidad suficiente como para estar con ello (suficiente tiene con aprender de lo que ha de hacer). Un senior aplicado, no tiene zona de confort. Y lo que se conoce por bias, es una experiencia previa y una vision a largo plazo del proyecto en el que está en el que caben (o no) cosas nuevas, o refactorizar algo que ya funciona y no hay necesidad real de cambiar.
  • En el punto 3 y 4, estoy de acuerdo en que las dudas de un junior siempre ayudan a mejorar un producto, y su documentación así como el onbarding del nuevo.

Pero repito, no me has argumentado el porque un MID y un SENIOR son iguales salvo canas y años. Porque la realidad es que no es así.

#3desu:

Para mi, y en mi experiencia, no hay diferencia entre alguien que lleve 5 años y otro que lleve 25 años. De verdad, lo que uno gana por un lado, lo perderá por otro... Y si es una excepción, esta en el ultimo nivel.

Para mi si que la hay. Una persona que lleve 5 años de Experiencia y uno que tenga 25, ambos "Senior", si que hay diferencia.

  • El primero lleva 5 años en ese rol y puede (o no) estar aprendiendo en ese tiempo.
  • El segundo, si lleva 25 años en el mismo rol, me saltan las alarmas. Ya que si es alguien que está siendo transformado en un gurú de su campo, seguirá subiendo a principal, senior principal, lead, expert, etc... llámalo como quieras, pero rangos superiores que muestren una progresion de carrera y conocimientos. Si en su lugar, no "mejora" y hace lo mismo durante esos 25 años, desde luego que su faena la hará bien, pero ese SI estará estancado en su zona de confort y un bias. Y ese, será el "mal senior" que mencionas de "25 años haciendo lo mismo, no es un senior de 25 años".

Y ojo, que como digo y mencionas. Es igual de valido el de 25 que prospera, que el de 25 que se planta. Pero no son "dos seniors iguales".

1 respuesta
desu

#18 entiendo lo que dices.

una persona con 30 años de exp puede ser un junior técnicamente si decide cambiar de front a machine learning por ejemplo. la prueba será la misma para todo el mundo. el primer nivel es el que he explicado. que funcione.

puedes aplicar a Netflix o a Everis. Ambos seréis Junior. Y ambos haréis una prueba. A ambos se os pedirá cumplir el primer nivel. Seguramente las expectativas no serán las mismas en estas empresas. ni el nivel del aplicante.

la filosofía hay que interpretarla. Y hay que aplicarla.

como digo. en un equipo bueno funcional y de alto nivel. la diferencia es tan mínima entre tener 5,10 o 20 años de experiencia al momento de desarrollar código que la obvio. sí que hay más componentes como he comentado. y como he comentado la suma de todos hará el equipo.

hay chavales en la universidad ahora mismo mejores programadores de los que seremos nosotros en toda nuestra vida. Ambos haremos una prueba y el primer paso será resolverla.

este hilo se puede aplicar a todo el mundo y a todos los niveles.

Kike_Knoxvil

Quiero compartiros mi caso en el que estuve un año siendo un "junior" en una consultora, tengo que aclarar que aunque estaba como Ingeniero de Software la realidad es que mis estudios no son de ingeniero informático; por lo que hay mucha laguna que tengo en cuanto a estos temas

El caso es que entré atraído por el proyecto (automoción, que es un mundo al que siempre quise y aún quiero dedicarme) y porque el poder expandir mi conocimiento de C++ que estaba oxidándose en un lado de mi cerebro debido a que el año anterior me lo había pasado con MATLAB a tope.
La prueba técnica fue leer dos líneas y corregirlo para obtener lo que debería retornar en realidad (era un puntero y una deferencia, sin más ahora que lo pienso pero en su momento me costó un poquito por llevar tiempo sin tocar el lenguaje)
A partir de eso me contrataron y empecé mis andanzas por ese mundillo; el primer mes fue más o menos bien, con llamadas puntuales del "senior" jefe de mi departamento en el que me echaba un cable con el software que ibamos a utilizar sobretodo para que lo instalase correctamente porque tenía sus cosas; aunque no me contaba cual iba a ser mi papel en el proyecto o darme detalles más específicos sobre el mismo, solo me repetía una y otra vez que era un proyecto para X encargado por Y y que nosotros dabamos el soporte en C++ y que me estudiase AUTOSAR con unas diapositivas que se notaba mucho que eran un apoyo de algún cursillo o algo con más chicha por otro lado.
En ese sentido más o menos me saqué las castañas del fuego, más cuando por fin se me incorporó un par de meses después al proyecto de verdad y pude ver de primera mano como se desarrollaba, y aquí empezó mi problema: noté como de verdad yo estaba verde verde verde. Siempre desarrollé "código de combate" (código que entra dentro del chip a usar, que funciona y que más o menos se le puede meter mano pero que tiene sus ñapas), y cuando me encontré en un mundo donde los tipos son punteros de estructuras a otros punteros de otras estructuras de otra estructura que es heredada de un tipo de otra estructura de un puntero a otra estructura... (no recuerdo el nivel de concurrencia exacto, pero recuerdo tener que abrir en algunos casos hasta siete archivos distintos para seguir un tipo y descubrir al final que este era un simple uint_16t) pues lo empecé a pasar muy putas. ¿Que hice? Lo único que sabía: pillar un día en una llamada a la única persona de mi equipo que conocía y preguntarle que cual era exactamente mi papel y como podría lidiar con un código así (para que me diese una pista de que mirar por internet para poder ponerme al día más o menos)
Su respuesta fue que no me preocupase que cuando nos diesen la tarea exacta la podríamos hacer sin problemas. Y vaya si hubo problemas por mi parte, porque nos mandaron hacer la parte de testing y yo, que vengo de un mundo donde el "testing" se hace cargándolo en el prototipo y viendo que no explota o se suicida contra una pared pues me encontré con que tenía que aprender a hacerlo en tiempo record. Y algo aprendí antes de que a la tercera semana de estar con ello y avanzando pasito a pasito tanto yo como otro chaval que estaba entrando nuevo acabamos fuera porque "eramos juniors muy juniors y necesitaban algo más en el proyecto"
Y después de eso, pues nueve meses en los que estuve "mirando pal techo" (aprendiendo ciberseguridad por mi cuenta, C++, Rust, intentando volver otra vez al ML...) porque no nos entraban ningún proyecto.
Al final, me cansé, una empresa me ofreció un buen sueldo si me metía como ingeniero de automatización y reaprendía Twincat, entré en Marzo y hasta hoy.

Lo que aprendí como mi etapa de "junior" en esa empresa:

  • Es muy complicado aprender del resto de tu equipo si este no está físicamente contigo ayudandote, porque las llamadas por Skype están bien para algunas dudillas pero en el aprendizaje del día a día se nota si estás completamente solo. Lo he notado por ese año "parado" y porque en un par de meses rodeado de gente en el puesto de automatización he aprendido una burrada
  • La prueba que me hicieron para entrar no debió servir para una puta mierda, sinceramente. Me debieron de pillar solo porque debía de ser la única persona que les encajaba en el puesto que estaba dispuesta a mudarse, cobrar 25k y querer aprender.

Y que a nivel personal, la falta de experiencia para solucionar problemas se nota muchísimo: requiere de mucho más esfuerzo de fondo cuanto menos experiencia tengas y eso se acaba notando. Evidentemente como junior tienes algo que aportar, no eres un peso completamente muerto como piensan algunos pero desde luego se nota esa falta de experiencia

2
KILLOXON

Podías haber especificado antes de todo el rollo que el tema va de programación y así me ahorraba leerme algo que no tiene casi nada que ver con otras profesiones.

1 respuesta
HeXaN

#21 Estando en el subforo de "desarrollo y diseño" no era muy difícil saber por dónde iban los tiros :psyduck:

5 1 respuesta
KILLOXON

#22 Diseño, esa gran palabra que lo engloba... todo

Yo hago diseño, concretamente 3D para Automoción y si entra en el subforo.

Nada en contra de la temática del hilo, que quede bien claro, solo que esperaba algo más general extrapolable a más profesiones que la de programador/developer que no queda claro en el título inicial. Entrevistas técnicas existen en muchas otras profesiones más que ésa en particular.

1 respuesta
Linkyd

He leído la palabra “ingeniero” como 2500 veces…

2 respuestas
P

#24 13 veces para ser exactos

1
Sk8eR

es un genio del seo.

desu

#24 si, como he explicado atrás, no me gusta discriminar a nadie en mi equipo. todo miembro del equipo técnico que programe, del junior al VP of engineering, si programa, es un ingeniero para mi. y debe cumplir el primer requisito de saber programar.

xq:

  • todo el mundo puede ser programador
  • no todos los programadores pueden ser ingenieros

utilizo el termino ingeniero para connotar que existe una maestra técnica altísima en programación. un ingeniero, es un grandísimo programador y adema, cumple con otros requerimientos.

te animo a que leas el post de nuevo, o busques donde utilizo la palabra PROGRAMADOR y donde utilizo la palabra INGENIERO.

Fijate que uso la palabra programador cuando hablo de aspirantes o gente con pocas cualidades técnicas.
Y uso la palabra ingeniero cuando hablo con gente que ya ha llegado a un nivel aceptable y empeza a progresar. Incluso si este no ha estudiado informatica y lleva 2 meses programando, le que vale vale.

Por ejemplo:

la realidad es que la mayoría de programadores no saben aún programar y su código no funciona

Puedes tener 20 años de experiencia en software, que si te hago una entrevista y veo que eres un PACO, no eres ingeniero, eres un mal programador.

desu

#23 El mensaje se puede extrapolar fácilmente. Considerando que yo siempre hablo para gente que tiene aspiraciones de llegar al máximo nivel.

  • Primer nivel) ser un diseñador con unas cualidades técnicas impresionantes, demostrarlo en la prueba que te piden.
  • Segundo nivel) ademas del primer nivel, tener experiencia en el trabajo y la industria, demostrar que sabes resolver problemas reales y no solo "hacer el diseño".

Problemas reales pues tu nos podrás decir mejor ejemplos. Le voy a dar un try: Colaborar con gente de otros departamentos, tener buena comunicación para saber hacer presentaciones y documentación tanto técnica como para gente que no entiende, saber vender tu producto, entender como lo que haces se traduce en dinero, saber como dar valor y que el producto cueste mas o menos dinero, reducir los costes de producción, saber reaccionar a cambios de requerimientos a ultimo momento, saber navegar entornos empresariales grandes o entornos de Startup...

En diseño, igual que en programación, cualquiera por su cuenta puede aprender y ser un autentico crack. Al menos, en algunos campos del "diseño". Y te diría que del marketing, edición de video también. Pero el trabajo es otro mundo.

En otras disciplinas de ingeniera esto no es cierto. Y mis consejos no aplican por lo que otros compañeros del foro me han explicado. Es difícil para un ingeniero mecánico por ejemplo, aprender por su cuenta, y ser un top sin trabajar antes.

Zh3RoX

Pero por qué lo has separado en dos hilos? Es mejor en uno solo, así se centra todo el debate en un mismo hilo y no tienes que estar posteando en uno y otro...mal Desu mal, cuando quieras te doy unos tips de como hacer hilos, te falta seniority.

1 respuesta
desu

#29 xq asi genero mas trafico jeje, y bueno, es un tópico muy amplio y es dificil explicar todo en un post, la gente se perdería.

part 1 - teoria
part 2 - el evaluador
part 3 - mi prueba como evaluado

1