How does funda actually work technically? Leave it to Lead Engineer Dean de Maret to answer that one snappy and to the point.
Dean de Maret has a responsible job at funda. As a lead engineer he has to make sure that his team focusses on the right challenges in the right way with enough liberty for them to solve it the way they see fit. This really is a demanding job. But ‘demanding’ and ‘Dean’ go well together. He even found time to write about his work. And answer a question he gets asked a lot…
When I am interviewing people at funda I often get the question: how does it actually work? That is a broad question which I usually answer in one sentence: ‘we have properties and display them.’ But it's so broad and so interesting I always felt like it warranted some more attention. This post is my attempt at that. (My secret agenda is that you read this and then immediately apply for a job with us :)
Read also: My first four weeks at funda: Software Engineer Bektur
The website itself is extremely read heavy, that means people mostly search and try to find information instead of writing information. An example of something that is write heavy would be a program where you enter house information with a save button essentially.
That's not what the visitors of the funda website do (we don't even have that functionality). The only things you can do is save houses that you like and update some account settings. If you're a bit technical you'll recognize this as great use case and thankfully, some of our early developers saw that too.
We get our data from various CMS systems that realtors use. These systems get ingested on the funda side and that's where our part begins. We get all sorts of information from properties ranging from "the garden is south facing" to "this flexible office has 4 units".
I heard it through the pipeline
Some of the information we get is new and some of it is updating existing things. Everything you see on the funda and funda in business websites passes through this pipeline. I say pipeline to keep it simple but it's really multiple pipelines, queues and systems. One team is mostly responsible for this pipeline called Team TDM (we're very practical in our names).
Some problems that this team solves are "how does funda display a house that's right over the border" or “how do we provide an API that serves the most up to date information about a listing.”
We enrich this data in various ways (maybe we add some neighborhood information, or we adjust the photos so they display properly on every screen) and in the end it ends up in various SQL databases and blob storages.
Funda is fast, no really
From there on we have an application that reads this data from SQL databases and puts it into SOLR, a database that is optimized for fast reads. So when you say "show me apartments that are in Amsterdam", these are facets in SOLR that display these results blazingly fast. You don't really go to SQL to read data because that's too slow. This is why 95% of our pages get served under 400ms. That's amazingly fast and I think this should be a bragging point for funda.
We also have a backoffice called funda desk where realtors can log in and see information regarding their listings. They can see visits, contacts, buy ads, find out information about areas and basically "manage" things. Funda desk is managed by 2 teams of which I am part of.
Never no shortcuts
Together with a bunch of smart people, our day to day lives mostly exist of writing new things, keeping the old things patched up and enjoying our jobs. When we build new things now, we usually use DDD and not take any shortcuts.
That means most things should be unit tested, collaboration should be high and failures low. New stuff all lives in containers that get deployed to an Azure Kubernetes cluster which is managed by our SRE team. We use packages for logging and metrics that are provided by a platform team which is responsible for our happiness.
Patch and deliver
We also obviously have technical debt. Some of this we can mitigate and rewrite, some of it we just must patch up and eventually something in the roadmap will come up that will allow us to rewrite or refactor this. It is a choice we must often make but we are aware of the cost.
Then there's a couple other teams that work more on the consumer side of things. They build, create, and maintain what most of the searchers on our website see. You have a change and you deploy it for 1 second and boom: two thousand people saw your change.
Fun challenges to solve with fun people.
The process for making changes here are quite simple. You make a PR, get it approved by someone else and deploy it to staging and if it works, prod. There's not a lot of red tape and we trust one another. Mistakes are fine if you make them once and we know we're all doing our best. Everyone realizes that everyone is doing what’s in the best interest of Funda and we generally trust by default.
Read also: What they don't teach you at software university: 5 insights
So, to come back to the question people ask me how funda works, while in essence “we have properties and display them” is technically true, there’s so much more in the background that is exciting to work on. For me working at funda means I get to help build the biggest real estate site in the Netherlands. No pressure 😅
10 random funda facts that Dean likes
- Locations are weird. If you look for "Nederland" on funda you can get the country, the place, or the neighborhood. We write logic to try to find out what people mean in this search box.
- Funda has existed for 20 years. 20 years ago most of us were on dialup, nobody had mobile phones yet and Mark Zuckerberg was 16 years old. Yet at this time someone recognized the potential of the internet and decided to start Funda.
- Decisions have been made over a decade ago regarding our architecture that still hold up. Split your reads and writes was the biggest one for us. We don’t really have DBA’s because our SQL can be not as performant.
- We have 1 employee (Hi Monique 👋) who has been working at funda from the beginning. 20 years! I’m surprised nobody calls her “The Oracle”
- We have (or had since Corona) a thing called the funda Five which is the 5 kg you gain in weight when you start eating our delicious lunches at the office.
- When an agent (makelaar) calls funda to give feedback about something, that goes from Service Operations straight to the appropriate Product Owner. The degree of separation between a developer and a makelaar is 2 people!
- Not many people know about https://www.funda.nl/trending/ which is my favorite part of the website. We built this part of our platform during a funda Hackaton.
- We have been the nr. 1 real estate website for the last 20 years which means
- We have the biggest data set about the Dutch real estate market
- We have the most visitors on the website
- We can see fluctuations in our traffic when people watch the Corona press conference (traffic goes down for 15 minutes) or when people watch ‘Kopen zonder kijken’ on linear tv. (Traffic goes up during tv commercials.)
- 22 nationalities work at Funda
- Did I mention we’re hiring? We’re hiring: https://jobs.funda.nl/