I'm a senior software engineer with 14 years of Python experience, now on a year-long sabbatical focused on learning Elixir and functional programming. My current approach is the traditional one: I rely on high-quality books and hands-on coding—much like the intensive, immersive study I experienced in college.<p>Detailed my syllabus for those interested in specifics:
https://flaviuspopan.com/elixir-year-technical-sabbatical/<p>That said, lots has changed in our world lately. I’m using LLMs as tutors to discuss concepts and clarify doubts—rather than to spoon-feed me code—but I sometimes wonder if waiting to fully grasp a language before using these tools is the optimal strategy.<p>Are you embracing traditional methods, or have you jumped straight into AI-assisted learning? What mix of deep study and AI guidance has worked best for you?
Interesting. Everyone learns differently, so there’s not going to be any one good answer to this question. Before mastering the grand daddy of OOP (Smalltalk) and then embracing polyglotism and learning learning learning (which subsequently has me learning Elixir these days as well!), I actually went to school as a mechanical/materials engineer.<p>One of the metaphors I have carried with me all these years in software learning journeys is the power of the alloy. Alloyed materials are one of those cases where you get compounding effects, where 1 + 1 is some greater than 2.<p>I have found that (for me) no single purist approach to learning languages or libraries has been as powerful as using a smattering potpourri of learning techniques. Whether watching videos, taking classes, having mentors, reading books, reading articles, asking questions in forums, actually writing real code, or writing weird boundary pushing experimental larks, I find that they all compound when reflected off of each other. To date, I have found that adding LLMs in the mix is another good alloy ingredient, but that it is particularly fragile when used in isolation.<p>Just Friday, I was working with learning how LiveView JS hooks work better and mixing in some SVG. For <i>some</i> of that, Cursor was really helpful. But alone, it would never have helped me discover some of the nuggets of nuance that I needed to dig through the W3 spec to figure out. Later the same day, it helped me rough out an Ecto join query that was a bit beyond me. But I chose to go do some more research, reading Ecto manuals, watching a vid on joins, and asking a buddy who’s a stud with Postgres. But the LLM really catalyzed my venture into the space.<p>LLMs are a tool too. You learn to use them wisely not by using them only in angry desperation, but through critical experience.<p>Glad to meet another Elixir sojourner on the way.
I continue to use traditional methods. Why? Because I, the person learning a new language, cannot validate the information the LLM presents to me. For me, the risk of learning bad ways (inefficient, not language appropriate, or insecure) of using the new language outweigh any benefit to using an LLM to learn.<p>I view it like learning a foreign language from a friend who is also not a native speaker and not a trained instructor. Maybe they'll be great and it will be fine. But I don't have any way of knowing.
[Disclaimer: I am neither as senior as you nor as immersed/dedicated, or as far along, in/to my learning of Rust as you are with Elixir]<p>* I am using traditional methods (a book or 2) and interrogating LLM about concepts I don't feel clear on, or want to know more about
* Leetcoding in the language
* Will build some small projects, with heavy LLM-help ofc<p>I think the dangers of using LLM could be twofold:<p>* Could obviously make entire programs in a language while understanding too little of it
* Could go down too many rabbit-holes if you ask the LLM about every little thing you are curious about