I am not much of a programmer, and have never understood OO development, despite a fair bit of reading. I was thinking about it earlier today, and I think part of the reason OO seems so difficult is that it does not fit human languages. Languages have separate nouns and verbs and various modifiers (adjectives/adverbs) and connectives. OO with its "unifying" attributes and methods is like a language with preformed phrases rather than words, and which can be modified in only limited, preset ways. This works much better for visual images (since it seems to be closer to how we manipulate images mentally) which makes it a better fit for GUIs.