6. Great Software Engineers Are Easy to Work With
No matter how talented the engineer might be, he or she almost never works alone. The engineering efforts are often just a part of a larger business or research effort. Therefore, it is extremely important that engineers be kind to others on their teams and organizations. They must be willing to extend a helping hand when necessary, and do their best to help make everyone on the team better.
Good engineers can communicate effectively with members of their team and members of other teams within the company. They must be able to express complex ideas in simple ways so that their co-workers can learn and come up to speed quickly.
An engineer who is very smart, but does not communicate or interact well with others, reduces not only their own effectiveness and value, but sometimes causes damage to company culture and morale.
7. Great Software Engineers Understand the Current and Future States of Software Engineering
In the past, common engineering wisdom maintained that a good engineer could program in a number of different programming languages. This point is easy to criticize because to be a true expert in one language the engineer must spend most of his time programming in that language.
If the programmer jumps between a number of different programming languages, he or she will be able to program somewhat well in all of those, but likely will not become an expert in any of the languages.
What seems to be more of a priority for engineers moving forward is to be able to tell which languages and technologies will be right for the programmer moving forward in the types of projects he or she wants to participate in. After the engineer develops a sense of the future of their field, he or she will be better able to choose which languages or technologies to learn and grow their expertise.
8. Great Software Engineers Are Flexible and Creative
In addition to being open to switching languages and adopting new technologies as they evolve, to be a truly good engineer, it is important to have a sense of creativity in how the new technologies may be used. New technologies and languages often open up new software use cases that may not have been available before.
If the engineer is creative in adopting the new technologies, it increases their potential for possibly uncovering a great new product or a winning feature that may be crucial in helping propel their company forward.
9. Great Software Engineers Can Switch from Back-end to Front-end
It is true that many software engineering jobs today will never require the developer to program any front-end features. You still hear the occasional engineer plead that they will "do anything except front end coding," but it is becoming an increasingly valuable trait in a software engineer to be able to smoothly transition from front end to back end development.
10. Great Software Engineers Can Multitask
Modern software engineering at big and small companies is increasingly lean and agile. That means that deadlines are getting shorter and workloads are getting larger. Chances are that no matter what kind of project you are working on, you are getting an ever-increasing list of tasks that must be accomplished using an increasingly wider amount of third-party APIs and technologies. The entire scope of technologies is very difficult to know well.
The ability to quickly learn new technologies and put them into action has always been valued highly in the software engineering world, and it is increasingly so these days. Being able to bounce around between and quickly adapt to the different technologies, APIs, and programming languages is something that software engineers will find very useful moving forward.
Did I Miss Any?
If I failed to include an engineering trait that you feel is valuable, let me know in the comments and get the feedback of other engineers as well.