online trade shows</a>.</p><h3 id=\"c-grit\">c. Grit</h3><p>When we first started, we couldn’t afford to build the most beautiful piece of engineering work. We had to be fast and agile. This is critical when you are pre-product-market fit. Our CEO Max and a few early employees would go to trade shows to present our product to customers, understand their needs, and learn what resonated with them. Max would call us with new ideas several times a day. It was paramount that our engineers were <a href=https://www.ycombinator.com/"https://angeladuckworth.com/grit-book//">gritty and able to quickly make changes to the product. Over the three or four days of a trade show, our team deployed changes nonstop to the platform. We experimented with offerings like:</p><ul><li>Free shipping on first orders</li><li>Buy now, pay later</li><li>Buy from a brand and get $100 off when you re-order from the same brand</li><li>Free returns</li></ul><p>By trying different value propositions in a short time, our engineering team helped us figure out what was most valuable to our customers. That was how we found strong product-market fit within six months of starting the company.</p><figure class=\"kg-card kg-image-card\"><img src=https://www.ycombinator.com/"https://lh3.googleusercontent.com/CrRDf25EV8if-oP6rfEnSYeA_ttfKsayeQoM61gMOYFODZvpYsId0z2Y5RQ8z5xH4zt8UQaPBOwe1xus8oaqKQW1zxqNxz_ss9LHTpWyCc6tWsyJUm6_g6lVUtb6PkHluwNcqIU9MN3silgCLqtNHO2S8RkPcQCHBYiVPhK9Fteoiq_w9dZJqaxTqA/" class=\"kg-image\" alt loading=\"lazy\"></figure><p><em>Our trade show storefront back when we were called Indigo Fair.</em></p><h2 id=\"2-build-a-solid-long-term-foundation-from-day-one\">2. Build a solid long-term foundation from day one</h2><p>The number one impediment to engineering velocity at scale is a lack of solid, consistent foundation. A simple but solid foundation will allow your team to keep building on top of it instead of having to throw away or re-architecture your base when hypergrowth starts.</p><p>To create a solid long-term foundation, you first need to get clear on what practices you believe are important for your engineering team to scale. For example, I remember speaking with senior engineers at other startups who were surprised we were writing tests and doing code reviews and that we had a code style guide from the very early days. But we couldn’t have operated well without these processes. When we started to grow fast and add lots of engineers, we were able to keep over 95% of the team focused on building features and adding value to our customers, increasing our growth. </p><p>Once you know what long-term foundations you want to build, you need to write it down. We were intentional about this from day one and documented it in our <a href=https://www.ycombinator.com/"https://craft.faire.com/handbook-89f166841ec9/">engineering handbook</a>. Today, every engineer is onboarded using this handbook.</p><p>The four foundational elements we decided on were:</p><h3 id=\"a-being-data-driven\">a. Being data-driven</h3><p>The most important thing is to build your data muscle early. We started doing this at 10 customers. At the time, the data wasn’t particularly useful; the more important thing was to start to collect it. At some point, you’ll need data to drive product decision-making. The longer you wait, the harder it is to embed into your team.</p><p>Here’s what I recommend you start doing as early as possible:</p><ul><li>Set up data pipelines that feed into a data warehouse.</li><li>Start collecting data on how people are using your product. As you add features and iterate, record how those changes are impacting user interactions. All of this should go into a data warehouse that is updated within minutes and made available to your team. As your product gets increasingly complex, it will become more and more important to use data to validate your intuition.</li><li>We use Redshift to store data. As user events are happening, our relational database (MySQL) replicates them in Redshift. Within minutes, the data is available for queries and reports.</li><li>Train your team to use experimentation frameworks.</li><li>Make it part of the product development process. The goal is to transform your intuition into a statistically testable statement. A good place to start is to establish principles and high-level steps for your team to follow when they run experiments. We’ve set principles around when to run experiments vs. when not to, that running rigorous experiments should be the default (and when it isn’t), and when to stop an experiment earlier than expected. We also have teams log experiments in a Notion dashboard.</li><li>The initial focus should be on what impact you think a feature will have and how to measure that change. As you’re scoping a feature, ask questions like: How are we going to validate that this feature is achieving intended goals? What events/data do we need to collect to support that? What reports are we going to build? Over time, these core principles will expand.</li><li>The entire team should be thinking about this, not just the engineers or data team. We reinforced the importance of data fluency by pushing employees to learn SQL, so that they could run their own queries and experience the data firsthand.</li><li>It’ll take you multiple reps to get this right. We still miss steps and fail to collect the right data. The sooner you get your team doing this, the easier it will be to teach it to new people and become better at it as an organization.</li></ul><h3 id=\"b-our-choice-of-programming-language-and-database\">b. Our choice of programming language and database</h3><p>When choosing a language and database, pick something you know best that is also scalable long-term.<strong> </strong>If you choose a language you don’t know well because it seems easier or faster to get started, you won’t foresee pitfalls and you’ll have to learn as you go. This is expensive and time-consuming. We started with Java as our backend programming language and MySQL as our relational database. In the early days, we were building two to three features per week and it took us a couple of weeks to build the framework we needed around MySQL. This was a big tradeoff that paid dividends later on.</p><h3 id=\"c-writing-tests-from-day-one\">c. Writing tests from day one</h3><p>Many startups think they can move faster by not writing tests; it’s the opposite. Tests help you avoid bugs and prevent legacy code at scale. They aren’t just validating the code you are writing now. They should be used to enforce, validate, and document requirements. Good tests protect your code from future changes as your codebase grows and features are added or changed. They also catch problems early and help avoid production bugs, saving you time and money. Code without tests becomes legacy very fast. Within months after untested code is written, no one will remember the exact requirements, edge cases, constraints, etc. If you don’t have tests to enforce these things, new engineers will be afraid of changing the code in case they break something or change an expected behavior.<br><br>There are two reasons why tests break when a developer is making code changes:</p><ul><li>Requirements change. In this case, we expect tests to break and they should be updated to validate and enforce the new requirements.</li><li>Behavior changes unexpectedly. For example, a bug was introduced and the test alerted us early in the development process.</li></ul><p>Every language has tools to measure and keep track of test coverage. I highly recommend introducing them early to track how much of your code is protected by tests. You don’t need to have 100% code coverage, but you should make sure that critical paths, important logic, edge cases, etc. are well tested. <a href=https://www.ycombinator.com/"https://leanylabs.com/blog/good-unit-tests//">Here are tips for writing good tests</a>.</p><h3 id=\"d-doing-code-reviews\">d. Doing code reviews</h3><p>We started doing code reviews when we hired our first engineer. Having another engineer review your code changes helps ensure quality, prevents mistakes, and shares good patterns. In other words, it’s a great learning tool for new and experienced engineers. Through code reviews, you are teaching your engineers patterns: what to avoid, why to do something, the features of languages you should and shouldn’t use. </p><p>Along with this, you should have a coding style guide. Coding guides help enforce consistency and quality on your engineering team. It doesn’t have to be complex. We use a tool that formats our code so our style guide is automatically enforced before a change can be merged. This leads to higher code quality, especially when teams are collaborating and other people are reviewing code.</p><p>We switched from Java to Kotlin in 2019 and we have a comprehensive style guide that includes recommendations and rules for programming in Kotlin. For anything not explicitly specified in our guide, we ask that engineers follow <a href=https://www.ycombinator.com/"https://kotlinlang.org/docs/coding-conventions.html/">JetBrains’ coding conventions</a>.</p><p>These are the code review best practices we share internally:</p><ul><li>#bekind when doing a code review. Use positive phrasing where possible (\"there might be a better way\" instead of \"this is terrible\"; \"how about we name this X?\" instead of \"naming this Y is bad\"). It's easy to unintentionally come across as critical, especially if you have a remote team.</li><li>Don't block changes from being merged if the issues are minor (e.g., a request for variable name change, indentation fixes). Instead, make the ask verbally. Only block merging if the request contains potentially dangerous changes that could cause issues or if there is an easier/safer way to accomplish the same.</li><li>When doing a code review, ensure that the code adheres to your style guide. When giving feedback, refer to the relevant sections in the style guide.</li><li>If the code review is large, consider checking out the branch locally and inspecting the changes in IntelliJ (Git tab on the bottom). It’s easier to have all of the navigation tools at hand.</li></ul><h2 id=\"3-track-engineering-metrics-to-drive-decision-making\">3. Track engineering metrics to drive decision-making</h2><p>Tracking metrics is imperative to maintaining engineering velocity. Without clear metrics, Faire would be in the dark about how our team is performing and where we should focus our efforts. We would have to rely on intuition and assumptions to guide what we should be prioritizing. </p><p>Examples of metrics we started tracking early (at around 20 engineers) included:</p><ul><li><strong>Uptime.</strong> One of the first metrics we tracked was <a href=https://www.ycombinator.com/"https://docs.datadoghq.com/integrations/uptime//">uptime. We started measuring this because we were receiving anecdotal reports of site stability issues. Once we started tracking it, we confirmed the anecdotal evidence and dedicated a few engineers to resolve the issue.</li><li><strong>CI wait time.</strong> Another metric that was really important was CI wait time (i.e., time for the build system to build/test pull requests). We were receiving anecdotal reports of long CI wait times for developers, confirmed it with data, and fixed the issue.</li></ul><figure class=\"kg-card kg-image-card\"><img src=https://www.ycombinator.com/"https://lh3.googleusercontent.com/KiE8tjsqkFvtJFmyY_6-IinXuT1A6C4x6JBUSX9qb9nDHB9lurJZAlHocGDEi3Sx_HSHNuBxozMBljGOsNokrQIJ9Hk6ZolI39yQtKPz0yuAbue0G2weaKWXqD65_Gbal_LYuEC5TpPoGIdCGd0jflhy1yRQzuG-pxV1IePbh8LuEtvqehC1gHs5lw/" class=\"kg-image\" alt loading=\"lazy\"></figure><p><em>This is a dashboard we created in the early days of Faire to track important engineering metrics. It was updated manually by collecting data from different sources. Today, we have more comprehensive dashboards that are fully automated.</em></p><p>Once our engineering team grew to 100+, our top-level metrics became more difficult to take action against. When metrics trended beyond concerning thresholds, we didn’t have a clear way to address them. Each team was busy with their own product roadmap, and it didn’t seem worthwhile to spin up new teams to address temporary needs. Additionally, many of the problems were large in scale and would have required a dedicated group of engineers. </p><p>We found that the best solution was to build <a href=https://www.ycombinator.com/"https://www.datadoghq.com/blog/the-power-of-tagged-metrics//">dimensions so that we could view metrics by team. Once we had metrics cut by team, we could set top-down expectations and priorities. We were happy to see that individual teams did a great job of taking ownership of and improving their metrics and, consequently, the company’s top-level metrics.</p><h4 id=\"an-example-transaction-run-duration\">An example: transaction run duration</h4><p>Coming out of our virtual trade show, <a href=https://www.ycombinator.com/"https://blog.faire.com/thestudio/faire-summer-market-2021-our-global-trade-show-event-is-coming-in-july//">Faire Summer Market</a>, we knew we needed significant investment in our database utilization. During the event, site usage pushed our database capacity to its limits and we realized we wouldn’t be able to handle similar events in the future.</p><p>In response, we created a metric of how long transactions were open every time our application interacted with the database. Each transaction was attributed to a specific team. We then had a visualization of the hottest areas of our application along with the teams responsible for those areas. We asked each team to set a goal during our planning process to reduce their database usage by 20% over a three-month period. The aggregate results were staggering. Six months later, before our next event—<a href=https://www.ycombinator.com/"https://blog.faire.com/thestorefront/announcing-faires-2022-winter-virtual-trade-show-events//">Faire Winter Market</a>—incoming traffic was 1.6x higher, but we were nowhere close to maxing out our database capacity. Now, each team is responsible for monitoring their database utilization and ensuring it doesn’t trend in the wrong direction.</p><h3 id=\"managing-metrics-with-kpi-scorecards\">Managing metrics with KPI scorecards</h3><p>We’re moving towards a model where each team maintains a set of key performance indicators (KPIs) that get published as a scorecard reflecting how successful the team is at maintaining its product areas and the parts of the tech stack it owns.</p><p>We’re starting with a top-level scorecard for the whole engineering team that tracks our highest-level KPIs (e.g., <a href=https://www.ycombinator.com/"https://docs.datadoghq.com/tracing/guide/configure_an_apdex_for_your_traces_with_datadog_apm//">Apdex, database utilization, CI wait time, severe bug escapes, flaky tests). Each team maintains a scorecard with its assigned top-level KPIs as well as domain-specific KPIs. As teams grow and split into sub-teams, the scorecards follow the same path recursively. Engineering leaders managing multiple teams use these scorecards to gauge the relative success of their teams and to better understand where they should be focusing their own time.</p><p>Scorecard generation should be as automated and as simple as possible so that it becomes a regular practice. If your process requires a lot of manual effort, you’re likely going to have trouble committing to it on a regular cadence. Many of our metrics start in DataDog; we use their API to extract relevant metrics and push them into Redshift and then visualize them in Mode reports.</p><p>As we’ve rolled this process out, we’ve identified criteria for what makes a great engineering KPI:</p><ul><li><strong>Can be measured and has a believable source of truth.</strong> If capturing and viewing KPIs is not an easy and repeatable task, it’s bound to stop happening. Invest in the infrastructure to reliably capture KPIs in a format that can be easily queried.</li><li><strong>Clearly ladders up to a top-level business metric.</strong> If there isn’t a clear connection to a top-level business metric, you’ll have a hard time convincing stakeholders to take action based on the data. For example, we’ve started tracking pager volume for our critical services: High pager volume contributes to tired and distracted engineers which leads to less code output, which leads to fewer features delivered, which ultimately means less customer value.</li><li><strong>Is independent of other KPIs.</strong> When viewing and sharing KPIs, give appropriate relative weight to each one depending on your priorities. If you’re showing two highly correlated KPIs (e.g., cycle time and PR throughput), then you’re not leaving room for something that’s less correlated (e.g., uptime). You might want to capture some correlated KPIs so that you can quickly diagnose a worrying trend, but you should present non-duplicative KPIs when crafting the overall scorecard that you share with stakeholders.</li><li><strong>Is normalized in a meaningful way.</strong> Looking at absolute numbers can be misleading in a high-growth environment, which makes it hard to compare performance across teams. For example, we initially tracked growth of overall infrastructure cost. The numbers more than doubled every year, which was concerning. When we later normalized this KPI by the amount of revenue a product was producing, we observed the KPI was flat over time. Now we have a clear KPI of “amount spent on infrastructure to generate $1 in revenue.” This resulted in us being comfortable with our rate of spend, whereas previously we were considering staffing a team to address growing infrastructure costs.</li></ul><p>We plan to keep investing in this area as we grow. KPIs allow us to work and build with confidence, knowing that we’re focusing on the right problems to continue serving our customers.</p><h2 id=\"4-keep-teams-small-and-independent\">4. Keep teams small and independent</h2><p>When we were a company of 25 employees, we had a single engineering team. Eventually, we split into two teams in order to prioritize multiple areas simultaneously and ship faster. When you split into multiple teams, things can break because people lose context. To navigate this, we developed a pod structure to ensure that every team was able to operate independently but with all the context and resources they needed. </p><p>When you first create a pod structure, here are some rules of thumb:</p><ul><li><strong>Pods should operate like small startups.</strong> Give them a mission, goals, and the resources they need. It’s up to them to figure out the strategy to achieve those goals. Pods at Faire typically do an in-person offsite to brainstorm ideas and come up with a prioritized roadmap and expected business results, which they then present for feedback and approval.</li><li><strong><strong><strong>Each pod should have no more than 8 to 10 employees. </strong></strong></strong>For us, pods generally include 5 to 7 engineers (including an engineering manager), a product manager, a designer, and a data scientist.</li><li><strong>Each pod should have a clear leader. </strong>We have an engineering manager and a product manager co-lead each pod. We designed it this way to give engineering a voice and more ownership in the planning process.</li><li><strong>Expect people to be members of multiple pods. </strong>While this isn’t ideal, there isn’t any other way to do it early on. Resources are constrained, and you need a combination of seasoned employees and new hires on each pod (otherwise they’ll lack context). Pick one or two people who have lots of context to seed the pod, then add new members. When we first did this, pods shared backend engineers, designers, and data analysts, and had their own product manager and frontend engineer.</li><li><strong>If you only have one product, assign a pod to each well-defined part of the product.</strong> If there’s not an obvious way to split up your product surface area, try to break it out into large features and assign a pod to each.</li><li><strong><strong><strong>Keep reporting lines and performance management within functional teams. </strong></strong></strong>This makes it easier to maintain:</li></ul><p>\t\t(1) Standardized tooling/processes across the engineering team and balanced \t\tleadership between functions</p><p>\t\t(2) Standardized career frameworks and performance calibration. We give our \t\tmanagers guidance and tools to make sure this is happening. For example, I \t\thave a spreadsheet for every manager that I expect them to update on a \t \t\tmonthly basis with a scorecard and brief summary of their direct reports’ \t\t \t\tperformance.</p><h3 id=\"how-we-stay-on-top-of-resource-allocation-census-and-horsepower\">How we stay on top of resource allocation: Census and Horsepower</h3><p>Our engineering priorities change often. We need to be able to move engineers around and create, merge, split, or sunset pods. In order to keep track of who is on which team—taking into account where that person is located, their skill set, tenure at the company, and more—we built a tool called Census.</p><p>Census is a real-time visualization of our team’s structure. It automatically updates with data from our ATS and HR system. The visual aspect is crucial and makes it easier for leadership to make decisions around resource allocation and pod changes as priorities shift. Alongside Census, we also built an algorithm to evaluate the “horsepower” of a pod. If horsepower is showing up as yellow or red, that pod either needs more senior engineers, has a disproportionate number of new employees, or both.</p><figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=https://www.ycombinator.com/"https://lh3.googleusercontent.com/pJk7SUqsmeQLU_dYU3BrN5wMnzyHwVySmydpuiNbHgDddt_FzwwQzCQ_pQH75FX-InduoRGg5hSVhcfXZxRC3FztBZ3aF_2JnwIFMBOhjSey2cgRQEqs38oORhgZgrtwrmgO7CM-WSU_34oeyp15hdzHOrH_FAXTlFlJOt-A87J4Brce_ri3MER8RA/" class=\"kg-image\" alt loading=\"lazy\"><figcaption>.</figcaption></figure><p><em>Census.</em></p><figure class=\"kg-card kg-image-card\"><img src=https://www.ycombinator.com/"https://lh3.googleusercontent.com/N7btbx4GDkomhZp8wj0CMlTiGywqDffV6qCakK6aZEILScjRiIqjhwjV1q2AlT6bmrzU9vqo_pa1ggXn8j_C0CWsO4BEQdHoq5EcPfOhZwhe8tg1oMmmmDeYQXNrjF99WOdM5AKVTT5GAisZM_idtecOsjdXH_qQ2ezvEVRLltbkMfmk1j3qouwt7g/" class=\"kg-image\" alt loading=\"lazy\"></figure><p><em>Pods are colored either green, yellow, or red depending on their horsepower.</em><br><br>One of the most common questions that founders have is how to balance speed with everything else: product quality, architecture debt, team culture. Too often, startups stall out and sacrifice their early momentum in order to correct technical debt. In building Faire, we set out to both establish a unified foundation <em>and</em> continue shipping fast. These four guiding principles are how we did it, and I hope they help others do the same.</p>","comment_id":"6357f9044557ad0001018040","feature_image":"/blog/content/images/2022/10/BlogTwitter-Image-Template-2.jpeg","featured":true,"visibility":"public","email_recipient_filter":"none","created_at":"2022-10-25T07:56:04.000-07:00","updated_at":"2022-10-26T12:38:29.000-07:00","published_at":"2022-10-25T09:00:00.000-07:00","custom_excerpt":"Faire’s engineering team grew from five to over 100 engineers in three years. Throughout this growth, we were able to sustain our pace of engineering execution by adhering to four guiding principles.","codeinjection_head":null,"codeinjection_foot":null,"custom_template":null,"canonical_url":null,"authors":[{"id":"61fe29e3c7139e0001a710d4","name":"Marcelo Cortes","slug":"marcelo-cortes","profile_image":"/blog/content/images/2022/10/Instagram-Image-Template--Square---7-.jpg","cover_image":null,"bio":"Marcelo Cortes is a co-founder and the CTO of Faire, an online wholesale marketplace connecting mostly small brands to independent, local retailers.","website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/marcelo-cortes/"}],"tags":[{"id":"61fe29efc7139e0001a7116d","name":"Essay","slug":"essay","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/essay/"},{"id":"61fe29efc7139e0001a71181","name":"YC Continuity","slug":"yc-continuity","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-continuity/"},{"id":"61fe29efc7139e0001a71196","name":"Technical","slug":"technical","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/technical/"},{"id":"61fe29efc7139e0001a71170","name":"Startups","slug":"startups","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/startups/"},{"id":"61fe29efc7139e0001a71158","name":"Leadership","slug":"leadership","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/leadership/"},{"id":"61fe29efc7139e0001a7114c","name":"Company Building","slug":"company-building","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/company-building/"},{"id":"62d804e33644180001d72a1f","name":"#1543","slug":"hash-1543","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"61fe29efc7139e0001a71155","name":"Growth","slug":"growth","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/growth/"}],"primary_author":{"id":"61fe29e3c7139e0001a710d4","name":"Marcelo Cortes","slug":"marcelo-cortes","profile_image":"https://ghost.prod.ycinside.com/content/images/2022/10/Instagram-Image-Template--Square---7-.jpg","cover_image":null,"bio":"Marcelo Cortes is a co-founder and the CTO of Faire, an online wholesale marketplace connecting mostly small brands to independent, local retailers.","website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/marcelo-cortes/"},"primary_tag":{"id":"61fe29efc7139e0001a7116d","name":"Essay","slug":"essay","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/essay/"},"url":"https://ghost.prod.ycinside.com/how-to-maintain-engineering-velocity-as-you-scale/","excerpt":"Faire’s engineering team grew from five to over 100 engineers in three years. Throughout this growth, we were able to sustain our pace of engineering execution by adhering to four guiding principles.","reading_time":16,"access":true,"og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"email_subject":null,"frontmatter":null,"feature_image_alt":null,"feature_image_caption":null},"mentions":[{"id":1543,"slug":"faire","name":"Faire","batch_name":"W17","small_logo_url":"https://bookface-images.s3.amazonaws.com/small_logos/3ccfa8cd66f2a1d09da157956ae8b5686f3b2fe5.png","one_liner":"The global online platform empowering independent retail.","website":"https://www.faire.com/","long_description":"Faire is an innovative online marketplace that uses machine learning to match local retailers with the brands and products that uniquely fit their stores. We are using the power of technology to connect brands and independent retailers from all over the world, building a thriving community of nearly 700,000 small business owners. Faire was founded on the belief that the future of retail is local.\r\n\r\nOur mission is to empower entrepreneurs to chase their dreams. Our data-driven approach unburdens retailers from decades-old obstacles by helping find the right products for their shop. Plus, our straight-forward financial terms level the playing field by eliminating inventory risk and providing access to capital—key offerings previously only available to big box chains. For brands, our platform provides powerful sales, marketing, and analytics tools that simplify their business and allow them to focus on what they love: making great products.","tags":["Marketplace","Retail"],"ycdc_status":"Active","logo_url":"https://bookface-images.s3.amazonaws.com/logos/8bcc78a3560fb27da8701777d5f7d302a22d4255.png","year_founded":2016,"team_size":1155,"location":"San Francisco","linkedin_url":"https://www.linkedin.com/company/fairewholesale/","twitter_url":"https://twitter.com/faire_wholesale","fb_url":"https://www.facebook.com/FaireWholesale/","cb_url":"https://www.crunchbase.com/organization/indigo-fair","is_hiring":true,"active_job_count":1}],"related_posts":[{"id":"63f91878d2b0220001e8d6e9","uuid":"a99f2458-1bdd-4a40-81e6-36ee441b133c","title":"Congratulations to the 2023 YC Top Companies!","slug":"yc-top-companies-feb-2023","html":"<p>We’re excited to present the 2023 YC Top Companies!</p><p>The startups are separated into 3 lists: YC’s top <a href=https://www.ycombinator.com/"https://www.ycombinator.com/topcompanies/" rel=\"noopener noreferrer\">private</a>, <a href=https://www.ycombinator.com/"https://www.ycombinator.com/topcompanies/public/" rel=\"noopener noreferrer\">public</a>, and <a href=https://www.ycombinator.com/"https://www.ycombinator.com/topcompanies/exits/" rel=\"noopener noreferrer\">exited</a>. Private companies and exits are sorted by the company's valuation from their latest funding round, and all are valued at over $150M. Public companies are listed in alphabetical order.</p><p>The Breakthrough Companies list highlights the fast-growing companies we’ve doubled down on – which means they’ve all received significant additional investment from YC in their post-Demo Day rounds. </p><p><strong>Here are stats about the companies on this year’s list:</strong></p><p><strong>&gt;</strong> More than 290 private YC companies and 33 exits are valued at over $150M, over 90 are worth more than $1B, and 16 are public. </p><p><strong>&gt;</strong> 58% of the companies have HQs in the Bay Area. 27% of the companies are fully remote, and 55% list themselves as partially remote.</p><p><strong>&gt;</strong> YC Top Companies have HQs in 40 countries including: United States, India, United Kingdom, Canada, Colombia, Indonesia, Mexico, Nigeria, Argentina, Brazil, Chile, France, Spain, Israel, Netherlands, Philippines, Portugal, Germany, Egypt, Ireland, South Korea, Peru, Singapore, United Arab Emirates, Australia, Bolivia, Switzerland, Algeria, Estonia, Finland, Hungary, Italy, Norway, Romania, Sweden, Senegal, Uganda, Uruguay, Venezuela, Vietnam</p><p><strong>&gt;</strong> YC W16 is the most represented batch (by percentage). 23% of the companies from W16 are on the YC Top Companies list. </p><p><strong>&gt;</strong> Here’s a sector breakdown of the top companies:</p><ul><li>B2B Software and Services: 43%</li><li>Financial Technology and Services: 19%</li><li>Consumer: 13%</li><li>Healthcare: 12%</li><li>Industrials: 7%</li><li>Real Estate and Construction: 3%</li><li>Education and Government: 3%</li></ul><p><strong>&gt;</strong> 10 new companies joined the lists since August 2022:</p><p>Private:</p><ul><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/treasury-prime/">Treasury Prime</a> (YC W18) - Embedded banking software platform and marketplace</li><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/onesignal/">OneSignal (YC S11) - Engage customers through personalized omni-channel messaging</li><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/skill-lync/">Skill-lync (YC W19) - Online engineering college for India</li><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/tigereye/">TigerEye (YC S22) - Modern enterprise software for sales leaders</li><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/zeitview/">Zeitview (YC W15) - Inspection software for renewable energy &amp; sustainable infrastructure</li><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/ontop/">OnTop (YC W21) - A bank for remote workers connected to payroll</li><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/obie/">Obie (YC S19) - Insurance and risk management for landlords</li><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/nabis/">Nabis (YC W19) - The largest licensed cannabis wholesale platform</li></ul><p>Public:</p><ul><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/presto/">Presto (YC S10) - Digital meets physical for big chain restaurants</li></ul><p>Exits:</p><ul><li><a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/nurx/">NURX (YC W16) - Medicine or testing kit, prescribed online, and delivered to your door </li></ul><p>One thing to note is that this is not an exhaustive list of YC’s top companies. We allowed founders to opt out of being listed for any reason. The full list of YC companies can be found <a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/">here. </p><p>Congrats again to the companies recognized on the 2023 YC Top Companies list!</p>","comment_id":"63f91878d2b0220001e8d6e9","feature_image":"/blog/content/images/2023/02/BlogTwitter-Image-Template.png","featured":true,"visibility":"public","email_recipient_filter":"none","created_at":"2023-02-24T12:05:12.000-08:00","updated_at":"2023-03-16T09:44:58.000-07:00","published_at":"2023-02-27T09:00:00.000-08:00","custom_excerpt":"There are now 16 public YC companies, 290 private YC companies and 33 exits that are valued at over $150M, and over 80 that are worth more than $1B.","codeinjection_head":null,"codeinjection_foot":null,"custom_template":null,"canonical_url":null,"authors":[{"id":"61fe29e3c7139e0001a7106f","name":"Y Combinator","slug":"yc","profile_image":"/blog/content/images/2022/02/yc.png","cover_image":null,"bio":null,"website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/yc/"}],"tags":[{"id":"61fe29efc7139e0001a71173","name":"YC News","slug":"yc-news","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-news/"},{"id":"61fe29efc7139e0001a71170","name":"Startups","slug":"startups","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/startups/"},{"id":"61fe29efc7139e0001a71181","name":"YC Continuity","slug":"yc-continuity","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-continuity/"},{"id":"63f91d15d2b0220001e8d70c","name":"#177","slug":"hash-177","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"63f91d15d2b0220001e8d70d","name":"#1810","slug":"hash-1810","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"62ba0d42063d2d0001f0fc7a","name":"#76","slug":"hash-76","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"63f91d15d2b0220001e8d70e","name":"#12234","slug":"hash-12234","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"63d1aa7a466acf0001099b6a","name":"#25267","slug":"hash-25267","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"63f91d15d2b0220001e8d70f","name":"#762","slug":"hash-762","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"63f91d15d2b0220001e8d710","name":"#23238","slug":"hash-23238","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"63f91d15d2b0220001e8d711","name":"#12600","slug":"hash-12600","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"63f91d15d2b0220001e8d712","name":"#11995","slug":"hash-11995","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"}],"primary_author":{"id":"61fe29e3c7139e0001a7106f","name":"Y Combinator","slug":"yc","profile_image":"https://ghost.prod.ycinside.com/content/images/2022/02/yc.png","cover_image":null,"bio":null,"website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/yc/"},"primary_tag":{"id":"61fe29efc7139e0001a71173","name":"YC News","slug":"yc-news","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-news/"},"url":"https://ghost.prod.ycinside.com/yc-top-companies-feb-2023/","excerpt":"There are now 16 public YC companies, 290 private YC companies and 33 exits that are valued at over $150M, and over 80 that are worth more than $1B.","reading_time":2,"access":true,"og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"email_subject":null,"frontmatter":null,"feature_image_alt":null,"feature_image_caption":null},{"id":"62fa7b87ab52db0001d3b656","uuid":"c432a242-4288-4980-a6e9-d9c82359c9ad","title":"YC Founder Firesides: Gusto on building for new verticals","slug":"yc-founder-firesides-gusto-on-building-for-new-verticals","html":"<p><a href=https://www.ycombinator.com/"https://gusto.com//">Gusto (<a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/gusto/">YC W12</a>) provides growing businesses with everything to take care of their team. Today, more than 200,000 businesses use Gusto for payroll, employee benefits, talent management, and more. And with the recent addition of <a href=https://www.ycombinator.com/"https://embedded.gusto.com//">Gusto Embedded</a>, developers now use Gusto’s APIs and pre-build UI  flows to embed payroll, tax filing, and payments infrastructure into products. </p><p>Last week, Gusto <a href=https://www.ycombinator.com/"https://gusto.com/company-news/gusto-embedded-one-year-in-fueling-smb-tech-success-at-scale-with-critical-compliance-/">announced they have dozens of new partners across verticals like laundromats, health &amp; beauty, and construction building with Gusto Embedded. The company also announced they are making it easier for software providers to keep their payroll customers in compliance.</p><p>YC’s <a href=https://www.ycombinator.com/"https://twitter.com/anuhariharan/status/1557784730543632384/">Anu Hariharan</a> sat down with Gusto co-founder and CPO <a href=https://www.ycombinator.com/"https://twitter.com/tomerlondon/">Tomer London</a> to talk about building for new customer segments and the future of embedded finance — sharing advice for startup founders and CEOs along the way. </p><div class=\"kg-card kg-audio-card\"><img src=https://www.ycombinator.com/"https://ghost.prod.ycinside.com/content/media/2022/08/Founder-Fireside---Tomer-London--Gusto-_thumb.jpg?v&#x3D;1660587475243\" alt=\"audio-thumbnail\" class=\"kg-audio-thumbnail\"><div class=\"kg-audio-thumbnail placeholder kg-audio-hide\"><svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.5 15.33a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm-2.25.75a2.25 2.25 0 1 1 4.5 0 2.25 2.25 0 0 1-4.5 0ZM15 13.83a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm-2.25.75a2.25 2.25 0 1 1 4.5 0 2.25 2.25 0 0 1-4.5 0Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.486 6.81A2.25 2.25 0 0 1 17.25 9v5.579a.75.75 0 0 1-1.5 0v-5.58a.75.75 0 0 0-.932-.727.755.755 0 0 1-.059.013l-4.465.744a.75.75 0 0 0-.544.72v6.33a.75.75 0 0 1-1.5 0v-6.33a2.25 2.25 0 0 1 1.763-2.194l4.473-.746Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 1.5a.75.75 0 0 0-.75.75v19.5a.75.75 0 0 0 .75.75h18a.75.75 0 0 0 .75-.75V5.133a.75.75 0 0 0-.225-.535l-.002-.002-3-2.883A.75.75 0 0 0 18 1.5H3ZM1.409.659A2.25 2.25 0 0 1 3 0h15a2.25 2.25 0 0 1 1.568.637l.003.002 3 2.883a2.25 2.25 0 0 1 .679 1.61V21.75A2.25 2.25 0 0 1 21 24H3a2.25 2.25 0 0 1-2.25-2.25V2.25c0-.597.237-1.169.659-1.591Z\"/></svg></div><div class=\"kg-audio-player-container\"><audio src=https://www.ycombinator.com/"https://ghost.prod.ycinside.com/content/media/2022/08/Founder-Fireside---Tomer-London--Gusto-.mp3/" preload=\"metadata\"></audio><div class=\"kg-audio-title\">Founder Firesides: Gusto&#x27;s Tomer London on building for new verticals</div><div class=\"kg-audio-player\"><button class=\"kg-audio-play-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z\"/></svg></button><button class=\"kg-audio-pause-icon kg-audio-hide\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"1\" width=\"7\" height=\"22\" rx=\"1.5\" ry=\"1.5\"/><rect x=\"14\" y=\"1\" width=\"7\" height=\"22\" rx=\"1.5\" ry=\"1.5\"/></svg></button><span class=\"kg-audio-current-time\">0:00</span><div class=\"kg-audio-time\">/<span class=\"kg-audio-duration\">118:07</span></div><input type=\"range\" class=\"kg-audio-seek-slider\" max=\"100\" value=\"0\"><button class=\"kg-audio-playback-rate\">1&#215;</button><button class=\"kg-audio-unmute-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z\"/></svg></button><button class=\"kg-audio-mute-icon kg-audio-hide\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z\"/></svg></button><input type=\"range\" class=\"kg-audio-volume-slider\" max=\"100\" value=\"100\"></div></div></div><p>You can also listen on <a href=https://www.ycombinator.com/"https://open.spotify.com/episode/0FTnE08QzuCg6I21S4PB8e?si=ShDfsjwnRWKYH0LjwzI-rg\%22>Spotify, <a href=https://www.ycombinator.com/"https://podcasts.apple.com/us/podcast/159-yc-founder-firesides-gusto-on-building-for-new/id1236907421?i=1000576161014\%22>Apple Podcasts</a>, and <a href=https://www.ycombinator.com/"https://twitter.com/i/spaces/1dRKZldrvOzJB?s=20\%22>Twitter.

