Over the past few months, I’ve been having an on-going conversation with a coworker about what makes someone a good software engineer. What actually prompted the conversation was the mix of backgrounds that other members of our team have. We have developers with computer science degrees, electrical engineering degrees, no degrees, and probably a few other possibilities.
We finally nailed down what we think are six essential traits of a Software Engineer. Over the next 6 blog posts, I’ll go into each one in more detail. The six we came up with were:
- Understands and Evaluates Trade-offs
- Understands the Systems Involved
- Uses Industry Standards and Best Practices
- Doesn’t Try to Reinvent The Wheel
- Solves Problems
- Writes Code
These six aren’t meant to be comprehensive, there might be other aspects. Additionally, I think that the first 5 are probably not specific to software engineering, but engineering in general. I grew up around engineers and got a degree in electrical engineering. The majority of the first five are things I heard other engineers talking about in their field.