From scratch to product launch in just 3 months: a Real Estate Platform
Welcome to today’s edition of “what has Vitamin been launching lately?”. As promised, every once in a while we’ll give you some insights into what projects we solve. And this one was a doozy.
We’re extremely proud to introduce you to directimo.
This is a unique real estate concept for the Romanian market. It’s a platform that connects buyers, sellers and real estate agents under one clean, easy to use interface!
We’re very excited to have worked with them and see this project through from concept to implementation and launch, in just 3 months.
So, how did we do it?
Step 1: Analyze
First off, we helped the client understand what they really needed to build. Initially, like in any other big project, the requirements were unclear here and there, and the product team needed better alignment. To clear things up, we used Moqups, a beautiful online tool for creating mockups. We built an initial set of mockups and then refined them.
Step 2: Adapt
Moreover, the deadline was really tight. There was no time for the waterfall approach that developers feel comfortable with, where you do the designs first, and then implement them into a working web app.
So we had to employ a radical solution: we started design, implementation and API work in parallel. We needed some mechanisms to decouple them, so that they could progress simultaneously:
- for the design and user interface part, we chose to implement a throwaway user interface with minimal investment. This was enough to give us an idea of functionality
- for the UI and API, we built an API simulator tool. We created a Google Spreadsheet with the entity definitions, and hooked it up to a script that simulated a REST API on top of that.
This separation was both efficient and difficult at the same time. It was efficient as it allowed different teams to not depend on each other, and deliver the best possible results. It was also difficult, since it wasn’t clear from the beginning how the end product would look like to the internal stakeholders.
Step 3: Divide and conquer
With this radical solution in place, we proceeded to divide our work into 2-week sprints, each containing a list of prioritized tasks that were specified and estimated. We had never worked on a project this big using estimates, and to our pleasant surprise, it worked well — we would usually be within 10% of the estimate in terms of time and budget for each sprint.
Each of those sprints contained work on a number of fronts:
- design: we first worked on drawing the mockups in digital form and iterating on individual widgets before implementing them. We also proposed the color scheme and refined part of the copywriting work
- development: we built the snappy web app in React.js and Redux, and made it SEO friendly by using Webpack Isomorphic Tools
- ops: we did the cloud setup in AWS for the entire fleet of servers, and helped migrate the old app to the same cloud
Step 4: Wrap it up
When the product neared completion, we focused on touch-ups and on final marketing tweaks. Even though the client initially proposed only 2 intermediate releases over the course of 3 months, we found great benefit in working in smaller sprints. Sprints allowed us to analyse how much time was left, and what the priorities were for the remainder of that time based on real business needs.
What technologies did we use to make it all happen?
- React.js and Redux for the web app
- Webpack (and its Isomorphic Tools) in order to achieve server-side rendering of the same widgets
- React Router for the routing part
- Redis to cache pre-rendered pages on the server-side.
- An embeddable Markdown plugin to render Static pages. This serves as a very easy to use CMS (Content Management System) for the marketing team together with automated version control, because we use Github.
- AWS (Amazon Web Services) to deploy the whole setup, together with the API (which was developed by another team)
On the cloud part, we used:
- Route 53 to manage the DNS entries
- EC2 to run the various types of machines (provisioned with Ansible)
- CloudFront to deliver static assets
- ElastiCache for storing pre-rendered cached pages
- ELB (Elastic Load Balancers) for load balancing traffic between the API nodes
To organize ourselves, we used:
- Github for source control, tracking deliverables in Milestones and code review
- Slack to synchronize team members (together with some nice Slack bots that posted information about what was happening on Github and which deploys were going on)
- Jenkins for automatic deploy on push to designated branches (master for production, staging for staging)
- Google Spreadsheets to track estimates for each individual task. We’d have a quick team meeting 2 to 5 times a week (depending on how pressured we were), to track the remaining number of hours for the remaining tasks.
What did we learn from this project?
- Remove blockers at all costs. Especially when you’re under time pressure. If needed, decouple the work of multiple teams by establishing clear protocols and implementing throw-away solutions for the integrations between their work.
- Steer clear of waterfall. The main allure of waterfall is predictability and cost efficiency (everything is well spec’ed from the beginning and it only has to be executed). But what most people don’t realise, is the tremendous amount of energy involved in specifying a product to the last detail. Above all under market conditions that keep changing very fast.
- Don’t be afraid to be proactive and help out in other departments too. Over the course of the implementation, we’ve come up with marketing and copywriting suggestions, and even helped debug the API a couple of times. Did we mention we helped streamline processes in departments like prospecting too?
- Sprints are a tool for team alignment. They force everyone to understand the sense of urgency and prioritise the remainder of the work. This way, it’s easy to track progress and everyone gets to see a live product all the time.
What does the client think about it?
Well, here’s what directimo’s CTO had say about our collaboration:
I worked with the Vitamin Software team to develop a real estate platform, from scratch to launch in 3 months of well planned 2 week sprints.
Vitamin’s team is like a technology creating machine, who understands what you need, is constantly proactive, and offers 24/7 support in tight spots.
They help you understand the product you are developing and implement exactly what you asked for. Vitamin Software is proficient with current technologies or are capable of learning them over night. I recommend Vitamin!
The Bottom Line
We’re proud to have worked on this product. We believe in the business model, and enjoyed working with the product team in order to shape it.
Last but not least, we’d like to share some words of wisdom from the father of Andrei-Adnan Ismail (Software Engineer & Partner @ Vitamin Software): “A well organized team can execute twice as fast”. Needless to say, everyone was extremely pleased with the speed at which things progressed.
Until next time, dear readers. We’re off to face our next challenge…
And of course, to conquer the internet.