Aunque puedo codificar, todavía no tengo experiencia trabajando en proyectos grandes. Lo que hice hasta ahora fue codificar pequeños programas que se compilan en cuestión de segundos (varios ejercicios c / c ++ como algoritmos, principios de programación, ideas, paradigmas, o simplemente probar api ...) o trabajar en algunos proyectos más pequeños que fueron hecho en un lenguaje de scripting (python, php, js) donde no se necesita compilación.
La cuestión es que, cuando codifico en un lenguaje de script, cada vez que quiero probar si algo funciona, simplemente ejecuto el script y veo qué sucede. Si las cosas no funcionan, simplemente puedo cambiar el código e intentarlo nuevamente ejecutando el script nuevamente y seguir haciéndolo hasta que obtenga el resultado que quería. Mi punto es que no tiene que esperar cualquier cosa para compilar y por eso es bastante fácil tomar una gran base de código, modificarla, agregarle algo o simplemente jugar con ella: puede ver los cambios al instante.
Como ejemplo tomaré Wordpress. Es bastante fácil intentar descubrir cómo crear un complemento para él. Primero comienza creando un complemento simple "Hello World", luego crea una interfaz simple para que el panel de administración se familiarice con la API, luego la construye y hace algo más complejo, mientras tanto cambia la apariencia de un par de veces .. La idea de tener que volver a compilar algo tan grande como WP una y otra vez, después de cada cambio menor para intentar "si funciona" y "cómo funciona / siente" simplemente parece ineficiente, lento e incorrecto.
Ahora, ¿cómo podría hacer eso con un proyecto que está escrito en un lenguaje compilado? Me gustaría contribuir a algunos proyectos de código abierto y esta pregunta me sigue molestando. La situación probablemente difiere de un proyecto a otro, donde algunos de ellos que se pensaron sabiamente serán "modulares" de alguna manera, mientras que otros serán solo una gran gota que necesita ser recompilada una y otra vez.
Me gustaría saber más sobre cómo se hace esto correctamente. ¿Cuáles son algunas prácticas comunes, enfoques y diseños de proyectos (patrones) para hacer frente a esto? ¿Cómo se llama esta "modularidad" en el mundo de los programadores y qué debo buscar en Google para obtener más información al respecto? ¿Es frecuente que los proyectos crezcan a partir de sus proporciones de primer pensamiento que se vuelven problemáticas después de un tiempo? ¿Hay alguna manera de evitar la compilación prolongada de proyectos no tan bien diseñados? ¿Una forma de modularizarlos de alguna manera (quizás excluyendo partes no vitales del programa durante el desarrollo (¿alguna otra idea?))?
Gracias.