Ours is a community submission and curation website for online programming tutorials. Clicking on the tutorial link takes the user to the tutorial website (an outbound link). We want users to upvote a tutorial if they found it beneficial so that quality tutorials can get more upvotes and rise to the top of the page. Here is the current UI of the page: upvote to make online programming tutorials great again:) The thing is that user needs to create an account with our app to upvote (this is to avoid people manipulating the game). How can we encourage the users to upvote the tutorials if the tutorial provided them any value? A user may take time (maybe days) to evaluate the tutorial before taking a call whether the tutorial is worth upvoting.

  • When you say "a user may take days" you mean you don't let him upvote until he finished the tutorial?
    – Alvaro
    Jan 10 '17 at 9:52
  • 1
    @Alvaro A user can upvote anytime after signing up. I mentioned this to tell that many users don't upvote the tutorial immediately (soon after finding it) because they would want to finish the entire tutorial before deciding whether the tutorial in worthy of the upvote or not. But by the time they finish the tutorial/course (maybe after 2-n days), they would have forgotten about our site. Jan 10 '17 at 10:06

It sounds like the real problem is user retention, address that with some sort of gameification/user investment first and then you will have more opportunities to ask for evaluation. You could use techniques like profile customisation or offering users extra privileges for a certain amount of vote casting (but then you'd need to also allow for down votes to retain a useful voting system rather than skewing the upvotes with a bounty).

For short term fixes, Amazon encourages users to review items and rate sellers by emailing them a few days after the sale with a call to their sense of community ("help others evaluate this product").

Also, Android apps use a reminder pop-up for users to "Rate this app" something similar might work for reminding users to rate tutorials they've already joined when the revisit the site. - "You completed 'Shaping Up With Angular JS' 3 days ago. Did you find it useful?". (you could even include the upvote button within the alert to save time).

  • We are already emailing users after 3 days of visiting the tutorial to remind them to upvote but we can do that only for signed up users (<1% of the users in our case) but there is no way to get upvote from not-signed-in users. Jan 10 '17 at 11:54
  • 3
    Which is where your retention problem is - you need to make more users register and you can only do that by making the service worth registering for. Off of the top of my head: A learning record where users can keep track of all of their certifications (with expiry dates and reminders where needed), Career track based tutorial suggestions, resume construction service (automated)... Plenty of options Jan 10 '17 at 12:01
  • @SaurabhHooda The "obvious" (although heavy-handed) remedy to <1% users having signed-up (and so not being able to email them reminders) is to not show them the tutorials (or only show them a small number) if they haven't.
    – TripeHound
    Jan 11 '17 at 15:45
  • @TripeHound It'll degrade the UX so we'll give it a pass:) Jan 12 '17 at 7:53

You need to offer rewards for voting

Offering rewards, like points or badges can motivate some part of your users to vote more frequently. Stackexchange is a great example of such a site. Another relevant example where gamification is successfully implemented is Codecademy. Try registering for the site and starting one of their courses and you will see how they try to reward you points and encouraging messages to keep going on.

gamification rewards displaying badges, points and other game mechanics

This technique of rewarding users with non-tangible awards is called gamification:

Gamification is the concept of applying game mechanics and game design techniques to engage and motivate people to achieve their goals.

The concept of Gamification emerged as a means to increase user motivation, engagement and increase productivity in non-game context (Denny, P. 2013, Detering et al. 2011).

It is not easy to gamify an interface

Although, gamification seems great to have it is actually very hard to design (own experience). There is a lot of literature on gamification of education, and learning. You should go and read some studies because it is not easy to get it to work right.

There are lots of game mechanics you can use and you should research them. For example, you can reward them with n amount of points for voting. Also, if the users have lets say 10 votes gets a bronze badge, if the user votes 50 times - silver and 100 times gold.

However, the exact amount of points and thresholds for awarding a badge should be carefully thought of. This is actually the hard part of motivating users to vote. Good luck.

  • We already have gamification where we give points to the tutorial submitter for every upvote received on her submission. This encourages tutorial submissions. Points can't be awarded for upvoting as this would lead to indiscriminate upvoting. Jan 10 '17 at 18:03

Since we are talking about tutorials this poses an issue when it comes to the engagement of the user namely tutorials are often (if not even always) a side activity. What I mean by that a person works on a problem while following the tutorial not the other way around. This leads to the simple fact that a user's main point of attention is the problem and not "Hmm, should I upvote this or leave a comment?".

Normally users tend to dismiss upvoting. At least in my experience a user tends to start looking for a way to leave feedback in case he is not satisfied with the product (in this case - a tutorial article).

Due to a tutorial being a side activity you might simply try to place a remainder. Make an experiment and see what happens if you place something like "Don't forget to vote after finishing this tutorial. Your feedback will be used to improve the material so that it can help more people." at the end of the tutorial (or even at the beginning but more on that at the end of this post). This text contains two parts:

  • Remainder - it tells the user about something that he might have forgotten about or might have not known even existed namely that he can vote
  • Reasoning - it tells the user why he should leave that feedback.

Make sure that downvoting is possible too! Do not restrict your users to only being nice. Although having a downvote feature can lead to abuse it also offers valuable feedback since no product (including tutorials) is perfect and there is always something that can be improved.

