The Elixir Fundamentals 1 cards arrived in the post and my wife immediately starts testing me on a language I don't know. I get half correct off the bat. Getting 50% of the cards wrong on the first try surprised me. In all honesty I was expecting to breeze through the fundamentals based on my knowledge gained in Ruby.
The 50% I got right are general programming questions, knowing how to use loops, strings and functions to obtain an answer. The ones I got wrong are Elixir specifics that I have no understanding of. For each card I got wrong I felt I was getting more and more value from the deck, but ending with 50% correct was disappointing in that I wasn't going to learn more from these cards.
That was an interesting ride of emotions. Being shocked when I got a card wrong and then excited that there was something to learn, then feeling disappointed that half the deck was now seemingly useless.
Should general programming knowledge be excluded from language specific decks, or am I choosing not to find value in the cards that I got correct on the first try? If the latter is true then there should be another game, technique or exercise that I could use on these "easy" cards to find value in them.
Taking another look at an "easy" card, which contains an conditional statement question, I realised that I do not know how to write a conditional statement without a reference. I do not know elixir syntax just from answering a question, so there is the difference between knowledge and understanding. Can I now take this stack of easy cards and turn spaced repetition learning into a coding exercise too? That would mean there are two levels of learning from these cards, in the mind and on the screen.
From a shallow dive into Elm and Clojure last year, one of the struggles I had was not knowing how to write the code I wanted to write! I knew I needed a certain code structure or arrangement but I would stumble along guessing, searching for documentation, experimenting and eventually ending up with something that worked. If I had known how to write fundamental pieces of code I could have put more energy into solving the problem and completing the project because I would be assembling known entities, just like in Ruby where I don't have to think about how to bend the language to my will. I abandoned my projects and the languages themselves because of a lack of progress.
In packs of kids card games I have brought, there are always at least a couple of cards that have instructions on them for how to use them and different games to play, and although these elixir cards came with a link to a games repo I think there needs to be an upfront expectation setting to avoid the "easy" cards from being dismissed: "Getting a card correct is fantastic, well done! Now, can you answer all of the cards by writing code?".
- quantify progress
- be used to find gaps in knowledge
- be used to find gaps in understanding
Documenting my experience has left me hopeful that I can succeed in learning Elixir where I had failed with Elm and Clojure.
Join me on Day 2 which brings an insight on how to learn Elixir syntax.