My team lead writes slower Java code than me, he asks me for Java-related advice from time to time and his Java coding style is horrible (it's like C). It also seems like I should swap title with him. BUT! when it comes to interacting with people across diverse teams he communicated 100 times more efficient than me, he understands what people are saying better than me, his interpretations of people's comments are more insightful than mine. Also, his knowledge in AIX, database, and middleware is just far more superior than mine.
Whenever he was writing Java code, I wondered if he was doing work at all. Whenever I was configuring database I wondered if my team lead thought I was not doing work at all.
I had difficulty understanding why he was my team lead, but not anymore after working with him on several projects.
It's OK to make assumptions about people, we all do subconsciously. Just keep in mind that assumptions needsneed to be validated. A surfing developer may be spawning multiple background threads in his head thinking the best way to tackle a problem. The other developer may take longer to finish his code because he/she spends more time on testing and structuring his code.
The point is, talk to people to find out more about them, especially if they're your team members.