Ivan Nemytchenko's answer to a Q&A challenge: OOP is appropriate when extending frameworks or writing libraries/gems, but most code written in a regular Rails app on a daily basis should be just procedures — as simple as possible. Reaching for monads, dependency injection and elaborate OOP concepts in application code is 'not doing good'; those tools belong in the internals of libraries. Services, mutators and managers are all just procedures at different levels of abstraction. Long methods are fine as long as they do the same type of work at a consistent level of abstraction.