Updated: May 19, 2022
Complex problems often have simple solutions. The trouble is, we get distracted so easily—or even neglect to validate and improve the performance of our applications altogether. Why are we still struggling in this area of performance engineering? Even though the pioneers were writing books about performance engineering over 30 years ago, we still can’t seem to avoid running into reliability problems or serious performance issues.
This post is a wake-up call for all engineers and managers involved in the software development chain. Read it and understand why good decisions, bad decisions and experience together help us master the challenges involved in writing and maintaining high-performance applications.
Doing something is better than doing nothing!
Don’t make performance a last-minute activity or just hope that response times will be good enough, which is even worse, With thousands of similar products out there, our users can afford to be choosy—if page loading times don’t meet their expectations, they’ll quickly move away.
Good decisions that take too long
Because the impact of our decisions is often unknown upfront, we avoid making them too quickly. Instead, we involve our peers, reach out to our managers, and they in turn consult their directors. After several days—or sometimes even weeks—we reach a consensus, and finally proceed with the actual work. But is that really what makes a good decision? Is it worth involving so many brains, and taking so much time to make a decision?
Bad decisions can be useful
We often struggle when one of our ideas doesn’t work out well, and may try to avoid any more decision-making as a result. It’s easy just to cop out, but hard to start making judgments in order to identify and fix performance glitches. Don’t shy away from making these decisions— even one that’s less than perfect still grows your experience. And having this kind of experience is actually the only way of learning how to make good choices. Don’t forget— your decisiveness today could impact your entire life, and help you to reach the next level in your career!
Any performance engineer who works ten years or more will have known many difficult situations. Firefighting, last-minute performance testing, tool issues, difficult team settings and the successful identification of breaking points are experiences that will have formed you into an open-minded and highly effective engineer. You’ll know exactly when it’s time to quickly proceed or alternatively, to postpone the flow and involve other teams in the performance-testing process. This experience didn’t come free. You went through many ups and downs, and not all your decisions were successful.
Keep an open mind, be flexible, and always make the effort to extend your knowledge, This approach will help you overcome difficult situations in your day-to-day involvement with performance engineering.
By the way, if someone asks you the secret of your successful career, you should tell them about these three things:
1. Good decisions 2. Bad decisions 3. Experience
What are the benefits of decisiveness in performance engineering?
Proactive Performance testing is still an afterthought. An emphasis on feature-driven tasks together with late involvement are bad habits that are throwing us back. Avoid this by holding scrum meetings and addressing your concerns from a performance-testing perspective.
Forward thinking Try to see the big picture behind the new product and put yourself in the customer’s shoes. Have you addressed all the potential situations in which the new application will be used? Consider factors such as bad network conditions and how the application will be affected during peak hours. Are growth and endurance testing part of your load-testing setup?
Timely delivery Very lengthy decision-making cycles will kill your productivity. You can’t proceed with your plan if everybody shies away from making decisions on the next steps. Being decisive in performance engineering pushes your turnaround to new heights. It means you quickly move from analysis to tuning and re-testing, instead of waiting for days until someone decides how to proceed.
Shift quality to the left Figure out ways to make performance engineering part of your value stream—even though your developers might feel locked out and ignored for a while. Now it’s time to increase the performance-testing coverage in the early stages. It’s not about replacing your job, but more about enabling others to reach the common goal of better software quality.
I’m hoping this lesson is an eye-opener on the importance of being decisive in performance engineering.
Keep doing the good work!