¿Cuándo diría que un aspirante a programador está listo para comenzar a aprender y aplicar el texto de Introducción a los algoritmos (CLRS)?

Aprender y aplicar los algoritmos en el libro son dos tareas diferentes.

Aprender los algoritmos te enseña a pensar algorítmicamente y en términos de estructuras de datos.

Implementar los algoritmos significa aplicar teorías a la realidad, que siempre es muy difícil. Probablemente esté listo para replicar la mayoría de los algoritmos en ese libro en Python.

Pero la parte importante es saber cuándo usarlos y cómo. A veces solo necesita parte de un algoritmo, o una estructura de datos hecha de nodos que consiste en una estructura de datos extraña que se le ocurrió en la cabeza y que realmente no puede describir con palabras.

Los algoritmos en ese libro son muy teóricos y muy amplios. Lo que no los hace menos importantes. Mi punto es que, apréndalos y repítalos primero, puede estar muy lejos de usarlos en la práctica.

Por supuesto, depende del algoritmo y del objetivo.

Cuando comienza a comprender que “un algoritmo” simplemente significa “una forma de hacer “. Los algoritmos no son cosas de computadora. Los algoritmos no son una lista de cosas que aprendes, lo que aprendes es cómo escribir un algoritmo: IOW, cómo resolver un problema. Probablemente hay alrededor de 10–1,000 veces más algoritmos que programas. Cada programa tiene de algunos a muchos algoritmos. (Cuando ve una pregunta que pide “el algoritmo” para hacer algo, está viendo una pregunta que dice “No sé nada sobre programación”. No hay un algoritmo único para hacer algo, hay al menos miles).

Eso no está claro: hablar como alguien con experiencia en informática, que está programado de forma intermitente, pero que pasa la mayor parte de su tiempo trabajando a nivel de sistemas.

Nunca me he referido personalmente a CLRS, pero a veces me refiero a Knuth (el libro original de algoritmos), y la mayoría de las veces solo confío en encontrar una buena biblioteca para cosas rutinarias. Cosas más difíciles, es decir, algoritmos específicos del dominio, implica investigar la literatura específica del dominio, y es donde es más probable que uno desarrolle sus propios algoritmos mientras construye un sistema para resolver un problema específico.

Personalmente, considero que CLRS y Knuth son como el manual de CRC para matemáticas. Aprendes la clase de matemáticas y vas al libro cuando necesitas encontrar una fórmula específica: tu trabajo de clase es lo que te ayuda a descubrir lo que estás buscando y te ayuda a entenderlo una vez que lo has encontrado. CLRS y Knuth desempeñan un papel similar cuando estás buscando, por ejemplo, un algoritmo de clasificación, pero en estos días, es más probable que solo busques cualquier función de clasificación o biblioteca que sea estándar para el idioma en el que estás codificando. Los libros de referencia lo ayudan a comprenderlo.

More Interesting

¿Cuánto tiempo pasan los ingenieros de software tomando los requisitos del cliente?

¿Cuáles son algunas respuestas extrañas dadas por los estudiantes de ingeniería en orales, aulas o durante las vivas?

¿Debo perder el respeto por los ingenieros de software que usan Internet Explorer como su navegador predeterminado?

Si se le pidiera que clasificara a las empresas Google, Amazon, Facebook, Microsoft, LinkedIn, Twitter por prestigio para ingenieros de software, ¿cómo clasificaría?

¿Es cierto que para llegar al siguiente nivel como SDE (de SDE 1 a 2) en Amazon, tienes que trabajar los fines de semana, dedicar más de 9-10 horas de trabajo todos los días, ser propietario de un buen proyecto, ser muy bueno en operaciones, ser un buen mentor, influir en su equipo y ser conocido en su organización?

¿Por qué la probabilidad y las estadísticas son necesarias para la ingeniería de software?

¿Cuál es la dura realidad que un pasante de ingeniería de software debe conocer?

¿Cuál es el área de programación más accesible / empleable para una persona ciega? ¿Puedo hacer un desarrollo web / móvil del lado del servidor con Node o un idioma similar?

Como estudiante de ingeniero de software, ¿qué aplicaciones o sitios web puedo usar para mejorar?

¿Cómo puede mantenerse actualizado un probador?

¿Cuál es mi próximo paso como ingeniero de software?

¿Qué hacen los diferentes ingenieros? ¿Cómo se diferencian entre sí?

Soy un aspirante a ingeniero de software. ¿Hay alguien que esté listo para ser mi mentor?

¿Cómo es trabajar en Visa en India como nuevo ingeniero de software graduado?

¿Cuáles son algunas de las compañías tecnológicas más grandes para las que cualquier ingeniero de software aspiraría a trabajar?