What is the Future of IT?
That is a fascinating question to ask, but extremely hard to answer. Confucius said: “you need to study the past to define the future.” So let's ask ourselves the question first, what has changed our industry in the past decades? To simplify things, let us take the perspective of writing software and see what has changed. As Marc Andreessen described in his article in The Wall Street Journal in 2011: “Software is eating the world,” and by looking at software, we might be able to see what is changing the most and see what lies ahead of us. Nowadays, software is everywhere. It is not only at the places you expect it, like your laptop computer or your iPad, but it is in our cars, our refrigerators, the toys we buy for our kids, our home, our washing machine and, it sounds scary, even in your toilet in the future. So software is everywhere. But how do we build software? Has that changed significantly?
Twenty-five years ago, we built software using programming languages like C and C++. Testing was done manually, and the way we distributed our software was through a transportable memory device, like a floppy or memory stick. To obtain new versions of the software, you made a payment to a bank account of the company you wanted the software from, and they returned an envelope with the disks included. The primary reason to get a new version of the software was that we needed new features. These features were built with a different pace and followed release schedules of once every few years.
What has changed in the way we build software today?
First of all, our software is not written from top to bottom by ourselves anymore. We use tons of libraries, reusable components, online services, and a variety of tools and languages to build what we need. This has increased the speed in which we can deliver new functionality but also increased the complexity of the software and the factors that impact the changes we need to deal with to maintain our software. Components, tools, and libraries used have new versions almost every day, which makes updating software very frequently essential. If you don't take care of software for a few weeks or months, you could even experience a new phenomenon called “bit rot.” We need to update the tools, libraries, and components continually.
Secondly, the way we distribute our software has significantly changed. Today, almost all software is delivered via some form of network connectivity, which has also changed the way we provide software to our customers. We are moving towards a model where we offer our software as a service (SaaS). We don’t let our customers download the software anymore and run it on their hardware. We now host it somewhere online and give them access to the software based on a subscription model, which has extreme implications on how you run a software business. You host your software and are confronted with the efficiency of the hardware resources. You need to be up and running 24x7 and have customer support in place if there is an issue.
The third significant change is that security vulnerabilities are found in the components, libraries, and tools you use every day. Your software can become a target for cybercriminals, who can create some serious problems for your customers if you don't appropriately manage this. The number of security vulnerabilities found every year has increased at a staggering pace. You now need to deal with the changes required to stay secure and learn a lot more about how to build and host a reliable service.
Finally, the fourth change disrupting our industry is the way we use compute resources. We are moving away from buying our own to using public cloud infrastructure. Cloud computing infrastructure vastly differs from the computer infrastructure we have used in our data centers. E.g., in the cloud, you should assume services or parts of the infrastructure can failover since it is built on commodity hardware where failure is assumed. We need to rewrite parts of our software to use these resources efficiently and reliably, which impacts your software architecture profoundly.
What are the implications of these changes, and what does this tell us about the future?
Increased software complexity
First of all, software is becoming more and more complex every day. That complexity is tough to control and requires us to come up with different architectural approaches to the way we build our software. Think about, e.g., Micro Services, where we group smaller business capabilities in easier to manage autonomous services. We pack these services into containers that provide a much more convenient way of distributing our software. Maintainability and testability are improved, but so is the complexity of the overall system. Managing these systems requires us to organize ourselves in a different way then we have done until now. We need the engineering teams to take responsibility and ownership of the complete service instead of only the delivery of software. Cloud provides a self-service model of delivery compute infrastructure. This infrastructure provisioning and configuration can be done in code, thus become a part of the engineering discipline. This has significant implications on how we organize ourselves and how we deal with our traditional organization structure that is optimized around operational excellence and the use of a self-managed datacenter.
The increased pace of delivery of features
Because software is not delivered to the customer anymore, and the engineering teams can take responsibility for running services themselves, the delivery of software to production is also completely automated. From building software to releasing it and revealing new features to the customers. The velocity with which we can deliver value to our customers has increased, which also requires us to think differently about current procedures we have in our Xebia Vibes – Future 19 organizations. E.g., when we want to make a change in our infrastructure, we will do this in code. Going through a change advisory board and getting approval from different parts of the organization will not work anymore if these changes take a few minutes. Our old procedures don’t match the current reality anymore, and new ones need to be created. The same goes for compliance. We would fill out a form of 30 pages to state we comply with procedures before release. We are now moving to an evidence-based model that automatically gathers information during release. No more manual interventions are required, and everything is automated.
The increased importance of security
With the increase in the number of software vulnerabilities in the libraries, components, and tools we use, we need to change the way we deal with security. Many organizations have special teams responsible for security, yet this needs to become something that is understood and supported by everyone in the organization. We cannot leave it up to a few people. Everyone needs to become security-aware, and our software must be scanned for known vulnerabilities as part of the software delivery process. Fully automated and fully traceable.
The move to cloud computing
Currently, only about 5% of enterprise companies have moved to the cloud, which is the tip of the iceberg. It is expected that 80% of enterprise companies will have moved to the cloud by 2025*. As a consequence, the way software is written will change over the next few years to meet the needs of this new hardware and datacenter paradigm. It also means independent software vendors are expected to move their software delivery model from a license model, where we install at the customer, to a Software as a Service model. These developments will impact the way companies organize themselves, the way they provide their services, and even the way they earn their money. It requires a whole new way of thinking about your business.
Technology skills gap
All these changes will have a significant impact on the entire workforce in the IT industry. People that work in IT operations need to gain engineering skills to stay relevant. Testers need to learn engineering skills because testing will become a practice of writing test automation. Software developers need to retain and retool because upcoming changes require different skills. Developers need to test their software as part of the delivery. They need to get trained on writing secure code and ensuring their software is safe when delivered. Architects need to learn what the implications of cloud technology are and what it means to re-design systems that start using container technologies and serverless compute paradigms when they think of the next version of their products. There will be a substantial technology skills gap that needs to be bridged to keep up with all these changes. For organizations, this also means they need to rethink how they keep their people’s knowledge fresh. In the past, you could hire for talent, but there is no talent to be employed anymore. It would be best if you explored how to build a skills intensive organization and how you can continuously keep people’s skills updated.
How Xebia can help
At Xebia, we are a unique group of people who continuously search for change, learn how to apply it, and embrace the fact that this also means learning new things over and over again. We search for the possible, not the impossible. To us, failing means we have learned something new. We share our experiences to learn as a collective. Xebia has evolved into a company that can help you with many challenges. We offer digital strategy and Agile consulting practices to support organizational change. We offer Architecture, DevOps, and Quality practices to help you assess your current software and redefine the architecture and way of delivery. Finally, we have our cloud and technology practices, to guide you on your journey towards the cloud and DevOps. We have developed a wide range of training programs and skills academies to help your company skill up for the future. We have helped numerous customers transition towards the cloud. We have gathered a ton of knowledge along the way and built practices and accelerators that can help your organization succeed. At Xebia, we celebrate change. We know we all fear change, but it is the thing that will bring us forward. Only by embracing it, we can start creating the future now.