Trends in Product Engineering — My Predictions in 2016
During the past few years, product consumer expectations have raised at a level more than the past few decades combined. This has highly influenced the product engineering landscape, which equally needs to support demand with innovative solutions. These are some predictions of product engineering trends that I see will emerge over the next couple of years.
Trend #1: Release Propagation as a Pipeline for Targeted User Groups over Fixed Full Release Cycles
Today, it’s common to have developer, test and production environments. This has led to release cycles, which is now fading away. More of the modern environments consist of development and multi versions of production environments. Each release goes directly to production as a new version initially configured to a smaller subset of users, where the rest of the users will be gradually promoted to the new version in the pipeline. It’s also becoming a trend to do part deployments without deploying the full product — this however needs specialized product architectures.
Trend #2: Technology Upgrades Continuously in Small Increments
Technology is evolving at a rate which makes a product’s technology obsolete within a short time. It is also crucial to keep technology up to date, which increases engineering efficiency and allows rapid development for the highly competitive product market. To support this, modern products should be engineered supporting continuous parallel upgrades where different parts of the system could be upgraded independently and new features could be introduced with a new technology stack side by side.
Trend #3: Repeatable and Reproducible Deployment Infrastructure
Modern deployment infrastructure should be repeatable and reproducible at different levels. For instance, infrastructure should be able to roll back to a point of time similar to version control for source code. This also helps in horizontal scaling where new instances can be created on demand. Another usage is to replicate the same environment in another location for investigations.
Trend #4: Usage of Fully Managed Services
With the increasing demand for robust product engineering, it is difficult to engineer a whole application in-house. Today, it is common to use frameworks as the foundation for development and it’s also becoming increasingly popular to use services for infrastructure and application features. The difference between a traditional service and a fully managed service is that we can expect the managed services to continuously operate without our direct involvement, also fulfilling other non-functional requirements. For example, if we take a infrastructure service like Fully Managed Database Platform, the platform will handle minor updates, backups, redundancy in storage, etc. without our involvement.
Trend #5: DevOps at Every Level
We talk about product development and automation separately, mainly helping the build automation. This is no longer valid for modern product engineering where DevOps becomes the center of Development, Build, Testing, Evaluations and Deployment (Provisioning, Version Management, etc.)
I end my predictions with the following quote from Automobile Industry, which I believe is also applicable to product engineering trends, if we look closely at it: “Technological change rarely advances smoothly. It advances in pulses. In revolutions.”