On this day in 1994, Israeli Prime Minister Yitzhak Rabin and PLO Chairman Yasser Arafat reached agreement in Cairo on the first stage of Palestinian self-rule. This was the first agreement with the PLO that acknowledged Israel’s right to exist. Unfortunately, performance is everything! See the Second Intifada and Rabin’s Assassination. I guess both sides had serious issues with peace.
Failure to deliver on the expectations is a problem with web applications, and apparently the same is true for Middle East peace agreements.
Performance Testing and Expensive Queries
I saw a short article that was posted today on a blog called Data Recovery, and the post is titled Performance and Load Testing for Applications. It has a slightly different perspective on my favorite subject.
While some of the sentences don’t seem to use proper English grammar, I did find some of the points useful:
Web load testing will help us understand the performance of applications at peak load times. Ideally, a web site should have the capability to handle many simultaneous requests from the users be it for a large set of data or just multiple requests for small sets of data.
Those statements are straightforward enough. However the emphasis on “data” is a bit unclear to me, and since the site is called Data Recovery, it makes me think that they want to make the distinction of performance based on database content volume. For example, if I test with a small test database with a few hundred records I generated, my application may perform splendidly. Yet if I flood my test database with a few million records, chances are my slow queries will become a performance problem. The difference in size of the data set may be more significant in my system performance than the number of concurrent users.
Databases are a very common bottleneck to web application responsiveness. My experience has shown that too many developers are unaware (or ambivalent) of the nature of “expensive queries”. Not all SQL statements are created equally.
If you want to tune your applications for optimal throughput, you need to invest some time studying the details of how SQL queries are executed by the database engine. There can be an enormous overhead with using joins on large tables, but it doesn’t have to be so. The trick is be certain you are performing the best operation. If your app makes wasteful disk I/O traffic, especially when it returns unneeded rows and/or columns. Big performance hits can still accrue when a “bad” operation is precomputed and indexes are properly used. Database denormalizing can help performance, but Chris Date proved that most scenarios of normalization have performance benefit – contrary to many accepted myths. His book Introduction to Database Systems goes into great detail on this issue and explains how he conducted the tests to disprove the myths.
Web Development Commentary
A few years ago, we tried outsourcing some of our software development to an offshore company to save money. The logic was that if we could hire 10 Java coders for $20/hour, we should get a product finished in half the time and a quarter of the cost than we would if we hired our own team of developers in the U.S. It sounded good on paper, but it simply didn’t work that way.
So when I encountered Code Anthem’s Law, I had to share it with our readers. Here’s the law:
The less the median developer on a software project team is paid, the more the project will cost to complete.
When I’ve worked for large corporations such as Fujitsu, they mismanaged employees regularly by retroactively changing compensation plans, treating people like dispensable furniture, and replacing highly-paid skilled workers with cheap inexperienced newbies. The result? Failure to meet the client’s expectations. Lost revenue. Lawsuits. Performance is everything!
Pointy-haired senior managers rarely take into account the motivation of the employees. Nor do they consider the maintenance cost of crappy code. Additionally, communication skills are so often overlooked when hiring a software developer. Some coders have great tech ability, but the team cannot work with them because they are in their own little world, and that leads to railroad tracks that don’t meet in the middle.
According to Code Anthem, “When you try to turn real people’s passion into interchangeable ‘man hours’, then what you end up with is a guy banging on a keyboard, not great software.”
Dilbert has a corollary:
OS/2 is Resurrected by IBM?
A couple of weeks ago, Slashdot has a posting about IBM bringing back OS/2. Many of the developers I know thought OS/2 was a much superior operating system than Windows – even Vista! Apparently many applications for military and government are still running on OS/2. From the comments section on this posting, it would seem that many developers would welcome it into the mix.
I had very little interaction with OS/2 back in the day. I was a DOS and Windows guy simply because all of my customers had chosen the Microsoft platform (like 95% of the desktop market). OS/2 won lots of awards, and that may have been because IBM had the marketing clout to get the votes it needed. Still, the operating system never seem to get enough momentum to be a serious player.
Are you skeptical about OS/2 being resurrected? Yeah, me too.
Performance is everything!