Migrating Databases with Rails at Scale

At Procore, PostgreSQL is our workhorse. The nature of our product - a very large suite of enterprise business management tools for the construction industry - requires a fully normalized relational database with over 600 tables, and we keep adding more. Our traffic peaks predictably every weekday morning as an average of 80,000 construction industry professionals log in and use Procore throughout their day. It's not unusual for our database to perform 35,000 transactions / second and scan 20,000,000 rows a second sustainedly for several hours every morning. At the same time, our engineering team is hard... Read More

Join Us for a Post-RailsConf 2017 Wrap-Up Event

Procore had the privilege of sponsoring the RailsConf 2017 event that took place last month in Phoenix, AZ. At the event, we had the opportunity to speak and collaborate with a handful of thought leaders and influencers in this space. Some of whose names you may recognize: Yehuda Katz, Sarah Mei and Justin Searls. We spoke to these influencers about how they contribute to the tech community, what inspires them to do so, and other challenges they’ve observed within the tech world. Procore’s Engineering Team hopes to facilitate more discussion around this at a RailsConf Wrap-Up taking place... Read More

An Intro to Git and Its States

When I first started working in git I found myself frequently asking the following: Why does it seem like whenever I want to remove something in git, I do it wrong? This is a common feeling. Git has many states that can be subtle and confusing. This post will take you on a thorough and detailed examination of the different states; useful commands and examples will be explored to help you change states more confidently and effectively. Here are the two problems we will be examining: The unkillable zombie file that is somehow immune to git reset --hard Removing accidental... Read More

Managing Dependencies with 6 Easy Questions

Nothing is free; everything comes with a cost. As developers, many might not acknowledge it, but we are always making trade-offs. With every new line of code we write, we are compromising the integrity of the system. The changes we make affect the complexity, stability, performance, flexibility, and cost to implement. For example, let's say we decide to move duplicated logic to an abstracted method. We are improving stability and efficiency at the cost of development time and potentially increased complexity. Another example is choosing to use a 3rd party library instead of building the logic ourselves. This reduces development... Read More

Get To Know Procore Engineering

Procore Engineering is working on products our clients in the Architectural, Engineering, and Construction (AEC) industry use to build hospitals, sports stadiums, schools, apartment buildings, and skyscrapers more efficiently, with improved communication and collaboration. I’ve had the pleasure of leading our Engineering team since 2008. My perspective is one in which I’ve seen us grow and innovate year after incredible year. We work closely with our clients to ensure our products are giving them what they need. The Procore offices are largely wall-and-door-free, and the company culture reinforces and celebrates creativity, autonomy, and ingenuity. We are tackling new... Read More