1:28 - Tomer describes Gusto Embedded and the complexities behind compliance.</p><ul><li>Gusto Embedded takes ten years of Gusto’s experience building payroll software and compliance and makes it available to any software company wanting to ship their own payroll product to the market. </li></ul><p><strong>5:00 </strong>- Why did you decide to pursue startups as the company’s first target audience? How did you think about customer segments in that first year? </p><p><em>Over the last ten years, Gusto has scaled to build for multiple customer segments – starting with startups, then SMBs, accountants, and now with Gusto Embedded Payroll, developers who are embedding payroll directly into their software. </em></p><ul><li>When you have a grand vision, where do you start as a founder? Choose a customer segment. Make sure you choose a segment where 1) they have an important customer problem, 2) the product you are building solves that problem, and 3) you can reach your customer. </li></ul><p><strong>9:30 </strong>- Who were your competitors in the early days? </p><ul><li>The old, traditional payroll solutions, which were complex. With Gusto, <em>anyone</em> can run payroll at <em>any time</em>. Gusto also focuses on employees, a critical part of the system, by building a great payroll experience for them. </li></ul><p><strong>11:30 </strong>- Why did you decide to build for SMBs after startups? </p><ul><li>Look at your current customer base and learn from customers adjacent to the market you want to expand into. When you do expand into another vertical, make sure you maintain that early customer love.  </li></ul><p><strong>14:45</strong> - How did you maintain the customer love of the existing customer segment? </p><ul><li>Think about your long-term vision and don’t put yourself in a corner when you want to move to the next segment. </li></ul><p><strong>17:00</strong> - Most startups find it hard to tackle the SMB market. Why do you think this is the case? </p><ul><li>Traditionally SMBs are hard to reach and use incomplete or manual solutions. Since 2000 an entire generation of business owners had to learn to trust online financial services. Today, SMBs are online and looking for solutions.</li></ul><p><strong>22:25 </strong>- What is different about serving SMBs as a customer versus startups? </p><ul><li>Startups come and go, and the real economics come from the big winners. Focusing on startups is a good place to start your journey, but think about how to scale with them.</li><li>There are more small businesses than startups, and they are around for a long time – but most don’t grow to thousands of employees. You need to build a business model that works with that dynamic. </li></ul><p><strong>27:00 - </strong>Why did you pursue developers and how did you decide to service them? </p><ul><li>For many verticals, it is much better to have an all-in-one platform to run your small businesses. But payroll is really hard to build yourself. Gusto Embedded helps partners deliver a more integrated solution for customers without investing the several years and tens of millions of dollars.</li></ul><p><strong>29:00 </strong>- Gusto went from directly acquiring small businesses as customers to creating an embedded solution – essentially  “giving up” the relationship with the customer. How did you think about that? </p><ul><li>Evaluate the future of the industry and don’t ignore reality. Be the one to create that future. In this case, many payroll customers want all-in-one solutions. We can either try to meet those needs directly, or empower hundreds of partners to customize unique solutions.</li></ul><p><strong>33:00 - </strong>How should founders think about who to partner with? When should founders build directly for the industry and when should they go the embedded route? </p><ul><li>Think about the unique insight you have in the business you’re creating and make sure you own your destiny around that insight.</li><li>For your customer, what does a successful product look like, and could you partner with a company to fulfill those needs.</li><li>Your product must be high-quality. You have to put enough resources behind whatever you own. For everything else, you must ensure you bring in the right partner. It’s all about the end-to-end experience. </li></ul><p><strong>39:30</strong> - Gusto now makes it easier for software providers to bake compliance into embedded payroll. Tomer, I think developers looking at a payroll API would assume that compliance is baked in. But there are often steps companies have to take beyond just calling APIs. Tell us if that assumption holds.</p><ul><li>Regulation can change every quarter and every year. This is built into the product. We protect the customer and make it easy for developers to ship something quickly that is compliant for the long term.</li><li>One third of the companies in the U.S. get fined for mistakes on payroll. </li></ul><p><strong>43:00 - </strong>Compliance is the hardest part of payroll to build and ultimately has to be right. It took ten years of experience in compliance to launch this into Gusto Embedded Payroll. What advice do you have for founders who are building complicated, yet essential, components for an industry?</p><ul><li>Determine the parts of your product that are highly regulated and which areas are not. Build a culture that ensures quality-first in those highly-regulated areas, as well as a culture where people can iterate quickly in other areas. You can’t build a monolithic culture.</li><li>Embrace cross functional work. </li></ul><p><strong>46:00 </strong>- In the early days of Gusto, what guidance did you provide to your engineers about building payroll? What areas could break and which areas could not break? </p><p><strong>48:40</strong> - Looking back, would you have done anything different? </p><ul><li>Start charging what you feel is the value you provide; fix downwards versus upwards. If you’re truly adding value, customers won’t hesitate moving forward at that price.</li><li>Have the humility to learn from the customer and how the market changes around you. </li></ul><p><strong>51:45 </strong>- How should founders be thinking about embedded finance and how does this market evolve over the next 5-10 years? </p><ul><li>When you build a new software system for your customer, the more connected the system is for your customer, the better it is. Embedded products enable you to do that quickly and in high quality.</li><li>Bring more solutions into your product that are driven by what your customer needs. Understand your customer’s day-to-day, and figure out how to build something that solves their entire flow instead of one segment.</li><li>If you are not making money on your product, you don’t know if there's a product market fit. If you can charge and retain a customer, then there is product market fit. </li></ul><p><strong>56:30</strong> - Outside of payroll, what are you seeing product wise offered by APIs? </p><ul><li>This space is brand new and there’s a ton of opportunity to create a product that helps customers go through the end-to-end journey successfully and solves multiple pain points – instead of the customer needing ten years of background to create a high-quality solution.</li></ul>","comment_id":"62fa7b87ab52db0001d3b656","feature_image":"/blog/content/images/2022/08/BlogTwitter-Image-Template--5-.jpg","featured":true,"visibility":"public","email_recipient_filter":"none","created_at":"2022-08-15T09:59:51.000-07:00","updated_at":"2022-08-15T11:48:12.000-07:00","published_at":"2022-08-15T11:32:19.000-07:00","custom_excerpt":"Today, more than 200,000 businesses use Gusto for payroll, employee benefits, talent management, and more. And with the recent addition of Gusto Embedded, developers now use Gusto’s APIs and pre-build UI flows to embed payroll, tax filing, and payments infrastructure into products. ","codeinjection_head":null,"codeinjection_foot":null,"custom_template":null,"canonical_url":null,"authors":[{"id":"61fe29e3c7139e0001a7106f","name":"Y Combinator","slug":"yc","profile_image":"/blog/content/images/2022/02/yc.png","cover_image":null,"bio":null,"website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/yc/"}],"tags":[{"id":"61fe29efc7139e0001a71179","name":"YC Events","slug":"yc-events","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-events/"},{"id":"61fe29efc7139e0001a71170","name":"Startups","slug":"startups","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/startups/"},{"id":"61fe29efc7139e0001a71175","name":"Interview","slug":"interview","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/interview/"},{"id":"61fe29efc7139e0001a71181","name":"YC Continuity","slug":"yc-continuity","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-continuity/"},{"id":"61fe29efc7139e0001a71152","name":"Founder Stories","slug":"founder-stories","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/founder-stories/"},{"id":"61fe29efc7139e0001a71176","name":"Podcast","slug":"podcast","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/podcast/"},{"id":"61fe29efc7139e0001a711b7","name":"#24","slug":"hash-24","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"61fe29efc7139e0001a71155","name":"Growth","slug":"growth","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/growth/"},{"id":"61fe29efc7139e0001a71158","name":"Leadership","slug":"leadership","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/leadership/"}],"primary_author":{"id":"61fe29e3c7139e0001a7106f","name":"Y Combinator","slug":"yc","profile_image":"https://ghost.prod.ycinside.com/content/images/2022/02/yc.png","cover_image":null,"bio":null,"website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/yc/"},"primary_tag":{"id":"61fe29efc7139e0001a71179","name":"YC Events","slug":"yc-events","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-events/"},"url":"https://ghost.prod.ycinside.com/yc-founder-firesides-gusto-on-building-for-new-verticals/","excerpt":"Today, more than 200,000 businesses use Gusto for payroll, employee benefits, talent management, and more. And with the recent addition of Gusto Embedded, developers now use Gusto’s APIs and pre-build UI flows to embed payroll, tax filing, and payments infrastructure into products.","reading_time":5,"access":true,"og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"email_subject":null,"frontmatter":null,"feature_image_alt":null,"feature_image_caption":null},{"id":"6356a9c957e9f90001984b62","uuid":"32e1602f-ec89-49b0-932c-61ef6bbacfcb","title":"YC Founder Firesides: Mutiny on AI and the next era of company growth","slug":"yc-founder-firesides-mutiny-on-ai-and-the-next-era-of-company-growth","html":"<p><a href=https://www.ycombinator.com/"https://www.mutinyhq.com//">Mutiny (<a href=https://www.ycombinator.com/"https://www.ycombinator.com/companies/mutiny/">YC S18</a>) uses AI and data to convert website visitors into customers. Today, the fastest growing B2B companies such as Notion and Snowflake use Mutiny to identify ideal customers, determine sections of websites that will increase conversion, and produce copy that converts visitors into customers. </p><p>YC’s <a href=https://www.ycombinator.com/"https://twitter.com/anuhariharan/status/1557784730543632384/">Anu Hariharan</a> sat down with Mutiny co-founder and CEO <a href=https://www.ycombinator.com/"https://twitter.com/jalehr/">Jaleh Rezaei</a> to talk about their <a href=https://www.ycombinator.com/"https://twitter.com/jalehr/status/1582352047659024385/">recent acquisition</a> of Intellipse, an AI marketing platform, as well as how AI will impact the next era of growth. Throughout, Jaleh shares advice about acquisitions as a growth strategy and evolving your product with AI. </p><p>You can listen here or on <a href=https://www.ycombinator.com/"https://open.spotify.com/episode/7dy1qB7XQfOryE4kj4spGS/">Spotify, <a href=https://www.ycombinator.com/"https://podcasts.apple.com/us/podcast/160-yc-founder-firesides-mutiny-on-ai-and-the-next/id1236907421?i=1000583708925\%22>Apple Podcasts</a>, and <a href=https://www.ycombinator.com/"https://twitter.com/i/spaces/1yNxaNzAPPnKj/">Twitter.

