Asignación de entrevista de codificación: no estoy seguro de qué tecnología usar [duplicar]

Recientemente solicité un puesto de desarrollador junior en una empresa de TI. Durante la entrevista logré tener muy claro con qué tecnologías e idiomas estaba más familiarizado, y todo salió bien.

Después de la entrevista me enviaron una tarea, que básicamente es construir una aplicación web simple, y fueron claros en estos dos puntos:

  • Podría usar cualquier tecnología que quisiera
  • No tengo una fecha límite adecuada ya que no tienen prisa.

Al leer las pautas de asignación, sé que podría hacer un muy buen trabajo con tecnologías con las que tengo más experiencia.

Durante la entrevista logré averiguar qué tecnologías utilizan de manera más regular y es algo con lo que ya trabajé sin embargo por un tiempo muy breve, esto me deja con el siguiente dilema:

  • ¿Debería hacer la tarea con la tecnología con la que estoy más familiarizado, lo que significa que haría el trabajo más rápido y con más calidad, aunque esta tecnología en particular realmente no la usaría si me contrataran?

  • ¿O debo usar la tecnología que sé que la empresa usa en sus proyectos, lo que significa que tendría que estudiar un poco sobre cómo usarla y que me llevaría más tiempo y probablemente con menor calidad que la primera opción?

Creo que vale la pena señalar que el entrevistador me preguntó mucho sobre mi experiencia con las tecnologías que no están usando en este momento .

@Dukeling Estoy de acuerdo en que están relacionados, pero no exactamente duplicados. Ese está redactado de una manera más general, este se trata de un escenario y una configuración específicos, que deben considerarse para decidir qué sería mejor para OP
Algo sobre el bit "No tengo una fecha límite ya que no tienen prisa" me huele mal. Tal vez solo estoy imaginando cosas, pero parece que te están pidiendo que hagas un trabajo gratis como parte de la "entrevista". ¿No tienen prisa por contratar a alguien? ¿Por qué están contratando? Incluso si pueden arreglárselas sin una nueva contratación por un tiempo, espero que quieran concluir el proceso de entrevista de manera oportuna, ya que ya lo han comenzado.
@Steve-O o simplemente contratarán a otra persona si no lo has entregado hasta Navidad
@Steve-O Crosstalk es conocido por pedir a los solicitantes que resuelvan problemas del mundo real y luego rechazarlos por razones obviamente falsas una vez que envían su trabajo, por lo que esta es una preocupación válida. Pero creo que depende de cuán compleja sea la tarea. Si de hecho es una "aplicación web simple", las posibilidades de que resuelva un problema del mundo real son bastante pequeñas.
@DawoodibnKareem ese parece muy cercano, pero hay una diferencia sutil. El duplicado sugerido está desactualizado frente a las nuevas tecnologías, esta es la tecnología que OP conoce frente a la tecnología que usa la empresa. En el primero se desconoce qué utiliza la empresa, en este se desconoce si está desactualizado o no.

Respuestas (6)

Si le dijeron explícitamente que use cualquier tecnología que desee e incluso se entusiasmaron con la tecnología que conoce, entonces le sugiero que use la que le resulta más familiar.

De esa manera, entregará un código de mejor calidad que si tomara una curva de aprendizaje en este momento con las otras tecnologías.

También les mostrarás más de "tu verdadero yo" como profesional, lo que les permitirá evaluarte mejor como candidato y ver lo que puedes aportar a la empresa. También verán qué cosas nuevas podrían aprender de usted o qué nuevas tecnologías podrían considerar adoptar.

Probablemente agregaría a esto que el OP debería evitar hacer cosas para mostrar lo que sabe y, en cambio, escribir el código más fácil de mantener y comprobable. He tenido candidatos que escribieron código que no escribirían en código de producción o me aseguré de que "sabía que podían" cuando las instrucciones los dirigían claramente a un código comprobable y mantenible.
Buen punto @SandyChapman. ¡También diría que no se olviden de agregar comentarios! Sin comentarios = rechazo instantáneo para mí.
Yo optaría por el que esté más familiarizado y que sea adecuado para web . Esto podría ser una simple verificación para ver si elige o no la solución correcta.

Utilice la tecnología con la que esté más familiarizado.

Lo más probable es que la empresa quiera ver cómo piensas, no necesariamente si conoces las complejidades y el azúcar sintáctico de PHP, Perl, Ruby y C. No hace mucho tiempo, comencé a trabajar en una empresa que usa Ruby on Rails y nunca tuve Escribí una línea de RoR en mi vida. Incluso podría salirse con la suya con el pseudocódigo, pero no lo recomendaría.

Cómo piensas es más importante que dónde va el punto y coma.

Descargo de responsabilidad: solo tengo 1 año completo de experiencia laboral, acabo de hacer la transición a mi segundo trabajo de tiempo completo y no he sido contratado en función de las asignaciones, sino más bien de pruebas de corta duración y entrevistas de trabajo.

En primer lugar, incluso si no hay una fecha límite adecuada, sería una buena ética de trabajo completarlo de manera oportuna.

Cualquiera de las opciones tiene sus pros (y tal vez sus contras).

Opción 1, Tecnología Personalmente Familiar , (Pros):

  • Muestra tu competencia con lo que sabes
  • Ayuda a completarlo de manera oportuna.
  • Si la empresa está dispuesta a utilizar nuevas tecnologías, usted demuestra que puede ayudar a introducir ese cambio.

(Contras):

  • Está posponiendo lo inevitable si tiene que usar absolutamente lo que están trabajando actualmente.

Opción 2, Tecnología estándar de la empresa , (Pros):

  • Demuestra que estás dispuesto a aprender (sé que dijiste que has trabajado con eso, pero solo brevemente)
  • Demuestra que puedes ponerte en marcha si te necesitan.

