We are going through an unprecedented acceleration in the evolution of technology, how we use and depend on it, particularly software. More than two-thirds the global economy is going to be digitally-based by the end of 2021, according to IDC. It has been predicted by Singularity Hub that the number of Internet users will double five years from now. It took 40 years to create the first half billion apps, it’s going to take only five years between 2018 and 2023 to create the next half billion also according to IDC.
Those statistics were hard to imagine a few decades back. Already, iPhone 11 has 100 times more processing power than the software used to launch Apollo 11 half a century ago. We are carrying supercomputers in our pockets that let us talk to anyone in the world and find out all kinds of information. Exactly what the next 50 years will bring is hard to guess, but we do have some clues, and the implications are far-reaching.
For instance, with the roll out of 5G and eventual global satellite coverage, four billion more humans on this planet will theoretically have ubiquitous access to a digital world, according to Singularity Hub. Many of those people will be going from having virtually no digital connectivity to a ‘fast lane’ experience. That is going to have cultural and economic implications, as well as levelling the playing field for innovation to come from more parts of the world.
Other technologies — current and future — are also going to have a big impact. We are already seeing the innovations that cloud computing, the IoT, artificial intelligence, machine learning and 3D printing are enabling, but there are also many others: gene editing and biohacking, nanotech, robotics, and more advanced power technology. Quantum computing will be able to perform tasks that traditional computers cannot do, no matter how large or powerful they become. Driverless cars are already on the way (and NVIDIA has developed a single card that it claims can handle a full driverless car), and I believe we will see flying cars being launched sooner than expected, particularly with investments being made in that space. There are even brain-chip interfaces being developed: people will be able to simply think and it will result in an action.
The user experience is changing too, and will adapt to us, requiring us to do less. Here’s an example scenario: I will tell my digital personal assistant — let’s call it Sparky — that I need some new shoes. Sparky makes some suggestions, based on information on where I am, knows that I need hiking shoes because I’m on a mountain and it has heard me complaining about my feet hurting. Sparky knows my price range based on previous purchases. It looks at what is in style by going to social media, it reads reviews and makes recommendations to me. Sparky did all the work for me; I did not have to operate any software. It will even make sure I have those shoes by next weekend, because it can see from my schedule that I am hiking again then.
The speed of innovation is accelerating, and it can seem a little scary at times, but it is an unstoppable force. Plus, while people are worried about AI and robotics taking away jobs, the reality is that new jobs are going to be created. Humans can use technology to make us better, faster, smarter, and stronger.
The software challenge
Digital transformation has put technology at the heart of even very traditional businesses, whether purely software-driven, or involving hardware that depends on software. This is why software development and ensuring the ongoing quality of that software is more important than ever before, because the sheer volume of code needed is exponential. We are talking an unprecedented scale: there could be hundreds of millions of lines a code in an autonomous vehicle.
Plus, that software needs to be delivered fast, and it needs to be secure and safe, often in line with increasingly strict compliance requirements. Demand for software expertise is at an all-time high and is high on CEOs agendas, because they realize their traditional businesses are becoming software companies. Unfortunately, there is a huge lack of those skills worldwide. There are just not enough software engineers to go around. Jobs are not being filled.
Plus, organizations are already struggling to adopt the processes and technologies they need to develop software fast and effectively, such as Agile and DevOps. Gartner has previously predicted that over 90 percent of organizations that try microservices will find it too disruptive and use something else. The bottom line is that many companies are already struggling to keep pace with change.
A different approach
Fortunately, software development is changing too, particularly around the kind of tools that are available and how they work. Open source and cloud-based hosting has already made it far faster and cheaper for companies or individuals to get started on software development projects. Anyone can be up-and-running over a weekend with an idea that might have planet-wide benefits. No need to have a data center, use a cloud-based one.
Increasingly, automation is being introduced into more parts of the software development process. Not only does that lead to speed gains, it can help reduce human error. Software testing is a good case in point: automation and smart analytics can shift through all the noise to detect what test results have the most impact on the final product.
Likewise, machine learning and artificial intelligence are appearing in software development tools. Taking testing as an example again, AI could be watching the developer’s work and create a test that is more robust or suitable for that particular piece of work. Real-time code inspection makes sure that data is being checked as it is being created, so that more defects or non-compliance issues are detected early, rather than being discovered as a problem at a later date.
These kind of advances help give developers the faster feedback they require to improve, and that is going to be essential with the need to bring on more people developing or managing software. While ‘human’ mentoring is going to be the best (for now), AI and other technologies can help give developers a form of education, such as pointing out the implications that an action might ultimately have on the product’s end users.
Tools that require minimal or no coding experience to develop or test software are also going to help overcome the global skills shortage, by enabling a far wider pool of people to enter one of the world’s fastest growth industries.
There are, however, some big caveats and requirements to bear in mind. While it is easy to create a new software product, it may not be so simple to scale, and that could lead to software that is hard to manage and with compromised performance. Many future software vulnerabilities start at the development stage, and so security needs to be baked-in far more that it has been traditionally.
In theory, DevOps helps to overcome some of the traditional mindsets, but for many developers, security is still seen as ‘not their problem’. Of course, some tools can help this, such as static code analysis and automated continuous testing, and version control tools that maintain a ‘single source of truth’ of who did what, when, where and how during software development.
Software development tools need to be friction-free to use, they should give developers what they need, as opposed to making them go to a particular program. Integrations that fit the way they work is the answer, such as Slack, or their preferred developer hub, or IDE. The kind of ‘drag and drop’ and ‘design ideas’ functionality we see in Microsoft Office tools needs to be reflected in software development tools too.
Open source has revolutionized software development and has many advantages, not least its speed of adoption. However, it requires management, and if it needs to talk nicely with other bits of software, then it needs to have strong integration. There may be hidden costs. Open source is a beautiful thing, but its full implications need to be understood, and companies may need some external help to prevent mistakes being made.
We aren’t on the brink of a huge technological revolution, it is already happening. For any organization using or delivering software, now is the time to start getting get the right strategies and building blocks in place. The opportunities are vast, but we need to manage the risks too. As the famous quote goes, ‘The future has not been written’.
Rod Cope, Chief Technology Officer, Perforce Software