Productivity becomes a buzzword as the market faces headwind. Now, every business starts to care about creating more than it consumes actually. Because as the tide of cheap money is going away, no one wants to “swim naked”. A great company is different from the rest by figuring out how to increase productivity. Whereas, the rest may cut cost and promote working harder. But how? Psst! when you give them right tools, people will do amazing things.
New age of SoftWare-Defined (SWD)
11 years since the market reckoned “Software is eating the world” officially. Software becomes the way to A) make things smarter: programable, B) empower more to create: democratizing, and C) open new windows: transforming by the power of real-time data & machine learning. From examples on the mobile app development:
- Around Y2k, we developed many apps for Feature Phones, such as a calculator, an alarm, a music player, a camera, etc. So, the feature phone is more than just a wireless phone, e.g. Motorola DynaTAC. As a result, those physical devices are mostly redundant.
- In 2008, the paradigm shifted again as App Store & Android Market came to the world. Since, any developers can create apps & make a business without the permission of a device maker. With a few hundred apps only, those app stores did not seem significant at the beginning. But nowadays, who will buy a smartphone without the top app store?
- In 2020, Polestar 2 launched with Google Play Store. It makes the dream come true for car app developers & users. I don’t know about you, but I definitely want my next car with a good app store to make itself smarter overtime. So, what may smarter cars become in the next decade?
Better productivity, powered by SWD devices
Emulation is one form of SWD. Which makes a software implementation of its hardware counterpart. Thanks to emulators, the mobile app development has became easier in the past 20+ years.
- Around Y2K as we developed new feature phones, we all worked directly on physical devices even most developers were working on the high level apps or services. Development devices are not only expensive, but also require a long lead-time to aquire.
- In 2009, I developed my first Android app, TextReader.PDF with Android Emulator before my first Android phone, Samsung I7500 arrived. Furthermore, I could support Multiple Screens better even without those devices.
- In 2019, we made AR app development easier by Android Emulator AR Core Macro. And also, it’s possible to “do foldable without a foldable”.
Of cause, there is no escape form ensuring the software just works on the user devices. But, it’s helpful to minimize the hardware dependency as much as possible during the development cycle. Therefore, virtual devices may be the first key enabler if to Shift Left for SW development for any device. Sure, it’s never an easy capability to build. But with a such competitive advantage, you may ship SW products at a higher velocity with better quality & bigger scope.
Capability Levels of Virtual Device
However just like any software product, a virtual device takes some skills & effort to build. But, it’s much cheaper than its physical counterpart to build. Depending on the purposes, each one requires a different level of investment.
- As a development device: just like Android Emulator & Android Virtual Devices(AVD) at the early days. It make easy to prototype & develop SW on new devices. The key successful factors are basically functional at reasonable performance, low cost to run & easy access to be a complement to the physical devices. Another interesting example, Google’s ew Quantum Virtual Machine(QVM) intends to accelerate research & help people learn quantum computing.
- As a reference device, just like Android Virtual Devices with Play Store & fully CTS compliant. It should be equivalent to its physical counterpart as far as the concern of Application Interface. So that, it becomes a reasonable alternative as a development device for developers to validate their software with confident.
- As a scaling tool to deal with variants, such as API levels, device capabilities & configurations, runtime environment, etc. In order to serve the purposes, the footprint, performance & stability qualities of emulator becomes very important. Which will take a considerable effort to achieve, just like optimizing & polishing a high quality commercial device. However, the effort will pay a huge dividend in a mass & complex ecosystem because it’s the enabler for Continuous Testing & Continuous Integration, and its value multiplies by the numbers of tests, variants, apps & updates.
- As a production & isolated runtime, such as Linux & Windows Virtual Machines on the cloud. Which has been the quick way to migrate applications from on-premises. Furthermore, a handful of Android emulators for PC & Mac are getting traction in the consumer space. They are purposely built for gaming, such as Google Play Games beta, or solving the app gap, such as the Windows Subsystem for Android. The key successful factor for this business is if they can deliver the reasonable user experience & a good catalog of apps to reach enough new users & moment.
Full Disclosure
The opinions stated here are my own, not those of my company. They are mostly extrapolations from public information. I don’t have insider knowledge of those companies, nor a whatever expert. Up to you to take it with a grain of salt or two 😉.