My boss, Max (Bonial Group’s CEO), and I sat down recently for a “year-in-review” during which we discussed the ups and downs of 2017 as well as goals for the new year. In wrapping up the conversation, I shared with him my gut feeling that velocity and productivity had improved over the past couple of years and were higher than they’d ever been at Bonial – perhaps as much as double when compared to 2014.
He asked if I could quantify the change, so on a frigid Sunday a couple of weeks ago I sat down with a mug of hot tea and our development records to see what I could do. We’ve used the same “product roadmap” format since 1Q14 (described here), which meant I could use a “points” type approach to quantify business value delivered during each quarter. As I was looking for relative change over time and I was consistent in the application, I felt this was a decent proxy for velocity.
It took me a couple of hours but was well worth the effort.Once I’d finished scoring and tabulating, I was pleasantly surprised to find that I’d significantly underestimated the improvements we’d made.Here’s a high level overview of the results:
The net-net is that in 1Q 2018 we’ll be delivering ~630% more business value than we delivered in the first quarter of 2014, largely driven by the fact that each person on the team is ~250% more productive.
The obvious next question: how did we do this?
The short answer is that there is no short answer. There was no single magic button that we pushed to set us on this path to accelerated velocity; this was a long campaign that started small and grew, eventually spanning people, process, technology and culture.Over time these learnings, improvements, changes and experiments – some large, some small, some successful, some not – built on each other and eventually created an environment in which the momentum sustained itself.
Over the next few weeks I’ll summarize the major themes here in this blog for both myself as well as anyone who’s interested. Along this journey I plan to cover (and will link when available):
Each of those topics could alone make for a small book, but I’ll try to keep the articles short and informative by focussing only on the most important elements.If there’s an area in which you’d like me to dig deeper, let me know and I’ll see what I can do.Assuming I get through all of those topics I’ll wrap things up with some final thoughts.
I’ve been spending some very enjoyable time recently with our architecture team working through some of the complexities that we’ll be facing in our next planning iteration. Many of those topics make for interesting posts in their own right, but what I want to discuss in this post is the architecture team itself.
Why? Because I’m pretty happy with how we’ve evolved to “do” architecture here.
And why is that noteworthy? Because too many of the software architecture teams I’ve worked in, with or around have had operating models that sucked. In the worst cases, the teams have been “ivory tower” prima donna chokepoints creating pretty diagrams with methodological purity and bestowing them upon the engineering teams. At the other end of the scale, I’ve seen agile organizations run in a purely organic more with little or no architectural influence until they ran up against a tangled knot of incompatible systems and technologies burdened with massive architectural debt. And everything in between.
So, how do we “do” architecture at Bonial? I think it helps to start with the big picture, so I brainstormed with Al Vilegas (our chief architect) and we came up with the following ten principals that we think clearly and concisely articulate what’s important when it comes to architecture teams:
Architects/teams should think strategically but operate tactically. They should think about future requirements and ensure there is a reasonable path to get there. On the flip side, only just enough should be developed iteratively to meet the current requirements while leaving a reasonable runway.
Architects/teams should have deep domain expertise, deep technical expertise, and deep business context. Yes, that’s a lot, but without all three it’s difficult to give smart guidance in the face of ambiguity – which is where architects need to shine. It takes time to earn this experience and the battle scars that come with it; as such, I generally call BS when I hear about “architects” with only a few years of experience.
Architects must be team players. They should be confident but humble. Arrogance has no place in architecture. They should recognize that the engineering teams are their customers, not their servants and approach problems with a service-oriented mindset. They should listen a lot.
Architects/teams should be flexible. Because of their skills and potential for impact, they’ll be assigned to the most important and toughest projects, and those change on a regular basis.
Architects/teams should be independent and entrepreneurial. They should always be on the lookout for and seize opportunities to add value. They shouldn’t need much daily or weekly guidance outside of the mission goals and the existing/target enterprise architecture. They should ask lots of questions and keep their finger on the pulse of the flow of technical information.
Architects must practice Extreme Ownership. The should embrace accountability for the end result and expect to be involved in projects from start to finish. This means more often than not that they will operate as part of the specific team for the duration of the project. They may also assist with the implementation, especially the most complex or most strategic elements. “You architect it, you own it.”
Architects/teams should be solid communicators. They need to be able, through words, pictures and sometimes code, to communicate complex concepts in a manner that is understood by technical and non-technical people alike.
Architects/teams should be practical. They need to be pragmatic and put the needs of the business above technical elegance or individual taste. “Done is better than perfect.”
Architects/teams should be mentors. They should embrace the fact that they are not only building systems but also the next generation of senior engineers and architects.
Architects/teams must earn credibility and demonstrate influence. An architect that has no impact is in the wrong role. By doing the above this should come naturally.
If you take the principles above and squint a little bit, you’ll see more than a few analogs to how military special forces teams structure themselves and operate, as illustrated below:
High-performing Architecture Teams
Military Special Forces Teams
Technical experts and domain specialists
Military experts and domain specialists
Extensive experience, gained by years of practice implementing, fixing and maintaining complex systems
Extensive experience, gained by years of learning through intense training and combat
Flexibly re-structure according to the mission
Flexibly re-structure according to the mission
High degree of autonomy under the canopy of the business goals and enterprise architecture
High degree of autonomy under the canopy of the mission and rules of engagement
Often join other teams to lead, support, mentor and/or be a force multiplier
Often embed with other units to lead, support, mentor and/or be a force multiplier
Accountable for the end results
Accountable for the mission success
Hence the nickname I coined for this model (and the title of this post): “Special Forces Architecture.”
How does this work in practice?
At Bonial, our 120 person engineering team has two people with “architect” titles, but another half dozen or so that are working in architecture roles and are considered part of the “architecture team.“ An even broader set of people, primarily senior engineers, regularly attend a weekly “architecture board” where we share plans and communicate changes to the architecture, generally on a weekly basis. We recognize that almost everyone has a hand in developing and executing our architectural runway, so context is critical. To paraphrase Forest Gump: “Architect is as architect does,” so we try to be as expansive and inclusive as possible in communicating.
The members of the architecture team are usually attached to other teams to support major initiatives, but we re-assess this on a quarterly basis to make sure the right support is provided in the right areas. In some cases, the architecture team itself self-organizes into a project team to develop a complex framework or evaluate a critical new capability.
Obviously there’s a lot going on – we typically have 8-10 primary work streams each with multiple projects – so the core architecture team can’t be closely involved with every project. To manage the focus, we use a scoring system from 1-5 (1 = aware, 3 = consulting, 5 = leading) for what level of support or involvement is provided to each team or initiative. In all cases, the architects need to ensure there’s a “big picture” available (including runway) and communicated to all of the engineers responsible for implementing.
For example, right now we have team members embedded in our critical new content management and publishing platform and our Kraken data platform. We have one person working on a design and PoC updating the core user model. Several members of the team are also designing and prototyping a new framework for managing machine learning algorithm lifecycles and testing. And a few people have individual assignments to research or prepare for future runway topics. In this way we expect to stay just far enough in front of the rest of the team to create runway without wasting time on phantom requirements.
Is this model perfect? No. But perfection isn’t our goal, so we optimize for the principles above – adaptability, autonomy, expertise, ownership, impact – and build around that. Under this model, the Bonial platform has gone from a somewhat organic collection of monolithic apps running on a few dozen servers to a coherent set of domains consisting of APIs, micro-services, legacy systems and complex data stores running on hundreds of cloud instances across multiple continents. I have my doubts that this would have happened in some of the more traditional models.
I’m happy to answer questions about this model and talk about the good and the bad. I’d also love to hear from you – what models have worked well in your experience?
Ok, after all that, how do we actually plan at Bonial?
The heart of our planning activities is the Quarterly Planning which is loosely modeled on Program Implement (PI) Planning from SAFe. During quarterly planning / PI planning, everyone in the product development organization – developers, designers, architects, testers, product managers, operations specialists, designers, etc. – get together for a couple of days to map out their next phase. We do our planning during the previous quarter’s HIP (Hardening Innovation and Planning) sprint, which is sprint 6 of each quarter.
Before I dive into the actual planning days, I should point out that the preparations start several weeks before when the product teams actively work with stakeholders, customer facing teams and the executive team to validates the backlogs against the current company priorities and business realities. The prep phase looks something like this:
The senior management team and product strategy board review the overall strategy and primary business goals to assess if any change in focus is needed.
Next we make sure that product and delivery management has the same level of clarity. We get the delivery leads and product owners together and communicate the company goals for the upcoming quarter to them, taking the time to answer questions about strategy, challenges, current market trends etc. Our goal here is to make sure that all our leaders are able to bring clarity to their teams so that local decisions are made with the right context.
3-4 weeks before the planning event, the product management team starts curating the backlogs for the different product and system streams. They create a “long list” of major features and work items and meet with stakeholders, customers and Bonial management to validate priorities.
A week before planning the “long lists” are reduced to “short lists” of the highest priority items. This is probably the hardest part of the process and it requires saying “no” to things… we find that our stakeholders and customers all agree that discipline is needed so long as it mostly impacts other stakeholders and customers. Over the years we’ve tried various formal mechanisms to prioritization – Weighted Short Job First, Feature Bucks, etc. – but in the end we find that different tools are needed for different situations and that, with experience, people often people intuitively know the order.
Over the next week the product team spends time working through open questions and details while architects and engineers do the same on the technical side. There’s also generally some intense discussions about “bubble” items – features that are right on the cusp of making the list – as well as hot items that didn’t make the list.
I wish I could say that this process was easy. The truth is that a great deal changes in three months – new opportunities and challenges, unexpected curveballs – so we’re constantly challenged to re-assess our priorities with each planning cycle. On top of that there’s a lot we want to do, so we find ourselves often having hard discussions up until the planning day, especially around the “bubble items”. It’s not clear to me that there’s a much easier way – we’re in a fast industry and a complex business – but we try to get better each quarter.
So the primary inputs to planning are a short, discreet, prioritized set of epic-sized initiatives for each team. Most of these are functional but there are usually some architectural or operational topics as well. That brings us now to the actual planning days (typically a Th/F):
On planning day 1, we start with a team breakfast at 0900 and then a kickoff presentation at 0930. The kickoff presentation covers the big picture goals for the quarter and a quick review of each team’s focus and top items so everyone has context. We also cover logistics – where they can find flip-charts and stickies, who’s in which rooms, etc.
Following the kickoff (and the kitchen cleanup), the teams go to their planning spaces and get started. Basically, they start with the top priority item, plan it through to completion, and then repeat with the next item. Once they get to the allocated capacity they stop planning. The remaining items simply don’t get done.
“Full capacity” is an interesting and oft debated question. We have a loose agreement that teams should reserve ~20% for bugs and team discretion and should reserve another ~20% for refactoring and architecture work.
As the teams are planning they’re also working with other teams on inbound and outbound dependencies. We’ve organized the teams to minimize dependencies but they’re still a fact of life. The teams negotiate how to support each other based on overall priorities and goal (ref. the “context” from the breakfast). Any un-resolved conflicts are escalated or raised at the review meeting (below).
At 4PM on the first day the scrum masters and other delivery managers get together to share their current plans with the group. We use a web-based collaboration tool that allows each team to put virtual stickies on their assigned row with different colors illustrating milestones, spikes, tasks, releases, etc. Dependencies are made visible by connecting two stickies with a line.
Putting everything together allows us to visualize the major streams, see what made the cut and what didn’t, and address any dependency challenges or conflicts. Generally there are several to-dos coming out of the review, primarily around working through dependencies or going to business stakeholders for clarification.
The morning of day 2 is primarily for making adjustments from the previous day, collaborating with other teams where combined efforts are needed and tying up loose ends. Most teams wrap this up pretty early and then get back to their HIP sprint, others need most or all of the day.
At 4PM on day two we grab a beer and get back together in front of the stickies board to review any changes from the previous day and discuss any unresolved conflicts. This exercise typically goes much faster than the day 1 review. At the end we check confidence and then head home for a much needed break.
Here’s the final plan from last quarter.
It looks complex and it is complex. Without developing our process, our teams and ourselves over the last couple of years we’d be hard pressed to effectively manage this complexity.
Following the planning we package up the plan and communicate a high level, consumable version for to the business and stakeholders. We emphasize that these are our current targets and best estimates – this isn’t a contract. We’ll do everything we can to stick to it but we may be surprised or, in good agile fashion, we may decide to make changes as the situation evolves.
So that brings us full nearly full circle. I started this series during our last planning days and expected it to be a quick post. As I pulled the thread, however, I realized how much work had gone into our evolution in this area. I could also see that a high-level flyover would leave huge gaps in the journey, so I decided to fly lower.
You can see by now that undertaking a journey like this takes a fair amount of time, experience and honest self-evaluation, regardless of the specific methodology you choose. That said, the investment is worth it, and a great deal of value can be realized even early in the process.
In Bonial’s case, we had a few advantages as we set off on the journey. First, everyone was open to change, even when the change made them nervous. The importance of this can’t be overstated. I’ve lost count of the organizations I’ve worked with in which the teams had no motivation to improve (though paradoxically most of them complained constantly about the status quo). In the end the team has to want or at least be willing give it shot. Which brings us to point two…
Second, we had good people and a healthy culture. Where we lacked in experience and skills, we more than compensated by having a team of smart, energetic professionals. With good people, you can generally solve any problem.
Last, but not least, we have a skilled, SAFe-trained Release Train Manager to drive the process (though her role has evolved). Even the finest orchestras of the world don’t play on they own- they have a conductor. In our case the conductor/RTE ensures:
The stage is set. Everybody knows the timing, their roles and the rules of the game and All the needed supplies are in place and easily accessible to everybody.
Short (really short!) list of candidates for planning is finalized before we start. The RTE ensure we’re observing Work in Progress (WIP) constraints, which are critical to maximizing throughput. As she often says, “Let’s stop starting things and start finishing things instead.”
People know who to go to regarding priorities and impediments during planning.
The planning is properly wrapped up, all roadmaps and agreements put together, and outcomes are properly communicated to all key stakeholders.
Solid retrospectives are done both on the quarter itself as well as the planning process so we can continue improving.
Whew! That was a lot of writing for me and reading for you. Kudos if you made it this far – I hope it was worth it. So now you know how we do it – feel free to share your own stories about how you and your teams plan. Best of luck in your own journey!
(Special thanks to Irina Zhovtobrukh (the mysterious RTE) for her contributions to this post as well as teaching us how to “conduct” better planning evolutions.)
In the previous two posts I talked about the importance of clarity and control, but even perfect clarity and unlimited control will likely still lead to failure and frustration if the team isn’t ready to take on these new responsibilities. That’s where Competence comes in.
To build competence across the team we invested in experienced practitioners as well as training and mentoring. We hired a talented SAFe-trained development manager (“Release Train Engineer” in SAFe parlance) to both lead our transformation as well as provide training and mentoring. We brought in agile and SAFe trainers for multi-day training sessions on team and enterprise agile (more on SAFe in later posts). We started leadership and management training for our product owners, new team leads and lead developers. The more experienced members of the team actively coached others in best practices.
Why go through all this trouble? Simple – a common source of failure I’ve seen over the years is this: the fantasy that calling something ‘agile’ somehow makes it agile. Too often I’ve seen organizations slap on the label of “scrum teams,” appoint a newly hired Scrum Master or Agile Coach, tell them to have stand-ups and sprints, and then hope that “agile happens”… a.k.a. “fake it until you make it”. Good luck. Like it or not, you have to invest in training, excellent people and experienced leadership.
A word of advice: don’t skimp on the training. Our first training session involved a half-day session for only key leaders. As we quickly learned, that’s not training – that’s just a teaser. Frankly I was part of the problem – I needed to shift my attitude and accept that, unless the whole team is on-board and up-to-speed, we’d never be able to run a full speed. Yes, it was expensive in both time and money, but necessary. We’ve since opened up both the breadth and depth of the training.
We also learned by doing. We built on a strong culture of open and honest retrospectives and we actively shared the learnings between teams. We experimented with new techniques and, when they worked, spread them throughout the organization. We actively cultured an environment of “low fear” so that people had space to learn and grow.
As a management team, we also worked hard to “specify goals, not methods” as part of the shift away from the Roadmap Committee described in the previous post. Why is this a competence topic? Because by forcing ourselves to stay out of the details we provided space for the teams to learn and grow. This also opened up room for lots of great ideas that may never have been voiced in a top-down approach.
Key takeaway: invest in training and regular, iterative experiential learning. Put your teams in positions where they need to stretch their knowledge and experience so that they have the context and confidence going forward to execute the mission (but actively support them as they learn). And, as always, hire and retain great people.
One thing before we get back to the original topic – as I re-read these last three posts I can see how a reader might get the sense that we executed smoothly via a carefully orchestrated plan. Not so. There was trial-and-error, plenty of course adjustments and a mix of successes and failures. That’s ok – it takes time. What’s important is keeping your eye on the ultimate goal, being realistic and working together as a team to make it happen.
As you read in the previous post, we shed some light on what we were (and weren’t) doing with some simple Clarity mechanisms with regards to planning our software development. Now we needed to make sure everyone knew who should be doing what – a.k.a. Control.
We started with a new roadmap governance process. We knew that if we wanted to scale the organization we had to fundamentally rationalize the “roadmap committee”. To that end we developed the following decision flow chart:
Though it appears complex, it’s built around a single principle: push as many decisions to the teams as possible. The “roadmap committee” would be responsible for major strategy and funding decisions and for monitoring progress; the teams would execute under the broad guidance from the committee.
This shift to distributed control was fundamental to our later growth and success but the truth is that it took the better part of a year until we “got it right-ish”. It was an iterative process of building trust on all sides – management had to trust the teams to make good decisions, the teams had to trust management to provide clear guidance and hold to it, and the stakeholders had to trust both. But it was worth it.
Most importantly, the teams began to “own” their mission which changed everything.
The Roadmap Committee has long since been replaced with other more focussed and lighter-weight mechanisms, but the principles still hold true – executive management sets the goals, allocates resources and provides experience and mentoring; the teams decide how to achieve the goals and execute. We continue to explore different organizations and alignments to optimize our software development and delivery and we assume we’ll continue to experiment as we grow and our missions changes.
Another major step we took that impacted both control and clarity was to align our teams into Value Streams. In our effort to improve how we applied Lean and Agile principles at the team and group levels, we decided to adopt best principles from the Scaled Agile Framework (SAFe) for software development at the enterprise level. SAFe teams are built around “Programs” or “Value Streams” that allowed teams to focus on a specific portion of the mission and operate as independently as possible. We deviated quite a bit from pure SAFe and formed three streams around our user facing efforts, our business systems and our operations initiatives. Never-the-less the benefits were immediate as we reduced “prioritization hell” which is what I call the often fruitless act of trying to compare a revenue generating topic with, for example, a cost savings or security topic.
Key takeaway: it’s impossible to both scale and maintain central control. Effective scaling requires creating semi-autonomous, fully-capable teams organized to be relatively independent and provided with the clarity needed to tackle their mission. This can be a tough step, especially in organizations with a long history of central control, but it’s a step that must be taken. (FWIW I’ve seen the opposite and it’s not pretty.)
How do you go about fixing something that requires you to change almost everything you do? As described in part 1, this was the situation we faced at Bonial in late 2014 when it came to the governance and execution of our product development roadmap.
Rather than re-inventing the wheel, we took advantage of proven play books – one for organization change and one for enterprise agile. On the organizational side, we knew that the “top down, centralized control” model was already strained and would not scale. So we leveraged elements from the (fantastic) book “Turn this Ship Around!” by Capt. David Marquett, which describes one organization’s journey from a top-down leadership structure to a “leader-leader” structure with distributed ownership and control. Bonial would have to undergo a similar transformation – we needed everyone to be engaged and feeling ownership if we were to realize rapid transformation and scale.
In the book, the author presents a couple dozen excellent leadership mechanisms and groups them under three high-level categories – Clarity, Control, and Competence. In the interest of brevity, I’ll describe just a few of the things we did to improve in these categories. (I’ll also break them up over several posts.)
Starting with clarity, we began with the simplest exercise possible: we documented all of the work-in-progress on one list. Absurdly basic yet profound. We created the first draft by literally going from team to team and asking them what projects were in progress and putting them in a Google Sheet. (Why this format? Because normalizing and adapting the existing tracking tools (Jira, Trello) would have taken far too long and wasted the team’s time and energy. Also, Google Sheets allow for simultaneous editing which is critical for collaboration.) To make this relevant for business stakeholders, we then dropped the small “story” and “task” level items and broke down the “saga” level items so that the resulting list was at a meaningful “epic” or “project” level.
Here’s a snap of an archived copy of the first version:
This exercise had several immediate impacts. First, it showed our stakeholders that the engineering team was actually working on a quite a few projects and began to restore some confidence in the product development function. Second, it shed light on all the projects and prompted a number of valid and constructive questions as to priorities and business justifications for the projects. This in turn led directly to our decision to do more formal and intentional planning: we wanted to ensure that our engineering resources were “doing the right things,” not just “doing things right.”
Over time this simple Google Sheet has grown to be the primary tool for viewing and communicating the current quarter’s roadmap development. We populate the sheet with the output of each quarter’s planning exercise (more on that to follow). Twice a week we review the status of all items (red, yellow, green) and discuss as a team what we can do to adjust if needed. The same spreadsheet is publicly available to all stakeholders for full transparency. We’ve considered several times moving to more sophisticated (and expensive) tools but each time we decided that the Google Sheets does everything we need.
Key takeaway: it’s hard to plan if you don’t know what you’re already doing. Take the time to get clarity on what’s happening, tune it to the right granularity, and ensure there’s full transparency.
Today is the first day of our quarterly planning ritual here at Bonial. As I write this the teams are huddled away passionately discussing, digesting, challenging, and estimating their candidate work items. We have over a hundred people from 25 different countries and multiple offices working through dozens of epics. By tomorrow we’ll have a solid plan agreed upon by the engineers, designers, testers, data scientists, operations specialists and product managers as well as their stakeholders.
It wasn’t always like this.
When I arrived at Bonial a couple of years ago, there was no documented roadmap or cohesive prioritization process. The planning horizon ranged from intra-day for emergencies to a couple of weeks for most other items. No-one had a clear understanding of what we were working on and why. The stakeholders didn’t trust engineering and everyone was unhappy.
Getting from there to here hasn’t been easy. Over the next few posts I’ll walk you through how we got to where we are today.
But to understand the journey we have to start at the beginning-ish…
In 2014, Bonial was a mature startup with seven or eight years under its belt. We had a very successful mobile and web app being used in a dozen or so countries. The product development crew was organized into four scrum teams, an ops team and a design team and was responsible for developing all of the user facing systems as well as the critical business systems. All-in-all, there were 40-50 people working together in product development.
Unfortunately the team was less effective than it could and should have been, in large part due to lack of clarity and governance. For starters, not only was there a lack of a coherent roadmap, there wasn’t even any clear record of what work was currently being executed. We had tickets in Jira scattered across a dozen or more “projects,” Trello boards, stickies on blackboards, and whole lot of ideas in people’s heads, but there was no one place a stakeholder could go and get a simple answer to the question: “what is the status of my project?”
What roadmap planning was done happened in a bi-weekly session called the “roadmap committee.” This was a group of senior managers from the extended product development organization and stakeholders who reviewed development progress and made decisions on new initiatives. I’m being nice when I say that it wasn’t much fun. The selection of initiatives being governed was somewhat arbitrary and the value provided by the committee was questionable. We often hashed over the same questions over and over again. Unfortunately it was the only vehicle in place to provide some level of two-way communications regarding roadmap and status.
The end result was that no-one was happy. The stakeholders and customers felt like their needs were ignored and that, when their projects were accepted, delivery was too slow. The engineers felt like they were in a blender of arbitrary and incoherent requirements over which they felt no sense of ownership. And the product management team was stuck in the middle, working to adjust to the latest change and managing both unhappy stakeholders and engineers both. The end result was perceived and real low performance and sense that we were set up to fail.
So we decided to change this; the solution would require a great deal of work in many areas across the people/process/technology spectrums. It all came together, though, in planning. Stay tuned for part 2.