<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="25484" data-post-id="25484">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="peerreynders" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/120/5826_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  peerreynders
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Reading multiple books takes care of the “review” aspect. I was more thinking along the lines of a “jump start document” to get you back into the zone with Elixir after, lets say, working for a few weeks exclusively in Ruby.</p>
<p>I’m also not sure how (time-)effective “multiple” books are going to be - unless they make you work through a (different) substantial project. “Programming Elixir” is largely exercise based, while IIRC “Elixir in Action” has you build a key-value store (in the beginning). So between those two you should be covered and which one you start with is largely a matter of preference.</p>
<p>Now for additional practice you can use <a href="http://chimera.labs.oreilly.com/books/1234000001642/index.html" rel="noopener nofollow ugc">Études for Elixir</a> almost immediately alongside either of those two. I really don’t see a case for also going through “Introducing Elixir”.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="25484" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-book-recommendation-for-a-javascript-dev/3815/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-25484" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="25484"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="25486" data-post-id="25486">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AstonJ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AstonJ/120/15_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AstonJ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I used to have notes like that for Rails - but found that after a while of working with it I no longer needed them, so the ROI for it didn’t seem great. Also, I found that I just googled things like that as generally what’s in the official guides is enough <img src="https://forum.elixirforum.com/uploads/default/original/2X/7/776053aa22968f83c10e90c98b23aa0ddd5c9d47.gif?v=15" title=":lol:" class="emoji emoji-custom" alt=":lol:" loading="lazy" width="20" height="20"></p>
<p>Re reading multiple books that cover a similar topic, I think I do so for a number of reasons:</p>
<ul>
<li>Repeating/reciting stuff helps reinforce it</li>
<li>Sometimes a different take can help make things clearer or let you view it from a different angle</li>
<li>I want to write a similar post about learning Elixir that I did for Ruby, so want to read everything out there if possible.</li>
<li>I will feel like I’ve missed out if I don’t read everything (or as much of it as possible) <img src="https://forum.elixirforum.com/uploads/default/original/2X/0/0cec293b62f812bddecc500a163641d57f66de54.gif?v=15" title=":044:" class="emoji emoji-custom" alt=":044:" loading="lazy" width="20" height="20"></li>
</ul>
<p>I’m not really into doing exercises as I don’t feel the same sort of reward from them, as say, working on an actual app (but I think part of me is just lazy like that, haha).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="25486" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-book-recommendation-for-a-javascript-dev/3815/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-25486" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="25486"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="25503" data-post-id="25503">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="LawJolla" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/LawJolla/120/3442_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  LawJolla
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve just made the Javascript transition.  I’m two months into it and feel pretty comfortable.</p>
<p>My favorite is Stephen Grider’s <a href="https://forum.elixirforum.com/t/the-complete-elixir-and-phoenix-bootcamp-udemy-course/2271" rel="nofollow">Complete Phoenix and Elixir Bootcamp</a>.  It’s slow but very comprehensive.  If you like a lecture format, this is where I’d start.</p>
<p>I also got quite a bit out of <a href="http://LearnElixir.tv" rel="noopener nofollow ugc">https://www.learnelixir.tv</a>  The videos are very dense and quick.</p>
<p>There are good program challenges on <a href="https://www.codewars.com" rel="noopener nofollow ugc">Code Wars</a></p>
<p>Dave Thomas’s Programming Elixir is great, as everyone mentioned.</p>
<p>I’ve held off on the OTP stuff.  Javascript is goofy being single threaded, synchronous execution context with a separate event loop.  Elixir has great async helpers to “simulate” a JS event loop.  For threads, If you’ve worked with Node and spawning child processes, then you know when and how OTP might be advantageous.  If you’re designing web apps like me, my opinion is deep diving OTP is overkill.  I’ll wait until I need an OTP optimization and then go for it.</p>
<p>My biggest Elixir struggles aren’t functional programming, pattern matching, recursion, or the rest.  It’s the vast number of data types, macros, and imports.</p>
<p>Data Types:  To me (and I think most Javascript converts), we’re used to everything being an object.  The Elixir/Erlang data types are many and, at times, maddening.  When to use a tuple, a map, a list, a struct, and atom?  Why use an atom and not a string?  And the various notations, e.g. %{“a” =&gt; :b} vs %{a: :b} //error.</p>
<p>Macros:  Marcos often hide the code (to me anyway) and makes it difficult to determine if you’re dealing with a function, macro, or what.  They can be very magical and very frustrating.</p>
<p>Imports:  I still fight this one.  I’ve never worked with a compiled language.  With Javascript being interpreted (and the Common JS / ES6 import pattern), Javascript imports are explicit.  Elixir’s <code>use</code> macro can inject functions.  And use of named modules doesn’t tell you where the function physically sits.</p>
<p>But I’ve done more in two months with Elixir than a year of Node.  I find the code so much easier to read (save the imports parts) and explicit.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="25503" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-book-recommendation-for-a-javascript-dev/3815/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-25503" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="25503"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="127734" data-post-id="127734">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="everfrost" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  everfrost
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>A while ago, I asked my fellow developers for their recommendations, read reviews and visited a couple of websites. Here are the results:</p>
<p><a href="https://prograils.com/posts/elixir-books-for-beginners?utm_source=elixirforum&amp;utm_medium=referral&amp;utm_campaign=elixir-books-may" rel="noopener nofollow ugc">Elixir books and courses for beginners</a></p>
<p>Plus, a friend of mine has also authored a <a href="https://prograils.com/courses/elixir/ch/why-elixir-overview" rel="noopener nofollow ugc">Free Elixir Course</a>. Feel free to check it out!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="127734" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-book-recommendation-for-a-javascript-dev/3815/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-127734" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="127734"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>