Software trends in the next decade; an open letter to myself

Ramtin Seraj
9 min readJan 27, 2020

--

Photo by Alana Harris on Unsplash

It’s 2020 and here we are; more than any time we’re impacted by the growing power of software (messaging, social media, eCommerce,…). As always we use our brains building tools to fulfill our needs and solve our problems and those tools shaping the way we think about anything in the world. We built text messages over cell phones and tweets, the message size limitation of it changes the way we use language forever (“BRB”, “cu”, emojis, … ). We built social networks to stay connected with people we care about. The front camera was initially designed for video conferencing using cellphones. Now we use it to take selfies and post it on social media to attract people we don’t know them yet. Even it might be the last time we celebrate new years with the fireworks.
Disclaimer: Two weeks ago, I was talking to one of my friends and colleagues, Benny Giang, about how software trends will change in the next decade and he suggested that I write it down somewhere. Thus, this is not a prediction or a guideline or any advertisement-driven blog post; it is an open letter to myself in ten years to look at the past and see what were the trends I was expecting and what was the outcome. And this only reflects my personal opinions, don’t blame anyone else for it.

Impacting Factors

I don’t like general predictions without backup evidence. Software trends are usually impacted by two main sources of impacts: hardware breakthroughs, and social behaviour changes. I’m not an expert in social behaviour prediction so I only concentrate on hardware changes that I believe will and won’t change software trends.

Communication speed and bandwidth

Expansion of 5G networks and recent improvements in computer networking and telecommunication changes the potential for new applications radically. In the previous decade, the progress in CPU speed and the use of custom-designed processing units like GPUs unlocked a big group of processing-bound applications such as deep learning. We found ways to execute things cheaper, faster, and in parallel. I believe this decade a similar pattern will happen but this time with bandwidth-bound applications. Although most of the applications in this category haven’t been built yet to utilize these new bandwidth capabilities, some example of the existing ones that can benefit from this factor are:

  • Applications that require the rapid transfer of large bulk of data such as Virtual Reality and Augmented Reality
  • Applications that require interaction between many computers such as Blockchain Consensus Algorithms (e.g. Hotstuff) and Interactive Secure Multiparty Computation.
  • Applications that require access to many sensory devices like real-time applications running on the Internet of Things.

Furthermore, this factor (faster internet and higher bandwidth) enables full separation of storage and processing units, which improves data availability and safety. Nothing has to be stored on a device and can be fetched as needed. I’ll provide more info on this in trend sections.

Remote Wireless Charging

Few companies have already started products to transfer power and energy to devices remotely using radio frequency (RF). Few of them even patented ways to transfer energy wirelessly up to 50 meters. Some of you already use a very basic version of this by wirelessly charging your cellphone. I believe in the next decade we will be able to separate energy from devices and make them remotely receive power. A combination of the previous factor (network speed/high bandwidth) and this factor results in a phenomenon that I call it the proliferation of sensors. If we can supply the energy to sensor remotely and enable fast internet access for them, we can make them as small as possible. These sensors will be everywhere in our life and even can be implanted into human bodies. Sensors activated by brain functionalities may introduce new ways of human interaction and may even make conversational interfaces obsolete.

Quantum Computers

In the past decade, we observed improvements in Quantum computing, but unfortunately, I don’t think we’ll see that much more progress in the coming decade. I believe it takes more than 10 years to get to a point to be practical and cost-effective for many applications. I have three reasons for this claim, 1) Unfortunately, I feel the current strategy of the companies investing in quantum computers is the same approach they took for selling General AI. Create hype by showcasing toy applications and create bubbles around it before the technology is ready. These bubbles cause investment winters; many companies and research centers have done this in the past for General Purpose Artificial Intelligence. General Purpose Artificial Intelligence is not a solved problem yet and moving from narrow AI to general AI hasn’t been a great success so far. 2) for many problems a sub-optimal solution but cheaper is good enough for many users and companies. It might not worth the total cost needed per operation to find the optimum solution. 3) Without getting into technical details, building scalable quantum computers is a crazy hard problem, the growth of technology is not linear and still many many open problems.

These were some example of the factors impacting trends, there are many many more that is out of the scope of this letter.

Photo by Max Duzij on Unsplash

Trend: Expressive programming

I have been doing research and development of artificial intelligence systems and applying machine learning for more than 7 years now. I don’t want to argue about if General AI will be solved in the next decade or not, but there is something more valuable here that will introduce a big shift in the way we build software.

The progress in the ways we can train machine learning models will change the way we do software development. These improvements in machine learning and the new low-code/no-code movement will result in something I called it Expressive Programming. Before describing it let’s take a look at traditional software development.

