I used to think that my ability to create clever algorithms or my comfort with the languages I work in would determine my success as a programmer, but after a dose of real world development, I realized that these skills aren't nearly as valuable as the ability to choose the right tools for the job, to communicate with a team effectively, to decide when to use something out of a box vs. write your own version, and to have patience when trying alternatives until your high level of excellence is met or exceeded.
I was wondering what other 'meta' skills people think are useful for a programmer/software engineer to have and how important they are relative to the technical skills. This is NOT the same as simply asking what soft skills will help make a good programmer. More importantly, when looking to hire someone, how can you test for these better indicators of success (most interview questions I see are still just testing technical ability). Also, does anyone know of any books or blogs which focus on these meta skills? Thanks.