The pitfalls of hyper-growth and a healthy alternative Good Eggs has seen its share of ups and downs including a period of hyper-growth, a painful reset, and a strong recovery. We’ve learned a tremendous amount on this journey including gaining new perspective into the relationship between team size and effectiveness. We used to be much […]
Good Eggs has seen its share of ups and downs including a period of hyper-growth, a painful reset, and a strong recovery. We’ve learned a tremendous amount on this journey including gaining new perspective into the relationship between team size and effectiveness. We used to be much bigger yet are more effective today than ever.
In this post I share insight into how we have organized our engineering teams for maximum impact in the coming years.
We founded Good Eggs in 2011 with a mission to grow and sustain local food systems worldwide. We planned to use technology to accelerate the positive change happening across the food system — change we saw originating in the transformational practices of high-integrity local farmers and food makers.
With a mission to change the world and an eagerness to do it soon, we chose the path of many Bay Area startups by working with investors to help us fund and scale our company. We were one of those startups that conflates changing the world with hyper-growth. We pursued top line growth over unit economics and business efficiency. We hired aggressively to do more faster. And we were rewarded with high valuations in multiple rounds of funding.
In late 2015, the challenges of figuring out our physical logistics with a shrinking bank account forced us to come to terms with the fact that growth-at-all-costs was not working for us. If we were going to survive to have any impact at all, we’d have to reconfigure our business, our strategy, and our team for long term success over short term growth.
In 2016 we transformed ourselves into a company with no less ambition but a plan to grow with purpose — to build a strong, lasting company on a foundation of collaborative teams, impeccable service, quality product, strong unit economics, and a technology platform that allows us to move fast, learn quickly, and deliver that impeccable service efficiently.
Through the year we made tremendous improvements in our quality of service, convenience, and efficiency resulting in strong per-order profitability and better retention and growth than we had seen in previous years. We did all this with a dramatically smaller team than before.
At the beginning of 2017, we have 16 people on our engineering team at Good Eggs. Teams are working on our web and mobile grocery shopping experience, warehousing and real-time logistics, DevOps, and data science and analytics. By the end of 2018 — about two years from now — we plan to be 30 people across those teams.
In the context of hyper-growth startups that are hiring engineers as fast as they can in the Bay Area, 16 or even 30 is a small engineering team. We’ve been there. Having a much larger team wasn’t the necessary ingredient for our success. In fact, it may have made it harder.
Today, we see small teams organized around a common goal and with clear accountability as the key success drivers of our business. From produce picking to iOS development, small teams at Good Eggs have delivered exceptional results at the highest quality.
Since launching our online grocery service in 2013, we’ve built a top-rated service, beloved by our customers that serves the Bay Area from San Francisco to Walnut Creek and San Rafael to San Jose with same-day delivery. We power tens of millions of dollars of annual sales to local producers who work hard and with integrity for little recognition. We make a healthy margin on every order and continue to see strong growth in the Bay Area.
Our Consumer Experience team of six has created a grocery shopping experience that works seamlessly across web, mobile web, native iOS, and email. Our Operations and Logistics team of six has designed and built our buying, warehousing, picking, and delivery systems — both the human processes and the hardware and software tools that run those process and ensure error-free service. Our DevOps team (of one!) provides the build, test, deployment, hosting, and monitoring infrastructure that enables the product teams to own their work from inception through deployment.
That’s a lot for a small team. So how do we get it all done and keep from getting overwhelmed?
“What is the meaning of democracy, freedom, human dignity, standard of living, self-realization, fulfillment? Is it a matter of goods, or of people? Of course it is a matter of people. But people can be themselves only in small comprehensible groups.”
— E.F. Schumacher, Small Is Beautiful — A Study of Economics As If People Mattered
We rely on small teams empowered with clear accountability for business goals. We’re collaborative and adaptable so we can work on whatever needs to be done. We commit resources to removing roadblocks and creating efficiencies from which all teams can benefit. We reflect on how we are working and take action to ensure that we are always getting better.
Each engineering team is part of the business unit it serves so lines of accountability are clear. Each team is accountable for moving the business in a specific way. For example, the top metrics for our entire Operations & Logistics team (including warehouse, delivery drivers, and buyers) are Perfect Order Rate (our quality of service metric) and Cost. Each sub team has their own plan for maximum impact on those metrics within their domain of responsibility. This accountability allows each team to align on clear goals.
Team work is highly collaborative. We follow XP-style agile software development practices including pair programming, shared code ownership and a single queue of work. We hold regular retrospectives to ensure that we are talking not only about the work we are doing but also about how to work smarter. We practice regular 1:1s and provide coaching on giving and receiving feedback so that peers can more easily learn from each other.
We seek to minimize dependencies among teams. Our decision to align engineering teams with business units leverages Conway’s Law to produce software system boundaries that match team accountability.
At a technology level, our use of microservices gives us additional flexibility in defining those boundaries and in transferring accountability while maintaining clear software system boundaries. Contract testing ensures those boundaries are well-defined. Using message queues allows us to decouple runtime dependencies among applications and services.
Working as distinct teams requires mechanisms for keeping us aligned. The first and most powerful is our mission. We know that everyone at Good Eggs is here because we share a common vision for the impact we want to make on the food system. The second is the business unit goals and metrics toward which each team is working. We trust that other teams are taking care of their domains of accountability so that we can focus on ours.
At a technology level we stay aligned through our use of common tools and infrastructure. We share a common stack of Node.js, ReactJS, MongoDB, RabbitMQ and Redis powering a suite of applications and microservices running in the Amazon Cloud. Our DevOps team is accountable for building tooling that enables teams to deploy, monitor, and maintain their own applications in production. Having a single team work on projects to help other teams helps everyone move faster. In fact, a key metric of our DevOps team is Developer Productivity.
We’ve made great progress in the past year. We’ve got big plans ahead and are going to do it all with our small team.
2017 is about expanding our service to make it the best way to eat local in the Bay Area. We’ll expand our assortment, make shopping more convenient and add services that make it easier to get a healthy, seasonally-inspired meal on your table and into your kids’ lunch boxes every day of the week. Beyond 2017 we’ll grow the business outside of the Bay Area with a focus first on the West Coast.
For our Customer Experience team this means improving our shopping experience to make it even easier to restock the products you need and to discover the products you’ll love. Our goal is be your most convenient solution for feeding yourself and your family every week — to be the 24/7 grocery store in your pocket that helps you get dinner on the table tonight. In 2016 we saw sales on mobile surpass desktop sales as customers realize there’s nothing easier than restocking when standing in front of the fridge, on the bus home from work, or cozy in bed at the end of the day.
Discovery and Personalization is the theme for Customer Experience in 2017 as we go beyond providing the basics of a good grocery ecommerce experience — browse, search, reorder — to creating an experience that adjusts to your needs and interests. What would it be like if when you walked into a grocery store, it was organized just for you?
Our Operations and Logistics team reinvented our logistics processes in 2016 to enable us to receive, stow, pick and pack perishable products in four temperature zones all for same day delivery at the lowest error rate we have ever seen. You can now place an order today for produce that was picked early this morning and receive it this evening for dinner tonight. These systems have also yielded dramatic improvements in efficiency and cost that are responsible for over 50% of margin improvements in 2016.
In 2017 Operations and Logistics continues to improve the efficiency of those processes and reduce errors even as we scale up throughput. These wins improve the working experience of our teams in our warehouse, bring our Bay Area operation to a profit-generating business unit and improve quality of service to our customers. We’ll be scaling these systems to prepare for multiple locations as we expand on the West Coast.
With our infrastructure in a healthy place, DevOps can renew its focus on developer productivity to help the product teams reach their goals. Each of the areas of testing, deployment and monitoring have projects lined up that will help our teams move faster.
With Discovery and Personalization a major focus of the Consumer Experience team for 2017, our Data team starts to work on “value creation” projects that improve our customer experience and help shoppers find more of the food they’ll love. We’re starting to deploy and run predictive models in a production environment when most of the team’s work was previously focused on business intelligence insights. We’ll be building out infrastructure that makes it easier to deploy, use and iterate on these models.
Good Eggs is a special place. We run a complex business with lean teams aligned on a common purpose to change the food system for the better. We rely heavily on technology to streamline our processes, encode repeatable practices, ensure a consistently high quality of service and provide our customers with an experience that works so well in their lives it starts to become magical. Having a small engineering team has its challenges as it constrains how much we can take on. But it also requires us to be very clear about our priorities, to work smart and to focus our efforts on what matters most. It’s a great way to run a business.
If you liked this, please click the 💚 below so others will find it on Medium.
Good Eggs connects people who love food, directly with people who make it. We deliver the most incredible food, straight to Bay Area homes. If you are inspired by our mission is to grow and sustain local food systems worldwide, we do have opportunities for those special individuals who can make a big difference on a small team. Find out how you can help.
Source: Good Eggs