Los trabajos de investigación de CS son extraordinariamente valiosos y útiles para el público al que están destinados. Pero esa audiencia, en general, no es gente que “quiere escribir un mejor código”.
Entonces, si su objetivo es escribir un mejor código, entonces, casi con seguridad, como ya lo descubrió, leyendo trabajos de investigación de profesores universitarios y doctores. No es probable que los estudiantes sean el mejor uso de su tiempo.
Si su objetivo es “escribir un código mejor”, le servirá mejor leer libros y artículos de autores como Robert C. Martin, Sandi Metz, Kent Beck, Martin Fowler y otros escritores que han hecho “ayudar a las personas escribir un mejor código “, una parte central de su misión.
- Si empiezo a leer artículos científicos, ¿cuáles son los documentos que deben leerse sobre la conversión de 'discurso a texto'?
- ¿Habrá informáticos en 2047?
- ¿Cuáles son los mejores recursos para aprender visión por computadora para alguien con experiencia en álgebra lineal y de probabilidad (y un poco en aprendizaje automático)? El libro "Visión por computadora: algoritmos y aplicaciones" no es muy amigable para principiantes.
- ¿Quiénes son algunos grandes científicos informáticos con una sólida formación en física?
- ¿Cuáles son los beneficios de aprender informática teórica?
También trato de trabajar con estudiantes en mis clases de programación en UCSB para ayudarlos a escribir un mejor código. También tengo bastante claro que esa actividad no es realmente un tema de “informática central”. Algunas personas llaman a eso “Ingeniería de software”. Prefiero el término emergente “Code Craftsmanship”, o el término más neutral de género “Code Craft”.
Entonces, si la investigación de CS NO se trata de escribir un mejor código, ¿de qué se trata?
Les digo a mis alumnos que la informática es el estudio de abstracciones y algoritmos. La investigación de CS generalmente implica encontrar nuevas abstracciones y nuevos algoritmos para resolver problemas.
Por ejemplo, la investigación en Machine Learning podría centrarse en formas de hacer que un algoritmo de aprendizaje automático (por ejemplo, para la identificación de objetos en fotografías) sea más preciso (es decir, cometa menos errores) o sea más fácil de entrenar (es decir, no tiene que darle tantos ejemplos de fotografías etiquetadas antes de que pueda comenzar a identificar objetos por sí mismo).
Llevar a cabo dicha investigación generalmente implicará escribir mucho código. Por lo tanto, los investigadores de CS deben ser buenos para escribir código, o deben tener colaboradores o ayudantes que sean buenos para escribir código. Pero “escribir un código mejor”, per se, no es el objetivo de la investigación de CS.
Hay algunos investigadores de CS en áreas particulares de investigación de Ingeniería de Software que hacen de la calidad del código su especialidad.
Algunos investigadores de CS también son codificadores sobresalientes. Y algunos proyectos de investigación de CS también producen piezas de software de código abierto de larga duración como subproducto de la investigación.
Sin embargo, el código, per se, NO es el objetivo de la investigación de CS. El objetivo es obtener nuevos conocimientos sobre abstracciones y algoritmos útiles.
Para la mayoría de los investigadores de CS, el código es solo un medio para un fin, por ejemplo, para probar dos estrategias diferentes de reemplazo de caché, o dos formas diferentes de optimizar el código de máquina producido por un compilador, o recolectar basura en la JVM, o diseñar un nivel múltiple red neuronal
Desde el punto de vista de la investigación de CS, el código utilizado para probar un enfoque particular podría ser “Código limpio” (en el sentido del famoso libro de Martin Fowler), en cuyo caso podría ser lanzado como un proyecto útil de código abierto, y ese proyecto podría conseguir que los autores tengan más fama y reconocimiento que sus documentos de conferencia y artículos de revistas.
O bien, el código podría ser algo que se integre rápidamente para completar el trabajo, lleno de antipatrones y malas opciones de diseño (desde el punto de vista del mantenimiento del software a largo plazo).
Lo que le importa al investigador de CS, por lo general, es: qué algoritmo produce los mejores resultados. El algoritmo es lo que se revisa y publica por pares, no el código.
Espero que esto le ayude a entender por qué, si está buscando ayuda para mejorar sus habilidades de codificación, los documentos de investigación de CS son el lugar equivocado para buscar.