One of the biggest challenges of developing a digital product is accepting that your core development team may not be enough to get a complex product out the door quickly. Agile and Scrum provide a framework for lean development, but what happens when it’s time to ramp up production from proof of concept to large-scale digital product?
It’s dangerous to assume that the same team patterns will be appropriate at every size of product development. For instance, you may think that if a core team includes two designers and two back-end developers, then a team three times that size must have six designers and six developers to deliver three times more.
Unfortunately, that is rarely the case for teams that need to rapidly scale production. It’s one of the dangers inherent to Scrum: what works for an established agile team may not work when you need to expand.
Building Your Superteam
The biggest driver for team growth is – you guessed it – product growth. Once project scope grows beyond a certain point, your team will need to grow with it, as we encountered with a client who needed an automotive sales prototype. A single agile team delivered a proof of concept with basic functionality, which led to a new engagement for a rapidly growing complex digital product.
We knew early on that the single development team would not be enough to build the product quickly enough to get to market, so we began to scale our typical team up to a size large enough to design and build the heavyweight auto ecommerce platform.
We doubled our team size, and that doubled our output. Then we tripled our core team. Before we knew it, we had a superteam nearly five times as large as our standard development teams working together in one codebase, out of a single backlog, and it began to create significant challenges for the team and the product.
Hard Truth No. 1: At some point production will peak, and then it will plateau. It will be frustrating to see delivery slow, especially while using the framework you knew well.
When you begin to scale a product team, you’re going to hit a number of predictable – yet manageable – roadblocks. Here are a couple we encountered.
How can you effectively measure velocity with a team of 20+? How do you account for differences in specializations, effort pointing scales and varying standards for metric tracking?
Daily standups with so many hands in the pot started to burn significant development time. How can you save time and still keep the team updated on sprint progress?
Product Owner attention was spread across the multiple features in progress. Can you feasibly secure design approvals for new features with development scheduled in the same sprint?
Larger stories generally take longer to develop. How can you keep QA resources from getting swamped at the end of sprints?
Sprinting Through Your Product Roadmap
Every digital product we build is guided by a product roadmap. Product strategists work directly with clients to develop a firm vision that guides development by helping to narrow down a minimum viable product for initial release, prioritize features for future sprints and position clients to thrive in their market. While this can be useful when a Product Owner cannot devote his or her full attention to a project, it’s also an invaluable guide to scaling your agile team and allocating resources properly.
A product roadmap offers the opportunity to set goals at every level of development: daily standup procedures, mid-sprint check-ins, high-level feature release plans and sprint goals that must be finished for launch. Working in larger three-week sprints gave our superteam the opportunity to track goals and predict the necessary composition of the team as we moved through development. You may need additional UX/UI designers early on to assist with digital prototypes, or extra back-end developers for engineering and database architecture as the product grows. The needs of the product should help dictate the makeup of your team.
As long as you have a clear understanding of your product roadmap and your team members’ strengths, you can add or subtract team resources as necessary without too many surprises.
However, relying too much on the specializations of your individual team members can become a pitfall.
The Problem with Subject Matter Experts
During a long development process with a large team, members of the team will naturally build product knowledge bases – they’ll become subject matter experts. You’ll have someone who deeply understands the brand design, another who ruthlessly hunts down bugs, maybe another who’s a mobile wizard. Experts are inevitable on any project, and they’re typically tremendous assets for an agile team.
However, as you scale an agile team (and the work it must produce), teams can become complacent and assume that your SME will handle any task associated with his or her knowledge base. It can be too easy for developers to fall into a mindset of “that’s not my specialty, but I’m sure he or she will get to it.”
That assumption is distinctly non-agile, and taking a step back to remember basic agile and Scrum principles as your team grows can help remind everyone that they’re still, well, a team.
Hard Truth No. 2: The team dynamics that work for a team of 5 will probably not work for a team of 25.
The Solution is Right Under Your Nose
No matter how well you’ve planned for changes, however, the fact remains: a Scrum team of 5 can operate much more efficiently than a team of 10, 15 or 20. That’s just simple team dynamics: mo people, mo problems.
But there’s good news.
Scrum already offers everything you need to get to a healthy development state. Here’s the obvious (yes, obvious) solution: Hold retrospectives every sprint, without exception. Try new solutions and make adjustments to your process.
Hard Truth No. 3: Your retrospectives may become painful. You might feel discouraged. You might doubt whether your superteam will find Scrum justice.
And then you’ll start experimenting with potential solutions based on the needs of your team and your product. When you identify potential solutions in retros, focus on a few to implement and dive into during your next sprint. Some things won’t stick, and some problems will stay problems for several sprints. Keep your head up: over time, you’ll find strategies and workflows that meet your needs.
Here are a few that worked magic for us:
Just a note: if you’re not a hardcore Scrum nerd, skip ahead to the charts below to get a sense of what appropriate Scrum scaling can do. If you are, welcome! Put your Scrum hat on and dive in.
Team Member Specialties: It may not make sense to expand your initial team roles in a linear fashion. Growth should be circumstantial: multiple new features coming down the pipeline may call for an extra UX designer to balance the load, but if the new features are tech-heavy, it may be wise to allocate open team spots to skilled back-end developers. While a beautiful user experience is ideal, a broken experience is a broken product. Use your product roadmap to make smart decisions about your next team addition.
Effort Pointing Scales: We had to define a level point baseline to unite the multiple pointing scales from new teams added to the project. We chose a relative ~5 points for each developer per development day and set story examples, not hours, for that measure.
Particular Strength Velocity: We couldn’t reasonably use past sprints to calculate team velocity since the team structure had changed considerably each sprint, so we used the following equation:
Breaking user stories down into front-end and back-end elements will help match effort points to velocity and determine a more accurate sprint forecast.
Daily Standup Length: Rather than timeboxing the full group’s updates, we created a Google spreadsheet with a list of user stories, one tab per sprint day, that each distributed team could access to comment on progress from the previous day. If the forecasted story had an update, it was discussed in standup, and if not, it was skipped. We reserved all major roadblocks for the end of standup and released any roadblock-free developers before holding those longer problem-solving “Parking Lot” discussions.
Design Approvals: Development was moving so fast that there just wasn’t enough time for our Product Owners to review and approve feature designs on top of their other sprint responsibilities. We decided to break out our design team into a separate adjacent project team for new features to be designed, reviewed and approved an entire sprint before development. The designers soon became valuable story owners, helping to write acceptance criteria and answer developer questions throughout development.
Quality Assurance Overload: We beefed up our QA team to get more hands available for both in-sprint and regression testing. We planned a Pencils Down stopping point for new development followed by 2 full days of testing to give the QA team more time to tackle the inevitable flood of completed stories near the sprint’s end. Developers were available to fix any remaining in-sprint story issues, and some even began working on existing bug fixes for testing and launching with the next sprint.
Hard Truth No. 4: You will not get your first attempt at scaling agile perfectly correct. You’ll hit roadblocks and new challenges, but you absolutely won’t improve without transparent dialogue and process experimentation.
The results speak for themselves.
See a difference? Yeah, us too. We used to start slow and struggle to achieve our sprint forecast. The sexy, lean burndown chart on the right is the superteam firing on all cylinders.
Your Next Superteam: Keep These Things in Mind
Consider breaking the large team up into smaller teams, potentially with multiple Scrum Masters. Depending on your project, you might split developers up by specialty, site feature/epic or even by release date. Remember: the smaller the team, the more manageable, with 7+/-2 being ideal.
Retrospectives are priceless. Never miss an opportunity to talk openly and honestly with your team about what’s working and what isn’t. Determine the most important issues and set goals for improvement in the next sprint.
Stay open-minded and remember to breathe. Scrum for 5 developers just isn’t the same as Scrum for 25. You’ll need to adjust your mindset and process along the way.
Brush up on the basic agile principles you already know. You’re on a team. Communicate, support each other, ask for help and you’ll be amazed at how readily solutions will appear.
The above are ideas that have worked for us, but it’s certainly not a comprehensive list. What are some tips you’ve learned from scaling agile? We’d love to hear from you!
Kate Griggs is loving life as a Scrum Master for Team Orange at 352 Inc. She’s a Virginia Tech hokie, trivia enthusiast and Apple App Store rat for life. In-office she’s organizing projects and potlucks, communicating with awesome clients, diving more into UX and shooting nerf darts at her teammates, but out of office she’s hanging with her boxer-pit puppy Ben and orange tabby cat Dino while binging on Netflix and fresh local vegetarian food and red wine. No oxford commas for this one.
This is an Agile Alliance community blog post. Opinions represented are personal and belong solely to the author. They may not represent the opinion or policy of Agile Alliance.
Agile Alliance is a nonprofit organization with global membership, supporting and serving the Agile software community since 2001. We support people who explore and apply Agile values, principles, and practices to make building software solutions more effective, humane, and sustainable. We share our passion to deliver software better every day.
Have you noticed that some people “get” Agile more quickly than others? This doesn’t seem to have much to do with seniority, tech/non-tech background, or the type of industry someone […]
We'd like to officially invite you to raise your hand to serve as a reviewer for Agile2024 this year. We'll take as many as we can get, and you’ll get to participate as much as you want in the process.
Have you noticed that some people “get” Agile more quickly than others? This doesn’t seem to have much to do with seniority, tech/non-tech background, or the type of industry someone […]
We'd like to officially invite you to raise your hand to serve as a reviewer for Agile2024 this year. We'll take as many as we can get, and you’ll get to participate as much as you want in the process.
Your membership enables Agile Alliance to offer a wealth of first-rate resources, present renowned international events, support global community groups, and more — all geared toward helping Agile practitioners reach their full potential and deliver innovative, Agile solutions.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. However you may visit Cookie Settings to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
__cfduid
1 month
The cookie is used by cdn services like CloudFare to identify individual clients behind a shared IP address and apply security settings on a per-client basis. It does not correspond to any user ID in the web application and does not store any personally identifiable information.
_csrf
session
This cookie is essential for the security of the website and visitor. It ensures visitor browsing security by preventing cross-site request forgery.
_GRECAPTCHA
5 months 27 days
This cookie is set by Google. In addition to certain standard Google cookies, reCAPTCHA sets a necessary cookie (_GRECAPTCHA) when executed for the purpose of providing its risk analysis.
cookielawinfo-checbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-advertisement
1 year
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Advertisement".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
gdpr[allowed_cookies]
1 year
This cookie is set by the GDPR WordPress plugin. It is used to store the cookies allowed by the logged-in users and the visitors of the website.
JSESSIONID
session
Used by sites written in JSP. General purpose platform session cookies that are used to maintain users' state across page requests.
PHPSESSID
session
This cookie is native to PHP applications. The cookie is used to store and identify a users' unique session ID for the purpose of managing user session on the website. The cookie is a session cookies and is deleted when all the browser windows are closed.
pmpro_visit
The cookie is set by PaidMembership Pro plugin. The cookie is used to manage user memberships.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Cookie
Duration
Description
__atuvc
1 year 1 month
This cookie is set by Addthis to make sure you see the updated count if you share a page and return to it before our share count cache is updated.
__atuvs
30 minutes
This cookie is set by Addthis to make sure you see the updated count if you share a page and return to it before our share count cache is updated.
__jid
30 minutes
Used to remember the user's Disqus login credentials across websites that use Disqus
aka_debug
This cookie is set by the provider Vimeo.This cookie is essential for the website to play video functionality. The cookie collects statistical information like how many times the video is displayed and what settings are used for playback.
bcookie
2 years
This cookie is set by linkedIn. The purpose of the cookie is to enable LinkedIn functionalities on the page.
CONSENT
16 years 8 months 15 days 5 hours
Description Pending
disqus_unique
1 year
Disqus.com internal statistics
lang
session
This cookie is used to store the language preferences of a user to serve up content in that stored language the next time user visit the website.
language
This cookie is used to store the language preference of the user.
lidc
1 day
This cookie is set by LinkedIn and used for routing.
locale
3 days
This cookie is used to store the language preference of a user allowing the website to content relevant to the preferred language.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Cookie
Duration
Description
_gat_UA-17319182-1
1 minute
Set by Google Analytics and Google Tag Manager to enable website owners to track visitor behaviour and measure site performance. These cookies are used to collect information about how you use our website. The information collected includes number of visitors, pages visited and time spent on the website. The information is collected by Google Analytics in aggregated and anonymous form, and we use the data to help us make improvements to the website.
YSC
session
This cookies is set by Youtube and is used to track the views of embedded videos.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duration
Description
_ga
2 years
This cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assign a randomly generated number to identify unique visitors.
_gat_gtag_UA_17319182_1
1 minute
Set by Google Analytics and Google Tag Manager to enable website owners to track visitor behaviour and measure site performance. These cookies are used to collect information about how you use our website. The information collected includes number of visitors, pages visited and time spent on the website. The information is collected by Google Analytics in aggregated and anonymous form, and we use the data to help us make improvements to the website.
_gat_UA-0000000-1
1 minute
Set by Google Analytics and Google Tag Manager to enable website owners to track visitor behaviour and measure site performance. These cookies are used to collect information about how you use our website. The information collected includes number of visitors, pages visited and time spent on the website. The information is collected by Google Analytics in aggregated and anonymous form, and we use the data to help us make improvements to the website.
_gid
1 day
This cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the website is doing. The data collected including the number visitors, the source where they have come from, and the pages visted in an anonymous form.
eud
1 year 24 days
The domain of this cookie is owned by Rocketfuel. This cookie is used to sync with partner systems to identify the users. This cookie contains partner user IDs and last successful match time.
S
1 hour
domain .google.com
uvc
1 year 1 month
The cookie is set by addthis.com to determine the usage of Addthis.com service.
vuid
2 years
This domain of this cookie is owned by Vimeo. This cookie is used by vimeo to collect tracking information. It sets a unique ID to embed videos to the website.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duration
Description
_fbp
3 months
This cookie is set by Facebook to deliver advertisement when they are on Facebook or a digital platform powered by Facebook advertising after visiting this website.
AnalyticsSyncHistory
1 month
Used to store information about the time a sync with the lms_analytics cookie took place for users in the Designated Countries
bscookie
2 years
This cookie is a browser ID cookie set by Linked share Buttons and ad tags.
euds
session
These cookies are from Rocket Fuel (rfihub.com) and are used to deliver targeted advertising across their network sites ensuring users see relevant advertising.
fr
3 months
The cookie is set by Facebook to show relevant advertisments to the users and measure and improve the advertisements. The cookie also tracks the behavior of the user across the web on sites that have Facebook pixel or Facebook social plugin.
IDE
1 year 24 days
Used by Google DoubleClick and stores information about how the user uses the website and any other advertisement before visiting the website. This is used to present users with ads that are relevant to them according to the user profile.
loc
1 year 1 month
This cookie is set by Addthis. This is a geolocation cookie to understand where the users sharing the information are located.
NID
6 months
This cookie is used to a profile based on user's interest and display personalized ads to the users.
pxrc
2 months
The purpose of the cookie is to identify a visitor to serve relevant advertisement.
rlas3
1 year
The cookie is set by rlcdn.com. The cookie is used to serve relevant ads to the visitor as well as limit the time the visitor sees an and also measure the effectiveness of the campaign.
rud
1 year 24 days
The domain of this cookie is owned by Rocketfuel. The main purpose of this cookie is advertising. This cookie is used to identify an user by an alphanumeric ID. It register the user data like IP, location, visited website, ads clicked etc with this it optimize the ads display based on user behaviour.
ruds
session
The domain of this cookie is owned by Rocketfuel. This cookie is a session cookie version of the 'rud' cookie. It contain the user ID information. It is used to deliver targeted advertising across the networks.
sd-session-id
1 year 24 days
Registers data on visitors from multiple visits and on multiple websites. This information is used to measure the efficiency of advertisement on websites.
test_cookie
15 minutes
This cookie is set by doubleclick.net. The purpose of the cookie is to determine if the user's browser supports cookies.
UID
2 years
This cookie is used by AddThis as a unique user ID that recognises the user on returning visits.
UserMatchHistory
1 month
Linkedin - Used to track visitors on multiple websites, in order to present relevant advertisement based on the visitor's preferences.
uuid2
3 months
This cookies is set by AppNexus. The cookies stores information that helps in distinguishing between devices and browsers. This information us used to select advertisements served by the platform and assess the performance of the advertisement and attribute payment for those advertisements.
VISITOR_INFO1_LIVE
5 months 27 days
This cookie is set by Youtube. Used to track the information of the embedded YouTube videos on a website.
xtc
1 year 1 month
Anonymously tracks user behaviour on the websites that allow a user to share pages on social media using the AddThis tool. AddThis log the anonymous use to generate usage trends to improve the relevance of their services and advertising.
zync-uuid
1 year 23 days 17 hours
The purpose of the cookie is to serve visitors with relevant advertisement.
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
Cookie
Duration
Description
CP5XKN6QLDFWUC
This cookie is provided by the Calculated Fields form. This cookie is used by the online calculators on the website. Without the Calculated Fields cookie the instant quotation may not work.