First of all, what does it mean to know a language? Does it mean you can order at a Starbucks in that language? That you have qualifications in it, like a degree? That people are willing to pay you for your work in it?
I’m “fluent” in Korean and English, enough to professionally translate literature for money into either language. Clearly I “know” these languages, but not everyone needs literary-translator levels of a language to make a living off it, marry into it, or enjoy its movies and novels. Most people don’t use their first language at a literary level, anyway. In terms of certifications, I do have a second BA in French, and had four years of Mandarin at school; I list those on my résumé. I’ve made money off my French and Mandarin as well, albeit accidentally both times. But do I know these languages?
And is it any simpler to define what it means to know a programming language?
But I’m not laughing. I enjoyed my tiny bit of object-oriented programming, that glimpse into the next stage of coding awesomeness. It was hard to grasp at first, but it was fascinating. Surely a reason to learn a language is not simply pragmatic, it’s aesthetic as well, maybe even hedonistic; it looks fun! I want to join the OOP crowd!
Which is why I decided to learn Python.
But why Python and not Ruby, Java, or C#? It’s because of the Natural Language Toolkit, or NLTK. I wanted to get into natural language processing for literary research purposes, and the NLTK seems to be the best fit. And, most of all, NLTK seems to come with a very helpful manual that doubles as a Python tutorial. Everything falls into place!
This brings us back to the first question. At what point do I say, I know Python? The answer for me will be, when I can do 80% of the exercises in the manual. Because you need a clear goal when you learn something, preferably a very specific one, else you’ll find yourself “learning in circles” and going nowhere (c.f. my doomed attempt to learn React which went to naught despite the ridiculous number of hours invested).
I’ll document my progress on this blog, both for beginners like me and anyone interested in seeing the learning-to-code process from a learner’s POV. Watch this space.