Rails is a complete, multi-level framework for building Web applications that use databases, which is based on the Model-View-Controller (MVC) architecture.
Rails uses everything from startups and non-profit organizations to large businesses. Rails is primarily an infrastructure, so it’s great for any type of web application. It can be it programs for organizing collaboration, e-business, content management, statistics, management, and so on.
A good Ruby/JS developer has these skills:
- Understands OOP and Design Patterns. This is the theoretical basis, without which Ruby/JS the developer has a chance to make an architectural mistake, for correction of which it’s necessary to rewrite if not all, then most of the code.
- Knows not only RoR, but also Ruby. In spite of the fact that Ruby on Rails is used in most projects, despite the frequent expectations of one, it’s almost never enough to solve all the problems that arise before the developer. A thorough knowledge of the Ruby language itself is a real necessity.
- Understands Ruby-gems. Most web projects require a heap of trivial tasks, and they are most easily solved with the help of ready-made Ruby-libraries (those same gems).
- Writes autotests. The practice of covering the entire code with autotests proved to be so justified that individual testers in the company are only involved in solving non-standard QA-problems.
- Applies modern approaches in development. This refers to Agile methodology, XP practices (TDD, BDD, planning poker), Git flow, Ruby and Rails programming techniques, knowledge of tools, etc.
It is very difficult to find such specialists. Developers and teams claiming to use agile approaches and all sorts of best practices often solve tasks inefficiently. And learning from scratch requires too much effort and time.
Therefore, there are several basic requirements for candidates, and this is the necessary minimum of knowledge that the developer must first find for the future Ruby/JS developer:
- understanding of the basic principles of the work of databases and SQL language;
- knowledge of object-oriented programming;
- technical English at the level of reading the documentation.