Quality, Speed, Growth, and Resources

Qlapa.com is a marketplace for handmade products. We started in Indonesia and have grown quickly ever since we launched. As a result, there are many development requests in a short period of time. That also means our small (4 person) engineering team has to ship quality products/features quickly. We will be sharing how our engineering team operates to achieve the quality and speed that work for us.

Discipline

“We are what we repeatedly do. Excellence, then, is not an act, but a habit.”

— Aristotle

Ensuring quality can take time and sometimes can be painful. However, it’s important to be disciplined about it.

We require every Pull Request (PR) to be reviewed by 2 other engineers before it’s merged to master. With this, we make sure that the PR meets the product requirement, is performant, and follows good code practice.

It’s easy to make small changes and break things without knowing. That’s why every PR has to be both manually and unit-tested properly.

Automation

We automate things as much as we can, especially when we see repetitive manual tasks.

Every time a PR is created, an automated process runs unit tests and checks for possible database schema corruption. When a PR is finally merged to master, a new build for production is automatically prepared, deployed to staging environment, and ready for test.

Our production data is regularly dumped to staging. We used to do it manually and now we just type in the command on Slack and the rest is done automatically.

There were similar functions in our code base that we had to write repetitively. Everyone was complaining about it and we solved the problem by writing code that can write the functions automatically during compile time.

Automation has saved us from significant manual work that has to be done many times.

Prioritization

There are many things that our engineering team is asked to do, but there are only 4 engineers and a fixed number of hours in a day. We have to choose carefully what we do.

We push responsibilities to third parties for systems that are not our core business. We host our web apps on AWS. We don’t build our own analytic tools and use Sentry for our error monitoring. The services can be expensive, but it is even more expensive to build and maintain it ourselves. This allows us to focus on building our core business.

We only unit test backend business logic code and decided to drop front-end unit test. It’s a conscious decision given our limited resources. With this, we are able to move faster and still test backend server code that in general has higher risk.

Communication & Team work

Communication is easily underestimated in workspace. Without proper communication and teamwork, it’s easy to build features/systems that DO NOT meet the requirements.

We work collaboratively and address concerns/questions immediately. This way, we are not blocked by others, and are not blocking others that are waiting for our tasks to be done. Imagine a trivial task that blocks the marketing team, which blocks the operations team, which blocks another team, and so on.

Ownership

Engineers at Qlapa take ownership end-to-end in every task. This helps us make decisions faster and produce better quality results.

Tasks are chosen from High Priority List based on the engineer’s interest. We discuss solutions with individuals that are familiar with the problem. We don’t just follow what is given, but we voice any concerns that we see during the discussion.

During code design and implementation, we make sure that it’s scalable, maintainable, performant, and simple (but not simpler). Afterwards, the code has to be well tested.

The work is not done until it is deployed properly to production. Once the code is merged, we have to make sure everything is working fine on staging environment. After we are confident that the build is stable, then we deploy it to production.

People

Last but not least, it’s important to have appropriate attitude & aptitude. We regularly see new problems and technologies that we have not encountered before. This means Qlapa engineers have to be excited and capable to learn new things quickly.

These are the mentality, process, and standard that currently work for us. However, some variables can change in the future and we will be open minded to make adjustment that works for us.