1 - Quando aprendemos lógica de programação é notavél que ela é ensinada de uma forma a mudar sua ótica de mundo, quando vemos um um desing de projeto, avaliamos formas de fazer o uso da lógica de forma "fragmentada", toda vez que vou começar um assunto novo é como se ele estivesse levemente desconectado da realidade, tal como estamos sendo letrados, onde parece que por já sabermos falar aquele conhecimento é inútil, foi neste sentido.

2 - Em compreender em quais casos é valido utilizar aquele conhecimento e não só usado para dizer "Olha, eu sei usar este recurso".

3 - Conceitos de privacidade em um código por exemplo é algo que me deixa meio confuso, pois se é tão simples editar um código como essa segurança se estábelece em um sistema, entendo parcialmente o que a máquina faz por trás, mas ainda sim me parece ser algo que conflita com a facilidade de editar um código o que tornaria ele inseguro apesar das premisas de segurança adotada.

4 - Usando um exemplo comum com iniciantes, quando temos um numero rasuavelmente grande de comparações normalmente utilizamos if de forma desenfreada, quando muitas vez um swite case pode ser mais eficas, sempre que vou estudar ou fazer algum programa e vejo algum trexo que funciona, mas me parece ter ficado exagerado na quantidade de código procuro por comandos que possam fazer o mesmo com menos escrita, para facilitar a leitura do código.

Não sei se consegui ser muito claro

1 - Você descrevendo me parece que você tem dificuldade em conectar um conhecimento novo a um conhecimento que você já tem. É isso mesmo?

2 - Entendo e acredito que isso tenha bastante relação com o comentário do raf. Você tem trabalhado em projetos pequenos e esse tipo de coisa (módulos e packages) faz muito sentido quando você trabalha em projetos maiores e com mais pessoas além de você.

3 - Quando você fala de privacidade, entendo que esteja falando de níveis de acesso (público, protegido e privado) e respondo com isso em mente. Caso não seja, por favor me corrija. A questão da privacidade (que também tem um impacto maior em projetos maiores) tem mais relação com a propagação de alterações. Se um método é privado sei que posso alterar ele com segurança pois não irá impactar outra parte do código fora da classe atual. Quando você altear um método público (tipo do parametro, quantidade de parametros, nome, retorno...) você precisa ajustar todo o código que usa aquele método e dependendo dos ajustes eles irão se propagar pela sua base de código. E isso tem um custo. Alterações demandam testes e muitas alterações demandam muitos testes.

4 - Entendo e sua lógica faz bastante sentido. Mas não entendi a conexão com a necessidade de evidenciar isso na forma de diagramas.

Em outras respostas você cita a necessidade de desenhar diagramas. Isso facilita o seu aprendizado e entendimento ? Ou é algo que você acredita que precisa fazer pois foi dessa forma que você aprendeu ?

1 - corretissímo, principalmente por não ter feito muitos projetos que exigam ser quebrados em menores parte para crescer. 2 - Consegui ter essa conciencia através da postagem. 3 - Capitou a ideia muito bem. 4 - A questão dos diagramas é algo que me facilita a não me perder, e sinto que isso pode me ajudara a criar programas mais complexos, que provavélmente pode começar a me ajudar na questão das abstrações, e também facilitaria na hora de tentar divulgar a ideia para tentar encontrar pessoas que estejam estudando temas parecidos ou pessoas dispostas a trazerem comentários de uma forma mais rápida quanto ao projeto e não necessáriamente o código.
Já pensou em contribuir com projetos open source? Aqui no próprio tabnews frequentemente aparece alguém que iniciou um projeto e solicita ajuda para evoluir. Penso que seria uma forma de você exercitar essa visão, ganhar mais experiência e enriquecer seu curriculo. Pelo que você fala, você estuda e escreve bastante código. Mas como programador passamos mais tempo lendo que escrevendo código. Principalmente código de outras pessoas. Acredito que isso vá te ajudar a dar sentido no conhecimento que hoje parece desconectado da realidade. Quanto aos diagramas já deu uma olhada no https://c4model.com/?
Que site sensacional, ainda não tinha visto. Ainda não participei de nem um projeto, justamente por não fazer parte de grupos, e não ter entendido como chegar a esses projetos, e alguns dos que eu conhecia senti receio de mexer pelo grau de complexidade, me da um pouco de nó por não conseguir ter uma certeza que to indo pelo caminho adequado. Os projetos opensource que aparecem por aqui, as pessoas costumam por no titúlo que se trata ou é necessário vasculhar? Pelo que consegui reuinir de informações até agora, me fizeram pensar em projeto que tenho interesse em trabalhar de forma open source, uma interface interativa para jogadores de Dungoes & Dragon, mas não conseguir identificar um padrão eficiente de desenvolvimento para seguir, algo que fizesse coessão com o desenvolvimento da ideia e a implementação. Em suma é um projeto relativamente simples, mas que tenho ciencia de que ele precisar ser bem modularizado e que exige uma nivel de privacidade adquado de informações.
Você não precisa ter receio de alterar. Não precisa colaborar de inicio, mas pode fazer fork ou simplesmente baixar o fonte do projeto na sua máquina. Ler, tentar entender como funciona, diagramar os componentes arquiteturais, o que são, como se comunicam, depurar o código, rodar os testes, rodar o sistema,dar uma olhada nas issues em aberto e tenta executar,dar uma olhada nas executadas e ver como foram executadas...enfim mexer no projeto vai te ajudar a expandir o conhecimento. E nada disso precisa sair da sua máquina.Não precisa subir suas alterações no ramo do projeto. Depois que tiver aprendido, você decide se quer colaborar ou não. Aqui ainda não vi um padrão no título dos projetos publicados, mas até mesmo o tabnews vc consegue baixar o fonte. Só procurar o link do github no rodapé. Segue alguns links: https://githubbrasil.com/ https://www.tabnews.com.br/jotavetech/fiz-um-jogo-open-source-para-ajudar-voce-a-praticar-sistemas-numericos https://www.tabnews.com.br/hagaka/onde-encontrar-projetinhos-para-colaborar `Não consegui identificar um padrão eficiente de desenvolvimento a seguir`. Uma sugestão que eu dou é começar rascunhando as telas. Identificando o que o usuário precisará saber e fazer. A partir daí identificar o que o sistema precisará ter para viabilizar a necessidade do usuário. Evita desenhar tudo primeiro para depois programar. Diagrama o suficiente para que tenha uma idéia clara de como irá proceder e uma vez que já tenha essa noção vc implementa. Não tenta fazer tudo certo de inicio. Usa a primeira versão para aprender alguma coisa. Depois refaz o projeto usando o que aprendeu na primeira versão (aquilo que o Fred Brooks chama de sistema-piloto).
Beleza, vou seguir nesta linha, e ser um pouco menos perfectonista. Vou pegar alguma programa já feito para estudar em cima tá bem.