I can count on the fingers of one hand, of the software engineers that I’ve worked with, the ones who I’d drop everything for and go work with again.
There’s a range of personality types in there. Most I can joke with, but some are definitely more serious than others. Some I call friends and we hardly ever talk about code. Others “colleagues” who I know very little about.
There’s a range of backgrounds too. Some are CS majors, some self-taught. Some are all about throwing ideas against the wall and seeing what works, others are all about discipline and process.
I’ve realized that there’s a common thread that runs between them; they’re all great teachers.
Their teaching styles are as diverse as their personality types and backgrounds, but I learn so much from each of them. The differences in styles and approach all seemed to roughly end up having the same outcome. I’m so much better off for their presence in my life/career. I wouldn’t be here without their patience and their desire to share what they knew with me.
It got me thinking. Maybe for me, a key trait for what makes a great software engineer is the ability and desire to share knowledge.