Notion drives 60% more leads through paid marketing</a></li><li>Example 2: <a href=https://www.ycombinator.com/"https://www.mutinyhq.com/blog/the-second-lever-replays#conversion-secret-how-snowflake-runs-abm-at-scale\">Snowflake builds an ABM and enterprise marketing program</a></li></ul><p><strong>12:50</strong> - You recently shared that with data and AI, Mutiny transforms conversion from a niche A/B testing tool to a platform that every go-to-market team can use to drive efficient growth at scale. What does that mean, and how have you leveraged the advances in AI over the last four years? </p><ul><li>When you can give the entire go-to-market team x-ray vision into every visitor and how they are converting – and then pair that insight with the ability to change the website for different segments – every team will make the website a core part of their strategy to drive more revenue. Mutiny uses AI to give teams this insight and answer questions like: What segments should I prioritize? What parts of the website should I change? What copy will resonate? Where should I focus? </li></ul><p><strong>17:00</strong> - At Mutiny when looking at data, when do you know the right questions to ask and when do you say these are not questions we need to optimize now?</p><ul><li>In the early days, one of the most valuable things we did was follow our customers’ growth teams. We would attend team meetings, watch them use our product, and ask questions. It became clear what we should build for our customers. </li></ul><p><strong>20:30</strong> - Since you started Mutiny, what are some of the advances in AI that you’ve leveraged? </p><ul><li>We did things that didn't scale in the early days to solve customers’ problems. As our customers grew, our data set grew and we used AI models and inputs to improve our recommendation engines and service a broader customer base. Today, we can build models that tell a user where on the website they should make changes and write personalized copy leveraging GPT-3. </li></ul><p><strong>29:10</strong> - Did you have moments when you felt Mutiny could be doing more with the advances being made in AI? </p><ul><li>We saw an opportunity to marry our proprietary data set with GPT-3 to produce highly personalized copy. </li></ul><p><strong>32:15</strong> - GPT-3 was an inflection point for Munity. What is the next inflection point? </p><ul><li>There are a lot of opportunities with DALL-E, as visuals are important in marketing.</li></ul><p><strong>36:30</strong> - Do you have cautionary advice on how to think about using technologies like GPT-3 and DALL-E for founders dabbling in AI? </p><ul><li>Think through the ultimate long-term vision of the product and the long-term defensibility of the business. And launch fast, as technology develops quickly. </li></ul><p><strong>38:40</strong> - What advice do you have for founders in terms of leveraging OpenAI, GPT-3, etc. while focusing on the long-term vision? </p><ul><li>Your vision and long-term view is separate from your day-to-day execution. Your long-term vision (i.e. the opportunity and what you’re trying to create over the course of a decade) provides clarity around where you’re trying to go and brings other people along with you, like your investors and employees. Day-to-day, you’re focused and executing quickly – and not always thinking about the ten year vision when you’re building V1.</li></ul><p><strong>43:45</strong> - You decided to grow your team by acquiring Intellipse. And now, Mutiny has one of the larger engineering teams with production experience in modern marketing AI technologies. Why did you decide to pursue an acquisition? </p><ul><li>Founders have to look for inflection points where something happens in the market leading to the “old way” no longer being as good. And as a result, a much larger portion of the market is open to a new and better way. We’re in a recession, and this is an inflection point for Mutiny. Companies need to convert every dollar to a customer, and Mutiny has built a product that makes marketing dollars more efficient. We can accelerate our road map with the acquisition of Intellipse</li></ul><p><strong>46:40</strong> - How did you know you wanted to work with the Intellipse team so much that you had to go through an acquisition?</p><ul><li>We were interested in the Intellipse team and the skills the team had developed. Their CTO and senior engineers had a unique experience with marketing AI and newer technologies, like GPT-3.</li><li>The personality and values of the founder spreads in an organization and becomes the company culture. After getting to know the founder and the free am, it was evident the two companies had a similar culture and shared values – and we’d be able to bring this team in and enhance our culture.</li></ul><p><strong>50:15</strong> - How long did it take to assess the culture? </p><ul><li>We spent the same amount of time with each individual as if we were hiring them onto the team through our typical recruiting process.</li></ul><p><strong>51:30</strong> - Do you expect to acquire more companies in the future? And how should founders and CEOs determine whether this strategy is right for their company? </p><ul><li>Be clear about your goals and why an acquisition is the right way to achieve those goals. When a company is working toward a similar goal – building something we would have done ourselves – it is a successful acquisition. With Intellipse, the team shared similar goals and company culture, and could accelerate our timing.</li><li>We want to hire founders onto our product team who are user focused and move quickly. Founders can focus their entrepreneurial energy on building a product and growing that business area within Mutiny. </li></ul><p><strong>54:55</strong> - What are your thoughts about how AI will impact the next ten years? </p><ul><li>There has been enough productization of backend AI technologies that as a founder you can tap into AI to accelerate the product you want to build and the value you give to customers. From a user and growth perspective, AI enables us to automate many of the tasks no one wants to do. And for those who aren’t technical – but understand what they are trying to do – they can now be self sufficient.</li></ul>","comment_id":"6356a9c957e9f90001984b62","feature_image":"/blog/content/images/2022/10/BlogTwitter-Image-Template-1.jpeg","featured":true,"visibility":"public","email_recipient_filter":"none","created_at":"2022-10-24T08:05:45.000-07:00","updated_at":"2022-10-25T08:44:16.000-07:00","published_at":"2022-10-24T09:25:31.000-07:00","custom_excerpt":"YC’s Anu Hariharan sat down with Mutiny co-founder and CEO Jaleh Rezaei to talk about their recent acquisition of Intellipse, an AI marketing platform, as well as how AI will impact the next era of growth.","codeinjection_head":null,"codeinjection_foot":null,"custom_template":null,"canonical_url":null,"authors":[{"id":"61fe29e3c7139e0001a7106f","name":"Y Combinator","slug":"yc","profile_image":"/blog/content/images/2022/02/yc.png","cover_image":null,"bio":null,"website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/yc/"}],"tags":[{"id":"61fe29efc7139e0001a71170","name":"Startups","slug":"startups","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/startups/"},{"id":"61fe29efc7139e0001a71175","name":"Interview","slug":"interview","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/interview/"},{"id":"61fe29efc7139e0001a71181","name":"YC Continuity","slug":"yc-continuity","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/yc-continuity/"},{"id":"61fe29efc7139e0001a71152","name":"Founder Stories","slug":"founder-stories","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/founder-stories/"},{"id":"61fe29efc7139e0001a71176","name":"Podcast","slug":"podcast","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/podcast/"},{"id":"6312238da32f070001d502c0","name":"#2014","slug":"hash-2014","description":null,"feature_image":null,"visibility":"internal","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/404/"},{"id":"61fe29efc7139e0001a71155","name":"Growth","slug":"growth","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/growth/"},{"id":"61fe29efc7139e0001a71158","name":"Leadership","slug":"leadership","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/leadership/"}],"primary_author":{"id":"61fe29e3c7139e0001a7106f","name":"Y Combinator","slug":"yc","profile_image":"https://ghost.prod.ycinside.com/content/images/2022/02/yc.png","cover_image":null,"bio":null,"website":null,"location":null,"facebook":null,"twitter":null,"meta_title":null,"meta_description":null,"url":"https://ghost.prod.ycinside.com/author/yc/"},"primary_tag":{"id":"61fe29efc7139e0001a71170","name":"Startups","slug":"startups","description":null,"feature_image":null,"visibility":"public","og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"codeinjection_head":null,"codeinjection_foot":null,"canonical_url":null,"accent_color":null,"url":"https://ghost.prod.ycinside.com/tag/startups/"},"url":"https://ghost.prod.ycinside.com/yc-founder-firesides-mutiny-on-ai-and-the-next-era-of-company-growth/","excerpt":"YC’s Anu Hariharan sat down with Mutiny co-founder and CEO Jaleh Rezaei to talk about their recent acquisition of Intellipse, an AI marketing platform, as well as how AI will impact the next era of growth.","reading_time":5,"access":true,"og_image":null,"og_title":null,"og_description":null,"twitter_image":null,"twitter_title":null,"twitter_description":null,"meta_title":null,"meta_description":null,"email_subject":null,"frontmatter":null,"feature_image_alt":null,"feature_image_caption":null}]},"url":"/blog/how-to-maintain-engineering-velocity-as-you-scale","version":null,"rails_context":{"railsEnv":"production","inMailer":false,"i18nLocale":"en","i18nDefaultLocale":"en","href":"https://www.ycombinator.com/blog/how-to-maintain-engineering-velocity-as-you-scale","location":"/blog/how-to-maintain-engineering-velocity-as-you-scale","scheme":"https","host":"www.ycombinator.com","port":null,"pathname":"/blog/how-to-maintain-engineering-velocity-as-you-scale","search":null,"httpAcceptLanguage":"en, *","applyBatchLong":"Winter 2024","applyBatchShort":"W2024","applyDeadlineShort":"October 13","ycdcRetroMode":true,"currentUser":null,"serverSide":true},"id":"ycdc_new/pages/BlogPage-react-component-94a11a3a-cf8e-472e-987d-3438a3b371f0","server_side":true}" data-reactroot="">

