Hacking the Engineering Process is a San Francisco-based meetup that kicks off discussions for software engineers and tech enthusiasts to share their thoughts on leading topics, ask each other thought-provoking questions, and learn more about engineering of all kinds How teams measure developer productivity.
In March, the speaker was Sue Nallapeta, VP of Engineering, Apartment List. Nallapeta is a technology leader with a passion for building high-performance and scalable engineered systems. One of the questions that many engineering leaders often consider is whether or when to build or buy software in the process of building a product. Companies invest a lot of time and resources into building software, and purchasing software in other ways can be expensive. In her presentation, Nallapeta describes the “7 Cs” she considers when making the decision between building and buying, and shares her experience implementing this process when developing a condo listing.
Section A C is capability, determined by the problem you are trying to solve, including any functionality you need or want to build. This is the core of the product and business, and often what makes it stand out from the rest. These are the features that you want to go to market and that your customers will use. The question then becomes whether these capabilities already exist. If so, developers need to decide whether it’s worthwhile to build them from scratch or use tools that are already available, depending on how quickly the product needs to get to market and which path helps most efficiently achieve the goal
There are two common cost dimensions that most people consider when building. The first is resources, including how many engineers a team might need to develop a product. The second is time, considering how long it will take these engineers to build the product with existing resources. Most teams will consider both and choose the cheaper option. However, there are other associated costs that can influence your decision: build time, maintenance costs (monitoring the product, supporting it, building test cases, etc.), infrastructure costs, and hosting costs (these are hidden but can add up to a lot ).
Additional fees apply if you choose to purchase. Moving your existing solutions or integrating new tools can be time-consuming and expensive to migrate. Buying software also involves onboarding costs (how long it takes for an engineer to learn and adapt to a new system), exit costs (often there is overlap between old and new systems), and maintenance costs for successful long-term integration. Teams must think beyond these two dimensions before making decisions based on cost.
in order to build something that is easy to understand and communicate to others (including sales teams, growth teams and all business stakeholders) explained the system. Teams often build very complex products, and as the product scales, the complexity increases. For example, Netflix is so large that they need to invest in their own Content Delivery Network (CDN) and build Open Connect, which they can send to all ISPs to cache video on the client side for fast delivery of content.
The speed at which a product is built depends largely on the capabilities of the team. Do we have the right engineers on our team who understand what needs to be built? Do they have the experience and domain knowledge to understand the problem we are solving from a business and customer perspective? Do they work well together? If not, how long will it take to hire and build this team? Building a competent team can take more than 3-6 months to recruit. At a previous company, Nallapeta’s team acquired more than 10 companies, with each acquisition adding immediate value within a few months. If they build, adding these features can take months or more.
COHESION, or connectedness, is tricky in the case of buying — you Whether the purchased functionality integrates with other systems you already have. For example, Apartment List uses Salesforce for customer relationship management (CRM), and any other software they build that gets data should support sending data to Salesforce. You can create value through a software ecosystem, where systems coexist and depend on each other.
Any product needs to be able to compete once it enters the market. Competitive advantage is a key factor in determining whether a product or its functionality is at the heart of its functionality and business. The ability of a product determines whether it is competitive and can release features faster to win the industry.
Continuity is closely related to maintenance. It determines how you ensure the scalability of your product as your user base grows and new feature requests increase. It’s important to keep track of this so you can guarantee your system is sustainable and you don’t need to replace it every few years, which can be a major setback.
Apartment List’s Experience
Build: A/B testing
When building a product that meets all functional requirements, out-of-the-box (OOTB) solutions are not sufficient business needs at the time. Apartment List is a subscription-based business. Teams had to quickly launch many experiments and try out various subscription-based models and paywalls, each with varying prices and features, which would not have been possible without rapid iteration.
They also want to maintain control customizations to build a great user experience. The product is highly customized for various customers and customer subgroups. It also provides a huge competitive advantage and faster feature releases with fewer experiments and test setups, resulting in increased global customers.
Build: Billing System
in high-risk industries with extremely high chargeback rates. With a subscription-based business model, Apartment List needs to maintain a fallback use case so that if a customer doesn’t pay, the system automatically redirects to a different payment processor, a feature not available in other billing system tools. This allows them to also reduce renewal rates and offer customers more discounts. On top of that, Apartment List’s margins are low, which means that using tools like Stripe will cause them to cut profits.
Purchase: Mail Software
Apartment List has initially built its own mail software, which is related to the stage of the business. During the startup phase, it makes more sense to build the software and access bespoke complexities. However, the engineering team didn’t have enough bandwidth or documentation to support the system, and over time, as the team that built the software left the company, there wasn’t enough software knowledge in-house to maintain it. Ultimately using in-house software also means that something as simple as a brand update with a new logo and colors takes weeks or months of engineering effort.
Apartment List selected Courier to support transactional emails and another provider of marketing emails. It also helped the company achieve cohesion, with the new system blending well with the existing system.
Purchased: Test Software
Every company needs some form of Quality Assurance (QA), which can become an expensive and tedious process as the product scales, forcing engineers to take their focus away from the product open. Using external tools allows greater control and ease of use of the test software and increases the efficiency of the test process.
Build and Buy: Analyze
Data is the backbone of any company and requires high data accuracy and coverage. Every decision you make needs to be built on a solid foundation. As business needs continued to change, ApartmentList chose to buy analytics software and build on it to close the gap.
Learn more and join
if you want to know For more on Sue Nallapeta’s decision-making process and experience building and buying, check out the recording of the conversation on YouTube: https://youtu.be/dTSFDkWM1oM
Hacking the Engineering Process monthly meetups.
Submit CFP: https://jkfr7wbzytt.typeform.com/submit-cfp