¿Por qué la informática teórica es tan seca en los trabajos, a excepción de la academia? Aunque todas las empresas se enfrentan a desafíos, no hay una guerra muy reñida contra problemas difíciles, y las personas tienden a elegir la forma fácil de resolver cada problema.

Esto es como preguntar: “Realmente quería especializarme en resolver crucigramas, pero todos en la industria editorial se centran en los problemas ‘fáciles’ de escribir artículos y libros”.

La informática teórica tiene muy poco que ver con la informática práctica en la industria s / w per se . Es una rama de las matemáticas que, como la teoría de números, a veces tiene relevancia para problemas prácticos, y otras veces se apaga y hace lo suyo. También estoy en desacuerdo con Ghalib: la práctica no se queda atrás de la teoría por algunos años. Eso es simplista y supone que van en la misma dirección y que uno es “mejor” que el otro. Tampoco es verdad. Hay áreas donde la práctica es mucho más sofisticada y áreas donde la teoría es más refinada. También hay muchas áreas donde los dos simplemente no son relevantes entre sí.

La práctica puede informar la teoría y viceversa, y el retraso en los campos de superposición puede ser de meses a años y décadas. Conozco algunas áreas problemáticas en la industria que podrían ver mejoras aplicando la tecnología CS teórica de 60 años de programación lineal. Hay otras áreas, como el diseño UX, donde los pioneros de la industria están a pasos agigantados por delante de cualquier cosa que los teóricos hayan codificado y formalizado.

Entonces, ¿por qué las empresas no priorizan la aplicación de la teoría donde hay una superposición y la práctica se retrasa?

Su pregunta contiene la suposición de que sabe dónde están los problemas difíciles. Posiblemente eso sea cierto. Su error radica en asumir que esos también son los problemas IMPORTANTES.

La industria no está haciendo lo que cree que debería, porque en la industria, no resuelve ningún problema más allá del nivel en el que se traduce en un mejor rendimiento general. No resuelves los problemas difíciles. Resuelves los importantes. Te detienes en “lo suficientemente bueno” en cada problema, EXCEPTO el más importante, porque ese es el que limita el rendimiento general. Cuando las personas con su enfoque comienzan a dirigir industrias, las empresas comienzan a declararse en quiebra. No lo digo de mala manera. Solo que las personas adictas al uso de sus herramientas favoritas a menudo terminan resolviendo problemas irrelevantes solo para usarlos.

Incluso si pudiera (por ejemplo) mejorar el rendimiento de un sistema logístico 10x aplicando un algoritmo teórico simple de CS, no tiene ningún sentido hacerlo si no afecta el resultado final. Esto se conoce como el fenómeno del “cuello de botella en movimiento”. No tiene sentido optimizar su cadena de suministro para una entrega más rápida si su comercialización no está produciendo realmente la demanda que requiere CUALQUIER entrega. Perder dinero en la cadena de suministro en ese momento es más que inútil, es contraproducente, ya que estaría acumulando inventario MÁS RÁPIDO. Lea El objetivo de Eli Goldratt para comprender cómo funciona esto.

Si alguna vez ha trabajado en problemas industriales, se daría cuenta de que la complejidad computacional o la falta de un buen algoritmo es solo uno de los millones de lugares donde el cuello de botella en una empresa puede encontrarse en un momento dado. El problema principal podría ser la caída de la cuota de mercado debido a un nuevo competidor, proveedores poco confiables, fallas en los equipos, etc.

Te conviertes en un generalista y ayudas a resolver los cuellos de botella donde sea que estén, o esperas hasta que tus habilidades se vuelvan relevantes cuando el cuello de botella se traslade a tu área de especialización.

Incluso dentro de la industria informática, el cuello de botella se encuentra ocasionalmente en la base fundamental de CS. La calidad de búsqueda NO siempre es el problema n. ° 1 en Google. La calidad de las recomendaciones NO siempre es el problema n. ° 1 en Netflix.

