genericallyloud / codehike Goto Github PK
View Code? Open in Web Editor NEWA guide for finding paths and resources in the quest for climbing up code mountain! (learning how to code)
License: MIT License
A guide for finding paths and resources in the quest for climbing up code mountain! (learning how to code)
License: MIT License
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?
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.
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
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:
Consider it more like a "view" than an actual complete system.
Some more notes that I didn't add to the diagram:
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.
Github and slack are great - would anybody be interested in a hangout for more discussion, possibly on air/turned into a podcast type thing?
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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 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.
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.
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.
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.
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)
-I have yet to come up with ideas but please feel free to discuss. :(
I am wanting to switch jobs to another department or company that uses X. I want to find resources to help me learn X
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.
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.
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
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
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
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.
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.
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?).
If this project ever gets revived I'd be willing to help out.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.