How to maintain engineering velocity as you scale

by Marcelo Cortes10/25/2022

Engineering is typically the function that grows fastest at a scaling startup. It requires a lot of attention to make sure the pace of execution does not slow and cultural issues do not emerge as you scale.

We’ve learned a lot about pace of execution in the past five years at Faire. When we launched in 2017, we were a team of five engineers. From the beginning, we built a simple but solid foundation that allowed us to maintain both velocity and quality. When we found product-market fit later that year and started bringing on lots of new customers, instead of spending engineering resources on re-architecturing our platform to scale, we were able to double down on product engineering to accelerate the growth. In this post, we discuss the guiding principles that allowed us to maintain our engineering velocity as we scaled.

Four guiding principles to maintaining velocity

Faire’s engineering team grew from five to over 100 engineers in three years. Throughout this growth, we were able to sustain our pace of engineering execution by adhering to four important elements:

  1. Hiring the best engineers
  2. Building solid long-term foundations from day one
  3. Tracking metrics to guide decision-making
  4. Keeping teams small and independent

1. Hire the best engineers

You want to hire the best early team that you can, as they’re going to be the people helping you scale and maintain velocity. And good people follow good people, helping you grow your team down the road.

This sounds obvious, but it’s tempting to get people in seats fast because you have a truckload of priorities and you’re often the only one doing engineering recruiting in those early years. What makes this even harder is you often have to play the long game to get the best engineers signed on. Your job is to build a case for why your company is the opportunity for them.

