SyntaxSorcerer

SyntaxSorcerer

This is the start of my Elixir learning journal/journey. I plan to share my journey in this thread and am open to all feedback, constructive criticism, and questions from people of all experience levels.

I’m a former full-stack Rails dev with FP experience (Scheme/Lisp via SICP was a wonderful introduction to the FP paradigm), but it’s been a while :sweat_smile:

My short-term plan is to complete a couple of online courses and read through several books as I get to know the ecosystem, and to hopefully start building cool things along the way. I’m particularly interested in leveraging massive concurrency and fault tolerance (to name just a couple of cool things) as it pertains to multi-agent orchestration and task management/decomposition systems for AI-powered software development. I’ve shared this in a couple other threads, but @chrismccord ‘s keynote at ElixirConf US 2025 has been particularly inspiring to me.

The courses I’m currently taking are:

  1. PragDave’s Elixir for Programmers, 2nd Edition and
  2. The Pragmatic Studio’s Elixir & OTP and Full-Stack Phoenix

And the books I’ve purchased so far are: (and will read possibly in this order, but am open to feedback)

    • Programming Elixir ≥ 1.6 + Elixir in Action + Introducing Elixir
    • Learn Functional Programming with Elixir (not yet shipped)
    • Adopting Elixir
    • Testing Elixir
    • Functional Web Development with Elixir, OTP, and Phoenix
    • Programming Ecto
    • Designing for Scalability with Erlang/OTP
    • Ash Framework

My short-term goal is to complete both courses and all introductory Elixir books by the new year, and my stretch goal is to complete these before I’m back from Thanksgiving holidays in early December. I’d really love to be able to build with Elixir/OTP + Phoenix by the new year. I’m also super interested in the DDD aspects of Ash Framework, but I wouldn’t be surprised if it takes me a few months before I’m ready to add that to the stack. We’ll see!

So far I’ve completed about 25% of both PragDave’s course and Elixir & OTP. They’ve both been very enjoyable so far but I’ve been wanting to binge PragDave’s course the past few days; the structure and simple explanations, Dave’s chill-ass vibe + straight-forward examples have been jiving with me. I’m also several chapters into the first couple of introductory Elixir books; my strategy with them the past few days has been to read corresponding chapters after watching videos and doing coursework.

I’ll plan to check back in over the next few days with updates and will keep an eye out for any comments/questions/feedback! It’s been a really long time since I’ve felt the pure joy of learning a new programming language, and I’m so happy to be doing this right now. :grin:

p.s. an early highlight in my Elixir journey was @josevalim merging my PR to Elixir main this morning. I guess this means I’m officially an Elixir contributor! :tada: It might’ve been the most basic PR in the history of Elixir, but it feels good to contribute, and I hope it’s the first of many in this wonderful community :heart:

Showing Posts 17 to 8

SyntaxSorcerer

SyntaxSorcerer OP

Thanks for the feedback!

When I tackle something new I like to get a comprehensive overview first, and then dig in as necessary. It might be unconventional, but I’ve found that I tend to move faster when I have a good understanding of how all of the pieces fit together. It’s also just a lot more of a satisfying feeling for me :slight_smile:

As for Ash, I have a hunch it’s going to help me build things very quickly. I probably mentioned this somewhere here before, but months before learning about Ash I read Eric Evan’s Domain-Driven Design book, so I kind of feel like stumbling into the Elixir ecosystem, and then “discovering” the Ash Framework, was kismet.

I also really appreciate the declarative nature of the framework; this is one of the many reasons I’ve been going all in with Nix/NixOS.


As for my overall learning journey, I’ve been pretty heads down for the past few weeks. I’m currently about 1/3 of the way through the Pragmatic Studio’s Full-Stack Phoenix course, and have finished their Elixir & OTP course, as well as Prag Dave’s course. I picked up some other resources during Black Friday sales, but I’ll share more about those later. :slight_smile:

Before joining the Elixir ecosystem I had a very specific idea of what I wanted to build, but I wasn’t clear on how to build it. I’m still not entirely clear on how to build it, but I’m getting closer every day.

However, before then, I think the next logical step is to build a bunch of little things as quickly as I can. There are just a few more things I want to check off my learning list before I start…

SyntaxSorcerer

SyntaxSorcerer OP

Thank you for sharing José’s AOC videos – I look forward to checking these out!

I’d hazard a guess that Prag Dave’s course is similar in the sense that it felt a lot like pair programming. It’s probably the least expensive of all the courses I’ve signed up for and I’d also recommend checking it out.

egeersoz

egeersoz

Welcome to the community. Personally, I would recommend starting with one Elixir book, then one Phoenix book, and then trying to build something immediately after that. Phoenix book in particular will most likely cover testing as well as Ecto, to a reasonable depth. From there, you can use the books to supplement your knowledge.

Don’t get me wrong, I love reading books. But at your level of experience, I think you’d gain a lot more from doing.

Ash has been growing in popularity, but it’s also both not necessary for building things, and is very different than basically everything else in the ecosystem. Good to read if you want to improve your employability. OK to skip for now otherwise.

tsimon

tsimon

Hey,

Like you, I too am new to Elixir and am learning. I will preface by saying that I think we learn (or chose to learn) quite differently, so this recommendation may or may not be great for you. It appears to me that you are methodically creating a learning plan and working through it (which is awesome). I, on the other hand, prefer to just jump in and try stuff. One of the first things I did was to build a GenServer (barely understood what I was doing) that kept a tree data structure in memory. In my case, that was a quick sanity check, go/no-go choice on whether to adopt Elixir.

