In our previous posts, we saw how to succeed with Digital Service Delivery by using Lean Discovery practices, Agile Delivery techniques, and a DevOps mindset to build solutions our customers love. In this blog, we’ll summarize by focusing on 10 essentials for success.
Lean Discovery practices help us ensure that the solutions we are building are not only viable from a business perspective and feasible from a technical perspective but also usable from a customer perspective. To do that, we need to understand what end users need and then use data to drive decisions. The solutions need to address the whole user experience while making it simple and intuitive to use.
1. Use data to drive decisions
Our initial sets of requirements are hypotheses until they are determined to be true. We need to go through successive Build, Measure, Learn cycles to determine our MVP and constantly evaluate our data to make informed decisions on whether to persist or pivot in order for us to deliver the right solution.
2. Understand what people need
As we determine our MVP and build out our MMF, validation needs to come from actual end users. Early on, we need to test our prototypes with end users. As we build out features, we need to test and validate actual usage of features to determine the value of our deliverable.
3. Address the whole user experience
When building out our solution, we need to address the entire user experience both offline and online to truly understand end user pain points and exciters.
4. Make it simple and intuitive
End users should be able to navigate the solution from start to finish with ease. Consistency in navigation, style, and language across the entire solution is key for an enjoyable user experience.
Agile Delivery practices help us build and deliver high-quality products continuously on a repeatable and reliable basis. To do that we need to choose a modern technology stack that allows for ease of test and deployment automation, and leverage the cloud to create a flexible infrastructure.
5. Choose a modern technology stack
When picking a technology stack, choose a modern stack that allows for ease of test automation, ease of deployment automation, and ease of cloud hosting. Favor cloud-based, open source tools vs. proprietary vendor lock-in tools.
6. Automate testing and deployments
Automation is key to delivering high-quality products continuously on a repeatable and reliable basis. Manual testing is not sustainable and manual deployments are error prone. Teams should have a continuous integration server constantly running static code analysis checks and a comprehensive automated test suite composed of unit tests, integration tests, and acceptance tests. The majority of automated tests are written by the developers. Manual testing by QA teams should be reserved for important exploratory testing and showcases. Deployments to any environment should also be fully automated and using the same script for each environment.
7. Leverage the cloud
The cloud allows our infrastructure to be flexible and provisioned on demand. Scaling and disaster recovery are automatically handled based on real time events. Provisioning should also be scripted so that our infrastructure is created and configured via code and no longer requires us to manage hardware manually. This should apply for all of our environments including dev, test, stage, and prod.
DevOps mindset breaks down silos between the business, development, and operations. Success is achieved by having a small cross-disciplined collaborative team working together on a daily basis with a dedicated business product owner that is driving prioritization decision to ensure that the team is working on the most valuable features first. The team delivers iteratively and incrementally constantly adding value and validating decisions made.
8. Use small cross-disciplined teams
Avoid organizational silos and hand-offs between groups to avoid miscommunication and long feedback loops. Have a small cross-disciplined team working together collaboratively as one team with a shared responsibility of delivering valuable working software. Each team member should have the attitude that my job is not done until I see it in production and we have validated that it is working, valuable and usable.
9. Have a dedicated product owner
There should be one single person that is leading the project and the team. That person is from the business organization and is authorized and empowered to make business and technical decisions about the vision and direction of the product. The person needs to have the bandwidth to be engaged with the team on a daily basis. This person is accountable for the success of the product and a key measure of success is how well the services delivered are meeting the user needs.
10. Use an iterative and incremental approach
The product owner and the team are working together in short iterations with the goal of delivering incremental features to production at the end of each iteration. Each feature delivered generates new data based on actual usage which drives decisions on what to build next.
Most of these essentials are further detailed in the US Digital Services Playbook, a list of 13 key plays drawn from successful practices like these in both the private sector as well as the government.
Part 1: What is Digital Service Delivery
Part 3: Is Agile the Answer?
Part 5: Lean Discovery Practices
Part 6: Agile Delivery Practices
Part 7: A DevOps Mindset