Embora eu possa codificar, ainda não tenho nenhuma experiência em trabalhar em grandes projetos. O que eu fiz até agora foi codificar pequenos programas que são compilados em questão de segundos (vários exercícios de c / c ++ como algoritmos, princípios de programação, idéias, paradigmas ou apenas experimentar APIs ...) ou trabalhar em alguns projetos menores que estavam feito em uma (s) linguagem (s) de script (python, php, js) em que não é necessária nenhuma compilação.
O problema é que, ao codificar em uma linguagem de script, sempre que eu quero tentar se algo funciona - eu apenas executo o script e vejo o que acontece. Se as coisas não funcionarem, eu posso simplesmente mudar o código e testá-lo novamente, executando o script novamente e continuar fazendo isso até obter o resultado desejado. Meu ponto é que você não precisa esperar pelo qualquer coisa para compilar e, por isso, é muito fácil usar uma grande base de códigos, modificá-la, adicionar algo a ela ou simplesmente brincar com ela - você pode ver as alterações instantaneamente.
Como exemplo, tomarei o Wordpress. É muito fácil tentar descobrir como criar um plugin para ele. Primeiro, você começa criando um plugin simples "Hello World", depois cria uma interface simples para o painel de administração para se familiarizar com a API, depois a cria e torna algo mais complexo, enquanto isso muda a aparência de algumas vezes .. A idéia de ter que recompilar algo tão grande quanto o WP repetidamente, após cada pequena alteração, para tentar "se funciona" e "como funciona / sente", parece ineficiente, lenta e errada.
Agora, como eu poderia fazer isso com um projeto escrito em uma linguagem compilada? Eu gostaria de contribuir com alguns projetos de código aberto e essa pergunta continua me incomodando. A situação provavelmente difere de projeto para projeto, onde alguns deles que foram pensados com sabedoria serão "modulares" de alguma forma, enquanto outros serão apenas um grande blob que precisa ser recompilado repetidamente.
Gostaria de saber mais sobre como isso é feito corretamente. Quais são algumas práticas comuns, abordagens e desenhos de projetos (padrões?) Para lidar com isso? Como essa "modularidade" é chamada no mundo dos programadores e para que devo pesquisar no Google para saber mais sobre isso? É frequente os projetos crescerem de suas proporções de primeiro pensamento que se tornam problemáticas depois de um tempo? Existe alguma maneira de evitar a longa compilação de projetos não tão bem projetados? Uma maneira de modulá-los de alguma forma (talvez excluindo partes não vitais do programa durante o desenvolvimento (alguma outra idéia?))?
Obrigado.