De hecho, usas algoritmos que aprendes en la universidad en tus entrevistas de trabajo, pero más allá de eso, generalmente esas cosas son completamente inútiles, hasta que se vuelven súper importantes, momento en el que te sientes realmente genial.
A modo de ejemplo, en la universidad era un estudiante de CS con una especialización en matemáticas, y mi concentración en CS era criptografía. Eso significaba que podía entender la teoría detrás de la mayoría de los algoritmos criptográficos, implementar en el código algunos de ellos (aunque versiones más simples de todo hasta AES, que hicimos un poco, pero no todos, a mano), y en general resolver problemas . No estoy muy actualizado en esto, porque nunca lo usas. La regla n. ° 1 de la criptografía NUNCA RODA SU PROPIO ALGORITMO CRIPTOGRÁFICO, porque una buena criptografía es difícil y es trivial cometer un error que nadie atrapará.
Mi primer trabajo fuera de la universidad fue en una empresa de seguridad de la información, y me inscribí debidamente en la lista de correo de criptografía. Había algunas personas realmente inteligentes allí, e hicimos una cantidad muy pequeña de trabajo criptográfico, porque los trabajos para consultores de seguridad en criptografía son bastante bajos, para ser honesto. De todos modos, finalmente recibí un correo electrónico sobre el correo criptográfico por última vez haciendo algunas preguntas extrañas sobre una implementación de RSA en C ++. Una cosa condujo a otra, y me pusieron brevemente en un proyecto para un criptosistema especial que estábamos investigando, realizando un criptoanálisis en el algoritmo e intentando hacer agujeros en la implementación. Ese fue probablemente el mejor proyecto en el que he trabajado.
- ¿Cuál es la mejor forma / algoritmo para detectar un patrón en una serie de tiempo?
- Cómo calcular el número 50 usando números binarios
- ¿Qué algoritmos avanzados usa un sitio como Facebook?
- ¿Se puede estafar el algoritmo de Zoopla para inflar el precio de una propiedad?
- ¿Es posible aprender automáticamente los diferentes métodos y algoritmos de aprendizaje automático?
Ahora, la forma en que usamos algoritmos es principalmente similar a esta historia. En términos generales, tenemos estructuras de datos que ya existen y tenemos algoritmos que ya existen. Sin embargo, dependiendo de cuál sea su trabajo y lo que esté haciendo, es posible que deba diseñar un sistema. En ese punto, puede aprovechar sus estructuras de datos y conocimiento de algoritmos para tomar buenas decisiones. Si, por ejemplo, la recuperación en orden es importante, puede construir un sistema que tenga una clasificación rápida (o clasifique implícitamente los datos). Por otro lado, si necesita algo súper rápido, puede implementar muchas cosas O (1). Muy raramente necesitará implementar un algoritmo real desde cero. Si está interesado en idear / implementar algoritmos, le recomiendo lo siguiente:
- Obtenga un título en CS, luego obtenga un doctorado en CS y obtenga un trabajo de investigación o enseñanza donde todo lo que haga es algoritmos. No ganará tanto dinero como un ingeniero de software (muy probablemente), pero hará exactamente lo que quiere hacer.
- Contribuya a proyectos de biblioteca de código abierto para el idioma que elija. Es bastante raro que implemente un algoritmo particular en su trabajo real, pero en el mundo de las bibliotecas de código abierto o de terceros, eso es útil. Podría crear fácilmente un paquete de Python para la teoría de grafos, o álgebra abstracta, o lo que sea, que tome ciertas entradas, aplique un algoritmo y produzca salidas. También puede construir adaptadores todo el día para ellos. Ah, y si las personas en el trabajo saben que usted hace esto y surgen problemas cuando buscan un algoritmo (lo cual es raro, pero * puede * suceder), entonces es probable que se siente en la mesa.
¡La mejor de las suertes!