Therefore provide as few public members (methods and for instance attributes) as possible first. Otherwise burning incredible amounts of time is just one reason. Stability and robustnes are more reasons.
I had that practice to make everything private and then "raise" access levels. But what happens when developer is no longer using that getter? I think 95% chance he will not go into my class, check if anybody else uses the getter and then hide it back.
Currently I do it this way: I do make getters for everything that could be reasonably got. The limits of "the reason" I have to decide myself
Some of my classes are as containers to other objects, i.e. I have UI panel it contains buttons, text fields etc. In this case I give them all to the user with getters. Some other classes just do their job. They are not supposed to act as containers. In that case I do not give away any getters. Some classes are mix of both cases.