CambriaSolutions / MSRFP-3717

Apache License 2.0
1 stars 0 forks source link

MSRFP-3717

Submission Requirements

Cambria's working prototype, developed using Human-Centered design principles and agile practices, is hosted at a publicly-available URL. [Click here for our working prototype.]

While the prototype is intuitive, we provide a quick start guide that describes the features of the prototype. [Quick Start Guide]

The Cambria Way

Cambria builds custom-tailored solutions using ingenuity and a distinctly humanized approach. Something we like to call HumanGenuity®. What better way for us to demonstrate how we put this into practice than by engaging in a challenge to develop a human-centered prototype while displaying our agile approach!

U.S. Digital Services Playbook

We followed the Digital Services Playbook and created a checklist describing how we used the plays.

Brief Description of the Project

Cambria Solutions developed the prototype for the Mississippi Department of Child Protection Services (CPS) using Human-Centered Design principles, Agile development methodology, and Open source technologies. This tool will empower parents and caseworkers to find quality child care before and after school, during the day, or whenever it may be needed. Our goal is to provide comprehensive information needed for decision-making in an informative, intuitive, and helpful way. Our data service is designed for parents who qualify for the Child Care Certificate Program, a federally funded program designed to provide parents with assistance for child care tuition.

Through feedback from actual caseworkers and foster parents, our multidisciplinary team completed the prototype over the course of six sprints. Our responsive web design is user-friendly and accessible across multiple platforms. An incremental and iterative developmental methodology allowed us to incorporate user feedback and changing requirements, allowing us to do multiple product releases.

Documentation

The narrative in this README.md summarizes the amazing journey of building the prototype, from a goal (a user story) to a working product. In describing it below, we have included links to working documents and other artifacts that provide additional information on the milestones along the way.

Cambria's iterative approach was informed by feedback from subsequent versions throughout all phases of the prototype development. We had daily standup meetings where we discussed what was done the previous day, what the plan was for the current day and any blockers that needed to be addressed. We conducted a total of six sprints that each had a sprint planning session, and reviewed retrospectives. We also ran usability tests throughout, and collected feedback from usability testing sessions. The product manager provided feedback for prioritizing adjustments which we applied to the upcoming sprint. We added features with each sprint and fixed prioritized issues. [Agile Process] [Agile Techniques Used]

We utilized Human-Centered Design techniques such as (1) user stories, (2) personas, (3) user interviews, (4) rapid prototyping using wireframes, (5) screen design sketches, and (6) usability testing in conducting user research. This research formed the basis for understanding features and the usability of the solution in creating a helpful and informative search for child care providers. [Research Findings]

We started developing our first user story within a couple of days of development kickoff. With constant user engagement and continual feedback, the product owner refined and prioritized the user stories throughout the process. [Initial User Stories] [User Stories]

We created a user experience that was intuitive to the needs of actual foster parents and case workers. Our cross-functional team met face-to-face in conference rooms, interviewed system users, had break out meetings, and collaborated daily to develop a prototype that exemplifies not only our technical and agile skills but the human-centered design principles. This document contains the functional description for all the components of the prototype. [Functional Description]

We built our solution using open-source software that helped facilitate collaboration between members of a cross-disciplinary team, as well as rapid prototyping and iteration. Our solution is based on .NET Core which is a fast and modular open-source platform for creating server applications that run on Windows, Linux and Mac. It leverages Model/View/Controller design pattern (MVC) that allows for greater flexibility, granularity, and reuse when building responsive applications. In addition, we used several other open-source technologies such as Yeoman, Bower, Bootstrap, Mocha, Chai and Kudu. [Our Technology Stack]

Git allowed us to share and collaborate on code and assets, while GitHub hosted our git repository. GitHub also provided us with collaboration, bug and enhancement tracking and sprint/issue management features. [Bugs and Issues]

Team Structure

Cambria assembled a mutidisciplinary and collaborative team that represented diverse backgrounds including few resources working remotely. Those involved included developers, visual designers, business analysts, technical architects, managers, writers, users and Product Managers. The roles were assigned based on each individual’s experience, skill sets, background, interest and the specific needs of the prototype.

It started with our executive team assiging Anand Adoni as the Product Owner and giving him authority to lead the prototype development and to ensure that we deliver a quality product to CPS. Anand has over 18 years of technology integration expereince and has led multi-disciplinary teams related to enterprise transformation. He was also part of the Cambria team that created the foster care prototype for CA Agile Development Pre-Qualified Challenge.

We used crowdsouring to gather the team members. Anand reached out to all Cambrianites via an email and they responded by volunteering to be part of the development effort. The assembled team represented diverse backgrounds. Based on the experience, skills, and interests, the team quickly organized itself. Individuals aligned themselves to relevant roles. [Crowdsourcing]