(Contras):

  • Puede tomar más tiempo completar la tarea, pero no tiene una fecha límite establecida, por lo que debería estar bien

Las desventajas no son tan malas, pero supongo que todo se reduce a lo que quieres hacer: mostrar lo que puedes hacer con lo que sabes o usar esto como una oportunidad para desafiarte a ti mismo y familiarizarte con sus tecnologías.

gracias por la edición :) bienvenido a The Workplace por cierto. También estoy de acuerdo en que, aunque no hay una fecha límite, OP debe hacer esto de manera oportuna (pero no tan rápido, de lo contrario, podrían esperar tal rapidez cada vez)
no hay problema, lo siento si se puso un poco quisquilloso, no pude enviar con menos de 6 caracteres editados :/ también, gracias :D sí, no quise decir rápido, pero es difícil expresarlo de alguna manera aparte de "oportuno"
Si alguna vez ve un error realmente relevante que tiene menos de 6 caracteres, tal vez pueda considerar esto: meta.stackexchange.com/a/82535/332286 Aún así, todas las ediciones que hizo estaban bien para mí, así que lo acepté.
Lol eso es bastante inteligente en realidad, lo recordaré

Sugeriría a OP que busque lo que más le resulta familiar para hacer esta tarea y enumeraría algunas de las razones en mi opinión, ya que yo mismo también soy nuevo en la empresa y he pasado por esto hace semanas.

La empresa preferiría que tuviera un pensamiento lógico y habilidades de programación fuertes en lugar de saber más lenguajes de programación pero con habilidades de codificación y pensamiento lógico débiles. Esto se debe a que las habilidades de programación son mucho más importantes que la cantidad de lenguajes de programación con los que está familiarizado. Si le va bien en su tarea con el idioma con el que está familiarizado, entonces la empresa creerá que aprender nuevos idiomas/marco no le llevará mucho tiempo ni le resultará difícil, ya que saben que sus habilidades de codificación y pensamiento lógico son buenas.

Deje que la empresa decida qué tipo de lenguajes de programación o marcos debe aprender después de revisar su asignación. En algunos casos, hay más de un lenguaje de programación/marcos que se aplican en la empresa según el proyecto. La alta dirección decidirá a qué equipo se le asignará y, por lo tanto, aprenderá los nuevos lenguajes/marcos a utilizar. Creo que se le daría suficiente tiempo para ponerse al día en este caso.

Entonces, ¿por qué no haces lo mejor que puedes en la tarea para mostrarles lo que tienes?

¿Debo hacer la tarea con la tecnología con la que estoy más familiarizado o debo usar la tecnología que sé que la empresa usa en sus proyectos?

Hay muchos factores aquí, pero creo que deberías usar la tecnología que usa la empresa.

why?

En primer lugar, los ingenieros son evaluados principalmente en las dimensiones "puede resolver cosas" y "hace las cosas". Si estuviera buscando calificar esta tarea, realmente no me importaría lo que ya sabe, pero más aún si puede aplicar lo que sabe para resolver tareas desconocidas. Esto va a reflejar lo que hace un ingeniero todos los días. Además, un buen ingeniero (web) debe probablyser capaz de crear una aplicación web básica en cualquier tecnología, aunque no esté familiarizado con ella.

En segundo lugar, realmente puede mostrar una voluntad de sumergirse y resolver problemas difíciles (difíciles por la falta de familiaridad). Esto contribuirá en gran medida a elevarlo sobre otros candidatos.

Tercero. No tiene nada que perder si realmente no hay una fecha límite que se acerque rápidamente. Si resulta demasiado difícil de hacer con su tecnología, simplemente recurra a lo que sabe. Nunca lo sabrían a menos que les dijeras.

Hay ventajas y desventajas en ambos enfoques, como han dicho otros. DarkCygnus y gitguddoge han expresado la consideración que creo que es probablemente la más importante. Probablemente estén evaluando qué tan bien sabe lo que sabe y qué tan bien comprende los principios generales.

Hay muchas formas de resolver el mismo problema de codificación y la eficiencia de las diferentes soluciones puede variar mucho. Por ejemplo, suponga que no sabe lo suficiente sobre las funciones internas de un idioma para saber que un elemento que parece ser una variable primitiva en realidad se implementa bajo el capó como un atributo de objeto, por lo que se asigna en el montón en lugar de la pila, y luego ¿Lo incluyes en un bucle grande? Por supuesto, encontrará que se ejecuta mucho más lento de lo que sería si primero lo convirtiera a un valor basado en la pila. Estos son los tipos de cosas que notan los evaluadores de su código.

Aquí hay un ejemplo de cuatro formas de hacer lo mismo en JavaScript que, aunque todas resuelven el problema planteado, se desempeñan en niveles muy diferentes de eficiencia al hacerlo. Algunas de las soluciones son bastante elegantes y utilizan expresiones regulares para reducir el código necesario a unas pocas líneas. Y también, un poco más lento que el enfoque de bucle iterativo más prosaico.

Creo que es mejor mostrar tu habilidad si eres capaz de escribir código realmente eficiente y de buen rendimiento en cualquier cosa con la que estés más familiarizado que si eres capaz de resolver un problema de manera ineficiente adquiriendo rápidamente un conocimiento práctico de cualquier tecnología que sea. usando. Tenga en cuenta que puede obtener otra entrevista en la que se le pida que justifique sus opciones de codificación, y sonará mucho más informado si puede respaldarlas de manera convincente.

Así que voy a decir que te apegues a lo que sabes mejor, especialmente si eso es lo que piden. Si eso es lo que están pidiendo, lo más probable es que estén buscando para ver qué tan bien sabes lo que sabes.