We had a few amazing engineers in mind we wanted to hire early on. I spent over a year doing coffee meetings with some of them. I used these meetings to get advice, but more importantly I was always giving them updates on our progress, vision, fundraising, and product releases. That created FOMO which eventually got them so excited about what was happening at Faire that they signed up for the ride.

While recruiting, I looked for key competencies that I thought were vital for our engineering team to be successful as we scaled. These were:

a. Experts at our core technology

In early stages, you need to move extremely fast and you cannot afford to make mistakes. We wanted the best engineers who had previously built the components we needed so they knew where mistakes could happen, what to avoid, what to focus on, and more. For example, we built a complex payments infrastructure in a couple of weeks. That included integrating with multiple payment processors in order to charge debit/credit cards, process partial refunds, async retries, voiding canceled transactions, and linking bank accounts for ACH payouts. We had built similar infrastructure for the Cash App at Square and that experience allowed us to move extremely quickly while avoiding pitfalls.

b. Focused on delivering value to customers

Faire’s mission is to empower entrepreneurs to chase their dreams. When hiring engineers, we looked for people who were amazing technically but also understood our business, were customer focused, were passionate about entrepreneurship—and understood how they needed to work. That is, they understood how to use technology to add value to customers and product, quickly and with quality. To test for this, I would ask questions like: “Give me examples of how you or your team impacted the business.” Their answers would show how well they understood their current company’s business and how engineering can impact customers and change a company’s top-line numbers.

