Code Monkey home page Code Monkey logo

codehike's People

Contributors

genericallyloud avatar jschwarzwalder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

codehike's Issues

CodeHike Social Marketing

Everything related to social marketing to get the word out and attract new coders:
-through codenewbie of course
-blog (include monthly reports, new releases, fun articles, next steps, contributer of the month?)
-twitter handle?

User Story -- Contributor

I heard about this great open source project I want to be part of, but I don't know the language they are building it in. What resources are available to help me learn enough to contribute.

CodeHike Wiki

Ideas and topics regarding how we want to go forward regarding creating the wiki
should include but limited to
-GIT resources
-github resources
-help resources (google, stackoverflow, slack, gitter, etc.)
-information on each trail, each hike and possible hints how to solve them
#3

ER prototype

This is my take (first iteration) to #13.

Direct link: https://i.imgur.com/tXRvBPl.png

As I pointed out in the channel, it's far from complete or detailed. For instance:

  • it doesn't account for the differences between Regular users and Mods/Admin
  • it doesn't account for the possibility of external logins (google, facebook, twitter etc) and all those kind of things

Consider it more like a "view" than an actual complete system.

Some more notes that I didn't add to the diagram:

  • Reviews: I think reviews should be an important and active part of CodeHike. I mean, we all know how fast technology advances and how fast current things become outdated and obsolete. This will happen with resources too, but at a rate a couple orders of magnitude higher. Also, resources on internet have the bad habit of disappearing, links break, things get taken down. For this reasons I think reviews should be emphasized, in order to have many people keep an eye on them, being able to tell when a resources has gotten too old, if it's actually reliable, if it's complete and to what degree etc.
  • Badges: Like "achievements" in videogames. You know when you kill your 100th enemy and your console/steam tells you "Achievement Unlocked"? Yep, like that. It's part of the gamification.
  • Activity Graph (missing from the diagram): I think this should be something to add too. Basically, something like the GitHub contribution graph. It doesn't require its own entity in the diagram because it is actually computed, but I thought about getting this here too. The reason I think it's an useful addition is psychological: having a graph that shows your daily progresses helps people go on. It will create a feeling of not wanting to break the chain, and I find it a powerful tool for learning. Google "Seinfield Chain" for more details.

I think this is all for the current iteration. There will likely be more.

Let me know what you think of the current state and feel free to ask for any clarification.

Should we do a weekly hangout?

Github and slack are great - would anybody be interested in a hangout for more discussion, possibly on air/turned into a podcast type thing?

Logo

So I know this might seem a little early, but if someone wants to give logo making a try, it might be kind of fun. Feel free to assign yourself, or post one you made here. Also, people should feel free to post logos for inspiration. Something they like which has a style that could work for CodeHike.

User story -- New coder

As a new coder I go to code hike to learn basics to get started and see if coding is right for me. A place where I can be introduced to concepts and get recommendations for first skills to aquire

ERD for prototype

Does anybody want to try to tackle an Entity Relationship Diagram of the main entities. If you're not familiar with an ERD, check out this article, it gives a pretty good explanation/example: https://www.lucidchart.com/pages/what-is-ERD

Feel free to use that tool, google draw, paper/pencil, whatever. I'll make it within the next couple of days if nobody else does.

The bootstrapping problem

I think we all agree that the long term vision of CodeHike is about providing guidance for newbies so that they have more direction - a clear path to learning what they need to avoid stumbling around.

The problem is that CodeHike doesn't actually exist yet, and even when it does, it needs to be populated. There will be a period of bootstrapping where the interactions are going to be abnormal. I think its important that we think about this period of time, but I also don't want it to cloud the overall discussion. If there's some interaction which seems like a problem during bootstrapping, but not during post-bootstrapping (or vice versa), I think we should just acknowledge that and talk about it as its own problem. We should ideally plan for the post-bootstrapped world, and then we can think about temporary measures we can use to facilitate bootstrapping separately.

