Wash the damn dishes, literally and figuratively.
It's a double-edged sword, really; on one side, taking a step back and putting off the project currently undertaken can give one a clearer perspective of the subject at hand, providing a fresh take on it, in some way(s) previously not even crossed one's mind.
On the other side, all too often it paves the path to development hell--be it due to the neverending quest for holy grail/unicorn of your project (if you're leaning to being a perfectionist), or eating lotus by indulging on various diversions to entertain your boredom (if you're more of a slacker like me). Or, god forbid, both.
Making a declaration about viability of software based on its present state (youtube will never work they'll get sued), (bitcoin will never work because it can't scale), instead of predicting the viability of a future iteration of it.
Nitpicking someone's communication/word choice/edge case instead of focusing out what they were trying to convey
[1]: http://bookofhook.blogspot.in/2013/03/smart-guy-productivity...
They can be prone to thinking that if someone disagrees with them, the person is just stupid or doesn't know enough. It can be very challenging to get smart people from very different domains to collaborate effectively because both sides may throw their hands up quickly and assume the other side is just dumb.
Getting smart people with very different world views to really communicate in a meaty and respectful fashion can be challenging. Both sides may be quick to dismiss the other as both wrong and stupid.
Believing that smart = right, thus, less smart = less right.
This is partly a product of the culture and it is part of why I turned down my scholarship and spent two decades as a homemaker. I was one of the top students at my high school and it was an incredibly poisonous experience.
Raising kids was a wonderful antidote to this shit. It helped me develop mental models concerning the superior density and value of local information, even in cases where a person has substantially less formal education.
In other words, my inarticulate 2 year old knew more about his situation than I did, never mind his lack of education and challenges in communicating it. Disrespecting his knowledge was guaranteed to go bad places. The challenge was in serving as an effective resource for him instead of simply trying to lord it over him.
b: assuming everyone around them is as NOT smart as they are and unintentionally condescending to the ones who are.
c: assuming they never play the other guy in scenario a.
Speaking as a developer who believed this myself for too long
Everyone falls victim to this, but I think smart people can be especially prone.
"I don't need to spend a lot of time studying for X because I can figure it out when I need too" or similarly "I don't feel like learning about X right now but I know I could do it on the test when I need to"
I think that sort of thinking is a classic trap smart students can fall into but often fail to correct. Often, these students can get by in High School and first two years of undergrad but often fall hard in upper division courses. I saw one of my closest friends, who I consider to be much smarter than myself, fail an entire semester of 300 and 400-division courses because he didn't put in the work needed despite having a 3.6+ GPA in our Universities physics program.
Smart people will end up working with equally intelligent people to the point where they're no longer "smarter", they're now just average.
Common manifestations of this trap include using code coverage metrics to decide where to write tests and using measurements like cyclomatic complexity to decide when to refactor code.