The Team Structure document contains the roles, responsibilites, corresponding Agile Labor categories, and the total number of hours utilized to build the prototype. [Team Structure]

Research and Discovery

Cambria created a user experience that was intuitive to the needs of actual foster parents and case workers. We started with discovery that included interviews and research. The State provided the opportunity for our first user interaction through the open vendor-caseworker session. We interacted with the actuals caseworkers from CPS that are users of the current application. With this collective knowledge, we developed our initial personas to further define and personalize the prototype's core characteristics.

Cambria used qualitative and quantitative research methods to determine people’s goals, needs, and behaviors. [Research Methods] [Other Qualitative Research Methods]

From these methods and from user interviews, we were able to refine our personas based on biographical information, motivations, goals, frustrations, and tools utilized. Using this information as well as user research and feedback from our California Agile Development Pre-Qualification Vendor Pool prototype, we were able to craft personas more in line with the average family member or a caseworker looking for childcare facilities. [Personas]

From the personas we crafted, we distilled our user stories, brief narratives of how a typical user might interact with our prototype. These user stories were then prioritized and assigned to several sprints. [Initial User Stories] [User Stories]

Through our crowdsourcing initiative in Mississippi, we were able to engage a caseworker (private-contractor) and a foster parent. These individuals were very involved throughout the design and development process and provided valuable input that helped the development team build a highly-functional prototype. They also participated in usability testing. [User Meeting Minutes]

Design

Our cross-functional team met face-to-face in conference rooms, interviewed users, had break out meetings, and collaborated daily to develop a prototype that exemplifies not only our technical and agile skills but the human-centered design principles. [Human Centered Design]

We created personas and did user research to create an understanding of needs, behaviors, and goals that were incorporated into functional components of our prototype. While working with users, we documented the design decisions made and the corresponding rationale. [Design Decisions]

Our discussions with the user group made us realize that their user stories cannot be completed without extending the State provided dataset. Therefore, we added additional attributes and data to the dataset to fulfill the user stories and demonstrate our capabilities. [Extended Dataset]

We created wireframes to communicate our ideas to users and developers alike by putting them into something that is more tangible and easier to visualize. Wireframes helped the team understand the interaction as well as the visualization potential. Feedback from the users enhanced the visual design process. Wireframing was an ongoing activity and several iterations of wireframes were done. [Wireframes]

We used a simple yet flexible design style guide for the development of the prototype. We developed our style guide keeping in mind its significant impact on the way users perceive and feel about their interactive experience and the brand itself. We prioritized the following objectives: the use of inspirational pictures, friendly and empathetic tone, persona-based branding, being intuitive and relevant, conversational nature, and presentation of the Cambria brand. [Style Guide] [Style Guide Process]

Our Usability testing focused on understanding the users, their needs, and what they value. Our representative users became our testers. Utilizing a variety of devices, they tested across all sprints. Based on their feedback, we noted enhancements as issues for every sprint, and used the information collected to evaluate the usability of the application, and recommended improvements with each successive sprint. We also conducted accessibility testing using WAVE open-source tool. This tool automatically checked for accessibility of the prototype. The results are embedded in the Usability Testing document. [Usability Testing]

Prototype (Technical Test)

Our working prototype works on multiple devices including desktops, laptops, Android and iOS phones and tablets. We conducted usability testing on various devices to ensure its ease of use and responsive design. [Responsive-Design]

Cambria team used ‘Google Translate’ to translate the application to multiple languages. The objective was to ensure we can showcase the capability of reusing existing translation mechanisms rather than building custom objects for different languages as part of the prototype. [Spanish and Vietnamese Translation Feedback]

We used exclusively open source technologies and the prototype itself is also openly licensed and free of charge. [Open Source Technologies, Frameworks, and Libraries Used] [Prototype Open Source License]

We developed automated unit tests for the code with adequate test coverage. We used Mocha and Chai for unit testing as it ensures logic is working as expected and regressions do not creep in. The test scripts for the coverage and the results for successful deployments are stated here. [Automated Test Results]

In addition to the automated unit testing, the users did manual testing using usability checklists. The results of such testing were initially logged in the checklist itself. Upon further analysis, if a bug was discovered, then it was logged as an issue in GitHub. [Usability Checklist]

We chose Kudu for continuous integration, which enabled us to run tests in isolated deployment slots and deploy to Azure all with a single 'git push' command. [Continuous Integration]

We used Azure as our production PaaS provider. Azure provides rapid standup and deployment of containerized apps on any platform. Operations is built in with the ability to integrate continuous deployment, alerts and real time traffic and site monitoring. [Our PaaS Platform]

We also describe all the steps necessary to install and run the prototype on another target, if needed. [Instructions to install the prototype in another environment]