Towards an Exercism Roadmap #113

Closed
kytrinyx opened this Issue Jan 5, 2017 · 8 comments

Comments

Projects
None yet
6 participants
@kytrinyx
Member

kytrinyx commented Jan 5, 2017

UPDATE: I wrote in depth about the design aspect of this in the Behind the Scenes newsletter: http://tinyletter.com/exercism/letters/the-delightful-design-of-exercism


I've had a fair amount of time to reflect recently, and I'd like to lay out some of my thinking and open this up for reactions and thoughts from all of you.

When I originally created Exercism, I had no idea what it was, or what it was going to be, or who it was for. I didn't have experience with large projects. I had authored a bunch of open source projects, but they were all small and niche and not exactly something that would be widely used. I was an open source author, if you will, but not an open source maintainer.

Then Exercism exploded into something big and hundreds of people contributed to it and grew it into something much more interesting than I ever imagined. I was unprepared for this. I didn't have most of the project-related and people-related skills that come in handy when a project kind of turns into something bigger, and because of that I've been struggling for the past 3.5 years to keep up, to help the project move forward, and to turn chaos into something useful.

I've been thinking very hard about how to help Exercism become sustainable. I'd like the project to hum along without overburdening any single person. I'd like people to be able to move on without feeling guilty when they feel like they've gotten what they wanted out of it. I'd like people to be able to go on vacations without some part of the project ending up semi-abandoned for the duration. I'd like it if new contributors always got some sort of kind, friendly, helpful response within the first 24 hours—whether or not we know how to resolve the issue up front. Just so people know that we care, and they're being heard.

I'd also like to not struggle to keep up with a few hundred pull requests and issues every week... which (1) I'm failing at anyway, and (2) keeps me busy, but not very effective. It is my responsibility to think about higher-level things about the project (such as roadmaps, I guess), but I've not been doing a particularly good job of that over the past few years, because I keep trying to keep up with all the nitty-gritty details.

I recently had the realization that the symptom—this barrage of GitHub notifications keeping me busy—actually has two vastly different underlying problem structures.

The first is the language tracks. In the curriculum there is a ton of activity, lots of maintainers, lots of contributors. The reason I keep busy is because some of the language tracks don't have active maintainers, or don't have enough of them.

This is a completely solvable problem. We know how to create curriculum; we know how to manage language tracks. There are lots of people doing a phenomenal job at that. The solution here is to put some structure in place to get more people involved, mentor new contributors, nominate new maintainers, etc. We've started having a lot of the conversations necessary to make this happen. This is a matter of rolling up some sleeves and doing some work. It'll be fine.

The second problem is of a completely different nature: Exercism, the product. Most of the people involved in the project since the beginning have been programmers. Some programmers have some skill with front-end or graphics or typography. We've even had the pleasure of working with the occasional designer and user experience expert. That said, the product is fundamentally flawed in the sense that it has been almost exclusively designed by accident. There's a lot to love about it. People use it. People find it useful. We've done a bunch of really interesting experiments, and we've learned a lot about what works. But overall it's confusing and difficult and just plain awkward to use, and that's not anyone's fault, we simply haven't had the chance to work deeply with people who have user experience work as their main focus.

Fixing the underlying design issues isn't a spare-time, volunteer-sized problem. We can't just roll up our sleeves and do more of what we've been doing, with a bit more structure.

I want to give Exercism—the product—a chance to become a delightful thing to use, and to do that I'm going to try something completely different. I'm going to contract with professionals to start rethinking the whole design from scratch. User experience, user flows, user interface—everything. I'm not saying we need to throw away everything we've learned. Far from it. We've got a phenomenal core of things to build off of, but I want to dismantle things and carefully scrutinize the choices we've made, the places where there's friction, and do all the user/design research that we couldn't do at the start of the project because we didn't know what we were trying to build.

Thalamus has agreed to do this work at a significant discount compared to their normal rates. That's because the founder, @iHiD, contributed to Exercism in the early days and believes in the value of the project. It's still going to take a good chunk of cash (like I said: not a volunteer-sized problem), and I'm not yet sure exactly how I'm going to go about funding the work, but I've started working on that. I've applied for an open source grant, and I will be looking into sponsorships and partnerships.

One thing that I will not be doing is making people pay to use the site. That's counter to my goals with Exercism. If it were something that corporations were using, sure, probably, but I'm not going to make individuals pay for it. Especially not individuals who are using it to ramp up in programming so that they can get a foot in the door in the tech industry.

The new site—whenever it's ready—will be released under the same license as the existing one—it's still open source. It will give us a foundation to build on that should make it much, much easier to maintain.

This is what I hope we can accomplish in 2017:

  1. make the curriculum and language tracks sustainable
  2. find sponsorship and funding, so that we can
  3. work with design and user experience professionals on a complete overhaul from the ground up to turn the user experience into something that is utterly delightful.

Based on this, I would like to suggest that most of our efforts—as contributors, as maintainers, as a community—go towards working on the curriculum and the language tracks, and to helping as many people as possible find enjoyment and success in contributing to this part of the project.

The current website is a long-lived prototype. We've had a lot of conversations in the past about how hard it can be to contribute, because the code is so non-standard, and there is a lot of scar tissue from experiments. I wouldn't worry too hard about improving the code quality of the existing site much. Improvements are welcome, and experiments are great. We've learned so much iterating and trying to figure out what works and doesn't.

I don't want people to feel like work they put into the exercism/exercism.io codebase over the next few months will be wasted if and when we rewrite large portions of things from the ground up.

I will lead the charge on the sponsorships and user experience reboot. You might not hear a lot about it at first, until something actually starts happening (legwork is boring and not very news-worthy). In order to support this work I've started doing some paperwork to turn Exercism into a proper organization/entity. That will provide some basic legal protections, and it will make it easier to deal with money in the form of grants and sponsorships so that we can get the user experience reboot going.

