Mar 21, 2017
Qualcomm products mentioned within this post are offered by Qualcomm Technologies, Inc. and/or its subsidiaries.
The convergence of hardware and software has reached a tipping point, where the two are no longer mutually exclusive. We’re starting to see a mirrored dependency growing where hardware and software systems are working more closely together than ever, blurring the line between them so that the capabilities of one are linked to the capabilities the other. As developers, it’s important to stay ahead of these trends to ensure our skills are up-to-date with emerging technologies – or else we risk falling behind.
In 1980, Steve Jobs once said, “More and more, software is getting integrated into the hardware… Yesterday’s software is today’s hardware. Those two things are merging. And the line between hardware and software is going to get finer and finer and finer.”
We’re finding this truer now than ever, as we’ve lived alongside the convergence in our daily life for years. Ride services like Uber and Lyft are enmeshing physical world processes with technical innovation, and specialized personal devices like Alexa and Fitbit strive to improve our everyday functioning thanks to hardware and software components working together. Perhaps the most obvious example of the hardware-software convergence is in the burgeoning world of IoT, which spans large scale systems like smart buildings to smaller entities like autonomous fleets where the overall system works like one large hardware device.
So, what’s the best way for a developer to adapt? Moving forward, we’ll dive into the details of what you need to know now, and provide insights on how to stay ahead of these trends as we move into the future.
The 3 forces shaping software today
We’ve come a long way from punch cards and mainframes. However, even as recent as 5-10 years ago, most software was written to perform a task on a device that, while perhaps connected to a network, was itself quite isolated. Think of using a web browser or a word processing program. Now, the expectation for what software can do is much greater.
Here are 3 key forces we see affecting software development today:
- Ubiquity: Thanks to advances in hardware that make it light and portable, it’s now expected that software has the ability to run anywhere, anytime.
- Context Awareness: More than simply performing a task, today’s software is able to recognize the broader context that it’s operating within and respond accordingly, making autonomous decisions or providing data-driven recommendations to users.
- Hyper Connectedness: No longer isolated, today’s software is all about connection – to other devices, to the physical world, to diverse communications channels, and more.
If ubiquity, context awareness and hyper connectedness are shaping software, it’s the hardware that dictates the possibilities of these experiences.
Similarly, these forces have also expanded the potential of hardware:
- Ubiquity: Processors and sensors continue to get smaller, cheaper and more powerful, meaning more computational capability in more kinds of objects. For example, the Qualcomm® Snapdragon™ 835 Mobile Platform is 35% smaller and uses 25% less power than previous designs, and is designed for use in smartphones, VR/AR head-mounted displays, IP cameras, tablets, mobile PCs, and more.
- Context Awareness: The diversity of sensors and processors makes it possible for a device to recognize aspects of the physical world around it and its state – such as whether it’s moving at 20mph, following a subject, or near in danger of hitting another object…or all three at once.
- Hyper Connectedness: Through the multitude of connectivity options, hardware is being built to function as part of a collective system defining the capabilities of our experiences. This includes smart homes, smart glasses and more.
Becoming more than “just” software or hardware
Given all of the factors affecting software and hardware today, it should be no surprise that development has gotten a lot more complex. A helpful way to look at this convergence is to think of today’s software as doing more than “just running a program,” and today’s hardware as doing more than “just supplying the engine.”
For example, today’s software takes numerous, diverse sets of inputs, performing collective analysis resulting in reactions of the system, local or systemic, in the physical world. This can be between machines or between people and systems of sensors and machines. Today’s hardware brings value by providing the software with important external input and data, and allowing the program to interact with the outside world.
Here are some examples illustrating hardware-software convergence in daily life:
Design with intent
It’s all well and good to understand how the hardware-software convergence came about, but what does it mean for a developer today?
While many of the impressive advancements in hardware and software development can be attributed to specialists, developers looking to build the next generation of responsive applications could approach the challenge from a broader viewpoint. Approaching a new project from a stance of multi (or anti) disciplinary thinking will provide a tremendous opportunity for new insights and innovative thinking.
Stay abreast of the latest hardware innovations on the Qualcomm Developer Network and elsewhere, share knowledge with other developers on community boards within Software or Hardware, and keep testing, learning, and iterating. Together, we can work towards finding ways to develop seamless hardware-software solutions and drive new innovations in this space.