-
When I watched the interview with the creator of Elixir, I was quite excited to learn the language
-
I kept hearing that Elixir has one of the best tracks in Exercism.
-
The Functional Feb had 5 problems to be solved, but they were not available for me until I complete the conceptual exercises first. So, do you expect us to finish all the conceptual exercised before tackling these 5 problems? Can you please display which of the conceptual exercises have to be completed to tackle the recommended 5 problems?
-
So, I started from hello world and finished another 5 exercises just to reach the set target for Feb.
-
As I started on the 3rd exercise, I started feeling the first sign of discomfort with the syntax of the language. Having worked in Python and JS for the past few years, having to remember that I have to put a
comma before do and a colon after do
to define an one-line function was a bit discouraging. -
I kept missing some of the newer aspects of ending blocks with
end
statement -
Overall, it was a struggle. I even questioned my motive on why I should be spending time on learning this new language. But decided to persist till I finish at least 5 exercises having started the Elixir track.
-
When I looked at the community solutions after submitting my solution, the top-rated solutions were greek-and-latin to me - i could NOT make out much of what they were doing. There was no explanation in the code.
-
I also noticed that there were certain things missing in the tutorial/instructions before the exercises and had to go to the Elixir docs to figure somethings out. Was that intended?
-
I felt that the errors were NOT very friendly and took a lot of effort to figure out what is wrong. Getting used to the
function/arity
concept is still an effort. May be, a session on reading the errors in Elixir in the style ofLearn the Hard Way book
author would help. -
When I saw the exercise
freelancer-rates
, I felt a sigh of relief - at least,I know the exercise before and the only new thing would be the Elixir syntax only. But to my surprise, I realized that some parts of the exercise were different from the JS track. Why is that? -
I also encountered new exercises like Logger - i expected that the conceptual exercises to be standardized across languages as that would greatly help people to transition, keeping only one variable at a time (the new language) and it would help to compare the syntax between the 2 languages for the same exercise.
-
After spending about 3 months now with Exercism more or less on daily basis, I still could NOT figure out the relationship between the Tutorials, the Instructions that appear on the exercise home page , and then the instructions that appear in the online editor that combines some part of the tutorial and the exercises - sometimes, the same content is there and sometimes there is a difference. In JS, I noticed that after I finish the exercise, the tutorial link shown a different content than the one shown before - Can someone explain how these are structured, may be in a welcome guide to Exercism?
-
I was quite excited to learn about piping operator and I saw a lot of interesting ways to solve the problem I solved using Elixir idioms in community solutions. But there is no way for me to understand them as there is no explanation, no link to further lessons, etc.
-
I thank the Exercism team for putting together the Functional Feb - it was great to be beginner, struggling to remember the little details peculiar to the new language. I liked this struggle.
-
I am not sure whether I am expected to do research on my own to look up docs to find functions to solve the problem - since I was quite experienced in JS when I started on Exercism JS track, I did not feel lost as I felt with Elixir - some more guidance would help. May be, there should be some section on what to do if you feel stuck. Hints is supposed to serve this purpose, but I felt they were not very helpful for me.
-
Can we create a welcome to the track sort of guide that answers many of the above question that a beginner to the language is likely to ask?
-
I would like to have some roadmap for people new to Elixir to learn the idioms of the language. Maybe, Erik or someone other core contributor can take some of the conceptual exercises and show how it would be done in a language like python or JS, get the tests to pass, and then refactor the code to use different idioms - this would be a great way to learn. This is how I teach others - start from a working solution with all tests in green, then refactor/rewrite to show different ways of tackling the problem using language idioms.
-
Though I felt discouraged with the Elixir language and the track (the typical feeling of a beginner), I felt energized by the whole episode and I am gonna start on Go track today in Mechanical March.
Hey! I’m the maintainer of the Elixir track. Thanks for the detailed account of your learning journey . Let me address a few of your questions.
The Functional Feb had 5 problems to be solved, but they were not available for me until I complete the conceptual exercises first. So, do you expect us to finish all the conceptual exercised before tackling these 5 problems?
The authors of the Elixir track’s learning mode had no say in choosing the specific practice exercises that were recommended for Functional February.
I also noticed that there were certain things missing in the tutorial/instructions before the exercises and had to go to the Elixir docs to figure somethings out. Was that intended?
We would need a list of those things that were missing to that we can add them. Everybody has blind spots, and because the exercises were created by people who have been writing Elixir for years, we’re not the best people to know what needs to be explained and what is obvious to newcomers.
When I saw the exercise freelancer-rates, I felt a sigh of relief - at least,I know the exercise before and the only new thing would be the Elixir syntax only. But to my surprise, I realized that some parts of the exercise were different from the JS track. Why is that?
Learning exercises are not standardized because numbers in JavaScript differ from numbers in Elixir. Each track needs to teach different details about each concepts, and sometimes entirely different concepts.
I also encountered new exercises like Logger - i expected that the conceptual exercises to be standardized across languages as that would greatly help people to transition,
The reality is the opposite of your expectation. They cannot be standardized because each language is different.
I am not sure whether I am expected to do research on my own to look up docs to find functions to solve the problem
Yes, you are. Like always when programming! In a lot of Elixir learning exercises, you’ll find a statement like “you can find functions for working with strings in the String
module” - that’s your hint to go read the documentation of the String
module to find the functions that you need.
May be, there should be some section on what to do if you feel stuck. Hints is supposed to serve this purpose, but I felt they were not very helpful for me.
If you feel like you needed more hints than were provided, please tell us exactly where which hint was needed in which exercise, so we can add it.
But most importantly, did you try out mentoring? When just the learning exercises aren’t enough to make you understand, that’s the thing that’s meant to help. You could for example ask mentors to explain to you the community solutions that you saw and didn’t understand.
Going through the concept exercises first is the recommended way to go through a track.
However, if you want to have all exercises available, you can unlock them by disabling learning mode:
Also, some tracks might not have a syllabus yet, and those tend to have all the exercises unlocked by default.
I also think that mentoring is key here, it is the true power of Exercism, a mentor will answer all of your questions and will help you make sense out of things. I strongly recommend it.
Thanks a lot for the detailed responses. I have not tried mentoring on the Elixir track yet as I just wanted to get a feel for the language and have no serious intention to learn this fully now. I would note down the gaps I see, when I return back to Elixir and post it.
What a fantastic post. I love to see the very detailed insights into the learning journey.
On the other hand, having said “I just wanted to get a feel for the language and have no serious intention to learn this fully now”, I feel that it’s somewhat unfair to complain about the language syntax, or that you need to use the language documentation.
This may be what Jeremy is calling out as “education bias”, but I would not want Exercism to be the only source of learning materials for students. The “official” docs will be (IMO) better written, and they will be up-to-date. Also the student will be exposed to documents written with different perspectives.
Glenn, thanks a lot for your appreciation and for raising questions about what you see as questionable behaviour from me - let me explain my intent.
I wanted to learn a functional language for a long time now - about 3 years back, I took a theoretical course on Functional programming and loved the ideas, and wanted to get into it. So, when I saw the Functional Feb, it was like a God-send for me. So, I listened to the interview of Jose valim and was excited to try the language.
However, most of my current work involves programming in python and JS and I do not have even a toy project to try out Elixir - for me, the best way to learn is to have a project at hand to try out the ideas as I learn. Moreover, I was traveling a lot for work and amidst work commitments, the excitement slipped and it was close to end of Feb. I still wanted to learn the language in Feb itself as a way of being part of the community here at Exercism, as a way of saying thank you for this wonderful idea.
The reason I did NOT want to try mentoring was that I am not going to apply the ideas I get immediately. Hence I am likely to forget them in the course of time - so, I wanted to save the mentoring slots for the time when I would really jump into the language with a project at hand. So, it was in this interest to save the time for the more serious students that I did not take up mentoring and said that I did not have a serious intention to learn fully now.
Now coming to the reason why I decided to write the long post as I questioned myself multiple times whether I should post my judgements/observations (instead of using that time for learning a new concept or a new practice exercise at Exercism - I used to allocate a lot of time to Exercism before, but now given my work commitments, I allocate only 1 pomodoro per day at the very beginning of my day to Exercism). I thought that it would be good to capture the perspective of someone who is beginning a new language and it might provide some constructive feedback.
My intent was not to complain at all - I did not see any gap in JS track as I was not a beginner but my son who is in school and using Exercism to solidify his JS skills told me that he found many gaps. So, I thought of writing a log in my notes app and wrote it for myself for future reference - after writing, I felt that sharing it, in the spirit of constructive feedback and in the spirit of saying thank you for putting me back in the shoes of a beginner, might be beneficial - so, the intent was not to complain at all.
Thanks for calling me out and I like these kind of corrections - I thank Angelika and you and others who are contributing to Exercism and have a nice day!