I was part of the stackoverflow beta (I've got my beta badge to prove it), and I remember a lot of the lessons learned during that time period. We'll probably want to follow a similar trajectory as that. We'll likely start with a closed alpha that just barely gets the ball rolling with just us putting in some data, scraping stuff together, then a closed beta which will hopefully get enough users who are curious/understanding, and those people will build the foundation of the community. We'll want to make sure we've got a solid base of trails before opening up the tools to everyone, with the most involved people from the beta being the leaders/moderators as the next generation comes in.

What is a Trail

Main Concept

A trail is a guided experience through a set of steps. It should not be too long, like "taking you from zero to web developer", probably no longer than a college course (even that's really probably stretching it). Smaller trails would also make sense, as not all topics require that much effort.

Unlike steps, which I envision as being a little bit more of a group effort, with several people allowed to supply suggestions for resources, etc., I picture a trail more like a singular vision, an opinionated path through an ordered set of steps, with tight control all the way down to recommended resources for a step as well as trail specific notes and descriptions for guiding a user through the steps to the end.

Trail Blazers

Most people will be hiking existing trails, but especially during the bootstrapping period, and even after, there will always be people making new trails. The world of tech is constantly changing, and while some trails will stay popular for a long time without much need for change, others will pop up or fork from existing trails to keep up with what people are learning, and wanting to learn.

I think that a trail should be able to be something that evolves organically, and so to be the most useful, it will likely be used as a tool for the trail blazer him/herself, starting lean and leaving room for details as they work through it themselves. I this way, it should probably be easy to work with, drawing inspiration from Trello or Asana, creating a list of steps largely in bulk in a sort of planning phase. There should probably be some mechanism to identify duplicate steps and make suggestions so that steps aren't duplicated unnecessarily. As the trail blazer builds up the trail, possibly going through the work themselves, they can rearrange, add steps, take notes, and recommend resources. These will all be made available in such a way that a hiker following them later could see them.

Hiking a trails

A hiker, on the other hand, would not actually need to edit the trails at all. They will see the steps that were set up for the trail in order, with any additional notes and recommended resources for steps as they go through it. While they're doing it, they can take their own notes and make their own recommendations for resources, but I'll cover that in another issue.

Open Questions

What exactly is the right size for a trail, and how much overlap is really appropriate. For example, a trail could possibly as small as "learning jQuery" and then have steps for the different aspects like selectors, chaining, events, plugins, etc. Meanwhile, there could be a trail for JavaScript. There is overlap, but the JavaScript trail would mostly be useful for specifically the language and not things like the DOM or libraries like jQuery. Not only that, but it seems like the kind of thing that could be broken down into 3 trails - beginner, intermediary, and advanced JavaScript. The same is probably true about all languages.

I'm wondering if maybe the right size is something like, between 10 and 60 hours of work? Anything smaller is too small, and anything larger is too big. I would expect somewhere between 4 and 20 steps. That raises the question of how big is a step. I think a step is probably equivalent to a chapter of a book or a section of an online course. It should be something that could probably be done in one sitting - about 30 mins to 2 hours.

User Story -- Business Reviews

As a person that runs a coding website or business, I want to see what people are saying about my product, and how many upvotes each part of my site recieves.

User Story - Start

As a general user I can find trails from the homepage without creating an account.

I should either be able to search tags, browse multiple categories, or complete something that will recommend a path.

Brainstorming (genericallyloud proposal)

Pitch

The demand for software developers is very high, and every year, there are more and more people who are abandoning or supplementing a mainstream college Computer Science education and utilizing coding bootcamps, online tutorials, meetup groups, and other means of non-standard or self-taught education. There are many, many, resources out there, some of which are intended to be a complete package, but most of which are not. Even the ones which claim to be complete, are only complete for some narrow definition. There are many different starting places, and many different destinations. No single solution has it all. Even resource guides which point to external resources can't cover the widest range of users without community driven content.

CodeHike is an attempt at providing trails and guides through the wilderness that is alternative coding education. More than just a list, or a list of lists, CodeHike would allow for trail blazers to provide hand crafted trails and guides through a series of steps that would then be very easy for others to follow, so that they aren't left bushwhacking.

Summary

CodeHike would be community driven and social so that the number of trails could be large, covering a wide range of topics, and possibly even competing in some areas. With feedback and social interactions and reviews, the best trails would float to the top and even co-exist on the same topic for people who want to take different approaches. Long term social interactions would also mean that people could "hike together" and help each other, constantly feeding back into what resources and what paths through them are the best.

The primary building blocks of CodeHike are steps, trails, and hikes. A step is single topic, a thing to learn. Each step has a description and a list of resources for actually learning it. A trail is a larger goal. It is made up of a series of steps that offer an opinionated path of how to get to the goal. For example, a trail might be "Beginner's JavaScript", and a step on that trail might be "JavaScript Closures". A hike would be something even larger than a trail, like "Web Developer", and it would be made up of trails.

To bring it back to mainstream education, a hike would be like a degree, a trail would be like a course, and a step would be like a lesson. The reason for coming up with our own vocabulary, and using the hiking metaphor, is to get away from any misconceptions those terms would lead to, as well as keeping the theme fun, and allowing ourselves to diverge and implement something that works the best without feeling beholden to that terminology.

Hikes, trails, and steps would all be community created, so anything missing or outdated could be added or updated. Steps would be the highest traffic/most shared components. They would be able to be shared between different trails and would be community resources, almost like a wiki entry. Trails and hikes would be a bit more like a github repo - created and controlled by a single owner, but allowing for collaborators, contributions, and forks.


TODO

Details

Steps

Resources

Trails

Trail Guide

Hikes

Hikers

Social Features and Gamification

Minimum Viable Product

Long Term Feature Ideas

What is a Step

Main Concept

I was thinking about Steps as being kind of similar in a way to a StackOverflow question. It would be composed of a description (kind of like the question itself), followed by a list of resources (kind of like answers) which can be used to complete the step (learn the topic). Each resource would be a link and a description.

Community Feedback/Moderation

Community feedback would be an important part of Steps. The Step itself could be up/down voted. The resources could also be up/down voted. Also like stackoverflow, people could leave comments about the resource to give feedback. Possibly instead of up/down voting, the comments would be star reviewed, a bit more like Amazon product reviews. The best resources would float to the top, but the description and comments would be helpful for people to decide which (one or more) resources make the most sense for them. Different kinds of people learn differently.

I think other features from stackoverflow would also make sense - community editing of descriptions for both steps and resources, as well as community moderation for trying to merge steps that are basically the same (also like wikipedia). I think a reputation system similar to stackoverflow would also make sense as a way of giving people privileges and encouraging participation.

Location Metaphor

I also think that having steps as a place on the trail makes sense. A step is where you are. You should see what other hikers are currently on that step, or at least see how many. There might be some privacy stuff around this. You could possibly chat with them for help if they wanted to. I also think that since steps can be used from multiple trails, it might be interesting to see what other trails intersect at this same point.

Trail Integration

Steps are part of trails, and so even though the step can be shared among many trails, each trail should be able to provide additional customization. For example, the trail could have recommended resources as well as its own custom text/description for the step. In other words, the step by itself has most of the actual content - description, resources, etc. but when it gets included as part of a trail, the person making that trail can basically leave additional notes about it. This is part of a larger concept of "Trail Guides" I'll write about as a separate issue.

Where Trail Guide integration would be for the creator of the trail, I also picture having a Field Journal feature which lets the person following the trail to take notes which would also be integrated with the steps. I'll elaborate about this in another issue as well.

Other ideas

  • Having steps allow for pre-reqs? Just having them be in trail might be good enough, but maybe it would make sense to know that Basic Foo is required before Advanced Foo? Having trouble coming up with good examples, but I think there's probably a bunch.
  • Tags for steps and resources? The primary thing I would expect to be language, so that you could have a generic step with language specific resources. Tags could also be things like Book, Online Course, Blog Post, Costs Money, that kind of thing.

User Story - Educator Trail Maker

As an educator I want to build a trail specifically for my students. I would likely make a step for each week and list the chapters in the book students should read, but also I would like to link to outside resources that can help my students get unstuck.

I might want the trail to be private or unlisted available to students with a direct url link Even if they do not have a code hike account.

User Story -- Worker Reentry

I am an adult who has not been in workforce for 3 or more years. All my knowledge is out of date and I want to learn what I should focus on to be marketable. What is the fastest path to a career. (One for someone with computer science experience and one with no coding experience)

User Story -- Job Seekers

I am wanting to switch jobs to another department or company that uses X. I want to find resources to help me learn X

User Story -- Feedback Submission

As a learner who has an active account, I can submit suggestions for new resources or flag unavailable resources on a step.

If a link is broken, or costs $ but isn't labeled than I should be able to flag it for removal, or submit a message to a human who will investigate and "fix" it if there really is an error.

If I have a suggestion for a new resource I can submit a message to a human and it will automatically send what step I want to add it, and prompt me for details about my resource. It will also ask me to include my email address incase follow up is needed.

An email should be sent to learner when issue is submitted, and when it is resolved. Ideally with details of the solution.

User Story - Trail Maker

As someone who wants to share knowledge about a topic, I can use a form to submit Steps and Resources I think should be in a trail.

I might also be able to save a draft and continue editing it until I'm ready to submit.

Status would change from Draft, Reviewing, Published.

User Story -- Resources

As a user looking at a Step I can see a list of resources that might help me complete a step.

I can read a one sentence description that tells me what the resource's teaches (ie this visually displays how algorithms work, or Code along to build a Wordpress Theme)

There is a visual indication on what type of resource it is (video, book, code playground, or article), and some indication whether it is 100% free, subscription, or one time purchase.

Optional: List the price, list estimated length of time.

I can bookmark the resource to my profile, email it to myself or a friend or (optional) share it on social media and stack overflow

User Story -- Student Supplements

I am a student and we are learning a language or a framework. I don't get a concept in the book or from my professor and I want to find supplemental learning tool to learn it

User Story - Find Trail

As a site user I should be able to find trails by skill level, language, or by resource type.

Potential others: estimated length, popular, user rating

User Story - Profile

As a site user I should be able to create a profile where I can track progress on a trail, store bookmarks of resources, link to online portfolios/sample projects, and list information about who I am and what my learning goal is for the sites community.

User story -- Employee Training

I work for a company that is going to implement something new. I want to learn about it quickly so I can use it in my daily work or start a side project to be more comfortable when it rolls out.

User Story - New Trail Maker

I am a learner who wanted to learn a language or a framework but it was not available on Code Hike. I had to find resources on my own but now that I've learned some things I want to start a trail or a step on Code Hike so others can follow my path.

I may not be confidant that my trail is complete but want to start and let others edit and build on.

I need to have an account and be able to start building a trail that I can share with others (internal or external link?).

Still Here

If this project ever gets revived I'd be willing to help out.

User Story: How to Get Started

The user starts out on the homepage and at the top, on a simple menu bar (like StackOverflow or GitHub), clicks something like "Go hiking" or "Hit the Trail."

The user lands on a central page that maybe we'd call "Camp" (Base Camp sounded too copyrighted) or something in line with our hiking theme. There they would have all of their Trails laid out before them so they could easily be able to pick something. I like the idea of the paths being in large boxes with some information about that trail inside of it. Something similar to Codecademy's catalog.

codecademy

If the user has not started a trail yet there would be a blank box that says something like "Get Started!" that would take the user to a simple walkthrough tutorial. I like videos but I like the idea of walking the user through setting up their first project. There would also be an option in that box that says "No Thanks" to let them just wing it.

That's how I envision someone getting started or just getting to their Trails.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.