Unified Academy: A Lesson About Innovative Balancing

by Waverley Leung, Software Engineer @ Resilia — You don’t need to reinvent the wheel to be innovative; all you need is a group of highly collaborative individuals who are the best at what they do working towards a common goal.

Resilient Tech
8 min readJun 16, 2022

Photo by Aziz Acharki on Unsplash

Introduction

As a software engineer the work you’re doing typically falls into one of two categories:

  • Building a new feature from scratch
  • Extending and building on top of a feature that currently exists

This time for what we internally referred to as “Unified Academy”, our work was an interesting mix of the two. From a product and design perspective, what we needed to do was essentially build a brand new experience. However from our (engineering) perspective, that experience would be built using and relying a lot on code that we currently had in production. Additionally, the changes we needed to make also depended on changes from the content team’s work, which live on Contentful, our CMS. This added further complexity because any changes made on Contentful are automatically reflected in production. As a result, we needed to be even more collaborative, otherwise we could potentially show our work in progress to our current users, or in the worst case scenario break our application.

So what is Unified Academy and why work on it?

In our first iteration of Resilia Academy, we launched with courses separated from resources, which consisted of templates and articles. Our courses incorporate videos, readings, and quizzes that create an engaging content experience for our users to level up. In comparison, templates and articles bring a different value to our users that help them expedite their daily mission-facing and back office needs.

However after Academy launched, we saw that our coaches were answering questions our Academy content already answered. To understand why this was happening, we engaged subject matter experts and looked at existing learning platforms to help identify what and where we could improve Academy. This made us realize there are many similarities between courses and resources, and that by separating them from each other, we made it difficult for our users to be familiar with Academy’s content. To be more specific, our users didn’t know the value Academy provides, what to expect from its content, or where to start.

Therefore, Unified Academy, our second iteration of Resilia Academy, is our attempt to resolve these pain points by meeting our users where they are. Based on our findings, instead of searching for courses and resources (templates and articles) separately we decided to combine them to serve as a single source of truth, hence “Unified Academy”. We also decided to have an actionable homepage that surfaces relevant and recommended resources and provides guidance to navigate resources as the user engages with Academy content.

How did this translate to engineering work?

Like with anything, being prepared and having a plan are the keys to success. Therefore, once we understood the problem and how we wanted to address it, it was now our (engineering’s) turn to come up with different approaches to decide the best path forward for execution.

Contentful Changes

Since the changes to unify Academy were largely dependent on changes we would need to make on Contentful, which also impacts the content team’s work, we needed to start there. We came up with two main plans of attack:

  • Create a new higher level content model that would be the parent for both the current resources and courses
  • Extend the current resource content model to take in courses as a type

After much consideration we decided to go with the second option of extending the current resource content model. This is because with this option the primary changes would be on an existing content model (resource) and allow us to reduce the amount of new code and files written by engineers as well as reduce the learning curve this would have on the content team’s workflow to create and update content. Additionally, the second option would enable us to accomplish the changes we needed for our new search page; filtering by multiple tags and/or resource types and including course as a resource type. If we went with the first option it potentially would have involved a higher technical effort to execute, multiple attributes on the current resource content model would need to be moved, and the impact on content creators’ workflow would be higher.

With a decision made, next was coordinating the changes on Contentful between us (engineers) with the content team. At a high level it was decided for engineers to start this process by:

  • creating new content models to separate template and article from resource, therefore utilizing and extending the resource content model
  • updating the necessary fields on the resource content model, such as specifying which type the resource is as well reference either a course, template, or article content model to officially create the connection between the resource and information from its type

Once the above steps were completed there was still some work we needed to do before communicating to the content team they could start their part on Contentful. To be more specific, we didn’t want the content team to transition the courses on Contentful until we put safety measures in our code and validated that the current app experience wouldn’t be impacted.

Feature Flags to the rescue!

As part of our process we use feature flags to help with our releases and allow us to “hide” what we’re working on to not disturb our users’ current experience. For Unified Academy we used the feature flag by first determining which version of the home page would render (the new home page or original resources topics listing page). We kept the original way of fetching resources for the new home page, however when we started we had to keep in mind that no courses would be part of the response from Contentful since the content team had not transitioned them yet. After validating that the new fields we added to the resource content model did not cause any unintended consequences, we then prepared to handle the updated Contentful response of resources with the course type. As we worked on that we also gave the content team the green light so they could start their work of transitioning courses as types of resources.

Original version of Resilia Academy of the resources topics listing page.

Unified Academy in progress with the home page.

Although working on the home page was smooth, we unexpectedly needed to be more cautious with our feature flag when we moved onto the search page and functionality. While the Contentful changes were not so obvious on the new home page, we quickly realized the impact they had on our updated search functionality. In the first version of Academy users could either search for resources or courses, not both at the same time. However, now that courses were officially transitioning to be a resource, we needed to prevent courses appearing in our users’ search results for resources on production. Aside from the Contentful changes, the new search page allowed users to filter their search results by tags and/or resource type whereas our first version only filtered by resource type. Since the UI for the search page was similar to our original search page, we decided to make the changes within the current component instead of creating a brand new component for the changes. Therefore, we learned to be even more careful with using our feature flag and hiding our changes in the component.

Original version of Resilia Academy of the resources search page.

Unified Academy in progress with the unified search page.

At this point the speed of both teams ramped up significantly. Everyone was excited to see the content update on both the home page and in the search results with our feature flag as we all continued to work towards our MVP. With everyone aware of each team’s progress it was easy to troubleshoot if issues or questions came up. Our plans and preparation paid off!

Lessons Learned

In retrospect, the process and work of Unified Academy was a huge learning experience that challenged our collaboration. Unified Academy involved the product, design, data, content, and engineering teams, and each team’s work was reliant on the progress of others. For engineering alone, we were responsible for creating and updating the content models on Contentful, communicating to the content team what they need to do to update the information on Contentful, collaborating with product and design in terms of vision and scope as well as communicating complexities, not to mention actually building out the new experience.

That said, I know there was a lot of just as important work and responsibilities the other teams had to do on their end that we as engineers were not aware of. While we don’t know everything the other teams had to do and vice versa, we all trusted each other to be transparent and communicate if there was anything that another team should be aware of. Conversely, we also believed that each team knew what’s best for their subject matter, and if anyone wanted another perspective they were welcome to open a discussion.

As a highly collaborative team and company we were more than happy to rise to the challenge of Unified Academy and deliver a better experience for our nonprofit users and content team as they continue to grow and develop our platform’s content. This experience taught us that planning, communication, trust, and naturally, collaboration, are the keys to success. On April 7th we were thrilled to share with our users that our second iteration to unify Resilia Academy officially launched. We look forward to getting feedback from our users on the changes made as we continue to improve our platform.

Unified Academy finished home page.

Unified Academy finished search page.

Thank you for taking the time to read about Unified Academy! If you’re interested in learning more about our first iteration of Resilia Academy check out “Building Resilia Academy With Contentful”.

--

--

Resilient Tech
Resilient Tech

Written by Resilient Tech

Resilia’s mission is to strengthen the capacity of nonprofits and help grantors scale impact through data-driven technology solutions. https://www.resilia.com

No responses yet