¿Qué libros debo leer para convertirme en un mejor ingeniero / desarrollador de software en general?

Si recién comenzara con una sólida base técnica y quisiera aprender principios generales que me ayudarían en una amplia gama de tiendas y dominios a lo largo de mi carrera, estas son las cosas que me gustaría aprender, en particular orden:

  • Agile / Scrum, especialmente si quieres trabajar en una tienda corporativa.
  • Desarrollo guiado por pruebas. Si su tienda aún no está haciendo esto, ¡enséñeles cómo!
  • Cómo refactorizar su código (y el código de otros) a medida que avanza. Escribir código más lento, pero mejor.
  • Cómo escribir código mantenible. Te agradecerás cuando tengas que leer tu propio código después de unos meses.
  • Cómo comunicarse de manera efectiva, ya sea verbalmente, en especificaciones técnicas, correo electrónico, mensajería instantánea o lo que sea.
  • Cómo trabajar junto con personas de una amplia gama de orígenes y culturas.
  • Y guardando lo mejor para el final: cómo trabajar con personas más inteligentes que usted. Es la mejor forma de aprender.

Bueno, he encontrado una lista mágica que he estado leyendo durante un tiempo y estoy mejorando y su aparente día a día

Conceptos de creación de software (# 1-2)

1. Desarrollo guiado por pruebas: escribir pruebas automatizadas para descubrir requisitos, guiar el diseño de software, habilitar la refactorización y evitar regresiones.

2. Refactorización: evolución del diseño de software.

Conceptos de diseño de software (# 3-10)

3. Diseño del código: Escritura de intención que revela código.

4. Diseño de componentes (orientado a objetos): gestión de interfaces para gestionar la complejidad.

5. Diseño de dominio: software de moldeo para adaptarse a su dominio.

6. Diseño del sistema: vistas holísticas de la estructura y las cualidades de un sistema.

7. Diseño del sistema (disponibilidad): diseño para la variación ambiental y las condiciones de falla.

8. Diseño del sistema (seguridad): protección de datos y recursos.

9. Código heredado: ¿Qué sucede cuando una base de código no se prueba, es grande y está acoplada? ¿Cómo puedes arreglarlo?

10. Diseño de la experiencia del usuario: ¿Cómo experimentan los usuarios nuestros productos y servicios?

Conceptos de entrega de software (# 11-16)

11. Lean Systems: organización de un sistema humano eficiente y adaptativo.

12. Organización del equipo ágil: organización del desarrollo incremental e iterativo de productos incrementales.

13. Diseño de requisitos: equipos multifuncionales que diseñan software en colaboración.

14. Prueba de productos y servicios: ¿Nuestros productos y servicios ofrecen lo que nuestros clientes necesitan?

15. Entrega continua: canalización automatizada para integración, prueba y lanzamiento.

16. Desarrollo del cliente: creación de valor para el cliente.

fuente: Lista de lectura de un desarrollador de software

Cómo está evolucionando la programación de computadoras, creo que hay que leer sobre arquitecturas de software; La ingeniería de software se relaciona con varios campos donde la programación a veces deja lugar a la administración. Existen varios libros, aunque puede crear uno en Wikipedia utilizando una lista de las principales arquitecturas de software y luego seguir con los temas de los cursos de ingeniería de software de Oxford. Creo que mejorará mucho y tenga en cuenta no desviarse. Suerte.

More Interesting

¿Cuáles son los mayores problemas para un Gerente de proyectos técnicos en desarrollo de software o desarrollo web?

¿Puede un estudiante de CS construir productos de software de extremo a extremo que se puedan enviar por sí mismo? Si no, ¿por qué?

Si los sistemas NewSQL funcionan como se anuncia, ¿por qué alguien debería usar un DB NoSQL?

¿Cuáles son las estrategias para migrar un equipo de Subversion a otro sistema de control de fuente?

¿Cuál es la IA más inteligente para descargar en este momento?

¿Qué opinas del examen de Ingeniería Informática NCEES PE?

Cómo mejorar en la preparación de entradas en mi ágil equipo

¿Qué características son vitales o que faltan en los lenguajes de programación en general?

¿Cuáles son las similitudes y diferencias entre un diagrama de flujo de datos y un caso de uso?

Dada la falta de empresas de Internet de consumo altamente exitosas en la pila .NET, ¿por qué Microsoft no hace un mayor esfuerzo para lograr la adopción de .NET entre las nuevas empresas emergentes orientadas al consumidor?

¿Cuál es la diferencia entre la programación de pares y el desarrollo de software ágil?

¿Sharepoint 2013 es la herramienta adecuada para el trabajo?

¿Qué se entiende por back-end en el trabajo de proyectos de software?

¿Cuál es la diferencia entre la actualización de software y la actualización del sistema?

¿Hay alguna herramienta que me permita crear fácilmente un diagrama de arquitectura de software interactivo?