Many developers today feel like they’re building a rocket ship only to launch it into a black hole. They do all this work to create something great, and then never really know if it’s valuable to their customers.
At least that’s what we found when we surveyed 500 IT and Software professionals about their practices, tools, and challenges. 93% of these pros value customer satisfaction more than anything else, but 60% of them also say that satisfaction is near impossible to measure.
It was this tension between delivering high-value software in an efficient, measurable way that came up over and over again. Modern software development prioritizes the customer’s experience with a new feature just as highly as the time it took the team to release it.
The good news from our research is that these modern software teams are now shifting their focus away from the traditional measurements of speed, velocity, and efficiency in favor of goals around increasing customer satisfaction and quality code. Which we tend to think is the best way to measure success.
In order to tackle these modern goals, we found that software teams are making use of 4 main software development practices, and will continue to do so in 2019.
New trends in software development
Microservices: down with the monolith
On average, software & IT teams use 4.3 tools to move code from development to customer-facing production. That’s a lot of tools!
Massive, monolithic codebases can make continuous delivery incredibly difficult and time-consuming. A monolith constrains teams because integrating different services and features can cause errors that are difficult to identify, developers often don’t intimately know each other’s work, and extended build and test times can slow a deploy to a crawl. Houston, we have a problem.
But, our research showed that 71% of software & IT teams who use a microservices structure report it’s easier to test or deploy features. That’s because when teams leverage platform-as-a-service, some of those important deployment functions are folded right into the platform. A microservice-based architecture allows small, autonomous teams to develop, deploy, and scale their services independently.
CI/CD: manual testing is out, automated testing is in
It’s no secret we live in an era where consumers expect the technology they use to be updated constantly, and if it’s not, they will replace it. How many iPhones have you owned in the last few years?
Sadly, one of the main reasons teams can’t ship “early and often” is because of manual testing: insufficient automated test coverage, additional manual processes, and lack of build/deployment pipeline automation contribute to issues with manual testing for 62% of teams.
Enter Continuous integration and Continuous delivery, practices in which teams release quality software frequently and automatically from source code to production. CI/CD is quickly becoming table-stakes to meet ever-increasing customer expectations: 47% of teams ship changes and receive customer feedback faster with a CI/CD solution. Another 57% report fewer bugs or outages by adopting CI/CD solutions.
Tools that provide real-time information on deployments and release status in real time are allowing teams to ship customer-pleasing features regularly.
Feature Flagging: reduce risk, increase customer happiness
Another hurdle teams face is the ability to roll out new features in safe, incremental, and measurable ways: 75% of software & IT teams reported they face issues with bugs, defects, or delays when it’s time to release. Yikes.
However, teams who employ feature flagging are glad they did: 63% report better testing of features or higher quality software. This is largely because most teams traditionally roll out a new feature all at once, to 100% of customers.
Feature flagging allows teams to roll out a new feature to sub-set of customers (say 25%) to diffuse risk with problems and bugs, and to gauge customer feedback before rolling it out to the entire customer base. However tempting it may be to turn on a feature to customers all at once, the adoption of feature flags reinforces the importance of customer satisfaction.
Outcome-driven development: customer outcomes over team outputs
Nearly all software development teams want to ship the features that create customer satisfaction, but lack the means to follow up on the success of that goal. This dilemma is a reflection of a long history of measuring work by output, not customer outcomes (ie, customer value).
Outcome-driven development shifts the focus away from velocity and the speed in which a feature is delivered, and focuses on the customer value a feature creates. Teams looking to embrace an outcome-driven practice should consider software tools that provide real-time build and deployment information, data and analytics around customer adoption, and built in feature flagging.
Check out our infographic for more trends
With these 4 new practices, you don’t have to feel like you’re catapulting your product into outer space (unless of course you’re an actual space engineer) and can feel more confident delivering customer value and quality code.
Check out all the the modern software development trends and practices we uncovered in our research.