In addition you may want to improve the chances of a user leaving his vote by offering perks. It's a typical "You get a cookie if you ..." kind of situation. For some people just being helpful to others isn't enough. Stackexchange for example has this badge-hunting kind of thing going on where users will get various collectibles for being engaged. Frankly I find this ridiculous but hey, it's just my opinion and there are indeed plenty of users out there who want to "collect as many badges as possible".

Last but not least do not abuse the remainder. First of all I find it hilarious when people ask about subscribing, liking, upvoting, sharing or whatever at the very beginning of what might turn out to be utter garbage. I've discussed this with many people and most of them agreed that asking for feedback before even giving the user the opportunity to actually inspect your product is nonsensical. In addition to that if the tutorial is lengthy enough and you place the remainder at the top the user will probably forget about it at the end of that very same tutorial he was supposed to evaluate the quality of. :D You can of course experiment and see how your community reacts based on the placement of the remainder.


If you take a look at Udemy for example, after you watch few of videos they ask you how much do you like the course and would you like to recommend it to your friends.

Looking at that example, you could emphasize user to upvote tutorial if the pieces of information he is consuming are useful. I can't give you "the right" method for your situation without any other information.

Be sure that your upvote actions are visually visible and that they are in the good position regarding UX.

If you take acronym CREATE (cue, reaction, evaluation, ability, and timing) for example. You will find out that you will need to design your product to ensure that users will do the right action without getting distracted or to find your feature not interesting enough

My conclusion is that giving user information that he can upvote is good. But finding the right moment and ensuring that your design is good is up to you.

EDIT: Since you updated your question while I was writing this.

I will stick to giving the user a clue to upvote while watching. One cool thing I like about sites like Stack Overflow or LinkedIn is that they do "gamification" based on your actions.

For example give people points or something when they give for example 10 upvotes. That will help them to form a new Habit. Try looking more into Habits, they are powerful tool for your interfaces and making people use your application.


You say in the question: "We want users to up-vote a tutorial if they found it beneficial so that quality tutorials can get more up-votes and rise to the top of the page"

Up-voting is possibly a good way to evaluate user satisfaction with a tutorial, and the other answers have good ideas and references to make the user evaluate a tutorial. I understand you are looking to discern "quality tutorials" from "non-quality tutorials".

I would suggest to combine up-voting with other approaches to measure tutorial quality. These are some ideas I can think of:

  • Number of times a tutorial was completed
  • Number of times a tutorial was dropped
  • Retention of time in the tutorial
  • Percentage of the total progress users spend in the tutorial
  • Interactions between the user and the author or other users (this might be a good or bad sign)

These might help you evaluate the quality of the tutorial. These values might be kept for you or some of them shown.

So instead of telling a user how many times a tutorial was liked, you can tell him, for example, how many users completed the tutorial.


The problem you described is pretty obvious, outbound links are like "flights" which will make users to land into a different “Country” without “Visa” and they won’t return back to the source “Country” until there is something like “Reward” or “Compulsion of Visa”. It’s a most common mental model that if you are serving as host, keep your users engaged and ensure that they are navigating through the host, each and every time they want to go their destination.

In my opinion, the following three changes in your current design could solve your problem:

  1. Reward us before get rewarded. Reward your user with any “Record of Achievement” / “Completion Certificates” as a host. Humans are hungry of rewards & recognitions, pop-up a panel in front of users just before displaying the “Certificate” and ask them to provide their valuable feedback as “Ratings” (mandatory) and “Feedback” (optional) to get their reward.

  2. If possible, replace your current “Upvote” system with classical “5 Star” rating system. As an Upvote is a pure Boolean with only value “1”, and it only comes if user really liked the content of the course offered, otherwise nothing. You want recommendations not just like/dislike. With a 5 scale rating system the recommender will feel free to make more accurate predictions per rating.

  3. Gamification. Engage your users within your site with the help of gamification, like provide badges for their actions as “Giving Rating”, “Writing feedback”, “Completing 5 Courses” etc.


Okay, here's my suggestion with respect to your current problem:

You have to somehow keep reminding the users of how they reached the particular course or tutorial that they are taking.

I. How about a Google Chrome or Firefox extension?

Why? Because your website is a content aggregator and the users who visit your website use outbound links to access the tutorials before they would rate your curated tutorial for its helpfulness. And once they have read or viewed the tutorial, they have already achieved gratification. How otherwise would you remind them of where they reached the tutorial from?

With a Chrome or Firefox extension, you could simply add the tutorial to say their Tutorial Bookmarks on your extension and then remind them of the tutorial every time they open chrome. Also, of course, keep an option in the extension settings to disable or control the notifications.

II. Tie up with tutorial providers to get them to install your upvote button, something like Disque comments, and facebook's like. That way, since your upvote would directly be integrated into the tutorial website, the user would end up upvoting the tutorial directly from the site in case they find it worthy.

III. Seek permission for Chrome notifications from the users and notify them of upvoting the tutorial sometime randomly. This way, the user is back to your website's curated tutorial page and can upvote the tutorial they found sensible.

IV. Create a My Visited Tutorials page on your site and curate all the recently visited tutorials by the user there. This way, a user would be able to access those tutorials later, and if they find it worthy, upvote it.

I hope something out of the above works out for you. In case, I find another way to go about this problem, I would definitely update my answer. Until then, cheers!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.