Stumbling Head First Into Performance Engineering

Stumbling Head First Into Performance Engineering

By writing this article, my goal is to provide a helping hand to anyone that is trying to or thinking of starting a career in performance engineering. If you are one of those people that stumbled upon my article looking for some advice then I would like to welcome you to the club! Please read along and share your thoughts in the comments!

My Background In Short

So what makes me tick and why did I decide to dive headfirst into the wondrous world of performance engineering? Well, I would blatantly say I kind of fell into it and now that I am in it, I am hooked. Improving the performance of IT applications and making the web a better and faster place has become my new mission

My professional IT journey started in 2018 when I got hired by Accenture. Jumping into this big Fortune 500 company was very exciting. When I got started I was quickly pulled into an excellent tester Bootcamp whose sole aim was towards getting me certified and up to speed with all of the latest trends around testing and performance engineering. Shortly after finishing this Bootcamp, I was assigned to support one of our clients. That’s where I started working closely with my mentor Stijn Schepers.

Learning the ropes from an expert at his level was an amazing and humbling experience. It showed me that finding a mentor within your field is really important and having one will truly accelerate the speed at which you can learn and grow in your career.

What is performance engineering?

Slowdowns and outages can give your user a very bad digital experience and this can frustrate your users and can lead to angry comments on social media platforms and unfavourable news articles.

To avoid having your reputation tarnished, companies want to be sure that their IT systems can handle even the toughest of storms. A performance engineer guides with validating an application’s capability of handling those storms and assisting developers and engineers with useful insights on making their applications more stable and efficient.

Be a strong communicator

Performance engineering is a technical role and it does require an advanced understanding of IT landscapes and all of their little intricacies. While having the technical skills is certainly useful, it is not the only thing required to start your journey in this field on a junior level.

Why I don’t see advanced technical skills to be essential on a junior level is because I would rather emphasize on excellent communication skills. Teaching a candidate to become a better communicator is much harder than sending them off to one of the many courses available to learn the technical aspects of IT.

If you can effectively bring your point across to your stakeholders and are good at raising concerns around performance-related issues, the technical aspects will grow with experience, training, and time.

Put yourself through basics training

Before you can start testing the performance of an application, it would be a good idea that to first get a general understanding of what testing is. To do this I would recommend starting to read the ISTQB foundation level syllabus. It’s possible to download this document directly from their website. Reading through this document will give you a good idea of what the basic concepts are.  

Once that is done, your next aim should be to get a better understanding of the basics behind performance engineering. Understanding the basics of performance engineering will be very beneficial to your success. A good source for learning the basics would be Stephen Townshend's excellent YouTube channel “Performance Time”.

No alt text provided for this image

Stephen explains the basics of performance testing in such a fun, clear, and concise way that I believe it’s one of the best open resources on the web for any aspiring performance engineers. Once you have mastered the basics, it will be time to learn how to start building a performance test. 

For that, it’s important to know how to work with a load testing tool. There are thousands of different load testing tools on the market. But the three most well-known are JMeter, Neoload and Load Runner. Deciding on the perfect tool boils down to the budget, the context of the application you are testing, and your personal preference.

Finding online training regarding most of these tools can be challenging as not all vendors provide free online training and most of them might be locked behind a paywall or they may be a part of the vendor's certification program. Moreover, cheap third party courses might also lack quality.

However, Blazemeter and Neoload do provide a good quality free online course for their load testing tools. It is worth mentioning that for most technical people understanding the basics of a load testing tool will be fairly easy. However, if this is your first time working with these toolsets it would not hurt to attend a classroom training hosted by a vendor. It will give you a better understanding of what the capabilities of the toolset are.

Understand Your Results

Just simply running a test and throwing the results that spew out of your load testing tool towards the management and dashing off towards the horizon is not going to cut it. If you want to provide real value, you have to be able to truly understand your test results.

The testing tool is not going to provide you with enough information to do a proper assessment. Its main functionality is helping you perform load testing and they are very good at doing that. However, they lack the analytic functionality because these tools use averages and aggregated values in their result graphs. This isn’t so bad if you want to get a rough idea of how your test performed.

But to solely base your conclusions on only these graphs is a too simplistic outlook and will lead you to overlook important patterns and warning signs. To find better patterns in your results you need to look at every single measurement of your result set aka the Raw Data

Raw Data Vs Averages, Thank You Kevin Tonk For The Animation

