Behind The Scenes of NodeFlair's Newly Launched Salaries Feature (Part Two)


How NodeFlair team built its groundbreaking Salaries Feature which allows tech talents to look up the latest updated salaries and compensation.

NodeFlair sets out to connect developers with their dream companies so they can code at where they love! The road to achieving their dream job can be challenging, and after speaking to users, we gained a big insight - job candidates view salary compensation as a crucial factor, with 90% of them caring about salary details when switching jobs.

Unfortunately, many companies don’t disclose salary in a job listing, possibly due to the fact that openly discussing salary in Southeast Asia is considered a taboo. For companies that do include salary details, this information is not trusted by job seekers due to biased reviews or lack of verification. Hence, the challenge is to provide tech talents with salary information that is trustworthy, accurate and reliable.

NodeFlair Salaries

Here is where NodeFlair Salaries comes in to offer job candidates the latest, updated salary information in the Tech market. Candidates will also be able to filter salaries according to Seniority, Specialisation and Company over thousands of jobs, allowing for a more tailored experience! Most importantly the salary data provided is trustworthy and reliable, having been drawn from verifiable user-submitted data such as offer letters or payslips. User-submitted salaries are also rounded off to the nearest whole number, and sensitive information such as names, contact details and official work titles are removed to protect anonymity and encourage more submissions.

Creating NodeFlair Salaries

For NodeFlair Salaries, we carry out computation across data to derive meaningful insights. The data comes from multiple sources such as user-submitted salaries, past job listings, as well as external sources such as MyCareersFuture.

Below are examples of some data sources we deal with. Do note that for the purpose of this article, the data sources are simplified into 3 attributes (a, b, c)

As different data sources have different attributes and types, we need to transform them into the same structure and type in order to perform our computations.

While it doesn’t look as complicated now, we can only imagine the horror if this thing extends to many more data sources, or if the number of attributes increased is much larger! So while the code works for now, the Salary class is doing too much of the work just to process the data from different sources, which is not ideal.

Introducing Scenic!

We came across Scenic, which is a way to use Database Views with ActiveRecord. This was exactly what we needed!

With Scenic, we are able to bring the power of SQL views to our Rails application without having to switch our schema format to SQL. It also provides a convention for versioning views that keeps your migration history consistent and reversible, and avoids having to duplicate SQL strings across migrations.

Now, we are able to move the passing Postgres query to set up the view (as shown below).

We are also able to get a much simpler Salary class!

Benefits of using Scenic

At first glance, the code appears much longer and you have to run additional DB migrations, but this brings a number of benefits.

  1. Smaller Salary class that is not bothered with processing the passed-in data
  2. Salary now behaves like any ActiveRecord model, and this greatly aids later computations because it is:
  • Able to define relations (has_many, belongs_to etc.)
  • Able to use methods such as where, scope

The importance of salary transparency

According to a Glassdoor survey, 70% of employees believe pay transparency is good for employees’ overall satisfaction, resulting in improved engagement and job performance provided the salaries are considered fair. Transparency within a company - not just in regard to salary but in all areas - builds trust, which is also a key aspect of employee satisfaction.

When employees are in the dark about each others’ pay, they tend to assume they are underpaid. Of course, employees will only be happy if they’re being paid fairly, and knowing their colleagues’ salaries allows them to fight to close the gap. On the other hand, one who doesn’t know that they are being paid less or unfairly is unable to negotiate for higher pay - an issue that is more common than we think. In a cutthroat job market, companies instituting pay transparency may also gain a competitive advantage in the marketplace. Job seekers may be drawn to apply for positions where the salary range is shared early and openly. Furthermore, organizations can retain high-performing employees with pay visibility which assures them that they are being paid fairly for the work they do.

Here at NodeFlair, we want to be a place which embraces a set of shared goals in improving salary transparency, not just by consuming this information but also contributing to it, and this is why NodeFlair Salaries exists!

If you’re interested to learn more

  • If you want to learn more about NodeFlair Salaries’ design process, read this
  • If you want to provide feedback regarding NodeFlair Salaries, feel free to reach out here

Low-balled on salary during offer?

Join the smarter way. Discover upfront real salary data backed by payslips and offer letters.

Join the growing community of 800+ tech talents who have already submitted their salary data. Put an end to salary opaqueness here in Singapore!

Follow us on Telegram (@nodeflairsg) for the latest Tech Insight, Reads, Salaries & Job Opportunities!

Related Articles