I also learned a lot when I let them ask questions about Faire. I love when engineering candidates ask questions about how our business works, how we make money, what our market size is, etc. If they don't ask these kinds of questions, I ask them things like: “Do you understand how Faire works?” “Why is Faire good for retailers?” “How would you sell Faire to a brand?” After asking questions like these a few times, you’ll see patterns and be able to quickly identify engineers who are business-minded and customer-focused.

Another benefit of hiring customer-focused engineers is that it’s much easier to shut down projects, start new ones, and move people around, because everyone is focused on delivering value for the customer and not wedded to the products they helped build. During COVID, our customers saw enormous change, with in-person trade shows getting canceled and lockdowns impacting in-person foot traffic. We had to adapt quickly, which required us to stop certain initiatives and move our product and engineering teams to launch new ones, such as our own version of online trade shows.

c. Grit

When we first started, we couldn’t afford to build the most beautiful piece of engineering work. We had to be fast and agile. This is critical when you are pre-product-market fit. Our CEO Max and a few early employees would go to trade shows to present our product to customers, understand their needs, and learn what resonated with them. Max would call us with new ideas several times a day. It was paramount that our engineers were gritty and able to quickly make changes to the product. Over the three or four days of a trade show, our team deployed changes nonstop to the platform. We experimented with offerings like:

  • Free shipping on first orders
  • Buy now, pay later
  • Buy from a brand and get $100 off when you re-order from the same brand
  • Free returns

