At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
I've actually learned most of my languages that way. About the only ones that you could argue I learned through a course were Java and Smalltalk. The problem with estimating how long it takes you is it's not easy to call your learning `done' when it comes to programming. You always learn more techniques, from the same language and from learning other languages and seeing their approaches. That said, I was writing programs in C++ (my first language) more or less immediately (because that's how it was presented in the book I was reading). I was writing my own fairly quickly after that because I wanted to. The key when learning programming languages, as when learning human languages, is immersion. Don't just do the exercises the book/OCW/etc prescribe. Go beyond that. Think up a project you want to work on and start building it. Realize that it won't be perfect or even necessarily good. Six months later you'll look back on the early code you wrote and wonder what you were thinking. But that's learning for you. Constant evolution, constant acquisition of knowledge. You'll wonder what you were thinking, but every new discovery will bring new excitement. It'll bring the realization that you've been wasting time but that things are so much easier now. You'll start seeing patterns in code form in your mind before you've written anything, and structures will spring seemingly fully-developed into your mind's eye as you're thinking of how to approach a problem (a warning: they are never actually fully-developed, and once you start writing the code you'll run into the dozen or more details you forgot about, but it still feels great). There is nothing more exciting to me :)
I learned HTML on my own way back in the day, then I took a short programming course (python) that was one semester long. The course introduced me to the basics, but I really still had no idea what I was doing. Only through more self-study and constant practice did I become efficient and have enough confidence to feel like I was a programmer. I probably could've gotten where I am without the course, as it was so basic and taught me so little on how to really be a programmer that it wasn't worth much. Learning the semantics of a language is one thing, but learning how to actually *code* is another and think like a programmer, that is another, and I learned that completely on my own.