So when did you feel comfortable using your programming language of choice and how did you learn it?
My language of choice is C++ (or more lately C#).
How I learned C++:
- Learned some programming and software development/engineering (in a C-like language), while employed at the Canadian equivalent of Bell Labs
- Did some years of assembly-language programming for DOS
- Did some years of C-language programming
- Read a book (Thinking in C++) which explained, incrementally, the features which C++ adds to C
- Studied the above book in an online forum: a group of people (some of whom already expert) all reading and discussing one chapter per week, and patiently answering each others' (and my) questions (which included questions about OOP) -- after finishing this book I was able to understand the syntax of C++, i.e. to read C++.
- Practiced coding in C++ for about a year
- Read books (Effective C++), which were about all of the common mistakes which you can make (and should avoid) when programming in C++
- Read a book (Design Patterns) which gave me more ideas of why I'd want to use a language which supports OOP
- Read many more books about C++ (and design patterns) until past the point of diminishing return (i.e. I was no longer learning anything new from extra books)
- Do code inspections of other people's code
- Support the released code: fix bugs in it, add features to it, port it to new O/Ses, make it do things for which it hadn't been originally intended, for many years
During a lot of this time I'm not learning the programming language. I'm using it, while learning team-work, project management, software development lifecycle, the business of software development, libraries (and APIs, O/Ses, and frameworks), debugging, testing, and the problem/application domain (e.g. telecommunications, or cardio devices, or whatever).