By trying different value propositions in a short time, our engineering team helped us figure out what was most valuable to our customers. That was how we found strong product-market fit within six months of starting the company.

Our trade show storefront back when we were called Indigo Fair.

2. Build a solid long-term foundation from day one

The number one impediment to engineering velocity at scale is a lack of solid, consistent foundation. A simple but solid foundation will allow your team to keep building on top of it instead of having to throw away or re-architecture your base when hypergrowth starts.

To create a solid long-term foundation, you first need to get clear on what practices you believe are important for your engineering team to scale. For example, I remember speaking with senior engineers at other startups who were surprised we were writing tests and doing code reviews and that we had a code style guide from the very early days. But we couldn’t have operated well without these processes. When we started to grow fast and add lots of engineers, we were able to keep over 95% of the team focused on building features and adding value to our customers, increasing our growth.

Once you know what long-term foundations you want to build, you need to write it down. We were intentional about this from day one and documented it in our engineering handbook. Today, every engineer is onboarded using this handbook.

The four foundational elements we decided on were:

a. Being data-driven

The most important thing is to build your data muscle early. We started doing this at 10 customers. At the time, the data wasn’t particularly useful; the more important thing was to start to collect it. At some point, you’ll need data to drive product decision-making. The longer you wait, the harder it is to embed into your team.

Here’s what I recommend you start doing as early as possible:

  • Set up data pipelines that feed into a data warehouse.
  • Start collecting data on how people are using your product. As you add features and iterate, record how those changes are impacting user interactions. All of this should go into a data warehouse that is updated within minutes and made available to your team. As your product gets increasingly complex, it will become more and more important to use data to validate your intuition.
  • We use Redshift to store data. As user events are happening, our relational database (MySQL) replicates them in Redshift. Within minutes, the data is available for queries and reports.
  • Train your team to use experimentation frameworks.
  • Make it part of the product development process. The goal is to transform your intuition into a statistically testable statement. A good place to start is to establish principles and high-level steps for your team to follow when they run experiments. We’ve set principles around when to run experiments vs. when not to, that running rigorous experiments should be the default (and when it isn’t), and when to stop an experiment earlier than expected. We also have teams log experiments in a Notion dashboard.
  • The initial focus should be on what impact you think a feature will have and how to measure that change. As you’re scoping a feature, ask questions like: How are we going to validate that this feature is achieving intended goals? What events/data do we need to collect to support that? What reports are we going to build? Over time, these core principles will expand.
  • The entire team should be thinking about this, not just the engineers or data team. We reinforced the importance of data fluency by pushing employees to learn SQL, so that they could run their own queries and experience the data firsthand.
  • It’ll take you multiple reps to get this right. We still miss steps and fail to collect the right data. The sooner you get your team doing this, the easier it will be to teach it to new people and become better at it as an organization.

b. Our choice of programming language and database

When choosing a language and database, pick something you know best that is also scalable long-term. If you choose a language you don’t know well because it seems easier or faster to get started, you won’t foresee pitfalls and you’ll have to learn as you go. This is expensive and time-consuming. We started with Java as our backend programming language and MySQL as our relational database. In the early days, we were building two to three features per week and it took us a couple of weeks to build the framework we needed around MySQL. This was a big tradeoff that paid dividends later on.

c. Writing tests from day one

Many startups think they can move faster by not writing tests; it’s the opposite. Tests help you avoid bugs and prevent legacy code at scale. They aren’t just validating the code you are writing now. They should be used to enforce, validate, and document requirements. Good tests protect your code from future changes as your codebase grows and features are added or changed. They also catch problems early and help avoid production bugs, saving you time and money. Code without tests becomes legacy very fast. Within months after untested code is written, no one will remember the exact requirements, edge cases, constraints, etc. If you don’t have tests to enforce these things, new engineers will be afraid of changing the code in case they break something or change an expected behavior.

There are two reasons why tests break when a developer is making code changes:

  • Requirements change. In this case, we expect tests to break and they should be updated to validate and enforce the new requirements.
  • Behavior changes unexpectedly. For example, a bug was introduced and the test alerted us early in the development process.

Every language has tools to measure and keep track of test coverage. I highly recommend introducing them early to track how much of your code is protected by tests. You don’t need to have 100% code coverage, but you should make sure that critical paths, important logic, edge cases, etc. are well tested. Here are tips for writing good tests.

d. Doing code reviews

We started doing code reviews when we hired our first engineer. Having another engineer review your code changes helps ensure quality, prevents mistakes, and shares good patterns. In other words, it’s a great learning tool for new and experienced engineers. Through code reviews, you are teaching your engineers patterns: what to avoid, why to do something, the features of languages you should and shouldn’t use.

