I&#x27;ve been doing enterprise backend development (java&#x2F;spring, scala, akka) for a while and occasionally miss the practice of sitting down and creating a fullstack app myself, which I used to do with php and crappy html. But then I sit down and try to work with existing Ruby&#x2F;Rails codebases and hit a mental block.<p>I guess example #1 is method_missing. I get it, it&#x27;s a huge time-saver and lets you do all kinds of cool things like specify a default behavior for an API if someone sends a random command, or, define the behavior of a method dynamically by the name of the phantom method. But then the rest of me is reflexively saying, &quot;Seriously??&quot; And I get that Spring Data does sort of the same thing, but at least there it&#x27;s limited by domain. If I&#x27;m in a Ruby codebase that is taking regular advantage of that, my first instinct would be find calls that eventually go to method_missing, and then just define the damn method somewhere so that my IDE&#x27;s &quot;Find Usage&quot; will work again. How the heck do you explore a codebase quickly if your IDE doesn&#x27;t work?<p>I guess for me it just reinforces the same rules of thumb. Dynamic languages are fine if you&#x27;re prototyping or doing an MVP. But as soon as you find that your codebase is being read&#x2F;maintained more often than it&#x27;s being written (which will happen sooner than you think), or as soon as you start finding weird production runtime bugs that don&#x27;t happen in your local environment, you&#x27;re better off with something strong or static or compiled.<p>As for how to get that safety full-stack these days, I&#x27;m still poking around.  Scalajs seems interesting, or Angular2 with Typescript, or something that uses RxJs...