I was chatting about DBA skills recently (with a DBA no less) and the discussion drifted to the skills required by technical support engineers. Having spent the last 18 years in and around database and operating system technical support, here's my monologue on the subject. Many of these could be regarded as common sense and applied to other professions. Note I don't claim to possess any of these skills. There's a lot to be said for making something up and hoping for the best.
Top 10 Tech Support Skills
10. Subject and specialist skills. Expertise on the supported product is a given, but as often as nota problem occurs at the interface of a supported product and another component. Hence aknowledge of all operating systems your product supports, all programming languages that clients can be written in, the networking layer used by your product, the assemblerlanguage it compiles to, are indispensable.
In a tech support team if each person can specialize in one subset of the knowledge, that's a lot of specialist knowledge. This is good foreach engineer, though at an organizational enough shared knowledge needs to exist to survive any individual moving on in their career.
Subject matter skills naturally extend to bug fixing and product development skills as you gain experience in a product.
9. The appearance of memory. Learning something, only to forget it when you need it 6 months later is a waste of time. Write down everything you learn and dump it ina Wiki or some other knowledge base for easy access.
8. Search engine skills. Often the truth is out there and a tech support engineer just needs to be better at finding it. A knack for using the right search criteria can be all it takes.
7. Generic problem solving skills. A good tech support engineer should be able to apply generic problem solving skills to troubleshoot any kind of problem, including for products they know nothing about.
6. Debugging skills. The ability to debug any code on any platform.
5. Communication skills. A tech support engineer should be adept at sharing information with other engineers and customers, and building a network of technical contacts across departments, teams and other companies in order to get things done even when proceduresget in the way.
4. Diplomatic skills. A support engineer needs to know how to diffuse high pressure situations by effective communication with all levels of management. What do you do ifsomeone is criticising your product and company, and you know they are right? (Of course thiswould never happen with Informix.) A diplomatic tech support engineer knows how to listen well, and move the focus of the discussion to what can be done to improve thesituation - which ultimately is what everyone wants, even if they need to let off some steam first.
3. DBA skills. This one sometimes gets overlooked. Many database tech support engineers go theirwhole careers without really understanding what DBAs do. If you want to help a DBA solve a problem you need to understand why the problem exists in the first place.
2. Fanatical devotion to problem resolution. Problem resolution does not mean getting acustomer to agree to close a case, it means doing whatever it takes to understand and solve the problem. In some cases if there is a fundamental disconnect between what the product is designed to do and what someone wants it to do it can mean enhancing the product, or understanding the customer needs in a wider context and looking for other ways to solve the problem.
1. Commitment to destroying your job. As with any service industry a good tech support engineer knows that their ultimate goal is to make their job unnecessary - for example push for code development methodology that reduces bugs, work with QA to improve testing, work to improve documentation and customer access to knowledge bases, to the point where the need for a tech support engineer is obviated. This is of course an ideal, with the positive benefits of striving toward such a goal realized along the way.
What did I miss? Comments welcome...