¿Cuáles son los trabajos de investigación que un graduado de CS debería haber leído antes de seguir una carrera como desarrollador de software?

¿Trabajos de investigación? Ninguno, de verdad.

Usted ha dicho que está siguiendo una carrera como desarrollador de software, no como informático. El desarrollo de software (ingeniería) implica la aplicación de la teoría. Es importante tener en cuenta que las teorías existen y cómo / cuándo deberían aplicarse, pero no se requiere una comprensión profunda de la teoría para ser un desarrollador de software exitoso.

Recuerde: las responsabilidades principales de los desarrolladores de software son diseñar, construir y entregar un producto que satisfaga las necesidades de los usuarios, que haga lo que se pretende, y entregarlo de manera oportuna . La mayoría de las veces eso significa que el desarrollo de software es un proceso iterativo: diseñar, construir, enviar a los usuarios, recopilar comentarios, repetir, por lo que cuanto antes el producto esté en manos del usuario, mejor. Un enfoque en lo teórico puede atraparlo en la búsqueda de la perfección, que es una receta para el desastre.

¿Libros de referencia que deberían estar en su estante? Varios.

  • El arte de la programación de computadoras (Knuth)
  • El programador pragmático (Hunt, Thomas)
  • Patrones de diseño (Gamma, Helm, Johnson, Vlissides)
  • Código limpio: un manual de artesanía de software ágil (Martin)

Hay muchos otros, como estoy seguro que otros sugerirán, pero estos son algunos buenos.

No son trabajos de investigación, pero antes de comenzar una carrera práctica, recomiendo lo siguiente:

The Mythical Man-Month: Ensayos sobre ingeniería de software, edición de aniversario (2da edición)

Desarrollo de software ágil con Scrum (serie en desarrollo de software ágil)

Entonces, qué otros libros dependen de qué tipo de código escribirás. Cualquiera que vaya a escribir código Java debería leer

Java efectivo (2da edición)

Si vas a escribir C / C ++ lee

C ++ efectivo: 55 formas específicas de mejorar sus programas y diseños (3a edición)

Estos son dos que he encontrado útiles:

Estilos arquitectónicos y el diseño de arquitectura de software basada en red
http://users.ece.utexas.edu/~per

Disertación de Roy Fielding, que describe lo que es REST. Es muy legible.

Métricas y leyes de la evolución del software
http://users.ece.utexas.edu/~per

Para ser sincero, esto es algo interesante. Solo creo que los dos primeros representan la naturaleza de los sistemas complejos, ya que las leyes restantes parecen consecuencias de cómo se construye el software. Una de las cosas que encuentro interesantes es que está muy cerca del terreno del que habla el desarrollo ágil y esto se inició en 1974.

El documento de 1986 de Fred Brook sobre No Silver Bullet es una lectura recomendada también.

Lea más sobre el artículo en Wiki en http://en.wikipedia.org/wiki/No_

Citas notables:
“Brooks hace una distinción entre la complejidad accidental y la complejidad esencial, y afirma que la mayor parte de lo que los ingenieros de software ahora hacen está dedicado a lo esencial, por lo que reducir a cero todas las actividades accidentales no dará una mejora de orden de magnitud”.

Sin embargo, el documento es parte del Mes del Hombre Mítico que ya se ha mencionado anteriormente.

Sé del artículo del blog de Steve Yegge.

PageRank y Dynamo son interesantes (y vale la pena leerlos) pero no se olvide de algunos artículos clásicos que no son de investigación

La declaración de GoTo se considera dañina
La catedral y el bazar
El mes del hombre mítico
Código completo

De hecho … http://en.wikipedia.org/wiki/Lis

Toda la página es útil, pero estos son los temas generales de ingeniería de software.

More Interesting

Estoy terminando un master en econometría, pero también me gustaría trabajar en problemas de ciencia (biología como primera opción). ¿Qué debo hacer para tener una opción de cambio en el futuro?

¿Qué campo de investigación en Ciencias de la Computación puede perseguir un graduado que no sea CS que trabaje en TI?

¿Las publicaciones innovadoras tienden a ser publicadas por unos pocos o muchos autores?

¿Cuáles son los recursos para principiantes para obtener una experiencia práctica al usar algoritmos de aprendizaje automático en un conjunto de datos recopilados?

¿Qué campo de la informática se ocupa de los lenguajes humanos?

¿Cuáles son los mejores métodos y herramientas para diseñar una interfaz para una aplicación de investigación científica?

¿Cuáles son algunas buenas implementaciones de LSH?

¿Cuál es la diferencia entre la complejidad del tiempo promedio y la complejidad del tiempo esperado?

¿Qué tipo de trabajo de investigación se realiza en informática en la Universidad Nacional de Singapur (NUS)?

¿Cuáles son algunas direcciones en la investigación en informática que vale la pena seguir?

¿Cuáles son algunos lenguajes dinámicos de grado de investigación?

¿Cuáles son las áreas de alcance para la investigación en inteligencia artificial (IA) para un estudiante de informática? ¿Qué hay realmente dentro de la IA?

¿Cómo mejoran los algoritmos de compresión?

Cómo hacer investigación en informática si vivo en un país donde la investigación es lo último que hace la universidad

Computación de alto rendimiento: ¿Cuáles son las principales diferencias en las clases de problemas que pueden acelerarse de manera efectiva utilizando GPGPU (por ejemplo, CUDA), multiprocesamiento simétrico (por ejemplo, OpenMP) y paso de mensajes (por ejemplo, MPI) respectivamente?