Monday, December 8, 2008

What Makes an Effective Engineer?

Strong technical skills alone do not make for a great engineer. Believe it or not, coding is not necessarily the most important thing that an engineer does. It takes great communication skills, people skills, drive, and initiative to make a truly successful engineer.

This is not to say that technical skills are unimportant. Of course you need to understand the technology, and you need a solid foundation in the principles of computer science. But this is merely a prerequisite for success, not the full requirement. Technical skills alone are insufficient for true success.

Great engineers don’t just point out problems and expect others to fix them, or worse, just ignore the problems and hope they go away. Rather, they dive in and investigate the problems themselves, even if it’s in someone else’s code. They’re not hung up on finger pointing or on getting credit; they are just interested in getting things done. You can call it initiative, or call it being conscientious – I prefer the fancy term “a bias for action.”

Also, in any decent sized organization engineers will not be working alone in a vacuum. They need to work as part of a team developing features and products, and the entire team needs to be on the same page. To some extent such coordination is the responsibility of the dev or project manager, but each team member’s ability to work well with their teammates contributes to the overall effort. This is what people talk of as ‘teamwork’.

When I talk about teamwork I’m also referring to sharing information. Does the person speak up and volunteer information when they should, or do they stay quiet and withhold key knowledge? Or do they instead talk too much and soak up everyone else’s time? Are they able to split up a task and coordinate work with another engineer? These are important considerations in judging a person’s teamwork skills.

In addition, engineers will often have to work with other people outside of the team. This may involve other technical teams as well as product managers, senior management, sales, etc. These may be less technical or non-technical people, and the way the engineers interact with them can spell success or failure for the project (not to mention the engineers’ careers).

The best engineers are able to communicate with non-technical people in a productive manner, explaining technical issues in a clear and simple manner that everyone can understand. They are able to distill a problem down to the essential points instead of getting bogged down in technical details. i.e., they can explain clearly what the issues mean to the decision makers so they can take meaningful action instead of ending up confused.

Hence to be truly successful an engineer needs to work as part of a team, not just within their immediate group but also within the entire organization. They need to communicate well and spread understanding beyond just the engineering organization. This kind of interaction and communication skill set is not taught in school, nor is it necessarily innate. It’s something that can be developed over time, but unfortunately one that some people either do not understand or refuse to pick up.

No comments: