Eu tenho que responder: "Todas as opções acima." As pessoas discutem se o código é uma arte, um ofício, uma disciplina de engenharia ou um ramo da matemática, e acho que é mais justo dizer que é um pouco de cada um. Assim, quanto mais técnicas você trouxer para o domínio da linguagem, melhor. Aqui está uma lista parcial:
-
Use o idioma todos os dias, todos os dias. Geralmente, isso significa estar empregado em tempo integral no idioma.
-
Leia tudo o que puder sobre o idioma. Especialmente, "melhores práticas" e expressões idiomáticas.
-
Participe de um grupo de usuários para conversar com outras pessoas sobre o idioma e o que eles fazem com ele.
-
Trabalhe com o código de outras pessoas! Não há maneira mais rápida de aprender o que não fazer em uma língua do que ter que limpar depois de alguém que fez algo horrível.
-
Suporte o código que você escreve - cada bug se torna um tour pelas suas piores decisões!
-
Estude ciência da computação e idiomas em geral
-
Aprenda um idioma muito diferente. Um grande elogio ao C seria uma linguagem funcional como o Lisp. Isso vai mudar a maneira como você pensa sobre sua linguagem procedural de dentro para fora.
-
Aprenda a usar as estruturas e APIs disponíveis para esse idioma.
-
Aproveite o tempo para fazer suas próprias experiências com o idioma. O SICP não é aplicável ao C, mas a atitude de aprender um idioma testando seus limites é muito produtiva.
-
Leia a história da língua para saber por que ela foi feita da maneira que é.
-
Participe de conferências para ouvir os autores de idiomas ou para ouvir o que os líderes do setor estão fazendo com o idioma.
-
Faça uma aula no idioma.
-
Ensine o idioma a outras pessoas (graças ao Bryan Oakley )
Em resumo, faça tudo o que puder imaginar. Não há como saber tudo sobre a maioria dos idiomas. Cada técnica de aprendizado que você usa traz uma perspectiva adicional para sua compreensão.