Necesito probar el nivel de habilidad de una posible contratación, ¿cuáles son algunos buenos desafíos de programación que podría enviar a estos candidatos?

Primero: si está contratando a un interno, espero que tenga otro desarrollador para supervisar al interno y ayudarlo. Supongo que sí, pero si no lo hace, primero debe contratar a un desarrollador experimentado.

Segundo: ese otro desarrollador debe tener una buena expectativa razonable de ese interno y deben saber qué preguntarles. Si no lo hacen, entonces vean el siguiente paso …

Tercero: pregúntele al interno qué hacen en su tiempo libre, por qué les gusta el desarrollo y evalúen su interés general en el desarrollo de software. Muchas veces no desea contratar a un pasante que conozca FizzBuzz o Fibonacci (ambos relativamente fáciles de memorizar), más bien quiere a alguien que esté realmente interesado en el desarrollo de software: esas son las personas que probablemente le darán los mejores beneficios. Si debe darles un desafío de codificación, entonces haga que sea una variación diferente de FizzBuzz: espantará a aquellos que lo hayan memorizado. Algo como esto:

“Comenzando con uno y terminando con un número aleatorio de la elección de los usuarios, imprima todos los números, y si el número es divisible entre 3, escriba [InsertComapnyName] y si el número es divisible entre 10, imprima [InsertCompanyName] + Rocas! Finalmente, si el número es el último número en la secuencia, imprima Game Over!

Si hacen un intento sólido de esto pero no lo hacen bien, aún así los contrataría siempre y cuando tengan un interés genuino en la programación. Quizás si lo han hecho mal, se lo podrías decir. Si fuera yo en una entrevista y me equivocara, diría algo como “¿En serio? ¿Te importaría explicar lo que hice mal y la forma correcta de hacerlo? Porque estoy realmente interesado en aprender sobre el desarrollo de software. Se sorprenderá mucho de lo que puede enseñarle a un buen interno que tal vez no lo sepa todo, aún , en solo un mes o dos.

Prueba previa, cree un servicio web simple que solo tenga un método.
Este servicio web acepta una palabra y devuelve una respuesta json como esta:
{“puntuación”: 8, “rareza”: 97}

En una base de datos relacional, tenga una tabla con 3 columnas:

  • id: int (auto_inc / serial)
  • palabra: varchar (30)
  • peso: int

Pregunta esto:

Cree un servicio web que tome una palabra y devuelva el siguiente json:
{“puntuación”: 8, “rareza”: 97, “peso”: 42}
Cada atributo es opcional y se completa solo si el proveedor tiene información para proporcionar.

El tiempo total de tratamiento no debe tomar más tiempo que el proveedor más lento. Si un proveedor tarda más de 2 segundos, no asuma información de él.

En otras palabras, si ambos servicios toman 1 segundo, la aplicación debe responder dentro de un segundo.

Explicación:
Esto no se puede implementar usando llamadas de bloqueo. Las dos recuperaciones deben hacerse en paralelo.
Tampoco se puede hacer en una devolución de llamada ya que el tiempo total de ejecución sería la suma de cada recuperación.
-> tiene que hacerse con promesas

También puede tener 5 servicios web en lugar de 1 para asegurarse de que las promesas sean el camino más fácil.

Si busca semáforos, también está bien.

Si no tiene ninguna prueba de programación interna en su empresa, puede utilizar una plataforma de terceros para realizar pruebas de programación automatizadas. Para que quede claro, debe decidir si este tipo de prueba está destinada a actuar como un filtro para deshacerse de los malos candidatos antes de la entrevista, o como una evaluación en profundidad de las habilidades que serán seguidas por una entrevista técnica. Cree una prueba según sus requisitos.

¿Cuánta experiencia esperas que tenga un interno? ¿Trabajarán estrechamente con alguien que tenga experiencia? En ese caso, ¿no podría ser más importante la capacidad de enseñanza que si conocen tecnologías específicas como JavaScript (que, si tienen una experiencia de programación a medias, podrán retomar)?

Seré completamente honesto: su primer error es contratar a un interno para construir su sistema. A menos que tenga años de experiencia en el mundo real y solo vaya a la escuela por un “pedazo de papel”, será un desastre. Lo he visto una y otra vez.

Independientemente de cuán buenos o técnicos sean en la escuela, no tienen la capacidad de hacerlo, ya que no tienen experiencia real en hacerlo.

Supongo que su empresa quiere hacerlo a bajo precio. La forma más barata es contratar a un profesional. Cualquier otra cosa te costará más a la larga.

No solo eso, estaría perjudicando a los pobres internos, lo sepan o no. El objetivo de una pasantía es aprender de aquellos que tienen más experiencia en el campo que usted, no ser mano de obra barata.

Sin embargo, para responder a la pregunta, solo hay una pregunta que debe hacer: ¿puede contarme sobre un momento en que construyó con éxito y lanzó con éxito un sistema comercial de esta escala?

Esto es lamentable, lo sé, pero por lo que solía escuchar, era un buen “detector de mentiras” en las entrevistas con los programadores. Hace años leí un artículo sobre la prueba “FizzBuzz” ( https://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ ). El tipo que lo escribió dijo que encontró muchos casos en los que los entrevistados no sabían cómo resolverlo o no sabían cómo hacerlo en unos pocos minutos. Mirando el problema, recuerdo que me quedé estupefacto porque tenía tanta gente que no podía resolverlo. Cualquiera que pasara una clase de programación en la escuela secundaria a la que fui podría hacerlo.

Nunca tuve que presentar desafíos de programación, así que esto es lo mejor que puedo hacer.

Pregúntale algo que hayas hecho recientemente. Tenemos una broma cuando entrevistamos que solo le preguntaremos a la persona el boleto en el que estamos trabajando actualmente.

En realidad, construyo muchas API, así que le pido a alguien que diseñe una API.