dwyl / learn-elixir

:droplet: Learn the Elixir programming language to build functional, fast, scalable and maintainable web applications!
1.61k stars 108 forks source link

Elixir for Programmers by Dave Thomas: Online Course #50

Open YvesMuyaBenda opened 7 years ago

YvesMuyaBenda commented 7 years ago

Elixir for Programmers by Dave Thomas: https://pragdave.me/

iteles commented 7 years ago

@YvesMuyaBenda This is an interesting resource in that it's for programmers and is pretty clear about not explaining 'the basics' which I take to mean that there will be quite a bit of assumed knowledge and certainly won't be for 'beginners'.

It's also behind a paywall and costs $60 (at the time of writing), though I see there's a free trial.

Are you going to try out the free trial? Would be great to know more about this resource 😊 His talks are pretty interesting and his book on Elixir is great, so it might be worth it!

YvesMuyaBenda commented 7 years ago

@iteles The problem is that I basically start writing novels in my mind in response to questions. I have been looking at the videos from the point of view of answering the following questions: (1) How much knowledge and experience does it presume? and (2) How does it compare with the free resources so as to justify the $60 (got it for $40) expense? (First of all what are the free video resources that teach Elixir, and do they go beyond the basic syntax/elements of the language to dive into project building and thought processes?) In the meantime, you might be interested to watch this video from 1:25 to 6:50, where he explains the origins of the online course in teaching relative beginners in his role as professor at SMU.

What most interested me enough to buy the course were the discussion of organizational and structuring concepts! My main guess is that I would find it more enjoyable and useful to observe a web-app being structured from the back-end to the front-end (he ends with adding Javascript on the front-end) within a clean functional programming language like Elixir, rather than start with the OOP languages like Ruby, Python, Javascript, where I would have to hold OOP concepts in mind (objects, classes (prototypes), methods, inheritance, polymorphism, encapsulation, lah-di-da) and then keep in mind the interaction of the OOP features with the functional aspects of the languages (anonymous functions, closures, higher-order functions, pure functions, immutable data, lah-di-da). Instead I could just think of data being transformed through pipelines and be happy! I found his talk of incremental building very intriguing, and thought it would be a useful way to intially structure my thought processes in an organized way.

If you have any other specific questions about the course, I will be more than happy to answer them as best I can. I should write something tomorrow or thereabouts.

YvesMuyaBenda commented 7 years ago

@iteles Right, so I have gotten to the videos that talk about Phoenix, the "Getting Started with Phoneix" section, and yes, the course is really for developers, though it starts of really gentle and nice, but in particular web developers, for unless one has some idea of what work a web framework does, then it would be quite difficult to 'parse' the section. However, I suspect, that as a beginner, one never knows all that one needs to know upfront, so perhaps one of the basic skills might be 'back-filling'. For sure, it will not be the only source of information on these ideas I consult; but maybe the pacing will be enjoyable for the more experienced? I am now looking forward to seeing how Javascript is integrated on the front-end, thus giving me a complete, but rough and approximate, and gap-filled picture of an entire app. He introduces the concept of "plug" using the concept of 'reducer', stating that it basically a function taking state--connection with options--and returning new state--another connection. I think this is going to give me some ahas in the future!

Overall, at this point in time; I would summarise the concept as taking a simple console-based app--a simplified Hangman game--and running it through many concepts as one incrementally makes it a web-app.