Co-Development: How We Worked with the KUB Team

How we worked alongside an enterprise team to level up their tech and iteratively develop solid, maintainable software together.

This post is part of a series on our engagement with Knoxville Utilities Board (KUB). Read the introductory post for more background (part 1), or you might also enjoy our post on engagement planning (part 2) or how we designed the site (part 3).

We work with companies to maximize their investment in the web, as well as the team that runs and maintains their systems. It’s common for our partners’ leadership teams to say that one of our greatest influences on the organization is our ability to plant the seed of collaboration. Collaboration is the foundation of timeless work—and we were excited when we saw that foundation strengthened at KUB.

We worked closely with KUB's development team to complete the engagement.

Sparkbox was able to work alongside KUB’s own development team—facilitating architecture discussions, supplementing development efforts, and mentoring their team. This co-development arrangement gave us an opportunity to immerse the KUB team in our development processes, principles, and tools, which ultimately created a solid site, but more importantly, fostered a team that will continually work to build a better web. While developing systems and pattern libraries to give a busy IT organization the tools needed to efficiently maintain a large site, we were able to pair with, mentor, and guide an already strong development team.

Large Utility Meets Web Agency

Organizations bring their own culture, habits, and patterns to their work—it’s inevitable. Factors such as size, region, technologies, tools, structure, and background influence each team differently and affect how the humans in those teams interact and, inevitably, build software. When KUB asked our team to come alongside theirs to architect, develop, and mentor them, we needed to keep all these factors in mind to bridge not only the geographical gap but also to build a connection between teams.

Choosing the Right Tools for the Client

At Sparkbox, we’ve de facto standardized to use Github issues and the ZenHub extension. While no work-tracking system is perfect, we believe Github provides great insight and usability while keeping what needs to be done close to the output of our efforts. That said, Sparkbox has the saying, “Our tools are always fighting for their lives.” We don’t hold strong allegiance to tools; rather, it’s the patterns and principles we find most important. We believe most strongly that the tools you choose to manage work should embody the following principles:

  1. Be simple.

  2. Be accessible.

  3. Efficiently surface remaining work.

Our team’s default position is to ebb and flow with new clients. With these principles in mind, we were happy to leave Github issues and Zenhub aside and pick up the KUB-preferred service of Trello.com.

“The green reed which bends in the wind is stronger than the mighty oak which breaks in a storm.” - Confucious

Having worked with Trello in the past, we knew it would struggle to surface high-level information about work remaining and progress toward our ultimate goals. To fill this gap, the Sparkbox team leaned on the relatively new Corrello. Corrello sends regular emails with cycle-time trends, work in progress (WIP) over time, cumulative flow diagrams, and burn downs. While only a proxy for the perfect measure of working software, these tools helped both teams understand where we stood in the overall effort.

Corello surfaced useful data around our burn rate.
Corello offered nice bite-size data in the dashboard.

In addition to managing work through a board, we also use a number of tools like Basecamp, Invision, Dropbox, CodeClimate, Google Docs, Draw.io, email, Slack, and so on and adjust to use the right tools for the client. So when we got the message from our advocate at KUB that they didn’t know where information was located, we realized it was time to temper our excitement and limit the number of tools we threw at them. To ease discovery, we put together a project hub as a launch point for all resources.

Remote Standups with Google Hangouts

We loved visiting our friends in Knoxville in person, but early on, we met daily with the KUB web team via Google Hangouts. During these “hangouts,” one of the team members would Walk the Board, which was hosted on Trello.com. Initially, one of the Sparkbox team members would facilitate this effort. Over time, we scaled back the frequency, and members of each team would take this on. It was a great moment when a KUB team member jumped in and took this opportunity to facilitate creating the day’s plan based on the results of the previous day.

KUB and Sparkbox team members took turns "walking the board" during standups.

Positive Mentorship through Pull Requests

This isn’t the first time we’ve talked about the attitude one brings when providing feedback. Pull Requests are the software industry’s equivalent of The Voice. People work hard to understand and solve a problem and finally present the implementation for feedback from others. At Sparkbox, we know how important it is that we foster relationships that encourage constructive debate. It turns out, being positive and optimistic, openly celebrating good work, and asking questions make it much easier to challenge decisions and recommend alternatives.

