Checks and Balances : The Review System

Udit Jain
Devclub IITD
Published in
3 min readJun 26, 2018

It all started one evening, when we discussed and boggled our minds… Man!, we’re getting a good traction and membership, but still… Who all are doing quality work while who are lazying around? What is evaluation of our work? Is an evaluation even necessary in a free community like DevClub?

In a sufficiently large organisation, it is important to keep everyone motivated. Motivation arises not only from a good project or being a member of a club but also from work ethics. Real motivation arises when one knows that everyone is treated the same and to rise out in the community, you need to work sincerely. The source of a great setback to this motivation and energy are the members who believe in procrastinating and fooling around. They not only affect the team’s performance but also your will to continue with the community as you have to face the burden of their share of work.

The core of our problem was “How to fight against such situations without creating an unhealthy environment within a team”. This is where “Review System” comes to the rescue serving as a model of motivation where peers rate and review each other, anonymously. This keeps up a healthy competition, increasing the productivity and skills of every individual. Although poor reviews may not have harsh consequences, but they are sufficient to allow the senior members to question, examine and balance up the situation for everyone’s benefit, finally increasing the efficiency of the organisation.

Now arose the need for developing a centralised review system to ‘Peer Review’ each other. So we went through the natural course of action i.e surfing online 😛, to check if somebody already had developed a web system along the same line and ready to be deployed. But….😢 Nada!! Nothing of the specificity we needed. So we built it!

It began, as usual, by writing the exact specifications of what we need the system to do :

  1. We need all the users [the rater] to be able to give a rating [a number] and review [a piece of comment/paragraph for feedback and self-evaluation] (intended as an honest justification of the rating) to all of the other users [the rated].
  2. We need the ratings and the review to be anonymous to the rated but still editable from the rater’s perspective within a certain time limit.
  3. We need a controller, to freeze/lock the ratings given, to compile the average, thereby updating the ‘leader-board’.
  4. All the data stored should be encrypted, so the ‘superuser’ shouldn’t be able to see the ratings & reviews through Django Admin or Manage.py shell.
  5. The ratings and reviews have to be secure, even in case of database breach.
  6. Overtime, we also want to analyse progress and showcase a user’s personal contributions to the organisation.
Finally Start Coding Now!

We decided on Django as the MVC framework to make our system.

It’s off the shelf, secure Login and User Authentication System is a huge advantage! Although the security measures don’t prevent theft in case of Database breach, so, we had to design and implement our own Encryption / Decryption algorithms.

To make a Django app, deciding models is one of the primary requirement, so we made three main models :-

  1. Profile — Model for the user account, has fields about the user including basic information , functions to compute the rating summaries and updating ratings, the encryption/encryption code and edited timestamp.
  2. Work — The sequence of works (contributions in the community) for each user, able to be updated dynamically.
  3. Rating — The handshake message [Review + Rating] from a user to another is stored in this format in the tables

After designing these base models, the next came the views :-

  1. Profile Page — For every user, but editable for the currently logged in user.
  2. Registration Page — To register new entrants.
  3. Control/Sudo Page — To control the timing slots of ratings, and updating the leader-board.

Finally coming to the coding style, class based views were used to increase code modularity, and keeping GET, POST callbacks in the same segment.

Well, that’s the “Review System” for you! It is highly recommended to give it a try and see productivity overflowing in your community.

So, that’s all folks! If you have anything to say do drop us a mail at contact@devclub.in. We would love to hear from you.

Thanks Team DevClub

--

--

Udit Jain
Devclub IITD

CS 2020 || IIT-Delhi || Samsung Research, Seoul || Kyushu University, Japan