Traditional software development requires a developer or a group of developers to learn new programming languages, work with clients to understand their needs and business requirements, and finally do the programming by explaining line by line the operation a piece of code should do to fulfill this need. There were few major fallbacks with these models:

  • Learning programming languages, data structures, algorithms, … is not easy.
  • The developer is responsible to understand the whole domain and the business
  • A lot of confusion and mistakes happens in the communication channel between developer and client
  • As soon as the project gets larger, it requires more developers, and every software company can tell you how hard it is to build a large team of developers and minimize the communication overhead
  • As soon as the business logic becomes more complex, coding and debugging become a lot more difficult. Sometimes we don’t even know how something works. Automatic human face detection of a person is not something a developer can trivially code.

Expressive Programming, Andrej Karpathy calls it Software 2.0, is a new wave of software development, Instead of telling a computer how to do something, we describe the desired inputs and output and we allow the software to figure out a way to do it. This makes development very easy and the role of the developer will change to provide as many tests and use cases to validate if the software is working as expected. Personalization is a great example of expressive programming. We can’t write code on what to recommend to each person, but we can describe our desired outcome. Due to the many bias and safety issues of the current machine learning algorithms, we still need humans but this time their job is testing the quality of the software. This will result in an increase in demand for quality assurance (QA) engineers and testers. And governments and organizations will have to define new standards and regulations around biases, safety, and misuse of software.

Expressive Programming makes the task of software development way easier and, in combination with the low-code and no-code movement, can actually change the way software is built today. By removing barriers, the business owner (client) can use tools to fulfill business needs. They don’t have to hire a software company for a big portion of their needs. This removes the communication headaches, reduces costs, and removes the errors that can occur because of the side effects mentioned before. Any profession can utilize expressive programming and will be empowered to move faster. This trend has already been started with car companies working on self-driving/flying cars.

This doesn’t remove the need for software companies and still, we need software companies for more complex software or building infrastructures of this trend. One can look at expressive programming as the next level of moving towards higher-level programming languages.

Photo by sergio souza on Unsplash

Trend: Unified Digital identity

This decade, every human will have a unified digital identity. Soon all of us need a unified digital identity to prove our identities in our digital life. Our digital identity can be defined as holding multiple cryptographic keys and using them everywhere to prove our identity and approve something. We won’t have passwords on any website anymore, we just have to digitally sign our login request with our keys. Even organizations and governments need these digital identities. A citizenship status might be a government signing our identity. We need these identities not just because they are fun because we have to.

With the recent improvements over deep fakes, soon enough it would be almost impossible to differentiate real from artificial photos, videos and voices. We have to have a way to sign our own contents and our digital traces everywhere as needed.

The breakthrough in network speed enables us to have a new type of digital economy and makes the notion of physical currencies obsolete. Current blockchains are the initial examples of how our identities can be tied to the applications we use. Smart contracts will substitute the paper-based contracts and agreements between people. Digital currencies and decentralized applications can create free and open marketplaces. The combination of marketplaces and a reputation system based on our identities can remove the role of middleman in almost all markets. Removing middlemen and facilitating sharing economies (like car sharing, bike sharing, …) will make every service cheaper than any time in the past.

The biggest challenge with unified digital identity is privacy. In my view, this will be the biggest and most crucial problem to be solved in the next decade. I can’t predict what the outcome of the privacy movement will be and, unfortunately, personal privacy has always succumbed to user convenience. I hope that these movements will start this decade and result in personal privacy and government/organization public data availability. I have way more things to say about privacy, but I’ll postpone it to another blog post.

There are definitely more examples of this trend and more to talk about, but I’m pretty sure if I add more details no one will finish this post.

Photo by Stella Jacob on Unsplash

Trend: Telepresence

Faster networks and more bandwidth will remove one of the blockers for virtual and augmented reality. In a combination with the proliferation of sensors, the need for us to physically move will become less and less. We will be more stationary with telepresence everywhere we have to be. This trend has already started with e-commerce and online stores shipping products to us. We work remotely at virtual offices. We join remote conferences. We control things remotely. We buy things at virtual stores.

Remote assistance will become a really big thing. For example, if your heating system is broken you don’t need someone physically come to your place, you can share your augmented reality image with the remote assistant and they can walk you through the steps to fix it. A doctor can read sensory information about our bodies and can send examination kits to our doors and remotely subscribe medicine or even do telesurgery.

Social networks will change forever. In the past, because of improvements over network speed, our online social experience moved from a simple text (blog posts, Facebook posts, twitter) to sharing photos (Instagram) and recently to sharing videos (TikTok). Soon this will move to another level of real-time streaming even 3D renderings of day to day life of people.

This trend will make physical presence an expensive experience, only used for things that people love to do it in person, and this will change the transportation industry to more delivering things than people. The less frequent physical transportation will make cars less cost-effective and makes ride-sharing and car-sharing more common. Self-driving/flying deliveries will expand rapidly.

I have more trends and more examples to cover but this post is already big enough that most readers will just scroll it in the age of tweetstorms. If you enjoyed reading this, let me know and I’ll post more of my thoughts in the future.

Ramtin

--

--