Marc Köhlbrugge

@marc

Maker of WIP amongst other things.
  • 3
  • 39
  • Ericeira, Portugal
  • Joined September 2017

Wow this sounds super interesting. Thanks for sharing and summarizing :)

The idea of skip days/weeks sounds very compelling and makes a lot of sense. The primary downside I see with it though, is that it's conceptually a lot harder to explain and understand than "work towards your goal every day"

There's a bigger risk people will lose their streak, because they misunderstand how it works. Or they simply stop ignore it altogether, because it's too confusing.

Duolingo lets you buy "streak freezes" which are basically skip days that are automatically applied whenever you accidentally skip a day that would have reset your streak. I think they have a limit to how many you can use in sequence.

Skipped days wouldn't count towards your streak count, but they would ensure it wouldn't get reset to zero.

What would you think of this?

Conceptually it's similar to what you describe, but I think a bit simpler to grasp. Basically the streaks continue to work as-is, relying on consecutive days, but if you skip the odd day your streak continues going the next day.

Maybe you earn a free 'streak freeze' every 5 days or so. They don't expire, but you can only keep up to 3 on your account. While you got 3 unused streak freezes, you won't earn any additional ones.

Some other ideas I had were to allow members to choose their own streak requirements. The current 7-days-per-week approach would be considered "hardcore mode", but you can change to a more relaxed 5-days/week system if you prefer.

We'd show your choden difficulty-mode along with your streak. So it still is fair to people who prefer a harder mode.

I am okay with any of them. They all sound great. Maybe except the part where you can only buy reserves instead of earning them.

Give people options. Let them have the ability to earn reserves.

Any worries about making it complicated just use a simple projection calculator.

Give them a calendar and let them pick a day to stop doing stuff. Then show them how long they can go without doing stuff until they lose streak.

Have this feature regardless the underlying calculation, then is fine.

Don't make the users think.

Also follow stackoverflow way of showing them based on their streaks they are top x%. Rather than showing a pure linear rank by raw streak.

This gives people a chance to feel they can move up

See attached

Duolingo gives you points for completing lessons that you can trade in for streak freezes. A streak freeze costs 200 points (IIRC), and you seem to normally get ~5-10 points per day that you complete a lesson (closer to 5 or 6 on average, it seems a little random). But basically it seems like you earn enough points to buy a streak freeze every month or so.

I actually let my streaks expire all the time. I know we have some things on the site like the homepage leaderboard that incentivise building as big a streak as possible, but it's a simplistic view of consistency. As the final image in your post explains it's not about never ever missing a single day, but about getting have a steady cadence over time.

I haven't figured out yet how to design streaks around that, but I'd love to hear your ideas. Ideally you wouldn't have jump through these hoops just to feel good about going on a ski holiday.

Jumping through hoops during a ski vacation sounds pretty great to me though.

but I'd love to hear your ideas

So I'm in another community that's very well-read.

One of them pointed me to the concepts of superordinate goals vs intermediate goals vs subordinate goals www.frontiersin.org/articles/…

and also pointed me to this paper which is about pairing goals with emergency reserves. journals.sagepub.com/doi/abs/…

I have a ahem copy from ahem questionable source. You can try to find it on your own quite easily :D

Basically to summarize the second paper,

goals with emergency reserves (7 days with 2 emergency skip days) works better than hard goals (exercise 7 days) and easy goals (5 days)

This is true when there's a superordinate goal present and that the goals are related to. Without superordinate goal's presence, preference becomes easy > with emergency reserves > hard

I don't really have time to try to build a product that reflects this research but in essence,

let people log a superordinate goal (a goal that's broad and close to reflect their ideal self). then the todos tracked in streaks must be related to that superordinate goal somehow.

Then give people emergency reserves somehow. Perhaps they earn 1 emergency day for every 3 days streak. The emergency day will expire if unused for more than 3 months or 13 weeks.

Also track weekly streaks. A week streak is when all 7 days of that week log a todo or don't run out of unused emergency day. Use the calendar week of the year as the unit.

So also every 3 week streaks, the user gets 1 free week emergency

Week emergencies expire if un-used for more than 3 quarters or 39 weeks.

Always expire emergency days first before expiring week emergencies. Always expire the emergency reserves that are the oldest if still valid.

That way, you can imagine people auto fall sick or go vacation, the emergency reserves kick in.

The streaks mechanism as it is right now, unwittingly, promote hustle culture or promote workarounds like mine.

They are not natural.

Of course, as you said, can just let them expire :D

Wow this sounds super interesting. Thanks for sharing and summarizing :)

