La buena publicación de Michael ha tocado algunos puntos importantes. Además, aquí hay una lista algo pragmática de herramientas que sugeriría conocer. Estas sugerencias se derivan principalmente de una breve experiencia trabajando como “científico de datos”.
- Tratabilidad computacional: si diseña un modelo, ¿tiene una idea de cuán eficiente es ajustarlo, además de su precisión? Los estadísticos suelen estar fijos en cuán “bueno” es un modelo (y definir rigurosamente lo que eso significa), pero las compensaciones entre precisión y eficiencia pueden ser importantes en un producto en vivo. (Es decir, si su metodología implica probar cada combinación de algo de un conjunto finito, debería saber intuitivamente que se encuentra en una complejidad exponencial). es la conexión con la teoría de la información algorítmica que le permite probar cosas como límites inferiores en la complejidad. Pero no estoy seguro de que el nivel de tecnicidad tenga relevancia en un entorno práctico. Podría estar equivocado).
- Estructuras de datos: ¿tiene un conocimiento práctico de estructuras de datos básicas como montones, pilas, listas y tablas hash? Se sorprenderá de cuánto tiempo puede desperdiciarse implementando métodos de manera ineficiente para eliminar, reorganizar y masajear los datos.
- Bases de datos relacionales: Estar muy cómodo con las bases de datos y la teoría asociada puede proporcionar grandes ganancias. Poder subseleccionar rápidamente una porción de datos de una gran base de datos es vital para su flujo de trabajo. Por ejemplo, si se inspira a mirar los datos de alguna manera, no quiere perder el tiempo teniendo que recordar la sintaxis SQL. Es algo mundano, pero te sorprendería la cantidad de personas brillantes con las que me he encontrado que tienen problemas simplemente para recuperar datos. También es posible que desee conocer los matices de las principales opciones de las posibles bases de datos que está considerando almacenar sus datos; es decir, ¿preferiría algo dinámico como MongoDB o estático como PostgreSQL, y cuáles son las compensaciones entre elegir uno versus el otro?
- Conocimiento práctico de Linux: esto está vinculado al punto anterior; Un conocimiento práctico de los comandos de Linux / Unix puede ayudarlo a manejar los datos de manera eficiente.
- Comodidad con un lenguaje de scripting de alto nivel: idealmente, debería sentirse bastante cómodo con al menos un solo lenguaje de scripting para poder hacer cosas rápidamente (digamos, raspar datos e ingresar cosas en una base de datos). Personalmente, prefiero Python debido a la gran cantidad de paquetes disponibles, pero el idioma en particular no es tan importante. Al final, la implementación más robusta y eficiente probablemente será en algo así como C ++, pero el conocimiento de un lenguaje de script puede ayudarlo a producir prototipos.
Creo que la mejor manera de recogerlos si no tiene capacitación formal es definir un problema simple y escribir código para resolverlo. En este proceso, te darás cuenta de qué detalles de los artículos que he mencionado necesitas trabajar.
- ¿Puede un estudiante de informática obtener un buen trabajo si no programa en su tiempo libre?
- ¿Cuál es el alcance futuro del ecosistema Mainframe? Estoy entrenando en esto en TCS. ¿Tengo un buen futuro?
- ¿Cuál es el mejor campo en ingeniería informática?
- ¿Qué pasos tendré que tomar para obtener un trabajo de programación sin un título en informática?
- ¿La informática no es lo suficientemente buena?