Estoy buscando recursos excepcionales, ya sea a través de la web o un libro que pueda explicar el por qué de la POO, la arquitectura web, los paradigmas web y la escala. ¿Cuál recomendarías?

El software es un problema multidimensional. Las empresas se preocupan por las siguientes cosas en diferentes grados (no es una lista completa):

  • Costo de desarrollo (generalmente considerado incorrectamente, porque los desarrolladores sin experiencia cuestan mucho más que los experimentados, durante la vida útil de un programa)
  • Mantenibilidad (a menudo se estima que al menos el 80% de la vida útil estará en esta fase)
  • Problemas objetivos de “rendimiento” (a menudo se pone demasiado énfasis en esto; generalmente se reduce a “no hacer nada estúpido”)
  • Fiabilidad / estabilidad
  • Costo de soporte (un UX terrible aumentaría los costos de soporte, incluso si el programa no muestra “defectos” per se).

Estos factores (y otros) son muy interdependientes.

Todavía sabemos muy poco acerca de cómo construir software que optimice tales factores, por lo que obtendrás muchas opiniones conflictivas, generalmente emocionales. Pero puede evaluar empíricamente diferentes métodos por ellos, incluidas todas las áreas mencionadas en su pregunta.

  • Si un enfoque conduce, por ejemplo, a altos costos y bajo mantenimiento (por ejemplo, código de procedimiento sin marco de espagueti), puede desalentar ese enfoque.
  • O, si algún enfoque conduce a sistemas frágiles y difíciles de depurar (por ejemplo, estado mutable compartido combinado con hilos), ese es un punto de datos negativo.
  • O si algún lenguaje de script tarda 5 segundos en un cálculo que necesita 200 ms, ese es otro punto de datos.
  • Si un desarrollador junior no se da cuenta de que una operación en particular necesita una transacción de base de datos, entonces se producen errores tangibles y medibles. Señalando de nuevo a suposiciones problemáticas y con suerte llevando a una corrección.
  • Y así; Puede encontrar criterios objetivos para evaluar cualquier enfoque.

Parte del significado de “experiencia” es que un desarrollador tiene una buena recopilación de datos sobre cómo interactúan los métodos y estos factores.