Have you ever wondered how a growing software engineering organization like Salesforce keeps track of all the trouble tickets, user stories, bugs, builds and releases being coordinated across all of their projects and teams? If so, this post should clear up a few things.
Salesforce is a growing company, operating at a global scale. We have a huge developer workforce distributed across the globe, broken up into numerous teams, with stacks of projects at different stages of completion. As you might imagine, we are constantly juggling a lot of competing concerns and timetables. And if we aren’t careful, things can get pretty crazy.
I should point out that achieving project continuity across disciplines and through various production stages is not an issue unique to growing organizations. Technology companies of almost any size struggle with striking the right balance throughout the life cycle of a project.
So how do we keep track of it all? To find the perfect solution, we had to do a little experimenting.
Our first attempt came about somewhat organically: Three groups built their own in-house solution on Force.com. The Force.com platform was actually perfect for this. It’s a customizable platform well suited for “tracker” application scenarios that require customization for a particular domain (bugs, requirements, releases, projects, tasks, leads, opportunities, etc.). Developers created their own bug tracker, Bugforce. Project managers created Scrumforce. And the quality organization created QAforce. And they all worked great for a while. But, we knew there was an opportunity to make life even better.
The three systems, while great on their own, weren’t talking to each other. They weren’t unified. And the reality was that these systems needed to be linked in order to function well, which meant we were doing a lot of manual entry just to keep these three systems in sync with each other. Later, as we began integrating the systems, we came up against a new challenge: mismatched releases. Bugforce would get a new feature upgrade, but QAforce wouldn’t be ready to consume it. These were the dark times, and the need for a unified system was becoming more and more obvious.
GUS: An Agile Solution
Enter GUS: Grand Unified System, which is now over five years old and still going strong. GUS started out as an ambitious project to unify Bugforce, Scrumforce, and QAforce by consolidating their processes into a single interface. Today, GUS has expanded beyond that to host many functions in a tightly knit process framework that has enabled Salesforce technology and products to churn out consistent releases every year while also increasing developer productivity and engineering velocity.
GUS is tailored for agile development and scrum, with a heavy emphasis on social interactions typically reserved for social networks. A good example of this intersection between agile and social is the “social sprint,” the heart of our teams’ planning process. The social sprint is a virtual ‘wall’ where stories, bugs and tasks are arranged in a tidy user interface, and team conversations are threaded via Chatter, our social interaction product. This allows for cross collaboration within the team and other stakeholders in a seamless fashion. GUS hosts the backlog and unified wall, providing a unified view where teams can find all the relevant information about work, stories, bugs, theme, build and story points. No multisystem back-and-forth required. GUS is mobile as well, with its own custom implementation of Salesforce1. Users can check on chatter conversations, task progress, log new bugs or look at various reports and dashboards on their mobile devices. This leads to faster responses and close times, eventually fueling better engineering productivity and customer success.
GUS replaced our fragmented first-generation solutions with a single system that everyone could use. It now offers a myriad of features including root cause analysis, emergency release, technology headcount planning, infrastructure portfolio programs, and seamless integration with a number of other systems like version control tools, build management tools, ERP tools, etc.
And it continues to expand, integrating with everything from performance engineering to project management and quality assurance. GUS is becoming a large, unified system that is critical to our workflow. It was a tall order, but after five years of continuous improvement, GUS is still going strong. And I believe this is only the beginning.
Special thanks to the GUS team: James Hatton, Analía Mastrogiovanni, Tyler Clark, Saravanan Govindan, Sreejesh Nair, Divya Ranjit, Ray Pendyck, and Thomas Frasher.
Also, a big salesforce.com welcome to the new GUS Product Owner, Chad Holdorf!