This is a community learning experiment. The idea is simple - use GitHub as a platform for teaching people coding skills as a group, where everyone is both a student and a teacher. The goal is to learn how to operate such a distributed classroom and then apply that pattern to other topics by other people.
You will learn how to build an application server using node and hapi. It will start with the basics and move on to more advance topic such as authentication, validation, application architecture, testing, and more.
You should feel comfortable writing simple functions in JavaScript, working with GitHub, using basic git commands, have a basic familiarity with node, and be able to pick up new subjects by reading tutorials and documentation.
We'll start from the basics and make our way to the most advanced topics. The way this course is structures, you can choose which assignments to participate in, so more experienced developers can "sit out" or help others during the basic assignments and participate when it gets to areas they are not as strong in. However, since teaching is one of the most effective ways to learn, participating early will improve the existing skills of advanced developers.
The assignment will include just enough information to get you going, but you will need to do most of the learning on your own by using the wide range of online resources available. However, the real benefit of this process will come from the code review of your Pull Request. This is where expert developers will review your work and provide you specific and actionable feedback.
First, read the Code of Conduct!
Simple, you start by forking this repo.
Every few days a new issue will be posted with an assignment
label. If you would like to participate in the assignment, try to solve it and when you are done, submit a Pull Request back to this repo. Make sure your code complies with the hapi community Style Guide.
While you wait for the assignment to close, take a look at what others are submitting and see if you can improve your own solution (borrow ideas, add tests, write example, update the documentation). If you see ways in which others can improve their solution, comment on their Pull Request.
Each assignment will have a close date. When the issues expires, one of the Pull Requests submitted will be picked and merged. Any follow up assignments will be based on the merged code.
Before starting the next assignment, make sure to rebase your fork to match the current master since only one Pull Request can be accepted.
There are lots of way you can help make this experiment succeed and help shape a new format for teaching development skills:
- Submit Pull Requests to improve this readme, add examples, write quick tutorials on how to work with git, etc.
- Look for issues with a
help wanted
label ornew contributor
label and help with those. - Randomly pick submitted Pull Request and review them, offering advice and helping others improve their skills.
Open an issue, it's free.