Read the history of the language to learn why it was made the way it is.Īttend conferences to hear the language authors speak, or to hear what industry leaders are doing with the language. SICP is not applicable to C, but the attitude of learning a language by testing its limits is a very productive one. Take the time to do your own experiments with the language. Learn to use the frameworks and APIs available for that language. This will turn the way you think about your procedural language inside out. A great compliment to C would be a functional language like Lisp. Study computer science and languages in general Support the code you write - every bug becomes a tour of your worst decisions! Work with other people's code! There is no faster way to learn what not to do in a language than to have to clean up after someone who did something awful. Join a users group to talk with others about the language and what they do with it. Usually this means being full-time employed in the language. As such, the more techniques you bring to mastery of the language, the better. I have to answer, 'All of the above.' People argue about whether coding is an art, a craft, an engineering discipline, or a branch of mathematics, and I think it's fairest to say it's some of each.