Ivan Nemytchenko argues that the Rails service-object pattern is a controversial, harmful abstraction with no unified definition, contradicting what Fowler, Evans and Martin meant by 'service'. Using his 'OOP in Pictures' visualization and examples from GitLab's codebase, he shows service objects absorb controller responsibilities, mix application and domain logic, and grow inward in complexity. He proposes replacing them with a layered architecture of procedural services, mutators, managers, and models — giving each kind of work its own shelf.
claude-opus-4-7a9ef4ecc