Como ingeniero de software con 10 años de experiencia, no puedo obtener entrevistas porque soy un desastre con los algoritmos. ¿Cuál es la mejor y más rápida forma de mejorar los algoritmos?

La mejor respuesta a esta pregunta dependerá de cuáles sean sus fortalezas y debilidades reales en los algoritmos. Solo decir que eres “basura con los algoritmos” no da una buena imagen de tu fondo. Es posible que haya aprendido algo incorrectamente en algún momento, lo que ha dificultado su comprensión. O tal vez nunca aprendiste los conceptos correctos para empezar. O tal vez estás realmente oxidado porque te están probando cosas que no has usado en mucho tiempo. Si nunca ha reflexionado sobre por qué es “basura con los algoritmos”, entonces tratar de entender por qué es el primer paso para mejorar.

Si desea aprender de la manera más eficiente posible, necesita un plan de estudio personalizado que satisfaga sus necesidades. En otras palabras, la mejor y más rápida forma es obtener un tutor privado.

El resto de mi consejo trataré de hacer lo más general posible:

Ser bueno con los algoritmos no es como aprender un nuevo lenguaje de programación en el que puedes caminar a través de un montón de tutoriales que comienzan con “Hello World”. Pero tal vez un buen lugar para comenzar es aprovechar una respuesta que escribí a una pregunta diferente …

La respuesta de Mark McCartin-Lim a ¿Cuáles son los 10 mejores algoritmos que todo ingeniero de software debe saber de memoria?

Debería poder hacer una autoevaluación de su nivel de comodidad con cada uno de los principios que enumeré. Tal vez use un sistema de puntuación para clasificar el nivel de comodidad de esta manera:

0 – Sin familiaridad
1 – familiaridad vaga
2 – Lo suficientemente familiar como para enseñarle el principio a otra persona
3 – Lo suficientemente familiar como para que pueda reconocer cómo se aplica el principio en muchos escenarios diferentes
4 – Has utilizado el principio para resolver problemas que nunca has visto antes

Para el tipo de problemas algorítmicos que obtendrá en las entrevistas, la primera mitad de la lista es lo más importante. Debes tener 2 y más en todo en la primera mitad. Debe ser bueno en esos principios, porque esa es realmente su base para comprender los algoritmos.

Una vez que esté seguro de tener una buena base, solo necesita practicar para resolver muchos problemas interesantes de algoritmos. Primero debe concentrarse en resolver los problemas correctamente en lugar de resolverlos rápidamente . La velocidad es importante para las entrevistas, pero eso debería venir después. El tipo de problemas que lo hacen realmente bueno con los algoritmos tarda días, si no meses, en resolverse. No digo que necesites ser tan bueno, pero trata de estirarte lo más posible. Si un problema desafía su mente, probablemente tome al menos un par de horas resolverlo usted mismo. Concéntrese en resolver problemas difíciles, porque una vez que pueda resolver los problemas con más dificultad que las preguntas de la entrevista, las preguntas de la entrevista no lo intimidarán tanto.

Después de resolver un problema, mire las soluciones de otras personas e intente simplificar su solución tanto como sea posible. Busque principios de alto nivel , quizás algunos de la lista que mencioné. Ser capaz de reconocer los principios de alto nivel probablemente será clave para hacerlo bien en una situación de presión de tiempo como una entrevista.

En cuanto a cómo obtener la práctica de resolución de problemas, puedo sugerir tres métodos además de la tutoría privada que mencioné anteriormente:

  1. Método de aula: encuentre una universidad con un sólido programa de CS y tome la clase de algoritmos allí (ya sea el nivel de pregrado o posgrado, según corresponda). Muchas universidades tienen formas de inscribirse en clases sin estar en un programa de grado.
  2. Método de autoaprendizaje: muchas maneras de hacer esto, pero si esta es su ruta preferida, le sugiero que elija la tumba clásica de Donald Knuth, The Art of Computer Programming . Después de todo, ¿por qué no aprender de un legendario gurú de algoritmos? Además, los libros de Knuth en realidad fueron diseñados para el autoaprendizaje, donde, como la mayoría de los algoritmos, los libros que encontrará como CLRS fueron diseñados para ser libros de texto en el aula.
  3. Método práctico: comience a construir cosas desde cero. Si tuviera que adivinar, la razón por la que probablemente hayas pasado 10 años como ingeniero de software sin ser bueno en algoritmos es probablemente porque no construyes las cosas desde cero. En su trabajo diario, probablemente haya utilizado docenas, si no cientos de bibliotecas. El uso de bibliotecas apropiadas puede ser una buena práctica como ingeniero de software, pero lo protege de la comprensión algorítmica. Es como construir una casa donde todos los componentes vienen premontados, por lo que nunca tendrá que preocuparse por martillar un clavo o cortar un trozo de madera contrachapada. Entonces, para su próximo proyecto, ensuciarse las manos, al construirlo en un lenguaje primitivo como C y no usar bibliotecas que no sean para cosas de interfaz y llamadas de sistema de bajo nivel. Te garantizo que esto te obligará a resolver problemas de algoritmos.

Finalmente, si necesita más práctica, pruebe TopCoder.

More Interesting

Tengo una entrevista para un consultor analítico con Peppers & Rogers y me van a dar un estudio de caso en vivo. ¿Cómo va a ser?

¿Por qué las entrevistas de trabajo de TI que involucran trabajo real son un desafío que se debe hacer en casa? ¿Qué está pasando?

¿Cómo debo responder la pregunta '¿Por qué elegirías la compañía ABC'?

Entrevista de Uber: ¿Cómo estimarías la probabilidad de coincidir con un UberPOOL?

¿Cómo se pueden descifrar las entrevistas de codificación de Facebook, Google y otras grandes compañías de software? Tengo un currículum muy normal y por debajo del par CGPA. Conseguí un trabajo en una startup. ¿Dónde debo hacer más proyectos (desafiantes) para construir mi currículum?

¿Cuál es la mejor manera de responder a la pregunta de la entrevista '¿cuánto tiempo le tomaría configurar un proyecto Java EE desde cero?'

¿Qué puedo hacer para superar la oferta de trabajo de CEO que rechacé hace cinco años, después de muchas otras entrevistas y ahora tengo 54 años?

Cómo prepararse para un puesto de desarrollador de Oracle en Google en 2 semanas

¿Cuáles son las preguntas interesantes que se hacen en una entrevista?

Estoy apareciendo para la entrevista de SAP fico en TCS. ¿Cuáles podrían ser las preguntas?

¿Qué debo hacer para ser seleccionado en cualquier entrevista?

¿Cómo debo prepararme para una entrevista que decidirá si recibo una beca?

¿Cuál es la mejor manera de prepararse para una entrevista de banca de inversión si no ha tomado una serie de clases de introducción financiera?

¿Cómo obtengo una entrevista para un ingeniero de software de compañías como Amazon si eres un recién graduado de una universidad de ingeniería mala en la India?

¿Cuáles son algunos qué hacer y qué no hacer para / en una entrevista en el campus?