Learn Elixir The Beast Mode Way

I’ve been meaning to start learning a new language for a series of books after Python.  My list is pretty long, including Nim, Elixir, Go, Rust, JavaScript, and I even might, just maybe, who knows, do a PHP7 book.  Currently though I have to do three more courses covering Python before I can move on to the next book, but I do want to start getting off Python for my business software soon.

The first thing I’d like to replace is my current Django web stack.  It works, and powers my things, but honestly it’s not the greatest functionality.  I’d love to just code a replacement in anything else, but my time is limited.  I have to work on books right?  Gotta record those videos.

A while back I heard that there’s people who hate my books for total beginners because they are too repetitive and slow.  Alright, sure, if it’s going too slow then chances are it’s not the right book for you.  I actually admit that the book is not for people who can’t handle doing some rote work or are already experts.  No book can perfectly train everyone, and it’s insane to expect my book aimed at a person with zero knowledge to also train everyone else.

But, I’m a problem solver, and I like to solve my problems by combining many things at once.  Solving one problem is boring.  I need to do three at once:

  •  I have a problem that I’d like to learn a new language to do some web development and replace my current Django stack.
  • I also have the problem that I need to learn a new language for my next book.
  • I then have this problem that people who feel my beginner books are beneath them seem to think the books don’t work for anyone else.

I believe there is a class of person who feels they can’t learn by practice, but only that they can learn by “building stuff”.  I don’t really write books for them, but there was a tickle in the back of my brain that said, “You sure?”

Then it hits me!  I got my next book Learn More Python 3 The Hard Way in the works, I need to learn Elixir, well why don’t I just try to do the Learn More exercises in Elixir as my way to learn Elixir?  Then when I’m done I’ll have learned enough Elixir to work on my own site, and then I can probably do a Learn Elixir The Hard Way, and then…

Wait! What if I do a “Learn Elixir The Beast Mode Way”, or probably a better title because that’s super weird, but I think you know what I mean.  What if I take the projects in Learn More Python The Hard Way, do them in Elixir, then add a large initial “crash course” that teaches enough Elixir to make you dangerous enough to do the projects?  Then, the only structure is the projects, and you can do those in almost any order you want.

I’m actually very into this idea now.  I freely admit that when you’re an expert that rote practice style of learning isn’t very useful.  Learn More Python is kind of the list of projects I work through when I’m learning a new language, so why not just do them with Elixir too?

Starting maybe tomorrow or next week (time permitting) I’m going to “beast mode” Elixir using the projects from my Learn More Python The Hard Way and probably find a place to post the results.  I think what I’ll do is go through this awesome Elixir School website as the fast crash course part, then I’ll start going through my book using Elixir.  If it works then this may become the new format for future books aimed at people who aren’t total beginners.

Q: What’s a best first language?

I have purchased LPTHW, but was hoping I old ask you for some general advice, I hope that is okay.

I am one of those people who would like to learn programming as a complete novice, but keeps going round in circles with how to start.

I started LPTHW, and as I continued to research into first language to learn, I came across an article where a university professor said that python being multi paradigm is not a good first language, and instead recommended Smalltalk. I then researched into this and found some resources on Squeak.

However I’m struggling with learning something for the sake of it, so decided a project to work would be a lot more motivating. If I went into this area as a job I would be more likely to choose web development than software, and [realized] javascript is a language that would be really useful.

However I’ve seen many people online who have said it is a bad language and can make follow up languages hard to learn.

What is your opinion on this, and how much in the way of bad habits do you think it installs?

Well, university professors in computer science are notorious for being completely clueless about teaching beginners. Most of their advice is based on teaching only people who’ve been coding since they were 12, and most of them have no training in educational theory. In many cases they even have super weird ideas that have no basis in any research. In this case I’d say you ran into this type of professor and should just ignore the advice.

Look, you’re probably like many people who are looking for the “best” first language because you think of learning a programming language is like investing in a stock. You expect, after X months, to receive a Y benefit from the investment. If you don’t then you get disillusioned. You are probably also hoping that you only have to learn one language because learning new languages is difficult, so you want to make sure you pick the best one and only language.

Programming languages are not like investments, but more like a vacation. You don’t go on a vacation to Bali and say, “Alright, if I spend $10k and 3 weeks in Bali I expect my return to be $20k/year.” Instead you happily spend the $10k and walk away with photos, memories, and experiences you can use in your life after. You also don’t go, “Ok I have only one vacation place to choose from for the rest of my life so I better pick the best one. Is Bali the best?” Instead you go to multiple places during your life to gather experiences, and each one costs you, but the return is intangible.

Programming languages are like vacations in that you aren’t investing in something to get a return, and you aren’t going to learn just one. The right attitude is to enjoy your vacation in Python and come away with knowledge and experience to use in your daily life, then go learn another language. Try to learn 4, so that you’re experienced at learning languages. If there’s one thing that never changes about programming it’s that you have to keep learning new programming languages.

So, get back to learning Python. My book guides you through it. Nothing else matters until you’re done with that.  After that try building some things with Python.  Nothing fancy, just small little projects and hacks so you can have experience using Python.  After that, learn 3 more languages if you can.  It seems that after the 4th language it becomes easier to learn more and you’ll also feel more competent in programming.

One final note: If you’re the type of person who hits adversity then tries to find a way around it, you’ll need to stick with my book and resist that temptation. I put points in my book where it gets more difficult, but all of those points are solvable if you just stick with it and print out variables. I’m not kidding. Print print print. If you do that, then you’ll crack it. If you go “Oh this is hard, well I work better when I have something to work on so I’ll go switch to Elixir and build a Facebook” then when you hit problems doing that you’ll do it again and again until you never do anything.

Stick with it. Fight the adversity, and stop jumping around.