How Knock uses GitHub
Knock is a technology startup on a mission to make homebuying easier, faster, and more transparent. Started in 2015, the company operates in 15 markets across six states and plans to expand to 75 markets by 2023. In 2020, Knock launched the Home Swap, a reimagined version of their Home Trade-In product that gives homeowners the ability to make non-contingent offers and move before repairing and listing their old house for sale.
To launch the Home Swap, Knock needed to open its platform to outside real estate agents, launch a new consumer financing product, and build entirely new digital products from the ground up—all in just a few months. The company's fully remote engineering team, supported by GitHub Team, made this rapid expansion possible.
Scaling the engineering team
Knock has been on GitHub since day one. According to Director of Engineering Cody Stoltman, "GitHub Team allows us to easily scale our engineering team as the company grows. Onboarding is easy—developers automatically have access to everything they need."
Because so many engineering organizations use GitHub, new hires—whether contractors or full-time employees—are familiar with the platform from the start without needing to learn a new system. Everyone with access can start contributing on their first day, able to add ideas to new repositories without a third party.
Autonomy and speed
Knock's engineering culture is built on autonomy, trusting engineers to choose tools, spin up projects, and create new workflows. On the CI and infrastructure side, engineers are empowered to take control of their entire software development lifecycle. Any engineer can deploy their app or service without involving the Ops team.
Lead Software Engineer Alex Yuskauskas sees GitHub as an accelerator, supporting around 4,000 different builds every 90 days. Cross-team coordination that might take weeks in a traditional engineering organization can be accomplished in a few hours. "In a more traditional, old school model, we'd have to test code, get it approved, and then talk to Ops about where and how to deploy," he said. "It could take a few weeks to coordinate. With GitHub, those steps can be automated and everyone can deploy when they want to—it accelerates everything."
Automated testing and deployment
Real estate transactions are complex, and Knock's software development lifecycle hinges on code that's meticulously vetted through automated testing. Engineers build on the codebase using a standard pull request flow. Local code gets tested and pushed to a branch, while team members follow along on Slack and chime in on GitHub. Automated testing either blocks or approves pull requests.
Knock uses CircleCI for their main pipeline and has also started to leverage GitHub Actions custom tooling and open source projects like Atlantis to make their CI more robust. Actions runs unit tests, verifies that commit messages meet specific requirements, notifies Slack channels when a deployment starts, and provides visibility around what code is going to production.
Senior Software Engineer James Sumners wrote many of the Actions in use and has tapped into the community to find new workflows to fork, customize, and reuse. "The best thing about Actions is that once they're working, you can just copy and paste them throughout your code and they work everywhere," he says. "Each Action is its own little file—discrete and easy to understand."
VP of Engineering Ryan Bruels describes the resulting automated DevOps workflow as "magic." Although most engineers use this workflow, the tools blend into the background, shifting the team's focus to code. "Only three people, including myself, need to worry about our CI setup—for everyone else, it just happens."
Data science and machine learning
Automation has also helped Knock's lean data science team cover more ground and create new models to support the business's growing markets. Data scientists and engineers alike all deploy using pull requests. Machine learning models are automatically packaged and sent to S3, where their app is deployed. The app automatically loads all of their models, and data scientists can easily define their routes through a simple interface—all powered through the CI and GitHub.
"This way, data scientists can manage their deployments just like any normal app and focus their time on creating and improving on our critical models," adds Bruels. "We want to keep them on the cool work and get everything else out of the way."
Flexibility for different teams
Knock's network has grown to more than 43,000 agents across 70 brokerage firms. In a few months, the company stood up entirely new experiences for agents to allow them to join the platform, onboard their customers, and seamlessly progress through the entire Home Swap.
The real estate industry is dynamic, and Knock's product managers, designers, and engineers need to be agile enough to respond to fluctuations and customer trends. Stoltman explains, "GitHub gives us the flexibility to support different kinds of teams and their tooling. It allows us to move faster, and deploy so much more—as many times a day as we need to."
Compliance and security
Now supporting home buying and selling as well as mortgage lending, Knock is subject to both industries' strict regulatory requirements. Bruels describes their approach to compliance as a "separation of powers" within their infrastructure, a methodology that guides how the team structures their code on GitHub. The company makes sure customer data is segmented so other systems don't need to access it, and has created different GitHub Team organizations so that developers working on the consumer experience don't have access to lending-related products, for example.
Innersourcing and collaboration
Keeping engineers and their tools, processes, and code on one managed platform allows the team to innersource projects and more easily contribute to projects across the company. Anyone on the engineering team can open a pull request for new features, comment on a design, or submit a code review.
One collaborative project is a new event stream that connects engineering systems to Knock's broader data. "We try to be as adaptive to market conditions, customer sentiment, and other external signals as we can," Bruels explains. "The event stream consolidates and centralizes behavioral events generated by our services, apps, and websites, giving teams access to the data they need to understand their audience and rapidly make improvements to processes and experiences for our customers and agents."
Looking ahead
With GitHub as a base for flexible infrastructure and their driven engineers, Knock is ready to grow. "We can pivot and make changes as fast as we need to—there's nothing stopping us other than how fast we can type, test, and think up new ideas," says Yuskauskas.
