I feel like any discussion of reddit as a source of anything requires a “defense of” perspective. There is a traditional and justified fear of going to the internet for help, but I have been pleasantly surprised at the /r/learnpython community. Perhaps it is because the entire purpose of this group is for newbies to ask newbie questions that participants of the community are so kind. Having /r/python as a separate group is also helpful.
Any student new to a domain needs to find a learning community. This may be a friend who knows the topic, classmates, or internet forums. Given the small number of Python communities out there in physical space, having virtual communities is often the only recourse.
Why do I find that /r/learnpython is a pretty awesome group? Mostly, everyone is really nice. We all need supportive and nice communities and tutors. Being afraid to ask a question prevents growth. This is not to say that you shouldn’t try to resolve things on your own. I have often answered my own questions while trying to write them up for other people. I never really used these resources to ask questions, because it is very rare for me to ask a question that hasn’t already been asked somewhere else.
The other important factors:
- a solid list of resources, if not obviously organized
- huge range of research domains represented
- fast and kind answers
A big issue I hear reported from students, particularly from the humanities and social science crowds, is a lack of comfort when using documentation. Their discomfort is usually communicated as something like “Looking at documentation means I don’t really understand it.” My theory behind this is that the kind of training that we get in our coursework is just different from math/CS. The idea of the ‘cheat sheet’ isn’t really present in our normal studies. We read original materials, discuss them, write about them, and come away with a mastery of concepts rather than a memorization of syntax. I would argue that items like docs.python.org and Python in Your Pocket are viewed by some as if they were Cliffs Notes. This doesn’t map perfectly, but it gets my point across. I hypothesize that the non-STEM students view referencing documentation as implying that they don’t understand the material. I wonder if language students feel differently from this because of the need to reference dictionaries.
This is an interesting distinction between these two groups. In programming you learn semantic concepts and study language specific syntax. On the other side of the coin, humanities and social science students use human language our or syntax and deeply study the semantics of various theoretical domains. Referencing syntax for this later group amounts to reviewing style guides for citation and dictionaries, but is viewed as functionally different from the semantics they are learning. They have such a focus on semantics that syntax is often not formally distinguished. On the other hand, to programming, semantics and syntax are (usually) taught at the same time and are intertwined. Referencing documentation for syntax is similar to referencing how to spell a word or how to use commas. This isn’t “cheating” because it isn’t giving you the answer and doesn’t imply weakness in understanding.
I try to focus on making these distinctions when working with students reporting this hesitation: it is completely normal to reference documentation all the time when writing programs. It is not giving away the answer, but just telling you how to spell your answer correctly. You still have to come up with the answer. There could also be an argument that looking at documentation is not only normal, but ideal. Particularly when using syntactical forms outside your normal toolbox, or when the teaching process is focusing on the semantic forms rather than memorizing syntax.
As explained to me by my web design professor when announcing that all our exams were open book and open internet: we are never alone when coding. When writing a program in a professional environment you will have your books and coworkers available. Communication, discussion, etc. are vital to the process and professional growth. Our society introduction specialization for a reason: there are benefits to people having deep a understanding of one particular domain, but specialization requires that we all work together.
To new students of Python or any other programming language:
- embrace documentation
- collect helpful documentation for your domain together
- don’t be afraid to make annotations or notes in your reference books
- looking at documentation doesn’t mean you don’t know what you’re doing
- we very often answer our own questions when trying to formulate them
- find a community and talk to your learning peers