That disclaimer said, I found a series on YouTube of Jose doing the advent of code in 2021 to be very useful for me: https://www.youtube.com/playlist?list=PLNP8vc86_-SOV1ZEvX_q9BLYWL586zWnF. It felt a bit like the good bits of pair programming, wherein I got to experience writing Elixir as if I ‘knew what I was doing’.

For me it helped to see the language being written wholistically, rather than as a series of concepts. For example, rather than learning about cond as part of branching functions and then later learning about pattern matching, they might be demonstrated working together to solve a particular problem.

Anyway, check it out, maybe it will help =).

dimitarvp

dimitarvp

For all my 24 years of career, I never once found a good dir + file structure I was happy with. Nothing quite clicked. I think the problem is that many relationships between entities are forming a graph whereas the filesystems are trees.

But I did find a lot of super convinced advocates of a number of strange conventions i.e. order/read.ex and order/delete.ex… one action per file! Madness. Though I’ll admit it makes it a touch easier for fuzzy searching a filename or file contents. This approach gets a few points more in marks.

IMO the Unison language is the only one who gets this right; content-addressed code. In the meantime, before all PLs finally reailze its the 21st century, projects could become f.ex. a singular SQLite database indexed by a number of fields i.e. domain, namespace, implemened behaviours / protocols, app code vs. test code, and such. Also add arbitrary tags and propose a few hundred standard ones.

The whole thing of dir → file(s) → module(s) → function(s) is hugely outdated and has been for at least 20 years.

But again, I am not super against entity/action.ex. It makes fuzzy searching a little easier. Though I never had problems when doing fuzzy search for f.ex. def list_ (assuming using normal Phoenix generators) and finding what I need in literal two seconds.

SyntaxSorcerer

SyntaxSorcerer OP

As I’m going through PragDave’s course I’m curious about his opinions regarding project structure vis-à-vis community standards or what’s considered idiomatic Elixir.

For example, in the “Let’s start coding > Start coding” section, there’s this bit:


Project Structure

I personally put the logic part of my code into a directory called lib/impl; most in the community instead use lib/hangman (or whatever your application is called) for all their application’s files.

You’ll start to see the benefits of having split directories when we look at processes.


I guess I’ll just have to wait and see about the benefits of having split directories, but I’m also curious about the pros and cons versus what “most in the community instead use”.

SyntaxSorcerer

SyntaxSorcerer OP

That’s a fair take, @dimitarvp . The last time I felt this way was more than a decade ago when I became a Rubyist. I appreciated how it was optimized for programmer happiness. I see that in the Elixir ecosystem now

On a personal note, my goal is to build stuff and be able to provide for my family, and I want the option to be able to do that as a solo dev or on a small team. Elixir/OTP + Phoenix (and maybe Ash) feels like a great potential fit for that.

dimitarvp

dimitarvp

Used to, but not anymore. Elixir was the last such experience in my life… and that was nine years and eight months ago.

IMO the whole novelty of new PLs peaks quite quickly. Or at least I got disillusioned by all the language wars.

It all depends on your goal however. If I were programming just for fun, my view would likely be much more excited and positive – like yours.

SyntaxSorcerer

SyntaxSorcerer OP

@blazejcm , here’s my rough plan with the flash cards – create cards for:

  • the core concepts for each chapter (and maybe some more advanced topics)
  • key terms and definitions from each chapter
  • module functions, like Enum

Completely separately, I’m pretty pumped with my progress so far. As a little side note, I’m the type of person who likes to have a solid overall understanding of how the pieces of something fit together before diving in to start learning. Some people are comfortable just picking something up and learning bit by bit, but that’s never been a satisfying way to learn for me.

So I’ve recently finished “Elixir in Action”, “Programming Ecto”, “Programming Phoenix 1.4”, “Phoenix in Action”, and the brand new (and as yet, unfinished), “Ash Framework”, by @kamaroly . (Aside: I want to start using Ash in January; very coincidentally, I picked up Eric Evan’s DDD book several months ago and was delighted to see so some overlap with DDD principles in Phoenix and Ash. I see so much potential to apply these principles in this ecosystem.)

I didn’t complete every exercise in all of these books because my goal was to get a sense of what’s important to pay attention to before rolling up my sleeves with coding exercises from the video courses, as well as to make some mental and physical notes about where I can find more info as I start building.

I just fired up PragDave’s course before posting here – I realized it’s been a while since I shared here so I just wanted to pop by and say “hi”.

Does learning a new programming language remind anyone of that feeling they used to get when they were gifted a new video game or console as a kid? It’s like I’m starting out on a brand new adventure that I know is going to be challenging, but also very fun and rewarding.

blazejcm

blazejcm

Wow, that’s great progress!

I also took the bait and bought two Elixir books from PragProg… Couldn’t resist 50% off… I got Building Table Views with Phoenix LiveView and Real-World Event Sourcing.

I’ve never tried flash cards for learning programming… Let me know how it works out!

Michal

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 94592 917
New
cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
heathen
Quite interesting article Google brought me. Didn’t find any mentions about it here. What do you think in general? Would you use togethe...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
AstonJ
Since we have deprecated our Erlang sections (as we have dedicated Erlang Forums now) let’s add this thread for those who’d like to post ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews