Why some people struggle in a coding bootcamp and others don’t
Orwa Diraneyya
An open-source advocate with software/hardware exposure and 10 years of software development/teaching experience.
PS: Since this article was first written, it was translated to French, and renamed from "Why do coding seems just impossible to some of us". Along with the change in the title, the article also received a preface by Romain Guillemot and was published (without the mentions) on Medium. If you want to support my writing, please consider signing in to "medium.com" and pressing the green "follow" button there.
Preface
Weclome to you who are statrnig to raed this txet! More or less, you have deciphered this first sentence. Maybe you didn't even notice that it contained 4 typos! And even if you noticed it, your brain made the effort to correct them to make reading possible. As part of my job, I regularly have to speak English. My caring colleagues have never admitted it to me, but I'm not fooled: I have a typically French accent, and my vocabulary and grammar are very approximate. But when we talk, they make the effort to understand my imperfect English. Discussing with a human being is a cooperative game: we win together by understanding each other, and to understand each other we correct the messages we receive directly to give them meaning, to move the conversation forward. Without accusing them of malice, the machines do not play this game. They do not make the effort to understand the code written by the developers. It is therefore up to us to make the effort to present them with the “perfect†code. At least without a fault of syntax, grammar, or vocabulary. Producing a message while being so rigorous for both communicators can hardly be called “naturalâ€. This is not usually how we learn to communicate. Imagine if the parents refused to respond the needs of their children until they were expressed in impeccable English... To communicate effectively with a machine (a literary way of saying “codingâ€), it is important to understand this non-cooperative relationship in communication. A machine will never make the effort to understand what is said to it. Integrating this cold truth is a crucial step for students in learning how to code. I have been convinced of this for a long time. But looking back, I realise that I never took the time to share this conviction, until a discussion with Orwa. When talking about our respective students and their difficulties, I naturally mentioned this discrepancy between human communication and coding. A few weeks later, he told me on a terrace that my point of view, combined with his own research, had helped him a lot to make sense of this difficulty. A little later still, he shared with me the article of which you will find here. At first I was moved by the fact that Orwa found something interesting in our exchanges. I was thanked for it by his text, which helped me put words to ideas that had been vague until then. If you are comfortable with English, I can only invite you to read the original version of Orwa's writing below. For people less comfortable, I wanted to offer a French version on my website, in order to share with you his thoughts on learning to code. They are already a new source of ideas for me to test with my students, and I thank Orwa for that.
The article (by the author)
After a few months teaching at Wild Code School as a Fullstack (or Web Development) instructor. I think I am starting to understand why some of us struggle (as in?really?struggle) when learning how to write and understand computer code.
This article is the result of my personal reflection, conversations with colleagues/students, and the readings I have been doing in my free time (mainly the book named “The Language Game�by?Morten Christiansen?and?Nick Chater).
Admittedly, this article is written with a strong teacher perspective. Yet, I hope that the empathy behind it and the intention to better things by offering a meaningful perspective, ends up bringing value to the reader.
Namely, I hope that whether you are teaching, studying, applying or considering to apply to a technology bootcamp, or an online coding course even, that this article brings some insight to you, or at least gives you something interesting to chew on.
Amongst the people I discussed some of the topics of this article with, I would like to thank Romain Guillemot in particular for his mentorship, and the insightful conversations we had on this topic.
Differentiation in the Classroom
If you ever taught in school or elsewhere, you must have heard of the?differentiation problem. Namely, it is the challenge of keeping everyone engaged and excited during class time. It is a difficult thing to do, especially when the students are grown-ass adults, of a wide age range (18–45 years of age is not uncommon), and come from all the walks of life, some with and some without a college degree.
The level of differentiation in a class like this, when combined with the degree of involvement often required by the subjects taught in a technology bootcamp, reveal what an impossible task the bootcamp teachers face on a day-to-day basis.
At the heart of the differentiation problem in a technology bootcamp, in my opinion,?are the?many ways in which some students may gain an innate advantage over others,?in the area of learning a logical language.
Oh wait! Innate advantage? Logical language? What does all this mean!
Let me explain…
Logical Languages
Programming languages are sometimes described as?logical languages, to distinguish them from the languages we, as humans, use to communicate on a day-to-day basis, which in turn are called?natural languages.
Hence, learning how to code is essentially?attempting to learn a logical language. Note that those who shall face difficulty doing this, must?naturally?(did you see what I did there ???) be doing this for the first time, which means that so far in their lives,?they have only used natural languages.
It is hence?logical, pardon me there again ??, to relate a lot of the difficulties those “natural learners†face in a technology bootcamp, to the?transition they are making?from natural languages to logical languages.
So, what is all this fuss about logical languages, and why is using a logical language so different from using a natural language, you may ask…
In a logical language like Javascript, different symbols and character sequences, such as?[ -open square bracket-?and??? -two question marks-, have a precise and an indisputable technical meaning.
For example, not only that adding a space between the two question marks above would imply something completely different from what it would otherwise, it would also “break†the logical message, or lead to a?syntax error. (as we like to call them in logical languages)
In the world of logical languages, the “receiver†of the logical message cannot recover from a syntax error, and hence must reject or drop the speech entirely. This is due to the design of logical languages, which is, to be as accurate and as unambiguous as possible! [footnote 1]
领英推è
Natural Languages
Compared to Javascript, the “meaning†in a natural language (Like English or Arabic) is constantly?evolved?and?negotiated?between the communicating parties, who are both constantly trying to guess or predict what the other party is actually referring to, in the real world.
In this realm, communication can continue to occur even when it is actually broken or had lost its meaning, namely, even when the communicating parties’ prediction of what the other is referring to had diverged and is now far off from what the other party intends ?? (something that we all experienced at one point or another when communicating with another person!).
The logical disadvantage
This leads me to my main point in this article…
In my opinion, the biggest student disadvantage in a technology bootcamp is created by the students’ varying degree of aptitude for the?production?and the?consumption (or understanding)?of a logical language.
For example, social workers, housewives, communication professionals and many others, might (due to their past career/life adaptations) need considerably more preparation,?even before dreaming to begin learning something like Javascript!
A bold statement, I know… But wait.
Don’t get me wrong. Those people are highly skilled, but their skills are tailored towards?figuring out what other, emotional and imprecise human communicators are trying to tell them. Housewives are great at discerning why babies are crying in the lack of clear information, and communication professionals are masters of picking up non-verbal cues about why people are ticked off, why are they excited, what would it take to get them going, and/or address their unspoken needs. So as you can see, those people are masters of the natural communication realm! but as they have evolved in response to the?inaccurate and unpredictable human nature, it might be challenging for them to “dumb it down†to be able to engage in a logical dialogue with?zero emotional-footprint, and rather?rigid and impartial rules of interpretation.
… It makes sense, as it simply goes against their very nature, and everything they have grown to become.
Namely, this category of people might have to go through some?“visualâ€?(and arguably “emotionalâ€) training just to be able to do the following:
- Discern the presence of “white spaces†around words and operators in written code, since these white spaces do not play a semantic role in the writing of natural/human languages[footnote 2].
- Discern the difference between distinct punctuation marks in computer code, when these punctuations are considered “similar†or do not have a clear/special meaning in the writing systems of natural/human languages[footnote 3].
- Match opening glyphs with closing glyphs (for example, brackets and other symmetrical pairs of characters), and/or discern the hierarchy and structure of logical speech when such openers and closers are used to indicate levels of scope or hierarchy[footnote 4].
- Draw a correspondence between a?diagram description using a logical language?(for example, a language called?Mermaid) and the diagram itself (in visual form), even when laid right next to each other (that is, side by side), or find such a task to be very challenging.
- Recognise the embeddings of one logical language (with its own rules of grammar) into another, and navigate many such nested embeddings, which, again, often proves to be incredibly difficult for this category of people[footnote 5]
- Predict the overall function of a computer program even, and?I say even, when the function of the individual lines is completely understood[footnote 6]
(Note:?most of the "involved" content of this article is in fact, inside of the footnotes associated with the points above. Hence, if you are an educator or want to dive deeper, and would not mind a few added minutes of reading, then I would highly recommend reading the footnotes at the end below to get the most out of this article)
The logical advantage
Compared to the previous category of people… Lawyers, mathematicians and philosophers might have a much easier time adapting to the realm of logical languages.
In the case of lawyers, their career and study is solely focused on eliminating as much ambiguity as possible from natural speech (for the purpose of protecting and defending their clients’ interest under the loose and vague interpretative climate of natural languages). Hence, it is no wonder that logical languages might seem like the one thing they have been in search for.
Indeed, it is the case that these professionals are often adept at comprehending the rules of logical languages and tend to absorb its working principles very quickly. I have seen it, time and time again.
But what about, just studying the material before of the bootcamp?
In addition to the so-called?innate advantage?some students may have over others due to their aptitude for learning a logical language, an additional (and more obvious) advantage may also be gained by having a?prior exposure?to the content of the technology bootcamp (as in, the keywords, the syntax rules and the terminology of the technologies being taught at the bootcamp).
Indeed, it is this area that most of us?suspect to be the reason why some suffer in a technology bootcamp, while other do not.?(or at least, this is what we tend to tell ourselves)
Thinking that this is what a bootcamp participant needs to do before a technology bootcamp to alleviate their suffering is, in my opinion, a fallacy.
In fact, if it was not for the profound difficulties of learning logical languages (for those who lack the training needed for it), then learning how to code would have been just as easy as “signing up for an online courseâ€.
But, as you already probably know, it is not…
Footnotes
- Think about what would happen if the receiver of a logical language was allowed to rectify the logical message at its own discretion when it does not make sense. Then, the meaning associated with the message would neither be precise nor unambiguous. If such a message was used to talk to or control a machine (which is why these languages were invented), then this would imply that the machine would behave unpredictably.
- For example, the inability to naturally distinguish between the presence and the lack of white spaces before commas in writing, and the inability to be consistent with the use or the removal of such spaces in a digital medium, is a common observation amongst this category of people. Additionally, since the notion of a “character†or a “glyph†in a digital medium might sometimes be less concrete in the minds of these people, learners in this category might entirely miss that there are sometimes multiple digital representations for symbol, and that the semantic meaning is associated with the representations, not the approximate shape of the symbol, and hence, substituting one representation for the other (resulting from mistyping or a copy-and-paste operation) will certainly break the code ??.
- For example, confusing parentheses?(?-open parenthesis-?with square brackets?[ -open square bracket-?or using them interchangeably, and being surprised to learn that they mean different things in Javascript, both fall in this category. Also, continuing to face a difficulty using the right type of bracket, even?after being cerebrally briefed on the difference between the two, indicates (in my opinion) that a layer of “visual training†might be missing in this category of learners.
- For example, failing to discern the end of a statement and the beginning of another in Javascript. Also, facing difficulty identifying the point in the code where stuff inside of a function should go, or the point in the code where the?condition part?of an ‘if’ statement should be placed, all fall in the same category.
- For example, the embedding of JSX inside of Javascript, and the consequential “switch†in grammar rules resulting from such an embedding. This becomes even more challenging as the JSX notation provides its own way of “switching back†to the Javascript context, right from within of JSX itself ?? (allowing for many levels of embedding). It is my theory, that since natural languages offer only two levels of embedding at best (citation: “The Language Gameâ€, page 148), that our brains are not naturally skilled at keeping track of that many levels of embeddings without a special training. Hence it makes sense why people coming from natural languages might find it increasingly difficult to wrap their heads around these convoluted logical statements.
- I am still not sure as to why this happens. My guess is that the “natural learner†tends to try to collectively make sense of all the sentences in the program (at once, or as a whole) rather than treating them as strictly-ordered, sequential statements with zero emotional context and rather-impartial rules of interpretation. More recently, a conversation with one of my students ( Oleksiy Denysenko ) revealed that it might be, indeed, that stressing the unemotional nature of computers, via a sympathetic agent (that is, a fellow human) demonstrating the lack of emotion of a machine in front of the learner and hence relieving him/her or “giving them the permission†to disregard the cooperative aspect of communication in the exercise of coding might be a necessary unblocking step in the learning process for some people (which might have been the case for this student in particular, being a communication expert and a radio presenter/personality in Ukraine). This is an area that is particularly absent in remote learning vs. in-person campus learning, and might be one of the rare or the very few places in which in-person learning might be advantageous to remote learning in technology bootcamps. But this, again, is just a hypothesis as to why this difficulty arises in some cases.
Entra?ner chaque talent vers l'excellence : accompagner pour révéler
2 å¹´Thanks Orwa Diraneyya and Romain Guillemot to give me this understanding. It will help me to adapt m'y day to day approch
Président / Bénévole @ Code Collectif + Lead JavaScript @ Wild Code School
2 å¹´Excellent reading ?? Even if we discussed about that, your article really put words on my thoughts ??