I would have preferred the title, "Recognize who you're working with"
I have worked with many programmers and it's not always readily apparent who is better than me and who is not. And of course, some are better than me in some things but not others.
We don't always have the luxury of choosing who we work with, and have even less chance of only picking those better than us. So it's probably more practical to learn which habits to emulate and which to avoid in those we actually do encounter.
For example, that database whiz may suck at algoritms, so just because you learned one great thing from him, it does not necessarily follow that you should learn others. Also, I have often found a big difference between the perceptions of others (especially bosses and users) and my own assessment of their skills.
There is something to be learned from everyone. Just get good at figuring out "what" from "whom".
Exactly, 'careful' implies that you are a powerless sheep - which is actually true for an alarming percentage of the population.
I think Paul Buchheit's recent article 'Two paths to success' does a very good job of illustrating the distinction between intrinsic and extrinsic motivation. Seems like one's personal ratio of extrinsic vs intrinsic motivation can be used as a sort of co-efficient that limits or enhances how you are influenced by your network. Further, if you pick some of the most intrinsically motivated entrepreneurs and innovators, you will find many people who will actually be affected negatively by what their network is doing.
In my opinion, for the sake of innovation, the world needs far more entrepreneurs and technologists who are highly intrinsically motivated, and far far less people who are so impressionable that the need to be 'careful' about who they work with. Just like you say, there is something to be learned from everyone.
Skill isn't one dimensional. If I'm better at X and my colleague is better at Y we can both learn from someone 'smarter' and everybody is clearly better of by cooperating.
I have worked with many programmers and it's not always readily apparent who is better than me and who is not. And of course, some are better than me in some things but not others.
We don't always have the luxury of choosing who we work with, and have even less chance of only picking those better than us. So it's probably more practical to learn which habits to emulate and which to avoid in those we actually do encounter.
For example, that database whiz may suck at algoritms, so just because you learned one great thing from him, it does not necessarily follow that you should learn others. Also, I have often found a big difference between the perceptions of others (especially bosses and users) and my own assessment of their skills.
There is something to be learned from everyone. Just get good at figuring out "what" from "whom".