Develop Apps Faster with Ready Software Libraries
As a Product Manager, I'm constantly thinking about value. The benefit of a feature is often apparent, but how to measure it in Dollars, Yen, and Euros?
We've been recently working on a Value Analysis Tool for our customers. It's straightforward to calculate the value of cost savings for relative process improvements, waste reduction, and other enhancements where one shaves off 10% or 30% of the current expenses. Measuring the monetary value of user experience and employee satisfaction improvements is significantly more difficult, if not impossible, in the short term, even though they are of utmost importance in the long term. Hence, we built the analysis model using only tangible benefits with a direct, undebatable influence. Once we made some example analysis in the Value Analysis Tool, we noticed that one kind of improvement impacts the business case the most:
Image: Screen capture of Qt’s Value Analysis Tool for a small team
Things that customers do not need to do at all dominate the expected monetary benefits. Things like not having to develop basic software functionality from scratch drive the business case dramatically. This shouldn’t have come as a surprise but seeing it in financial terms changes one’s perception: Reducing expenses by 30% through process improvement is one thing. Not doing some things is an all-different ballgame.
I’ll focus here on the second biggest driver of the ROI calculation: the value of standard software functionality and APIs that every application needs. Let’s look at this benefit based on a hypothetical example application.
What Basic Software Functionality does a High-Performance App Need?
A typical application developed with Qt is one that runs on both desktop and mobile devices. A typical application is often also one that needs more than the average processing power and, therefore, benefits from being written with C++ to optimize the user experience. My hypothetical mobile application is a photo enhancement application. That would need a lot of computing power for the image rendering. The application could take photos and modify the weather in the image using an Artificial Intelligence-powered image filter. Imagine if you could turn a photo you took in rainy weather into a sunny day!
If we would develop this app, we could code all features from scratch to make it truly unique. We could also not reinvent the wheel, deliver the product faster, and reuse software functionality others have already developed. So, what basic functionality do we need, and what functionality could Qt's and other open-source software contribute? Here are three examples:
User Interface and Interaction Components
My photo editing app would naturally have an image gallery, a camera UI, and a photo editor UI. That would mean I would need a basic UI canvas and means to navigate between the different UI elements. Furthermore, I would need basic UI controls like a button to take a photo, a slider to adjust the strength of the weather effect, and a spinner while the AI effect is applied for the first time.
The Qt software development platform offers such UI elements in the Qt framework. The so-called Qt Quick Controls module, for example, includes a basic UI canvas and various means of navigation.
Image: Example of UI controls of the Qt Quick Controls module
The Qt framework also includes buttons, sliders, and spinners in the Qt Quick Controls module. These can follow my style or look and feel like native Android and iOS apps. Using these would speed up my UI development dramatically.
My app needs a camera interface to take photos. It should work at least on Android and iOS smartphones, but it would be nice if it also works on Windows 11 and macOS hardware. I would need to be able to take photos, and control the flash, exposure, and other standard camera settings. I would need to develop software that accesses the camera APIs of each operating system. This would take quite some time to develop when starting with no sample software.
If I use a software development framework like Qt, I could use a multimedia module that already does all these things. And even better, I would need to do this only once because a cross-platform framework like Qt hides all the operating system-specific APIs. I only need to worry about embedding the camera features once.
Image-to-Image Adaptation AI Algorithm
The magic of my new app would be in the AI algorithm. The AI adaptation algorithm could modify the image to display another weather such as sunny or snowy. Usually, I would build this functionality myself because its part of my apps differentiation. Alternatively, I could try to tap into an open-source algorithm done by people wiser than myself.
For my photo editing app, I might use an image-to-image translation algorithm sponsored by Nvidia. It is licensed under the Creative Commons 4.0 license. So, my app only would need to be able to connect to these Python-based software components. Using this ready open-source software delivers a lot of value to my hypothetical project, however it makes it easier to copy my app.
The Cost of Being Unique
Every marketing strategy pamphlet will tell you that your product needs to be differentiated. You will always need to think about which parts of your product need to be unique and which can be the same as the competition. Using ready software for hygiene features can save a tremendous amount of money and time in app development.
App developers should look for development kits that offer a wide selection of ready software libraries, not only for the Minimum Viable Product but also for potential future enhancements.
If you want to know more about the value of Qt's software components for your app development, then do not hesitate to contact us.
Subscribe to our newsletter
Try Qt 6.6 Now!
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.