By providing guidance in a positive, constructive tone in written and video chat, it turns out we learned as much from their fresh perspectives as we could teach.

The KUB team we worked alongside was incredibly talented, but many were also very young. Our challenge was to foster and guide that talent, provide experience, and expose them to new angles. By providing guidance in a positive, constructive tone in written and video chat, it turns out we learned as much from their fresh perspectives as we could teach.

Test Automation Provides Speed through Confidence

Test automation does not come for free. Tests must be written and maintained, adding weight to a budget and timeline. As inevitable competing priorities arise, it’s easy for those tasked with delivering working software to set aside these practices. This is especially true for the young team at KUB that was learning how to write tests as they were delivering one of the largest solutions of their budding careers.

During moments of stress that come with any engagement, we reminded all team members that we have practices like test automation in place to provide speed and momentum through confidence. As the size of software grows, automated tests and an automated deployment pipeline provide the project grease.

We have practices like test automation in place to provide speed and momentum through confidence.

Going live with a large system brings its own moments of stress. We will not avoid all problems, and we will always recognize false assumptions made through planning and development as users meet a system. In those hours and days following a launch, we want to encourage iteration and regular deployment. This is only possible if we have confidence in the system as changes are made. Test automation provides this confidence, Sparkbox made this clear throughout the engagement, and KUB thanked us for that consistent promotion:

“We wanted a partner who would push us to do better no matter what. Sparkbox’s active mentorship made our developers better, and it showed our leadership where we needed to devote time. We resisted automated tests, but they’ve wound up being one of the most useful tools Sparkbox gave us to respond to needed changes with confidence while reducing risk. Thanks for pushing us to get better at tests. It is paying off." - F. DeWayne Lane, Lead Developer

Robots Enable Collaboration

As you can imagine, redesigning and rebuilding a multifaceted online presence for an energy company has its challenges—multiple systems being built in parallel, underlying infrastructure changes, plentiful feedback from stakeholders, diverse platforms being integrated, and so on. Experimentation is key to executing an ambitious plan, and our tooling is built to enable collaborative experimentation.

We believe magic can happen when teams of developers, graphic and experience designers, and clients are freed from the drag that often comes with delivering even a single line of code to those with input. Our build and deployment process is our way of freeing our team to build great solutions for clients.

The engagement started in June 2015 and the site launched in September 2016. Continuous deployments were critical to a healthy feedback loop and confident deployment process.
Our build and deployment process is our way of freeing our team to build great solutions for clients.. Continuous deployments were critical to a healthy feedback loop and confident deployment process.

KUB was immersed in this process for several months, leveraging Git and Github, Pull Requests, Heroku Review apps, and Build Once, Deploy Often. As we came closer to bringing the assets to their internal infrastructure, the principles that allowed our team to be so successful became the requirements for their own tooling. While Heroku, CircleCI, and others were not ultimately chosen, their implementations of Jenkins, Github Enterprise, and Slack allowed them to rapidly experiment and collaborate beyond the walls of IT and with members of the greater organization.

This automation doesn’t take the place of discipline. Our pattern library needed to work its way downstream into ExpressionEngine and multiple EmberJS applications. This required versioning our pattern library and the creation of an EmberJS Addon implementation of the components. As our pattern library evolved, downstream systems were provided via releases or “drops.” The Sparkbox Iterative Drops Process is something we’ve successfully used with many clients to ensure a successful implementation, and it’s now ongoingly used by the KUB team to keep the aesthetic web properties consistent.

We left KUB with an extensive pattern library that will allow them to maintain the site faster and more consistently.

Iterating Toward Big Vision

As the KUB team took the reigns, we were encouraged to hear that their team continued to grow in their use of automation for deployment, feedback, and testing. In planning for the coming year, the team placed automation in their top goals. We’re also extremely excited to hear that management, once reducing deployment opportunities as a means to reduce risk, is now leveraging small changes, built with quality practices to not only reduce risk but also to navigate toward big vision.

Strengthening Talent

Through our partnership, KUB has created an even more impactful web for their customers and their team. While making progress on the system, Sparkbox helped provide tools and processes to strengthen an already talent-filled environment at KUB. Through friendly collaboration across departments, KUB is optimizing their internal organization with the best interest of their customers while reaping the rewards.