Along with this, you should have a coding style guide. Coding guides help enforce consistency and quality on your engineering team. It doesn’t have to be complex. We use a tool that formats our code so our style guide is automatically enforced before a change can be merged. This leads to higher code quality, especially when teams are collaborating and other people are reviewing code.

We switched from Java to Kotlin in 2019 and we have a comprehensive style guide that includes recommendations and rules for programming in Kotlin. For anything not explicitly specified in our guide, we ask that engineers follow JetBrains’ coding conventions.

These are the code review best practices we share internally:

  • #bekind when doing a code review. Use positive phrasing where possible ("there might be a better way" instead of "this is terrible"; "how about we name this X?" instead of "naming this Y is bad"). It's easy to unintentionally come across as critical, especially if you have a remote team.
  • Don't block changes from being merged if the issues are minor (e.g., a request for variable name change, indentation fixes). Instead, make the ask verbally. Only block merging if the request contains potentially dangerous changes that could cause issues or if there is an easier/safer way to accomplish the same.
  • When doing a code review, ensure that the code adheres to your style guide. When giving feedback, refer to the relevant sections in the style guide.
  • If the code review is large, consider checking out the branch locally and inspecting the changes in IntelliJ (Git tab on the bottom). It’s easier to have all of the navigation tools at hand.

3. Track engineering metrics to drive decision-making

Tracking metrics is imperative to maintaining engineering velocity. Without clear metrics, Faire would be in the dark about how our team is performing and where we should focus our efforts. We would have to rely on intuition and assumptions to guide what we should be prioritizing.

Examples of metrics we started tracking early (at around 20 engineers) included:

  • Uptime. One of the first metrics we tracked was uptime. We started measuring this because we were receiving anecdotal reports of site stability issues. Once we started tracking it, we confirmed the anecdotal evidence and dedicated a few engineers to resolve the issue.
  • CI wait time. Another metric that was really important was CI wait time (i.e., time for the build system to build/test pull requests). We were receiving anecdotal reports of long CI wait times for developers, confirmed it with data, and fixed the issue.

This is a dashboard we created in the early days of Faire to track important engineering metrics. It was updated manually by collecting data from different sources. Today, we have more comprehensive dashboards that are fully automated.

Once our engineering team grew to 100+, our top-level metrics became more difficult to take action against. When metrics trended beyond concerning thresholds, we didn’t have a clear way to address them. Each team was busy with their own product roadmap, and it didn’t seem worthwhile to spin up new teams to address temporary needs. Additionally, many of the problems were large in scale and would have required a dedicated group of engineers.

We found that the best solution was to build dimensions so that we could view metrics by team. Once we had metrics cut by team, we could set top-down expectations and priorities. We were happy to see that individual teams did a great job of taking ownership of and improving their metrics and, consequently, the company’s top-level metrics.

An example: transaction run duration

Coming out of our virtual trade show, Faire Summer Market, we knew we needed significant investment in our database utilization. During the event, site usage pushed our database capacity to its limits and we realized we wouldn’t be able to handle similar events in the future.

In response, we created a metric of how long transactions were open every time our application interacted with the database. Each transaction was attributed to a specific team. We then had a visualization of the hottest areas of our application along with the teams responsible for those areas. We asked each team to set a goal during our planning process to reduce their database usage by 20% over a three-month period. The aggregate results were staggering. Six months later, before our next event—Faire Winter Market—incoming traffic was 1.6x higher, but we were nowhere close to maxing out our database capacity. Now, each team is responsible for monitoring their database utilization and ensuring it doesn’t trend in the wrong direction.

Managing metrics with KPI scorecards

We’re moving towards a model where each team maintains a set of key performance indicators (KPIs) that get published as a scorecard reflecting how successful the team is at maintaining its product areas and the parts of the tech stack it owns.

We’re starting with a top-level scorecard for the whole engineering team that tracks our highest-level KPIs (e.g., Apdex, database utilization, CI wait time, severe bug escapes, flaky tests). Each team maintains a scorecard with its assigned top-level KPIs as well as domain-specific KPIs. As teams grow and split into sub-teams, the scorecards follow the same path recursively. Engineering leaders managing multiple teams use these scorecards to gauge the relative success of their teams and to better understand where they should be focusing their own time.

Scorecard generation should be as automated and as simple as possible so that it becomes a regular practice. If your process requires a lot of manual effort, you’re likely going to have trouble committing to it on a regular cadence. Many of our metrics start in DataDog; we use their API to extract relevant metrics and push them into Redshift and then visualize them in Mode reports.

As we’ve rolled this process out, we’ve identified criteria for what makes a great engineering KPI:

  • Can be measured and has a believable source of truth. If capturing and viewing KPIs is not an easy and repeatable task, it’s bound to stop happening. Invest in the infrastructure to reliably capture KPIs in a format that can be easily queried.
  • Clearly ladders up to a top-level business metric. If there isn’t a clear connection to a top-level business metric, you’ll have a hard time convincing stakeholders to take action based on the data. For example, we’ve started tracking pager volume for our critical services: High pager volume contributes to tired and distracted engineers which leads to less code output, which leads to fewer features delivered, which ultimately means less customer value.
  • Is independent of other KPIs. When viewing and sharing KPIs, give appropriate relative weight to each one depending on your priorities. If you’re showing two highly correlated KPIs (e.g., cycle time and PR throughput), then you’re not leaving room for something that’s less correlated (e.g., uptime). You might want to capture some correlated KPIs so that you can quickly diagnose a worrying trend, but you should present non-duplicative KPIs when crafting the overall scorecard that you share with stakeholders.
  • Is normalized in a meaningful way. Looking at absolute numbers can be misleading in a high-growth environment, which makes it hard to compare performance across teams. For example, we initially tracked growth of overall infrastructure cost. The numbers more than doubled every year, which was concerning. When we later normalized this KPI by the amount of revenue a product was producing, we observed the KPI was flat over time. Now we have a clear KPI of “amount spent on infrastructure to generate $1 in revenue.” This resulted in us being comfortable with our rate of spend, whereas previously we were considering staffing a team to address growing infrastructure costs.

We plan to keep investing in this area as we grow. KPIs allow us to work and build with confidence, knowing that we’re focusing on the right problems to continue serving our customers.

4. Keep teams small and independent

When we were a company of 25 employees, we had a single engineering team. Eventually, we split into two teams in order to prioritize multiple areas simultaneously and ship faster. When you split into multiple teams, things can break because people lose context. To navigate this, we developed a pod structure to ensure that every team was able to operate independently but with all the context and resources they needed.

When you first create a pod structure, here are some rules of thumb:

  • Pods should operate like small startups. Give them a mission, goals, and the resources they need. It’s up to them to figure out the strategy to achieve those goals. Pods at Faire typically do an in-person offsite to brainstorm ideas and come up with a prioritized roadmap and expected business results, which they then present for feedback and approval.
  • Each pod should have no more than 8 to 10 employees. For us, pods generally include 5 to 7 engineers (including an engineering manager), a product manager, a designer, and a data scientist.
  • Each pod should have a clear leader. We have an engineering manager and a product manager co-lead each pod. We designed it this way to give engineering a voice and more ownership in the planning process.
  • Expect people to be members of multiple pods. While this isn’t ideal, there isn’t any other way to do it early on. Resources are constrained, and you need a combination of seasoned employees and new hires on each pod (otherwise they’ll lack context). Pick one or two people who have lots of context to seed the pod, then add new members. When we first did this, pods shared backend engineers, designers, and data analysts, and had their own product manager and frontend engineer.
  • If you only have one product, assign a pod to each well-defined part of the product. If there’s not an obvious way to split up your product surface area, try to break it out into large features and assign a pod to each.
  • Keep reporting lines and performance management within functional teams. This makes it easier to maintain:

(1) Standardized tooling/processes across the engineering team and balanced leadership between functions

(2) Standardized career frameworks and performance calibration. We give our managers guidance and tools to make sure this is happening. For example, I have a spreadsheet for every manager that I expect them to update on a monthly basis with a scorecard and brief summary of their direct reports’ performance.

How we stay on top of resource allocation: Census and Horsepower

Our engineering priorities change often. We need to be able to move engineers around and create, merge, split, or sunset pods. In order to keep track of who is on which team—taking into account where that person is located, their skill set, tenure at the company, and more—we built a tool called Census.

Census is a real-time visualization of our team’s structure. It automatically updates with data from our ATS and HR system. The visual aspect is crucial and makes it easier for leadership to make decisions around resource allocation and pod changes as priorities shift. Alongside Census, we also built an algorithm to evaluate the “horsepower” of a pod. If horsepower is showing up as yellow or red, that pod either needs more senior engineers, has a disproportionate number of new employees, or both.

.

Census.

Pods are colored either green, yellow, or red depending on their horsepower.

One of the most common questions that founders have is how to balance speed with everything else: product quality, architecture debt, team culture. Too often, startups stall out and sacrifice their early momentum in order to correct technical debt. In building Faire, we set out to both establish a unified foundation and continue shipping fast. These four guiding principles are how we did it, and I hope they help others do the same.

Author

  • Marcelo Cortes

    Marcelo Cortes is a co-founder and the CTO of Faire, an online wholesale marketplace connecting mostly small brands to independent, local retailers.