Competence of a Performance Engineer
A good performance Engineer should have a good mixture of different engineering roles.
He should be a good Performance Tester: Critical part of Performance Engineering is designing a right test with right mixture of functionality and traffic. While interviewing candidates many of them say we need to reproduce the issue in production. My first question to them would be if you have a performance engineering team why do you have issues in production? But there will be multiple answers to this.
A good performance Tester would never leak performance issues to the production. He would need a good control over the product functionality, architecture, configurations etc.
He should be a good Automation Tester: Many a times i see Out of Scope section in the Performance test plan getting increased. Why? because there will be challenges for Engineer to build the script around the complex and tricky situation.
Performance Engineer should have a good scripting knowledge in order to handle and automate any tricky situations that needs to be tested in the application.
Tools shouldn't be a constraint for an Performance Engineer.. he should have the necessary skills to adopt any tools or language he was asked to work on.
He should definitely be a good Data Scientist and Analytics Engineer: Performance Engineer always has to deal with numbers. He has to be able to mine the numbers from production and process it to be able to simulate them in the performance testing. He has to mine the production pattern, assess and come up with risk analysis pattern for those data.
From the performance test results he should be able to analyze the data and correlate the issue with multiple aspects and pinpoint the issue. This is very critical for this role to be able to identify the performance issue.
He would also be able to test the AI/ML applications if he has developed the good data mining knowledge.
He has to wear the shoes of Technical Architect: Most of the companies get in to performance testing and engineering discussion towards the end of release cycle. Or they talk about it when someone reminds them regarding performance Test results. This is not a good practice which could typically get in to compromising on the application performance or stability. Good Engineering leader would always have good practices defined in order to deliver best product to the customer.
Performance Engineer should involve in the solution discussions and be able to gauge risk that could arise with any of the design. During architectural changes Performance Engineer should understand what performance impact it could have due to the design of the product.
Performance Engineer should also be able to tweak application parameters, GC algorithms, kernel, DB settings etc to define and optimize the application performance.
A good performance Engineer should also be a good Operations Engineer: Critical role for performance engineer is to know how application being deployed. Many a times there would be a huge dependency on the Ops team to deploy, configure and change some settings.
It is always good for a Performance Engineer have deep knowledge on Operations. He should be able to deploy, configure the application himself. Also he should also have knowledge on how application being deployed in production. If he doesn't have knowledge on operations... he can't be a good performance engineer.
This is very critical that he understands every aspect of server side monitoring, network impacts, LB algorithms, Caching mechanisms, AWS, CDN, messaging, queuing and many more. He should be able to get in to these and be able to optimize the application performance by tweaking them.
Performance Engineer needs to at least understand Developer: There would be many situations where performance engineer has to understand how Developer developed the code while discussing or debugging any issues. It is always added benefit that performance engineer has the coding knowledge. If not he should have the knowledge of understanding how coding being done.
During application cpu, memory profiling, thread profiling it is important that performance engineer knows what part of code being impacted and how.
Above are the technical competencies a Performance Engineer. But there are many non technical skills which a performance engineer should exhibit to be able to build a successful career.
Good insight in to performance engineering