Tech & Product
We believe in building something useful
Having great people in your team makes the biggest difference. We believe that with smart and passionate people, a small team can accomplish anything they set their minds to. We value teamwork, clean code and big challenges. We constantly strive to improve every aspect of what we do.
Building a great application that creates value for our customers, is easy to use, functions as a business, solves people’s problems, scales well and is easy to maintain is a huge challenge, but that’s what gets us out of bed in the morning.
Perfecting our craft
As software craftspeople, we know that we can never perfect our craft. There is always something more to learn, something that can be improved upon. We regularly attend London meetups, take courses and add to our collection of books on programming, UX, design and databases. We eagerly share the knowledge we gain with the rest of the team, as well as contribute what we’ve learned and built to the open source community.
It’s all about our customers
This concept permeates our culture, and the interface is the most visible example. We try to understand the people that use MyBuilder in every possible way. We talk to them on a daily basis, and invite them into the office to test new interfaces and features. We often take the testing to potential customers, doing guerrilla usability testing in local shops. We a/b test frequently and strive to do more. Being a marketplace we have two sets of very different users, creating some interesting dynamics and problems to solve. We constantly improve our understanding of both the business priorities and the needs of our customers.
Lean & agile
Our development methodology has evolved into a system that works well for us. Since no system is perfect, we are committed to constant re-evaluation and improvement of the way we work. Honed from exploring various flavours of agile and lean, we believe that our way of working helps us get the right things done at the right time.
We prefer shipping the right features for our users rather than just ship something to meet a deadline. Imagine that you have a builder coming to renovate your bathroom: Would you rather he finish on time but risk that the bathroom develops issues within the first year? The same is true for our engineering team and development culture. We ship good code, useful features and create value for our users. We would rather extend a deadline than produce bad code, or worse, dangerous bugs or regressions.
We started using React in Jan 2015 and our usage grows every year with all of our key systems now using React for the frontend. We believe strongly in tests and all of our new apps are using Redux, Typescript and Storybook in a monorepo. We have a number of React apps throughout our system, from our post a job experience, communication and exchange between our tradespeople and homeowners and even our vetting system for tradespeople. Many new React applications are currently in the works, and we’re excited about bringing in the latest features and enhancements to our existing React apps.
Example of our a new vetting system that allows us to ask customised questions to new tradespeople who join our site. These practical questions are based on trade interviews we’ve conducted in the office, are built using a simple internal admin tool and are exposed via a React app for new applicants.
Symfony, a PHP framework
Symfony rocks! In our opinion, Symfony and PHP allow us to develop our system super fast while maintaining terrific code quality because they are both mature, stable and well-documented. They are the perfect match for us. They take care of the CRUD, allowing us to put our heads together to solve the complex problems. We migrated our main website from Symfony 1 to Symfony 2 in 2013, Symfony 3 in 2018 and are using Symfony 4 on more recent projects. To help grow the London Symfony community, we’ve sponsored the Symfony Live London conference as well as the Symfony meetups, and we’ve given regular talks at many Symfony events (including one at PHPUK 2019 conference.
We don’t believe that testing is throwing a page at someone and asking them to have a look. Instead we believe that for you to be finished with a project that you need to have adequate unit and functional test coverage. We use PHPUnit, Symfony’s functional testing system and Jest. We have close to 7,000 automated tests, with over tens of thousands of assertions, and a continuous integration system that screams when someone breaks it. We’ve also built our own end-to-end testing framework and tests for verifying various React apps. This is all part of our build process.
PostgreSQL is the best match for our needs, offering advanced features coupled with a high level of data integrity. To ensure data integrity, we take advantage of PostgreSQL’s triggers and functions by pushing some of our business logic into the database. For example, we use triggers to log data changes, which makes things more consistent and reliable. Postgres has allowed us to make the site faster by taking advantage of query optimisation features such as geospatial functions and partial indexes.
All our infrastructure is hosted within AWS, allowing us to take advantage of the latest cloud-centric offerings that it provides. We have adopted the ‘Infrastructure as Code’ philosophy, using tooling such as Terraform to ease constructing our cloud workloads. The product and underlying infrastructure is monitored using Cloudwatch, Loggly and DataDog - with a combination of system and business level metrics to garner insight into the health of the system. We understand the importance of the underlying technologies we are built on, and as such are currently investigating ways in which to introduce cloud-native offerings such as Kubernetes and Serverless into our stack. In early 2019 we deployed our first production Serverless service built upon AWS Lambda and Bref, of which we help educate people on and contribute to.
Want to know more?
Every once in a while you come across a company where the staff care about each other as greatly as they care about the product; MyBuilder is one of them.