Speed up slow applications
We’ve been developing software for more than 40 years now —so why is the performance of our applications still well below our customers’ expectations? Have we missed something in our software-development pipeline? Agility is very trendy at the moment—but does it solve our quality gaps?
Have you ever thought about the entire life cycle of your applications? We develop them within a few months, and often use them for decades. Do you pay enough attention to how easily you can monitor and maintain a new app? Do you design your applications to support the user and data volumes you can expect in five years time? What about vertical and horizontal scaling? So many requirements end up being completely neglected.
This blog post is a reminder and a wake-up call for those who imagine that fast and reliable applications are the product of a well-designed environment.
We rarely have the chance to start building in a green field. But standards, best practices, tools and knowledge bases are all available to guide us on the way. We’d like to know why our competitors are moving forward while we’re lagging behind. The trouble is, we’re so overloaded with our daily workload that we never have a chance to stand back and review and rethink our practices. This is a bad situation.
Without continuous improvement, your company will never increase its efficiency or reach its full potential. A gap analysis of your performance-engineering practices along your software-development chain is a good starting point. I use a maturity model that consists of about 50 questions. Such a gap analysis gives you an overview of the state of your performance engineering, testing, and monitoring activities across the entire value stream. Once you’ve run your own gap analysis, you can compare it with your peers’ results and get advice on how to improve your weak areas.
Learning how to implement fast and reliable applications is a topic that’s still missing from the university syllabus. No academy teaches its students how to develop, test and monitor applications in order to provide the expected user experience. No books exist on the topic either. As a consequence, the few engineers that actually have these skills are worth their weight in gold. Because they’re well-experienced in development, test and support roles, these engineers can easily jump into different teams and work out how to develop high-speed applications that are also easy to monitor. If you do find such a unicorn, make this engineer part of your core team—and hold on to them for as long as you can!
Don’t make the mistake of taking your tools for granted. Although some excellent solutions are easily available, many businesses still rely on their outdated ones for some reason, and therefore waste large sums of money. Distributed services, cloud, micro-services and container technology have all brought new challenges, but these have also given us some valuable new solutions. We can’t fix 21st century problems with 20th century solutions. Keep this in mind and make it a monthly ritual to research new tools.
Now it’s time to make performance engineering part of your dev and ops daily work. Establish performance-testing services—and either share this activity with your internal teams or find a strong partner who can help you out. Developers will quickly see how performance monitoring helps them uncover breaking points in their applications. Be sure to engage your operations teams as well, and share the findings with them. Demonstrate how to simulate production-load patterns and conduct performance analysis for the new applications.
Find engineers that have a passion for optimization and are open-minded enough to learn new things. The architects, developers, and the test and operational engineers should all take their turn in the shoes of a performance engineer. Once they realize the immense benefits that come with using performance engineering in their daily work, they’ll be hooked!
Don’t take responsive and fast-loading applications for granted. The businesses that have already realized how performance is not an off-the-shelf product are now in the best position to get rid of their reliability concerns. Testing for performance must be everyone’s job, every day. No matter what function you own, consider speed, efficiency, scalability and user experience in all your activities. The few companies that have reached this level don’t waste any money on troubleshooting. Performance needs to be part of every step, every day.
If you’re interested in learning how to update your outdated performance-engineering practices, and stop wasting your money, please contact me at any time. Keep doing performance engineering, every step of the way!