I try to hold back from outright criticism, as the full picture is often not seen. But I am also a consumer. When my experience with using your product is hindered by wait times, it makes me wish more of the “higher-ups” at some companies were forced to use the application they pushed out the door. I don’t want to make this post a gripe session, so I will focus on ideas that will improve the situation.
Spend time testing performance
With highly compressed development cycles, it seems performance has fallen out of the quality equation. How does using that new function affect application performance? With modern tools, those numbers should be easy to get. If you can’t easily get those numbers, performance is not your only problem.
Personally, I love spending the time, especially the first few rounds of testing. Once baseline times are determined, set about beating them. Functionality on the critical path can often be sped up by large multiples by simply looking at the reports generated by tools like valgrind/kcachegrind, Intel’s VTune, and many others.
I doubt the product manager will be giving anyone a bonus for delaying the release date by 1 day to pull benchmark numbers. So try to automate such things. Perhaps have your CI tool give the numbers to you. Log them over time.
Invest in tooling
Profiling tools are cheap, and often free. The real investment comes with implementing and learning to use the tools. Basic functionality is similar across the tools I’ve used. So do not fret too much about which tool is exactly what you need. Run one and test it out. Once you learn the basics, take on some of the more esoteric functions of the tool that apply to the application you’re writing. Trust me, the time spent is a very good investment.
Change your mindset
Although your development manager may not have scheduled performance tuning into the development schedule, roll it in with your code review. Take a look at the call numbers. I’ve been doing this a long time and I’m always surprised the first time I get such reports back. So instead of thinking of performance measuring as a sunk cost, think of it as cheap unit testing.
Software quickly gets complicated, and us developers often miss things. Make sure the results you’re getting from your profile tool is reasonable. When they show something strange, investigate. Perhaps even develop a unit test around it. You are probably going to exterminate a bug (or 3) that was waiting to be found.
Poor performance is expensive
Marketing and sales departments talk of COCA – cost of customer acquisition. The numbers are unbelievably high! It takes a lot of money to bring a customer into the door. So why waste the chance of attaining a new customer by giving them poor service? If your application / website / API or product is not performant, you are starting with 1 strike against you.
And for you developers that only work with captive audiences (i.e. internal apps), there are still costs. Think about AWS. They charge for computing power. Doubling performance, which is often very easy to achieve in the first rounds of performance tuning, can result in cutting a huge chunk out of your AWS bill. That is something your manager would like to see!
Ok, I have to gripe a little bit
I have a fairly recent phone. It is no slouch. And the cellular network around here is also up to par. But many of the apps that are available are nowhere near where they should be when it comes to quality and performance. It is not across the board, which lets me know this is not a hardware or network issue.
For what they do, apps like Twitter, Instagram, YouTube etc. are pretty snappy. These apps are often dealing with audio and video streams, which are network and CPU heavy. They do not seem to be an issue for my phone.
But food takeout apps and banking apps? They are as slow as Vermont maple syrup in January. Come on folks! These are apps that can make the company money hand over fist. Take some of that opportunity and cash in on it! My bank doesn’t send me videos or streaming Level II stock quotes. Why does it take forever to get a list of my last 10 debit card transactions?
I am to the point where changes have to be made. Am I willing to go through the pains to move my bank account to another institution because their mobile app is slow? Unfortunately yes. Should I trust a company with my money that isn’t willing to fix a long-standing and relatively simple issue? No. It could very well be a signal of a bigger problem. And you better believe I will be testing the mobile app of new banks before moving my money.