genericallyloud / codehike

A guide for finding paths and resources in the quest for climbing up code mountain! (learning how to code)
MIT License
7 stars 2 forks source link

Brainstorming (genericallyloud proposal) #3

Open genericallyloud opened 8 years ago

genericallyloud commented 8 years ago

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

pawan92 commented 8 years ago

"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. " i would think most of us are going through coding camps and self learning as a means to change careers not necessarily to supplement a CS degree. or as a hobby. there could also be CS majors but i think those are few. correct me if im wrong

If we are having a social features page (blog, announcements, etc.) i think we should get a core group of people to focus on this once we have the page created. they can be in charge of social media.

everything else sounds good to me

josephrexme commented 8 years ago

@pawan92 The description was just to make a point on the case and it may not be so precise. If that's how you see it then there's someone else who sees it completely different from what's been said and what you think. The objective is for anyone from any kind of background to find their way through trails in hikes. It's also recommended for anyone getting involved to focus on one hike at a time

Programazing commented 8 years ago

I think Hikes as an overarching idea is great but we might want to be a little more specific as well. Saying "Web Developer" is pretty generic as everyone uses different languages and methods to accomplish that. Do we want to be more specific with the Hikes or leave it more open ended?

If we leave it open ended then we would have to break down certain concepts as to what makes a generic "Web Developer" such as a language, a scripting langue, UI, data storage, etc.

josephrexme commented 8 years ago

Web development is specific to developing for the web but broader in so many ways when looked into. Anyone taking a web development hike would learn that it involves

I don't think there's a part of web development I haven't covered already in that list but there's more to each of those things. That's what makes a hike like a degree. What's computer science? what do they do? Should I use quick sorts or merge sorts? Those are questions that come much later. In that context, algorithms will be the trail, and each of those sorting algorithms will be a step in the trail. You can think of the hike as the entrance. Do I want to be a game developer or a web developer? oh I'll take a hike in web development. We aren't assuming you know anything about languages at that point to suggest the languages. In the process of the hike introduction you'll get exposed to concepts like languages applicable in the different trails you can take from there

Programazing commented 8 years ago

That brings up another question; Are Hikes continuous, since the journey of a developer is, or will the student have finished the hike after N number of Trails of XYZ type are completed?

genericallyloud commented 8 years ago

@Programazing So I mentioned "Web Developer" as a hike, but in reality it would be a single person's "Web Developer" hike, and in reality, should probably be called something more specific. There wouldn't be any hikes that were handed down from on high. Your list of things to learn in order to be a ruby developer would be a hike that you made. Then other people might decide to follow in your footsteps. Then someone else might come along and fork your hike and adjust it. With the ability to share and fork and give feedback and vote, over time I expect there would be some hikes which would be highly recommended and a lot of people would use. On the other hand, I expect there would also be a lot of "one off" hikes which are personal and nobody else even uses.

I wouldn't be surprised if forking and modifying became the most popular way of using hikes, but honestly this is where we need to start having a product and playing with it to know!

Sufuninja commented 8 years ago

How I would see this starting is allowing the users to start this from scratch. Say I was the first user ever. I would want to:

-Create a topic/trail "JavaScript" -Save my links to sites that helped me with that trail. "youTube/awesomeArray.video" -Update it as I progress. Copy/paste/delete others links. Comment on how it helped me. -View and/or follow the new user who is now Following me. -See a graph of my learning steps

-Now we have popular steps on this trail -Popular trails in your hike -Recommended next steps -Blaze Your Own Trail! -Congratulations! You Are Now A Trail Blazer with # followers!

The users would provide all of the content but the site would give them the power and structure to do it, right?

Sufuninja commented 8 years ago

What is the absolute minimum needed to allow the first user, to build my trail/hike? Then one by one other features will fall into place.

genericallyloud commented 8 years ago

@Will78006 Yeah, that's pretty much exactly how I picture it happening. The thing which is going to be critical is converging trails and steps (especially steps) where its useful. In a way, I think we'll be tackling some of the same types of problems that stackoverflow did - building a community, letting the community drive moderation and upkeep, figuring out the problem of duplication. Wikipedia also has some of those same issues.

Its certainly something that will evolve over time, and that's a good thing.

Sufuninja commented 8 years ago

Can we get a list together of the minimum pages we will need to make it work? Like Front/Landing Page User's Page Search/Results I'm new to this so I need to know exactly what I need to work on. One bite at a time

Sufuninja commented 8 years ago

@genericallyloud agreed. But to get a working model, broken and full of bugs or not, is vital for overall success and completion. If we can just get something up and useable, we can make changes as problem/solutions become more clear.

genericallyloud commented 8 years ago

I think we can probably let the ideas similar for a little bit longer. I think we're all kind of converging on the basics, so maybe we should start fleshing things out. I think something that would be really great everyone could do is start their own issue describing one user story and how they would imagine it should work.

Some user stories that it would be good for people to start thinking about (each as separate github issues):

By all means, work on some more, either more general or more specific.

genericallyloud commented 8 years ago

Once we start converging on a pretty good idea of roughly what we want and how to answer those questions, it might be good to start doing some wireframes and rough prototypes. I'm leaning towards rails to start with. We may stick with it, we may not, but I think we can get a prototype going fast.

Programazing commented 8 years ago

@genericallyloud I think it's a great idea to start outlining user stories. After we get a few fleshed out we should start an issue about which technologies we think would be best to use. I know it's more important to get our ideas and the details in focus first but I just wanted to bring that up.

genericallyloud commented 8 years ago

@Programazing we've been voting on technology through the trello board as well as a survey that is linked to in the chat topic. Node and ruby definitely seem like they're winning right now with a couple of people interested in python and java as well. React and postrgres were almost unanimous. For the start though, I'd like to hit prototype phase as fast as possible and stay agile with something easy to play around with. I think using rails is a fast way to go with that. I could also see someone going for a purely client side solution as a way of getting started as well.

jschwarzwalder commented 8 years ago

I see user stories for this project being "I'm new to coding and don't know where to start. I want a site that will give me some structure and focus on how to get started" or "I've been in testing for 10 years and that department is being down sized. I'd like to transition into making software but I don't know the language" or "I'm a recent graduate who is looking for their first job, and I am applying for a job at a company that uses MEAN, how can I quickly refresh myself on the the basics before my interview"