API design is really key to working together. If I could pick one thing about myself to improve right now it would be API design skills. I think a lot of other programmers don't get it for whatever reason, so I can see why that would be in high demand.
>If I could pick one thing about myself to improve right now it would be API design skills.
I know it's cliche to suggest, but learn by doing. You need to think about what you're doing, of course. Otherwise you're just doing things by rote.
One thing I love to do when designing an API is to write pseudo-code that is using the new API, before I even start to design the API itself. Just think to yourself, "What is the exact call I want to be able to make?"
That call probably doesn't have a dozen parameters, or 15 lines of set-up. It has the minimal information you need to get things done.
Oh, and one other trick: If anything EVER annoys you about an API, decide to fix it rather than putting up with it. I don't care if it's NOT "your" API to fix; wrap it with convenience functions if necessary.