When looking at the above comparison, only seeing the first image, one could presume that there is somewhat of a stable system. But in reality, when the animation turns to the second image, there is a lot of information that is being hidden which is hinting towards an unstable system.

When looking at the raw data, a completely different image approaches. Here we see more of the ugliness of the IT system and hidden patterns emerge that would have otherwise blended in through the averages or aggregation.

To visualize the raw data you are going to need a tool that will handle this in an easy intuitive way. For this task, Business Intelligence tools like Tableau work perfectly. This highly popular BI toolset has a lot of videos that explain in detail how the tooling work. This makes it easy to learn and to get started with. If you want to learn more about raw data and the importance of it, I recommend reading Stijn Schepers article “Performance Testing: Act like a detective. Use Raw Data!”.

Get in on the APM game

Solving performance-related problems in a new feature or application that’s being testing can be quite challenging, expensive, and time-consuming. You might be helping solve a performance problem that was found during testing or occurred in production.

Solving performance-related problems is made a lot easier when you have an application performance monitoring solution available. Such incredible software offers you a lot of detailed application-specific information, broken down to the code level.

This means that developers won’t be left guessing where the slowdown is happening. With APM knowledge you will be able to provide the extra information that shows where the slowdown is happening. Besides helping you debug performance problems, an APM is also a valuable monitoring solution allowing you to detect problems in production and report these to your stakeholders.

Learning how to operate an APM solution like AppDynamics, Dynatrace or New Relic can be challenging for newcomers with little technical experience. For more seasoned technical people, everything will feel a bit more familiar and you will find your way around an APM solution rather quickly. Whatever your skill level is, I would recommend to try and find classroom training and learn what an APM can do to help out your team.

Beyond the basics

Within every discipline in IT, automation is always a hot trend and there is no exception in performance engineering. Speeding up repetitive tasks, wrangling test data, or test results in the right format or automatically analyzing results can be amazing for an engineering team.

For most automation tasks, a programming language is going to be very handy and mastering one is going to be more and more important in the future. Not only does it give you the ability to automate monotonous and difficult tasks, but it also gives you more insights on how programming languages work.

Automating away a lot of your repetitive tasks will free you up to help out teams with important risk assessments. This will also give you more time to coach the development team to become more performance-minded. A good example of automating away result analysis is our Robotic Analytic Framework. If you want to know more about how the Python-based framework helped us save some precious time to do more risk assessments then please check out Stijn Schepers’ article on our framework and our Accenture insights article.  

There are a lot of popular options out there like Python and R that would fill our needs perfectly. But which programming language would be the most beneficial? To be honest, it all boils down to your personal preference. But my recommendation would be to start with Python!

Python is an amazing programming language with an easy learning curve. Not only is it easy to learn but it also a true digital Swiss army knife allowing you to pretty much do everything you can imagine. With a strong community and with a lot of open-source packages at your perusal, you will always have the right tools for the job.

So if you think that Python sounds like your cup of tea and you want to start learning it, I recommend looking into free courses from Codecademy. Their courses are very hands-on and allow you to quickly pick up the basics. For the best learning experience, dedicated classroom training would be handy. But learning this on your own is far from impossible.

Conclusion

If you are on your journey to learn performance engineering I would recommend to keep an out for the many performance-related online and offline events. To get more tips straight from the foremost experts.With this, I would like to close my very first article here on LinkedIn. Let me know if this article was helpful to you down in the comments. Cheers and good luck on your journey towards becoming an excellent performance engineer!

Quick Links

I have linked some more articles and blogs of the foremost experts within performance engineering that are relevant for juniors below. Did I skip something? Then let me know which one I missed and I will add it to the list below!

Stijn Schepers LinkedIn Blog

Alexander Podelko's Blog

Scott Moore's Blog

Stephen Townshend's Youtube Channel Performance Time

Vasavi penugonda

Attended Sasi Institute of Technology & Engineering, Tadepalligudem, Pin-534101(CC-K6)

3 年

I really liked it

Scott Moore ?

Software Engineering, Tech Media Content. DevPerfOps, Performance engineering, Observability, Testing, AI. Consulting, Education, and Entertainment.

4 年

Great article. Thanks for the mention!

Interesting and well-written article!

Kevin Tonk

Digital art & Music

4 年

Very nice work!

要查看或添加评论,请登录

Joey Hendricks的更多文章

社区洞察

其他会员也浏览了