Notes based off research paper available here
Think back to someone you’ve worked with that you thought was a great software engineer.
Great software engineers are people who are passionate about their jobs and are continously improving; who develop and maintain practical decision making models based on theory and expertise; who grow their capability to produce software that is elegant, creative, and anticipate needs; who evaluate tradeoffs at multiple levels of abstraction, from low-level technical details to big picture strategies; and whom teammates trust and enjoy working with.
With personal characteristics many felt that the attributes were intrinsic to the person-formed through their upbringing-and were difficult (if not impossible to change).
Personal Characteristics
- Perseverant
- Self aware
- Hardworking
- Aligned
- Curious
- Executing
- Risk-taking
- Prideful
- Systematic
- Adaptable
- Creating
- Productive
- Self-reliant
- Focussed
Decision Making Characteristics
- Knowledgable about their technical domain
- Knowledgable about customers and business
- Knowledgable about tools and building materials
- Knowledgable about engineering processes
- Models states & outcomes
Software Product
- Elegant
- Creative
- Anticipates needs
- Makes tradeofs
- Attentive to details
- Fitted
- Evolving
- Long-term
- Carefully constructed
Teammates
- Creates shared context
- Creates shared success
- Creates a safe haven
- Honest
- Manages expectations
- Walks the walk
- Raises challenges
- Personable
- Asks for help
- Well mannered
- Acquites context
- Does not make it personal
- Mentoring