No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

5 pasos para resolver problemas de programaci贸n durante entrevistas

5/11
Recursos

Aportes 13

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

驴C贸mo resolver un problema de programaci贸n? 馃殌馃挌

Antes de preguntarnos sobre el c贸mo poder resolver el problema, que tecnolog铆a me gusta m谩s.

Nuestra mejor forma de atacar retos de este tipo es, 鈥淓ntender el que voy a hacer鈥 porque si lo sabemos podemos dise帽ar una mejor soluci贸n preguntando y escuchando a nuestros reclutadores.
.

Hacer preguntas 馃搼

(Entendamos el 鈥溌縌u茅 vamos a hacer?鈥)

  1. Hacer preguntas es la mejor forma de aclarar un problema
  2. Hay problemas ambiguos y a veces solo conocemos la primera parte
    1. Preguntarnos siempre por c贸mo podemos interpretar las entradas y salidas nos otorga una mejor visi贸n del problema
    2. Si vamos a asumir algo, hay que charlarlo con el equipo, explicando por qu茅 podr铆amos partir de ello para que nuestra funci贸n opere.

Ejemplos:

  • 驴Qu茅 pasa si mi lista est谩 vac铆a?
  • 驴Podr铆a haber elementos repetidos?
  • 驴Qu茅 pasa si el tipo de dato es err贸neo?

.

Identificar casos de uso 馃懡 (incluso los extra帽os)

  • 驴Qu茅 pas贸 si nos salimos de un entorno controlado?
  • Nuestro algoritmo solo con ciertas entradas causa un error y debemos identificarlo 馃暤锔.

.
Ejemplo:
.
Te imaginas trabajar sobre un sistema que maneje vacaciones de empleados en el cual solo se le permiten tomar 4 d铆as de vacaciones de forma consecutiva y que justo en el mes de Febrero de ese a帽o sea un a帽o bisiesto.
.
Un empleado toma sus d铆as a finales de mes, nuestro sistema programa su regreso a labores hasta el 1 de Marzo, todo pareciera okay hasta aqu铆.
.
Pero en realidad los d铆as m谩ximos permitidos no fueron 4, y se le otorgaron 5 馃槰 dando un d铆a extra por este factor extra帽o.
.
驴Te imaginas otro caso que puedas suceder? D茅jamelo en este comentario para saber si te ha tocado un reto de este estilo y c贸mo lo resolviste 馃憞.

.

Dise帽ar la soluci贸n 馃З (a煤n no implementarla)

.

馃挕Dise帽ar es muy diferente a implementar

鉂 Jam谩s correr a programar de una sin haber entendido el problema, esto es la receta perfecta para no pasar con excelencia nuestra entrevista.

.
Al dise帽ar una soluci贸n como un software engineer nuestro trabajo es identificar los atributos de calidad que nos importa realmente para cada soluci贸n:

  • Tiempo
  • Escalabilidad
  • Velocidad

.
馃挕 La mejor forma de abordar los problemas es usar fuerza bruta (una soluci贸n no tan 贸ptima) pero que me empiece a encaminar al resultado, una vez tengamos eso podemos refactorizar y optimizar sobre los atributos que necesitamos.

.
馃挕 Otra forma es usando divide y conquista, desglosa el problema grande en problemas m谩s chicos, este nos ayuda a:

  • Evitar la frustraci贸n de querer resolver un problema grande y complejo
  • Nos enfoca en una peque帽a pieza que si la solucionamos podemos integrarla con otras piezas para solucionar algo m谩s grande.

.
Nota: Los reclutadores son nuestros amigos y los mejores aliados 馃

  • Platica con ellos
  • Haz preguntas
  • Usa tus soft skills para combatir el problema
  • Invol煤cralos en todo el proceso y usa ejemplos
  • Piensa en voz alta y explica tus ideas sobre un posible camino a la soluci贸n.

.

Implementar 馃殌 (ahora s铆)

Ve la mejor forma en la que pueda pasar tu dise帽o a la implementaci贸n, a帽adiendo comunicaci贸n por bloques y creando el c贸digo m谩s limpio posible.

.
Fun fact 馃榿: Es normal equivocarse, los nervios nos traicionan y hasta les comparto que una vez de los nervios recorr铆 un arreglo completo de n煤meros para sacar el m谩ximo valor 馃ぃ en vez de usar la funci贸n max() ya existente y hacerlo en una l铆nea.

.
Parece chiste, pero es an茅cdota, d茅jame un comentario con alguna experiencia similar que te haya pasado para re铆rnos juntos y aprender de ella 馃榿.

.

Probar el c贸digo 馃И

  • Las pruebas de escritorio son tus mejores aliadas
  • Da ejemplos que recorran nuestro flujo de la soluci贸n y explicar c贸mo a lo largo del proceso nuestra entrada se va modificando hasta llegar a nuestra soluci贸n deseada.
  • La comunicaci贸n con ellos es constate, es normal que salgan errores y que platiques con ellos qu茅 opciones se te ocurren para solucionarlos, eso da muchos puntos 馃榿.

En este curso les seguir茅 dejando tips que me han servido en procesos de entrevista, y que ustedes puedan aplicar 馃榿

lo 煤nico que espero es poder tener la paz y confianza que refleja la profe Camila durante la entrevista, casi siempre entro en p谩nico.

Excelente profe!!.. Yo aplico la de preguntar e interactuar con el entrevistador, pero lo de tomarse el tiempo para analizar un poco mas a fondo el desafio antes de empezar a programar es muy util馃榿

Ella transmite mucha tranquilidad.

Gracias profe Camila. Yo veo estas recomendaciones muy importantes para crecer en la empresa en la que estoy actualmente.

Justamente cada uno de esos pasos los vi aplicados en una entrevista que tuve, y precisamente fall茅 en cada una de ellas por no conocer 茅ste proceso (excepto la implementaci贸n jaja).
Pero si me dio mucha dificultad querer hablar al mismo tiempo que pensar en programar, adem谩s de que tambi茅n lo primero que hice fue comenzar a escribir c贸digo, conforme probaba, le preguntaba o como que se aburr铆a mi entrevistador por el silencio y me hablaba y yo que ya me hab铆a olvidado que estaba presente u.u
Cada una de las cosas que nos acaba de ense帽ar Camila, son s煤per importantes y sobre todo s煤per verdaderas!
Me muero por aplicar a otra entrevista y mejorar.

Tratar al entrevistador como un companero, no se me habia ocurrido

Est谩 buen铆simo el curso y la forma de explicar est谩 de 10

Buenos consejos

Anotada la metodologia. me pareci贸 genial esta clase esto cambia bastante la manera como realizare las entrevistas.

Tener empat铆a con lo que ve el entrevistador y ser mas estructurado.

Excelentes pasos profesora y el tip de preguntar.

Key points: 1. Understand the problem 1. Corner cases 2. Upper and lower input limits 3. Non-cases 2. Design the solution 1. Do not implement yet 2. Diagrams (visual and/or talked through are ok) 3. Yup, now go code it up. 4. Test out your code, run it manually and verbally. Pro tips: * Do not rush throughout the process. * Involve the interview in all steps as you progress.

Espero que los aplique cuando nos ense帽e, no como esos que dicen como resolverlo con dise帽o y saltan al c贸digo sin un proceso.