You may use the different accessors to communicate your intent to someone reading your code, and make it easier to write classes which will work correctly no matter how their public API is called. class Person attr_accessor :age ... end Here, I can see that I may both read and write the age. class Person attr_reader :age ... end Here, I can see that I may only read the age. Imagine that it is set