WARNING: This is the most deeply technical of my posts so far. You might want to have an aspirin ready.
One of the things I’ve learned over the years is that when you create a software product, it is important to identify a market problem and provide a solution to the market for that problem. This is slightly different from the approach many of us take which is to find out what the customer wants and provide them with what they want. This often isn’t solving their problem at all but is merely giving them features that they think they need.
I was lucky enough to sink my teeth into a product management role at ARM with the RealView Profiler tool. This product is something that took a concept that’s been around for a while (and even available as open source in some manner) and figured out how the existing products in the market were failing to answer the problem that software developers were looking to solve. Notably, the existing profiling tools for embedded software could only profile milliseconds of software execution without resorting to software annotation or instrumentation of the hardware. This didn’t give the software develoeprs an accurate measure of real-world usage of their software.
<supergeekmode> Imagine, for instance, that you are writing the user interface for an internet-enabled TV. You need to ensure that the code you’re writing will fit in the footprint of the embedded system and that the amount of runtime memory required to run the software will fit within the amount of RAM available to you while at the same time ensuring that performance of the user interface and all other functions (video stream) aren’t impacted. </supergeekmode>
Obviously, only being able to measure this for a few milliseconds of application runtime isn’t going to do you much good in terms of measuring size and performance from the users’ point of view, and annotating the code or instrumenting the hardware to give you longer duration results won’t be an accurate representation of what the user will see.
Therefore, the solution to the market problem was to create a long-duration code profiler that can analyse the fully-optimised production software.
Still reading? I’m impressed!
So how do you achieve this? Well, our technical geniuses worked it out and I can’t share the details. Needless to say, it involved some impressively innovative thinking.
What I can tell you, though, is how much fun it was to launch this product all over the world and see people’s reactions, whether they were customers or competitors, when they realised the possibilities. We created an incredibly easy to use product for them that made their optimisation attempts fast and accurate and comprehensive. And because I care about such things, we made it pretty as well.
YouTube Video of me explaining the product (this one will really put you to sleep)
And here is an article about the launch of the version that supports optimising applications running on mobile phones running Symbian OS