¿Estoy hecho para la informática?

No estoy totalmente seguro de estar calificado para responder a esta pregunta, pero tuve un par de pensamientos así que sentí que podría ser útil.

En primer lugar, creo que hay una gran diferencia entre la CS académica y la CS de la industria. Si te gusta el CLRS, encuentras que te pica probar los tiempos de ejecución del peor caso de varios algoritmos o desarrollar métodos más rápidos de búsqueda y optimización, la CS académica es más tu inclinación. Sin embargo, la mayoría de las personas que conozco que se dedican a la informática, a menudo sienten un pequeño entusiasmo por estos temas por un sentido general de curiosidad intelectual, pero simplemente tomaron una clase de Algoritmos y Estructuras de Datos simplemente porque era un requisito de su especialidad. Por lo que sé, ninguna de estas personas tuvo problemas para encontrar prácticas o experiencias laborales interesantes y satisfactorias por no haber disfrutado a fondo de cada página impresa en CLRS, y sinceramente dudo que muchos de los mejores programadores hayan encontrado en CLRS su primer amor. Dicho esto, he oído que un texto como CLRS se vuelve más gratificante la segunda o incluso tercera vez, después de la construcción de la experiencia de codificación del mundo real que se relaciona con los temas tratados en el libro, así que yo no perdería la esperanza todavía.

En segundo lugar, yo también afirmaría que incluso en la industria, hay una variedad de actividades que la gente "CS" persigue, ya sea el desarrollo y la publicación de aplicaciones como ya has hecho, la construcción de proyectos existentes en Google o Microsoft, o el análisis de datos a gran escala en las empresas de todo tipo en estos días. Y lo que es más importante, muchos trabajan en startups que generalmente persiguen productos del tipo software-como-servicio, y para cualquiera de estas vocaciones, y especialmente para la última, la fluidez y la profunda comprensión de los lenguajes en cuestión parecen ser un indicador mucho mejor del disfrute y el éxito que el amor por el CLRS. Por supuesto, debes estar familiarizado con las ideas que abarcan los algoritmos y cómo se relacionan entre sí (es decir, empezando por la ordenación hasta la búsqueda de amplitud, los algoritmos de grafos, la aleatorización, etc.); y, lo que es más importante, debes entender cómo se implementan y utilizan a menudo estos algoritmos para resolver diversos problemas a los que se enfrentan los desarrolladores. Esto no implica, sin embargo, que encuentres la demostración del invariante de bucle de algún algoritmo.

Personalmente, no soy tanto un ingeniero de software como un científico que hace uso de la CS y de las herramientas computacionales para manipular y dar sentido a los big data. En este sentido, no he tenido que implementar muchos de los algoritmos que he utilizado; la mayoría de los lenguajes populares tienen implementaciones más eficientes que cualquiera que pudiera codificar por capricho. Sin embargo, me ha resultado útil entender cómo funcionan y, lo que es más importante, la amplitud de los diversos usos a los que puede someterse cada algoritmo. Este último punto, creo, es la parte más crucial del aprendizaje de cualquier tema en CLRS (o, se puede argumentar, de muchas cosas a nivel universitario); saber cómo cada algoritmo, o, en realidad, una forma de resolver problemas, puede proporcionar una perspectiva diferente para resolver un problema espinoso ha sido extremadamente útil tanto para desarrollar código como para hacer el mejor uso del código de los demás.