| Having just learned Cocoa, I can tell you that you are not stupid, the design of Cocoa is stupid. Design patterns are stupid, hence baking them into a language is stupid. And Interface Builder is very stupid. Fortunately Objective-C isn't as stupid as C++, so once you've covered most of what makes Apple's design stupid, you can trowel over the gaps in logic with cement and forget about them. Most platform and language designs are stupid. Sometimes I think it's an emergent case of a desire to ensure job security. Other times I just think the designers were stupid. Programmers, who supposedly like to question authority, have a really hard time questioning the sanctity of the platforms they work on. I think many would be surprised to learn that their platforms have serious design flaws. Of course you should initialize Function A first using unrelated Function B. How else would you do it? Part of the reason designers make bad designs is because they have to respect a history of bad designs. People are used to XML. Consequently, it's used in plists. The antidote for worrying about whether you are stupid is to identify and express why the design of something you're working with is stupid. The next step is to realize that, whatever it is, it's there, and you have to deal with it. That's work, and that's programming as it is today. |
Interface Builder is flawed - but perhaps I haven't used it enough to appreciate its strengths.