Updated to clarify some thoughts around the value of everything we've learned, and the current code quality of the exercism/exercism.io codebase.

@niwolive

This comment has been minimized.

Show comment
Hide comment
@niwolive

niwolive Jan 10, 2017

Mixed feelings, but at second thought I fully support that choice. This is no small undertaking, and fostering the leadership this needs in one big open-circle community would be utterly cumbersome and failure-prone. Key for me is to offer the right amount of transparency with the community for the good and the worst. What is called legwork for some is also where others learn the most.
Also, reading about the new product being on the same license also relieved some body tension.

Hail, @kytrinyx! May you form the neatest bastion of UX Exersists to abolish bouncyness and properly support future generations of passionate learners.
Full support from Taiwan.

Mixed feelings, but at second thought I fully support that choice. This is no small undertaking, and fostering the leadership this needs in one big open-circle community would be utterly cumbersome and failure-prone. Key for me is to offer the right amount of transparency with the community for the good and the worst. What is called legwork for some is also where others learn the most.
Also, reading about the new product being on the same license also relieved some body tension.

Hail, @kytrinyx! May you form the neatest bastion of UX Exersists to abolish bouncyness and properly support future generations of passionate learners.
Full support from Taiwan.

@troubalex

This comment has been minimized.

Show comment
Hide comment
@troubalex

troubalex Jan 16, 2017

Speaking as a professional product person, I think this is a very wise decision, at least at this point in time.

Fixing the underlying design issues isn't a spare-time, volunteer-sized problem. We can't just roll up our sleeves and do more of what we've been doing, with a bit more structure.

The hard thing about this kind of product design is that we always need to have the big strategic goals in mind even when we try to work out one specific detail or we'll be in trouble at some point down the line. Not only does this require a clear vision that is understood by everyone working on the product, it also requires immense discipline to not veer off course, and someone who enforces it. This is all extremely hard to do as an open source project which relies on volunteers.

To me, professionalizing this effort is being honest about ambition and limitations. Kudos.

By the way, the latest newsletter that went out on this topic is an excellent explainer piece on what good design really is. I sent it to all my colleagues, and will keep pulling out, every single time someone asks me if I could "just make it pretty". Thanks for that @kytrinyx ❤️

Speaking as a professional product person, I think this is a very wise decision, at least at this point in time.

Fixing the underlying design issues isn't a spare-time, volunteer-sized problem. We can't just roll up our sleeves and do more of what we've been doing, with a bit more structure.

The hard thing about this kind of product design is that we always need to have the big strategic goals in mind even when we try to work out one specific detail or we'll be in trouble at some point down the line. Not only does this require a clear vision that is understood by everyone working on the product, it also requires immense discipline to not veer off course, and someone who enforces it. This is all extremely hard to do as an open source project which relies on volunteers.

To me, professionalizing this effort is being honest about ambition and limitations. Kudos.

By the way, the latest newsletter that went out on this topic is an excellent explainer piece on what good design really is. I sent it to all my colleagues, and will keep pulling out, every single time someone asks me if I could "just make it pretty". Thanks for that @kytrinyx ❤️

@Insti Insti referenced this issue in exercism/exercism.io Jan 20, 2017

Merged

UI: Improve archive help and tooltips. #3350

@troubalex troubalex referenced this issue in exercism/exercism.io Mar 30, 2017

Closed

Request for comments: Typography improvements #3147

1 of 3 tasks complete
@kytrinyx

This comment has been minimized.

Show comment
Hide comment
@kytrinyx

kytrinyx Jun 3, 2017

Member

I'll be pointing people to the roadmap in the docs repository going forward: https://github.com/exercism/docs/blob/master/roadmap.md

Member

kytrinyx commented Jun 3, 2017

I'll be pointing people to the roadmap in the docs repository going forward: https://github.com/exercism/docs/blob/master/roadmap.md

@biinari

This comment has been minimized.

Show comment
Hide comment

biinari commented Dec 15, 2017

Looks like the roadmap has moved to: https://github.com/exercism/docs/blob/master/about/roadmap.md

@rpottsoh

This comment has been minimized.

Show comment
Hide comment
@rpottsoh

rpottsoh Dec 15, 2017

Member

@biinari exercism/docs#70, back in July, moved the file to its present location.

Member

rpottsoh commented Dec 15, 2017

@biinari exercism/docs#70, back in July, moved the file to its present location.

@Yasha08

This comment has been minimized.

Show comment
Hide comment
@Yasha08

Yasha08 Feb 26, 2018

@kytrinyx I'm a Junior UX/UI Designer from Goa India. I would love to contribute towards redesigning of exercism.

Yasha08 commented Feb 26, 2018

@kytrinyx I'm a Junior UX/UI Designer from Goa India. I would love to contribute towards redesigning of exercism.

@kytrinyx

This comment has been minimized.

Show comment
Hide comment
@kytrinyx

kytrinyx Feb 26, 2018

Member

@Yasha08 Thank you so much for your interest in this. At the moment we're working with a small UX team on the redesign, and we don't have the capacity to include a broader group in that work.

(If you want to see what we're working on though, you can check out v2)

Member

kytrinyx commented Feb 26, 2018

@Yasha08 Thank you so much for your interest in this. At the moment we're working with a small UX team on the redesign, and we don't have the capacity to include a broader group in that work.

(If you want to see what we're working on though, you can check out v2)

@Yasha08

This comment has been minimized.

Show comment
Hide comment
@Yasha08

Yasha08 Feb 27, 2018

No problems @kytrinyx. I'll surely check out the v2.

Yasha08 commented Feb 27, 2018

No problems @kytrinyx. I'll surely check out the v2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment