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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yep, this circles back to the observation of some of us around here that most seasoned Elixir devs are “refugees” from other technological stacks where they got very painful schooling and learned their lessons.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206399" 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/becoming-an-intermediate-elixir-developer/37991/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-206399" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206399"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="206410" data-post-id="206410">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>When you are back-end engineer, database knowledge and when to apply which kind of database persistence technology (e.g. key value store vs graph database) is absolutely crucial. To answer your immediate questions:</p>
<ol>
<li>When to use SQL vs NoSQL depends on the data and its properties regarding transactions, consistency, schema and I would add the maturity of the database architecture with relation to its web architecture.</li>
</ol>
<p><strong>Use SQL:</strong> If the Data needs to follow ACID properties, requires strong consistency and there is a strong need to maintain relationships (e.g. JOINS etc.), you should use a SQL database aka a Relational Database (RDBMS) e.g. financial and banking transactions. Examples of common SQL databases are PostgreSQL or MySQL.</p>
<p><strong>Use NoSQL</strong>: If the Data does not need ACID properties or follows BASE properties and can work with eventual consistency and does not have any apparent schema or relationships (this is typical for startups where they don’t know even know their data schema for anything including transactions) a NoSQL database like MongoDB would fit here nicely.</p>
<p>I will argue now, there is now a 3rd category called NewSQL or Distributed SQL which kinda of marries both the good parts of both SQL and NoSQL databases e.g. Google Spanner, Yugabyte and FaunaDB. Yes I can have my cake and eat it at the same time thanks to NewSQL. However, as I am learning the hard way, lots of teething problems with this kinda of technology.</p>
<p>If you like to learn more about these concepts, I recommend this course: <a href="https://www.educative.io/path/scalability-system-design" class="inline-onebox" rel="noopener nofollow ugc">Scalability &amp; System Design for Developers - AI-Powered Learning for Developers</a></p>
<p>If you look past the apparent bias of the course author’s towards Java and Node.js you will be fine and you will gain a 50,000 feet of all web architectures (monolith, micro-services, and hybrids versions of them).</p>
<ol start="2">
<li>For your second question, its about capturing state and transferring it back and forth and the best resource that I have found is the ElixirSchool content to gently introduce the topic and then jump into the book ‘Designing Elixir Systems with OTP’. In fact, OTP is so foreign to most software developers. For example if your interviewing in a non-BEAM/Elixir/Erlang shop, they may ask you explain it.</li>
</ol>
<p>Always be ready to white-board anything and if you don’t understand during your interview. Be fearless and ask them to repeat it and talk aloud about your process for answering it loudly. Sometimes the method is more important than having the actual answer in hand. Anybody can google and get the answer but alot of problems you will not be able to google it and have to apply some kind of reasoning behind it.</p>
<p>P.S. I am hiring a <a href="https://forum.elixirforum.com/t/senior-software-engineer-remote-eastern-pacific-timezone/38090" rel="nofollow">backend engineer</a> for my current business if you are interested.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206410" 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/becoming-an-intermediate-elixir-developer/37991/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-206410" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206410"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="206458" data-post-id="206458">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I should preface that I am not at all a fan of interview questions like the ones you posted. Those questions fall into the category of “depends” where you could write a short book explaining all the options and rationale for each (as many have). Often, those questions have less to do with testing your knowledge, and more to do with whether you think like the interviewer. Some are even “gotcha” questions there to inflate the interviewer’s ego.</p>
<p>To answer your question about gaining experience, my personal experience has shown that biting off way more than you can chew is the best way.  Jump into the deep end on something. Doesn’t really matter if it’s a toy project, a startup where you’re given way too much responsibility, a premature promotion, etc..  They all serve the same purpose. Books are fine for reciting academic sounding answers, but you need real-world, in-the-trenches experience with things like OTP to know how to <em>really</em> use it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206458" 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/becoming-an-intermediate-elixir-developer/37991/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-206458" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206458"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="206477" data-post-id="206477">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>One thing that could be useful to do with toy projects is to load them with tons of data and see if your original design decisions continue to hold true. Just seed your database with a million entries of each type and see what impact it has on performance, memory, UX, etc. Then try to make it better. You’ll learn a lot!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206477" 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/becoming-an-intermediate-elixir-developer/37991/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-206477" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206477"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="206485" data-post-id="206485">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I should probably pay you to teach me how to express myself so concisely. <img src="https://forum.elixirforum.com/uploads/default/original/2X/6/6c3193d1dd46244da3c8c6f719c9f5e2abdd5ae8.gif?v=15" title=":003:" class="emoji emoji-custom" alt=":003:" loading="lazy" width="20" height="20"></p>
<p>I was about to say almost the same as you but mine would have been 3x bigger… <img src="https://forum.elixirforum.com/uploads/default/original/2X/1/1ce11e5eafdf6b6dd26d772ae92004206a4327d1.gif?v=15" title=":010:" class="emoji emoji-custom" alt=":010:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206485" 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/becoming-an-intermediate-elixir-developer/37991/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-206485" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206485"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="206493" data-post-id="206493">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ha, thanks.  I’ve always been a fan of this quote from Mark Twain:</p>
<p><em><strong>“I didn’t have time to write a short letter, so I wrote a long one instead.”</strong></em></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206493" 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/becoming-an-intermediate-elixir-developer/37991/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-206493" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206493"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="206496" data-post-id="206496">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>LOL! <img src="https://forum.elixirforum.com/images/emoji/apple/laughing.png?v=15" title=":laughing:" class="emoji" alt=":laughing:" loading="lazy" width="20" height="20"> That’s very true though, being terse requires more thought.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206496" 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/becoming-an-intermediate-elixir-developer/37991/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-206496" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206496"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="206514" data-post-id="206514">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi</p>
<p>Forget about Elixir (it’s just another programming language).</p>
<p>Forget about landing another job (it’s just another job, you won’t be happy).</p>
<p>Read everything and study 24/7, stay curious so you can create opportunities for yourself. Good luck!</p>
<p>As to the questions…</p>
<ol>
<li>
<p>The SQL vs NoSQL question makes absolutely no sense without context (traffic level, structure or structureless-ness of data, concurrency model, etc) and a proper architect would study the actual underlying problem closely before providing a solution.</p>
</li>
<li>
<p>I’d probably use a bunch of processes and model each door and each carriage separately, as a starting point. Could model riders too.</p>
</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="206514" 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/becoming-an-intermediate-elixir-developer/37991/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-206514" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="206514"
                     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>