We believe it is critical to teach the importance of testing, of communicating with nontechnical customers, and of using all methods at your disposal to create code that is modular and reusable. Our colleagues in the SaaS industry strongly support these goals. The Ruby/Rails ecosystem has by far the most developed tools for unit and functional testing (rspec), integration testing (capybara), acceptance testing and customer communication (cucumber), as well as great tools for code analysis both quantitative (flog, simplecov, saikuro) and qualitative (reek, flay). And Ruby, as a language, includes a number of mechanisms that make it easier to architect your code for reuse (including higher order functions, internal iterators using yield(), mix-ins, and metaprogramming).