How We Did It: Building myUSCIS
Here at Excella we are fortunate to have the opportunity to do great work with some of DC’s leading organizations. Our clients are dedicated to using pioneering tech to make an impact for their customers, employees, and communities. We are particularly honored to work on myUSCIS, an innovative web application that is changing the way […]
Here at Excella we are fortunate to have the opportunity to do great work with some of DC’s leading organizations. Our clients are dedicated to using pioneering tech to make an impact for their customers, employees, and communities. We are particularly honored to work on myUSCIS, an innovative web application that is changing the way people access immigration services and is revolutionizing how the US government manages and deploys digital services to people around the world.
The US Citizenship and Immigration Services (USCIS) had the vision to create a more user-friendly digital experience for the millions of people annually that request info on immigration status and services. In addition, USCIS wanted to harness the power of modern best practices like Agile, DevOps, and the cloud to deliver value to the public quickly and efficiently. Excella’s Agile software development experts have been on the ground since day one building myUSCIS, and working side-by-side with USCIS, NTIS and the US Department of Commerce, the US Digital Service, 18F, and other partners, such as Stelligent, to turn this goal into a reality.
Thanks to the innovative drive of this team, the first iteration of myUSCIS was up and running in less than 6 months and has been adding new features for the public every couple weeks since then. Wondering how it is done? Read on for 4 key things that have made myUSCIS so successful.
#1. An Agile Approach
Our goal as a development team is to provide value and show continuous progress to USCIS and public users every two weeks. In addition, we conduct extensive up-front usability testing to better inform design decisions and ensure we do not go too far down a particular path that’s not providing real value to users. A Scrum approach mixed with elements of Kanban helps to keep everyone on the same page while enabling continuous progress. This approach enabled features like “Explore My Options” and “Civics Practice Test” to be completed in short timeframes, whereas with older waterfall approaches it would have taken much longer.
Excella’s myUSCIS team combines many diverse skillsets – web developers and test engineers, ScrumMasters, business analysts, designers, usability experts, Continuous Delivery engineers, and USCIS Product Owners; who are all working together on the same team. We are co-located for the most part, and Product Owners sit with the team several times a week to review progress in-sprint. To further facilitate team communications, we rely heavily on tools like GitHub, Jira, Confluence, and Slack to enable the rapid build-out of new features. This set up allows for quick communications and provides total transparency, keeping the team energized to work quickly and solve problems faster.
#2. An Empowered Product Owner and Program Manager
The second element that is critical to success on myUSCIS is an informed and empowered federal Product Owner who represents the needs of the business and USCIS customers, and an empowered federal Program Manager that represents the IT organization and enables the team to deliver value quickly. These roles may seem like a given on every Agile project, but the importance of decision-making power and understanding in these roles can truly make or break projects. The myUSCIS Product Owner and Program Manager have the following in their corner:
- Decision-making power: Rather than go through many levels of approvals, these individuals not only have direct access to agency executives, they can also green-light changes or new efforts in a few simple steps. This keeps development moving forward at a rapid pace.
- Technical Know-How: These individuals have a deep understanding of how to build complex systems, which saves a lot of time and effort when working with complicated immigration data.
- Customer/Business Process Insight: These individuals have worked in numerous roles across USCIS and the Department of Homeland Security, and deeply understand the USCIS case management process and business rules surrounding many of the tools we are building. They have first-hand knowledge of the USCIS customer base and provide insights into design and features that directly represent public needs.
An empowered Product Owner and Program Manager help our myUSCIS team work with internal USCIS organizational structure, make key connections and come to resolutions on key issues quickly and efficiently. Without this support, many of the traditional perils of IT projects – Agile or otherwise – would significantly slow down our team’s progress.
#3. A Modern Tech Stack
We’re proud to say that our myUSCIS tech stack is completely open-source, from the operating system on up to the web servers, and the applications and frameworks deployed on them. We leverage modern tools to make delivery smooth, efficient and scalable. Some of these include:
- Amazon Web Services (AWS): myUSCIS is 100% deployed in the AWS cloud. Using Virtual Private Clouds (VPCs), Amazon Machine Images (AMIs) and Auto-Scaling, we provision and deploy immutable environments quickly and securely, that can scale appropriately to accommodate changes in user traffic. Production deployments are automated and can occur during the middle of the day with no outages. We run Chaos Monkey every day to purposefully introduce server failure to ensure that myUSCIS applications remain resilient and always available. We continuously monitor our environments and the applications deployed in them using tools like Cloudwatch, Splunk, and New Relic.
- Ruby on Rails: USCIS and other federal agencies are quickly realizing that Ruby is a great language to rapidly build and deliver value to the public. We use the Rails framework to display all our public facing content on myUSCIS.
- Java: The Java Virtual Machine is still king when it comes to processing high volume server side requests concurrently, and we use Java to build some of our myUSCIS service APIs.
- Chef: Chef is the underpinning of our infrastructure as code approach on AWS. We use it to version and automate software installations as it eliminates the need for manual configurations; creating a repeatable process for faster development and delivery.:
#4. Continuous Delivery
Delivering myUSCIS features the public wants is just part of the process – we also need to be sure we deploy those features into Production quickly and easily, where they can be used, tested and tweaked frequently. To achieve this, we employ Continuous Integration with standard tools such as Jenkins and Git, and build Continuous Delivery pipelines that we use to deliver new features into Production. Using Continuous Delivery, we can react more quickly to our customers and deliver new features on a consistent basis at the push of a button.
We automate as much of the myUSCIS build and deployment process as possible, including tests, infrastructure provisioning, and code deployment. By eliminating manual steps, there are fewer opportunities for something to go wrong. The Continuous Delivery process Excella has built on myUSCIS makes releasing new features to the public a decision the business teams at USCIS can make whenever they’re ready.
Have questions or want to know more? Drop us a line in comments or get in touch here!
You Might Also Like
Last fall, Excella participated in the Department of Defense’s (DoD) Eye in the Sky Challenge....
At Excella, we’ve helped a wide variety of clients get the most out of their Agile adoption. It’s never easy, but as long...