The idea of skip days/weeks sounds very compelling and makes a lot of sense. The primary downside I see with it though, is that it's conceptually a lot harder to explain and understand than "work towards your goal every day"

There's a bigger risk people will lose their streak, because they misunderstand how it works. Or they simply stop ignore it altogether, because it's too confusing.

Duolingo lets you buy "streak freezes" which are basically skip days that are automatically applied whenever you accidentally skip a day that would have reset your streak. I think they have a limit to how many you can use in sequence.

Skipped days wouldn't count towards your streak count, but they would ensure it wouldn't get reset to zero.

What would you think of this?

Conceptually it's similar to what you describe, but I think a bit simpler to grasp. Basically the streaks continue to work as-is, relying on consecutive days, but if you skip the odd day your streak continues going the next day.

Maybe you earn a free 'streak freeze' every 5 days or so. They don't expire, but you can only keep up to 3 on your account. While you got 3 unused streak freezes, you won't earn any additional ones.

Some other ideas I had were to allow members to choose their own streak requirements. The current 7-days-per-week approach would be considered "hardcore mode", but you can change to a more relaxed 5-days/week system if you prefer.

We'd show your choden difficulty-mode along with your streak. So it still is fair to people who prefer a harder mode.

I am okay with any of them. They all sound great. Maybe except the part where you can only buy reserves instead of earning them.

Give people options. Let them have the ability to earn reserves.

Any worries about making it complicated just use a simple projection calculator.

Give them a calendar and let them pick a day to stop doing stuff. Then show them how long they can go without doing stuff until they lose streak.

Have this feature regardless the underlying calculation, then is fine.

Don't make the users think.

Also follow stackoverflow way of showing them based on their streaks they are top x%. Rather than showing a pure linear rank by raw streak.

This gives people a chance to feel they can move up

See attached

Duolingo gives you points for completing lessons that you can trade in for streak freezes. A streak freeze costs 200 points (IIRC), and you seem to normally get ~5-10 points per day that you complete a lesson (closer to 5 or 6 on average, it seems a little random). But basically it seems like you earn enough points to buy a streak freeze every month or so.

You can use this code as a starting point: gist.github.com/marckohlbrugg…

I don't have any great resources other than that, but I think if you just tweak the query it should go a long way.

You can also experiment with queries on wip.co/graphiql

Thanks @marc - I meant the inverse. Do you have any good resources on how to learn + set up a graphql server without knowing Node?

I'm building something, should be live soon. Building a bot

Let me know if you need any help using the API!

@marc Any advice for learning GraphQLl in the Rails world? All the resources seem to revolve around Node, and I have trouble going through those tutorials.

You can use this code as a starting point: gist.github.com/marckohlbrugg…

I don't have any great resources other than that, but I think if you just tweak the query it should go a long way.

You can also experiment with queries on wip.co/graphiql

Thanks @marc - I meant the inverse. Do you have any good resources on how to learn + set up a graphql server without knowing Node?

I'm building something, should be live soon. Building a bot

  • It's not immediately clear to me why I'd want to build a site like this. Will it help me get a job? Help me get clients? Etc
  • Because your target audience is so broad, your messaging is very generic and doesn't really resonate with anyone I expect. If you were to hone in one a specific target demographic, you could speak more towards their pain points and how your service helps them
  • For the demo I recommend making it easy to go back to the homepage (e.g. big banner on top)
  • After signing up I'm sent back to the homepage with a small, disappearing notification saying to check my email inbox. You'll likely lose a lot of users in this step. I recommend immediately signing in users and letting them start building out their site. You can limit certain spam-sensitive functionality to after the user has confirmed their email account.
  • Some website builders go even as far as not requiring an email address at all to start building out the site. And only ask for the email address later to "save your progress". This is called a "lazy signup" and could potentially increase conversion rates a lot (but potentially also support load as people are bound to lose their progress by forgetting to enter their email address)
  • I'd rewrite the email subject from "Confirmation instructions" to something more compelling like "Start building your site…"
  • I do really like the design of both the home page and the back-end