Highlights of Collaboration: Q4 CCC Days

Our final CCC Days of 2023 have come and gone. CCC Days, named for our company values of Character, Collaboration, and Craftsmanship, are a company-wide gathering for a few days where we conduct experiments on internal tools and alternative technologies and test the viability of future enhancements on client projects. This group of CCC Days projects fell into three categories: better internal tools, testing improvements, and patterns and tooling improvements. 

Better Internal Tools

To best support our clients in building custom software projects, there are a number of internal tools we use, but sometimes they don’t have certain features or fit the way we want to work. Often, we can build integrations into off-the-shelf tools, or create the features we need to improve our capabilities. For this CCC Days, we worked on a new Figma design plugin and a capacity planning function for our internal software platform, Almanac.

We created our Figma design plugin to speed up the starting point for new projects including configuring our internal design system, Optics, and making partners’ branding changes faster and simplify ensuring WCAG AA compliance, which is an Americans with Disabilities Act (ADA) requirement that makes web content more accessible to people with disabilities. We built a custom component into Figma previously, but it was less designer-friendly than we would have liked, and through using it we have seen places where further enhancements would be beneficial and would save time in the design process. Some of the features we built into the new plugin will facilitate creating and managing Optics color themes within Figma, produce WCAG AA compliant contrast colors, create a faster interface for tweaking colors, increase design consistency, and reduce the need to copy/paste. This tool amplifies the expertise of our designers while using Figma and our design system.

Another team worked on creating a capacity planning tool for our internal planning and reporting system. We use this tool to plan our team’s time on projects, but we didn’t have a very user-friendly way to update it and we need a better way of knowing what team members are free to work on projects without double-data entry. We used a Google sheet to track a timeline view of projects and the team members' time on assigned projects. We examined other existing off-the-shelf solutions, but they didn’t fit exactly what we needed. Based on our exploration of other tools we had an idea of what additional features would be of use to us, the new tool has a visual overview of our upcoming work, each employee’s availability, and the company’s capacity to be scheduled for work. Some new features include a timeline of active and expected projects, the total capacity needed for each project, and available company capacity. It can be edited directly and then display the update across the tool’s features, sets expectations for support tasks, and takes time off into consideration. This tool will help us collaboratively plan our capacity for new and existing projects and ensure each customer is served well. 

Testing Improvements

One of our core practices is test-driven development (TDD), which means that we write a test for everything we create to make sure that everything is working according to the business rules we define and easily be changed in the future as the system grows. Improvements in our testing were one of the focuses of our experiments this quarter. 

An example of this was experimenting with adding visual diff testing to our automated tests to build confidence that new changes are not negatively impacting the UI. We are using this approach on one of our current projects and wanted to refine the approach so it will be useful in other projects.  We specifically looked at Playright which with some effort could be integrated into our standard testing setup. While we didn’t get to the final solution we made some promising progress we have built on as we look for ways to bolster confidence in our test suites.

Additionally, some teams looked at tooling improvements with a new continuous integration (CI) setup with GitHub Actions and speeding up our JavaScript tests with parallelization. We focus on continuous improvement with our testing setup so that we can provide Iterative Value to our clients with confidence that we have a sustainable foundation. 

Patterns and Tooling Improvements

Our experiments extract best practices from our tools or processes. Our approach to building software has us focus on the process first and the software second. The same idea applies to our business, we focus on our ideal processes and then build or edit tools to match that process. 

Our last group of experiments worked with patterns and tooling improvements that would facilitate our ideal process. One experiment we worked on was leveraging the new Strada framework to improve our technical capabilities for our mobile apps. When building mobile apps, you can use a fully native approach, a cross-platform approach, or a hybrid-native approach. The hybrid-native approach blends native controls and web content which allows for the performance and animation of native navigation with the flexibility to render content with web technologies.

Strada is designed to bridge the gap between web view and native components of an application via HTML bridge attributes, which makes it easier to progressively upgrade web interactions with native replacements.  Our goal was to refactor one of our existing applications using Strada and identify new features that would be possible within the framework. We worked with both iOS and Android to test native menus, forms, and action buttons, as well as other updates within the app. This was a really good experiment and we see this will allow us to further leverage our typical hybrid-native approach to deliver our clients polished mobile applications faster.

Some of our other projects that focused on internal tools include a client reporting interface, an integration between 15Five and Almanac which are two platforms we use internally, and an emergency support notification system to better alert us when a client needs to get a hold of us during an emergency. We also worked on further extracting and documenting common system architecture patterns and the why behind them so we can have a shared understanding when solving common challenges.

We look forward to CCC Days every quarter as a time to gather the team in one place and work with people who may not be on our regular teams, to grow in our skills and try new methods within our craft, and experiment with new features to eventually build into our partners' projects. This was the last CCC Days of 2023 with our company theme of “increasing our capacity to serve”. As we finish out the year, we are thankful for the time to experiment with new tools and methods that make us more effective so we can serve our partners better.