It’s been 25 years since I started my journey into the world of performance engineering. I've witnessed the evolution of our industry from mainframe optimization to modern web performance.
Something interesting that I have seen occur over the last decade is the rise of two distinct “camps” in the performance engineering space. Each has their own tools, metrics, and philosophies. In this blog, I’d like to talk about how we bridge the skill sets and processes of each.
The Great Performance Divide
In the early days of my career, performance was fairly simple. Large companies were moving out of the mainframe world (and rather slowly) into two-tier client/server systems. The mission was simple: optimize the server.
Most of the time the database server was the main focus (and culprit). Response times were measured in seconds, and user experience was largely determined by how quickly the backend could process requests.
Moving to web-based applications brought with it new challenges as companies began with additional tiers between the client (this new thing called “the browser”) all the way to the back end and including the return trip. Sometimes it was three tiers (web server → application server → database) - and many times the application and web servers were combined on a single server, but separated architecturally.
Then companies found reasons to find new tiers to stick in between the web server and the other back end components, depending on what was needed. We referred to these as “N-tiered” or “multi-tiered” architecture, because we never knew how many tiers there would be.

Still, the performance engineers of the Enterprise software world had a steady fix on these systems, not the browser itself. This was considered the “last mile” and many considered that of no concern.
“How can we know if they are browsing on a 10 year old computer, or something else?” “Who knows which browser they will be using”. I mean, who cares, right? This is where we were sorta wrong (I considered myself as part of that group initially, but I caught on fast).
Since the late 2000’s, I have seen the rise of “front end” software engineers who focus on the performance of the browser specifically.
More and more we are seeing a focus on the intricate details of browser rendering, many times without any reference to what the back end is at all. I am connected to a lot of people in this industry, and I can plainly see that we have a fascinating dichotomy between the two.
Camp One: The Backend Performance Engineers
These are the seasoned veterans (a nice way of saying “old geezers”) who cut their teeth on enterprise software applications. These are the ERP systems, CRM platforms, and mission-critical business applications that make stuff run at Global 2000 companies.
They use products like LoadRunner, NeoLoad, and JMeter. Their world is made up of throughput, end user transaction response times, number concurrent users on a system, and resource utilization of the infrastructure. They understand database optimization, connection pooling, caching strategies, and server scaling.
I have personally spent countless hours with these tools, working with developers and database administrators to analyze thread dumps, tune garbage collection, and optimize SQL queries.
When you go through the exercise of a properly implemented load test and see results where the system goes from breaking at 100 concurrent users to serving 10,000 concurrent users with no issues through careful tuning, it is extremely rewarding. It’s why I still do it today.

