¿Cuál es la mejor manera de demostrar sus habilidades como ingeniero de software junior durante una entrevista que no sea la implementación de algoritmos sofisticados y estructuras de datos?

Como ingeniero de software junior, es muy fácil.

Te voy a hacer una pregunta de programación. Se trata de un algoritmo simple y una estructura de datos. Voy a dejar de lado un montón de detalles. Ir.

Esto es lo que estoy buscando:

  • ¿Preguntó sobre los detalles faltantes o acaba de comenzar con el problema?
  • ¿Primero descubriste una solución o comenzaste a escribir código?
  • ¿Viste los casos límite?
  • Si encontró un problema con los casos extremos en su código, ¿se tomó un momento para volver a su solución o simplemente comenzó a descifrar el código para intentar que funcione?
  • ¿Hiciste algunas pruebas (incluso a mano) del código antes de decir que ya terminaste?
  • Si se encontró con algunos problemas y le di algunas pistas o comentarios, ¿escuchó?
  • Si le hago una pregunta sobre su código o solución que tiene un problema, ¿escuchó y consideró, o se puso a la defensiva?
  • ¿Puede explicar su solución claramente sin recurrir al código?
  • ¿Puede recorrer su código línea por línea y explicar qué está haciendo y cómo se relaciona con su solución?

Si puede hacer todo esto y no necesita que se lo indiquen, ¡felicidades! Eres un desarrollador junior bastante bueno. En serio, si hiciste todo esto sin preguntar, estás en el 80% de todos los desarrolladores junior.

A continuación, le pediré que codifique la solución para una simple pregunta de seguimiento basada en lo que acabamos de hacer. ¿Lo atraviesas? ¡Bueno! Acabas de cimentar tu clasificación más alta anterior. Si no le fue tan bien en la primera parte, ¿escuchó los comentarios cuando discutíamos su trabajo y le fue mejor? Esto también es bueno.

Finalmente, si llegamos hasta aquí, le pediré un seguimiento más complicado basado en lo que acabamos de hacer. ¿Puedes hacer una puñalada decente en la solución? No necesita codificarlo. Simplemente presente un enfoque y una explicación decentes. Felicitaciones, usted se encuentra fácilmente en el 95% superior de todos los desarrolladores junior.

Realmente no me importa si puedes encontrar un algoritmo elegante o una estructura de datos en los 60 minutos que tengo disponibles para una entrevista. Así no es como funciona la programación del mundo real. Necesito averiguar si sabes sobre estas otras cosas que mencioné anteriormente. Si puede hacer eso, sé que puede trabajar de manera confiable en un entorno del mundo real.

Lo admito, soy un poco idiota con respecto a tus proyectos anteriores. Con respecto a sus proyectos de trabajo anteriores, ¿puede explicarlos y lo que hizo en ellos? Son alrededor de 5, quizás 10 minutos de conversación, pero esto reduce el tiempo de la entrevista. Si no parecen tan interesantes, no voy a pasar mucho tiempo en eso.

Con respecto a sus proyectos personales, realmente no me importa mucho a menos que se publique en una revista en alguna parte. La razón es que no tengo idea de cómo lograste el proyecto. ¿Solo estabas buscando el código de Google? ¿Lo has pirateado sin descanso hasta que funcionó? ¿Hubo alguna limitación de tiempo para su proyecto? ¿Qué pasa con los otros 99 proyectos que se estrellaron y se quemaron? Realmente no voy a pasar un tiempo limitado de entrevistas haciendo revisiones de código de sus proyectos personales.

Después de pasar la entrevista, tendremos tiempo de sobra para discutir proyectos personales e historias comerciales.

Si tiene alguna experiencia trabajando en otros lugares, brinde una explicación de alto nivel de una solicitud de su empleador anterior. Describa la naturaleza de la aplicación, cómo se desglosó internamente y cómo interactuaron los diversos componentes. Hable sobre los marcos y las API utilizados por la aplicación. Mencione los desafíos enfrentados y cómo fueron manejados. Luego, hable sobre su papel y cuáles fueron sus contribuciones a ese programa. Finalmente, hable sobre lo que aprendió de esa experiencia y posiblemente relacione las razones por las que está buscando empleo con ellos.

Incluso si no fue responsable de nada significativo en sus empleadores anteriores, es esencial que parte de su crecimiento como ingeniero de software sea comprender el diseño. Esto me dirá si usted es simplemente un excelente programador o algo en lo que vale la pena invertir. Como ingeniero de software junior, espero que pueda conocer algunos conceptos básicos sobre la naturaleza de los programas en los que ha trabajado. ¿Estás entendiendo lo que los ingenieros superiores están hablando y diciéndote? ¿Te vas por tu cuenta para darle más sentido a todo? ¿Y tiene la capacidad de aprender y mejorar con tiempo y experiencia?

Luego, le pediría que implemente una solución a una serie de problemas de palabras que se basan entre sí.

Al final, lo que quiero saber es si también puedes construir software.

Tenga en cuenta que si no puede revelar detalles de su trabajo anterior para fines contractuales, indíquelo y explique por qué.

Tú.

Necesitar.

A.

Escribir.

Software.

Si acude a una entrevista y puede demostrar algún software no trivial que ha escrito, probablemente será la única persona que lo haga. Ese es un muy buen lugar para estar.

Escriba un reproductor de música mejor que iTunes, escriba un programa editor de SQL, escriba un cliente SFTP genial. Realmente no importa lo que sea, solo algo que puede presumir y estar orgulloso de ello.

Construye algo en casa de lo que puedas hablar.

“Construí esta aplicación que hace X”. O “Construí un sitio web que hace Y”. O “Construí un servicio web que hace Z, con una aplicación e interfaz web”.

Luego, hablen sobre las decisiones de diseño, etc., etc. Poder demostrarlo al entrevistador vale más.

More Interesting

¿Qué se entiende por 'profundidad' en DFS?

¿En qué situaciones alguien usaría Dijkstra sin un montón sobre Dijkstra con un montón?

¿Cómo puede una persona que no está en el mundo académico presentar pruebas correctas de que NP = O (n), la jerarquía polinómica se colapsa y existe un algoritmo eficiente de O (n) para resolver cualquier problema sin causar caos y pánico masivo porque se rompería todo el cifrado?

¿Dónde puedo conectarme en línea para estudiar estructuras de datos, como árboles de búsqueda binarios, montones, etc.?

¿Cómo agrupa Google News las historias?

¿Cómo determinan los algoritmos de creación de mercado qué tan agresivamente deberían salir de las posiciones?

¿Cómo podemos implementar el algoritmo de Prim rápidamente en los concursos de programación?

¿Qué hay de malo en mi implementación de tipo de fusión?

¿Cuál es la complejidad temporal del montón y el tipo de montón?

Cómo mostrar que el algoritmo de Kruskal devuelve un árbol de expansión

¿Estaría de acuerdo en que el aprendizaje profundo es el único algoritmo que rige sobre todos los demás algoritmos en el aprendizaje automático?

Cómo diseñar un algoritmo de movimiento para un robot hexápodo

¿Por qué algún algoritmo tiene la misma salida?

¿Cuántos casos hay para reequilibrar los árboles AVL?

Un hombre llega a su oficina en 2 horas y regresa en 3 horas. La ruta a su oficina incluye un sendero inclinado hacia arriba, 8 km y senderos inclinados hacia abajo. Cada vez que viaja hacia arriba, su velocidad es de 60 km / h, mientras que en un plano de 80 km / h, y cubre hacia abajo a una velocidad de 100 km / h. ¿A qué distancia está su oficina?