Si REALMENTE desea tener un impacto utilizando CS teórico, eche un vistazo a diferentes industrias e identifique los problemas de cuellos de botella con los que cada uno está luchando. Si alguno de ellos parece que la teoría podría proporcionar el avance necesario, hágalo. Puedes esperar mucho tiempo.

Es fundamental comprender que la informática teórica desempeña un papel muy importante en el campo científico de la informática. Los informáticos teóricos están interesados ​​principalmente en resolver problemas a través de muchos métodos diferentes. A menudo, las personas etiquetarán a los teóricos como “sin experiencia en codificación” cuando muchos tienen más experiencia que incluso el programador típico. La informática teórica es un campo científico, y los investigadores están tratando de resolver y probar resultados en nombre de la ciencia, no del todo poderoso por lo general. Esto no sería diferente a cualquier otro campo científico. La única diferencia es que es muy incomprendida debido a su complejidad y al nombre del campo. Por lo general, las personas que no OBTENEN ciencias de la computación solo piensan que la ciencia de la computación se trata de computadoras, lo que definitivamente no es solo eso y se trata principalmente de Computación y las ramas entre Fundamentos de Matemáticas con gran relevancia para Matemáticas Discretas. Esta investigación puede retrasarse debido a muchas razones, algunas de las cuales son solo que la industria puede no verlas tan simples de implementar como las personas que trabajan en la industria pueden no tener la habilidad suficiente para comprenderlas. En general, la industria se trata de crear software que satisfaga las necesidades de algún nicho o grupo, mientras que la investigación persigue objetivos científicos, dos cosas diferentes en general. Algunas compañías tendrán ambos, pero aún así es importante comprender que la programación no es CS, es decir, una aplicación de los conceptos CS de lenguajes de programación.

Creo que esta es una excelente pregunta. Me gustaría estar en desacuerdo con muchas de las otras respuestas aquí, que ponen gran énfasis en el hecho de que la informática teórica es (por definición) teórica.

Comparar:

  • Si obtienes un Ph.D. En finanzas matemáticas, es probable que un banco de inversión le ofrezca un trabajo, incluso si pasó tiempo pensando en cuestiones teóricas y no sabe lo primero sobre el comercio.
  • Si obtienes un Ph.D. en estadística, es probable que reciba ofertas de empresas dedicadas a la práctica de la estadística. Este es el caso incluso si su Ph.D. fue completamente teórico y nunca has visto datos del mundo real.
  • Si obtienes un Ph.D. en teoría de la comunicación (es decir, teoría de la información, teoría de la codificación, etc.) es probable que reciba ofertas de empresas de comunicación como Qualcomm y AT&T, incluso si su tesis implicara probar teoremas sobre canales de comunicación que no se pueden construir en un futuro cercano.

En cada uno de estos casos, los profesionales se dan cuenta de que existe un cuerpo teórico de conocimiento que se puede extraer para obtener información útil. Es por eso que están dispuestos a contratar teóricos a pesar de la pronunciada curva de aprendizaje. Esperan obtener su regreso más tarde, tal vez una vez que el teórico que contratan haya entendido los problemas que enfrentan y pueda recurrir a su experiencia para ofrecer sugerencias innovadoras.

Pero:

  • Si obtienes un Ph.D. en informática teórica pero tiene una experiencia cercana a cero escribiendo código, tendrá problemas para encontrar trabajo en compañías de software. Esto es así a pesar de que las compañías de software de primer nivel como Facebook presumiblemente tratan problemas algorítmicos a diario.

¿Cómo se explica la diferencia? ¿Por qué los profesionales consideran valioso el conocimiento de los expertos en algunas materias teóricas y matemáticas pero no en informática teórica?

Mi suposición: tiene que ver con el desinterés agresivo en cuestiones prácticas que impregna gran parte de la comunidad teórica de la informática. No confíe en mi palabra: lea lo que David Karger, un profesor de informática del MIT cuyo trabajo abarca la teoría y la práctica, tenía que decir al respecto: http://myighteouscoin.blogspot.com