Most of application development today, specially web based and server driven applications, are using tech from the past. Frameworks and libraries, UI toolkits and database access solutions are all problems from the past that people have already solved. How does that compare to what’s expected in the future.
Note: In this post I would like to focus more on application development from engineering perspective. If you are interested in looking at application development from the user perspective this excellent post by the Gartner is a good start.
Problems of the Past
When an engineer starts working on a new application, and is dealing with Flask vs Spring or ReactJS vs Angular or Mongo DB vs MySQL problem, she is dealing with problems of the past. Problems that have already been solved and techniques that have already proven themselves useful (or not).
As the of application development landscape continues to evolve I would like to discuss few things that developers will be dealing with in the future. Depending on your interest you may want to learn about some of these now to build more value for your career in the future.
Data driven programming
As compared to writing sequential code with if-else-then flows, more and more code these days uses data and rules to operate. As more complex content management and rule processing systems evolve the value of your source code will continue to transfer over to the data that it uses. If you are unfamiliar with the concept I recommend reading my previous post about it.
Distributing Systems using Networked Components
With SOLID principal gaining lots of popularity and improvement in networking layers are leading to more systems developed as micro-services and nano-services. Where modules of your system that used to live in one large application are now separate over network. Managed, Deployed and Maintained in almost complete isolation.
Serverless doesn’t mean that there is no server, it just means that its someone elses server and you don’t care where and how its running — Anthony Ferrera
For most small to midsize apps this is gaining a lot of momentum already. For large scale applications, especially the ones that require massive scale, it could be a challenge, but its getting there.
Machine learning and code that changes over time
Machine learning for user behavior has been around for some time now. We are now moving into a space we use machine learning and other techniques to write code that compensates for probability and statistics. Automatically changes behavior like Oracle autonomous database.
Personalization and Customization
More and more apps customize their UX and behavior for each user. My Facebook experience could be significantly different from yours. This will require a lot more data driven style of application development. A lot has already been done in this space through “add-ons” the next frontier is to make it completely seamless for the user.
Messaging and Queue based systems
As compared to RESTful api and RPC function call based systems where systems actually wait for each other we are now pushing more towards message queue based interactions between systems. This will allow us to reach unprecedented scale that is required for the next generation of apps.
It will be fun to see how distributed data stores, multiple platforms and referential integrity across those system will handle this. For example a User in one system but her Order is in another and how to deal with transactional integrity.
Use of crypto currency and ledger systems
Crypto currency and distributed ledger systems is probably the answer to my previous question of distributed transaction integrity. Its application as not just bit coins the ledger part of this is what is most exciting in my opinion.
Augmented Reality (AR) and Virtual Really (VR)
AR and VR tech still is a niche at the moment, expect this to be a house hold item with most users having access to like smartphones. With devices getting cheaper and more accessible the predictions are already off the charts.
Many organizations are hugely investing in the advanced solutions that integrate AR games into mobile devices, enabling them to improve client experience, enrich business expansion, and increase the revenue during the forecast period — Orbis Research
More fake humans
Bots are already getting extremely popular for customer and chatting programs. With voice and facial recognition computer generated human models the lines will become extremely blur between interfacing with humans or computers.
No one really knows the exact future of application development. The above are my best educated guesses based on what is happening now. Keep your eyes open and continue to evolve.
Change is the only constant