├── LICENSE ├── README.md ├── ROADMAP.md ├── certification.md └── getting-started-learning-nodejs.md /LICENSE: -------------------------------------------------------------------------------- 1 | LICENSE 2 | 3 | Graphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/ 4 | 5 | Code licensed under the MIT License (MIT) 6 | 7 | Copyright (c) 2016 Node.js Foundation 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in all 17 | copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25 | SOFTWARE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Education in Node.js 2 | ![welcome-taco](https://media.giphy.com/media/l2JHZ0dIcyFo5UQGQ/giphy.gif) 3 | 4 | Here we will ask fun questions like, 'what is education in [Node.js](https://nodejs.org/en/)?' 5 | 6 | Notice we didn't say 'answer'? This [repository](http://techterms.com/definition/repository) exists to explore what it means to be learning Node.js. Who uses it? How are folks learning it? How can we as a community make the experience better and inclusive for existing users and rad, diverse group of learners? 7 | 8 | - Looking for a few resources on how to start learning Node.js? [Check out our Getting Started](https://github.com/nodejs/getting-started) 9 | - Hop into [the Help repo](https://github.com/nodejs/help) to ask questions from our team of helpful contributors. 10 | - Interested in the Node.js Foundation Certification? [Look no further!](https://github.com/nodejs-certified-developer/certification) 11 | - Want an introduction to diversity inclusion, and unconscious bias? [Try this free training offered by our partners at the Linux Foundation](https://training.linuxfoundation.org/linux-courses/open-source-compliance-courses/inclusive-speaker-orientation). 12 | 13 | Please participate. File issues, PRs, and create the community you'd like to be a part of. If you need inspiration or have questions that you'd like to ask outside of issues, reach out to @hackygolucky on GitHub, Slack, or Twitter. 14 | 15 | 16 | -------------------------------------------------------------------------------- /ROADMAP.md: -------------------------------------------------------------------------------- 1 | This roadmap is a living document, and it is likely that priorities will change, but the items below should give some indication of education initiatives for this calendar year. 2 | 3 | ### Certification 4 | 5 | The Node.js Foundation (in partnership with The Linux Foundation) will be performing the following tasks to build and ship the Node.js certification: 6 | 7 | - Define Certification(s), the number of levels (parallel or sequential), titles, program goals 8 | - Define Scope Statement of Certification 9 | - Define the in-browser hosted exam environment which will be provided to candidates. Must be exactly reproducible and consistent in function. 10 | - Conduct job task analysis(JTA) which is to define the Domains of work and corresponding Tasks within each domain a Certification Candidate should be able to perform 11 | - Define the exam blueprint containing the specific exam Domains and Tasks and their relevant weight within the exam(Domains and Tasks will be opensourced. Blueprint will be secure and not public facing, testrunner will also be opensourced). 12 | - Publish determined domains and tasks for ecosystem to prepare complementary trainings with ample notice. 13 | - Write performance-based exam items (problems to solve) based on the Domains and Tasks defined by the JTA 14 | - Exam items must be written and formatted to comply with an auto-grade script that is run on answers provided (i.e. machine-gradeable) 15 | - Consideration of non-English speaking users including items written in a way that they are translatable 16 | 17 | - Provide subject matter expert (SME) support and review to 18 | - Script and program the exam items 19 | - Set-up Certification registration portal 20 | - Deploy the exam 21 | 22 | - Conduct secure pilot testing (alpha, beta) 23 | - Determine the exam passing score via psychometrician-led standard setting process 24 | - Support the public launch of the exam including program marketing 25 | - Manage certification program including: 26 | - Creation and documentation of program policies and procedures (Candidate Handbook, Candidate Agreement, etc.) 27 | - Technical support and help desk 28 | - Candidate appeals and sanctions considerations 29 | - Regular SME advisory from cert advisory board and consultants 30 | - Regular renewal of job analysis and item creation (example: every 3 years) 31 | 32 | 33 | 34 | Work may be organized into committees or subcommittees representing, but not limited to the following: 35 | 36 | - Job Analysis Committee--define the Domains of work and corresponding Tasks within each domain a Certification Candidate should be able to perform 37 | - Item Writing Committee--writing/developing the individual item tasks into problems for the exam. 38 | - Standard Setting Committee--will set the passing/cut score. This process is led by the psychometrician. Aggregation of scores weighted by the committee. 39 | - Certification Advisory Board--perspectives from industry experts for the cert lead(education community manager) for essential decisions related to standards, policies, and procedures of the certification. 40 | 41 | Work will be divided into collaborative group sessions and individual self-paced assignments in accordance with projectschedule. Time commitments will vary. 42 | 43 | ### Docs 44 | 45 | TBD 46 | 47 | ### Resources for learning Node.js 48 | 49 | TBD 50 | -------------------------------------------------------------------------------- /certification.md: -------------------------------------------------------------------------------- 1 | ## Node.js Certified Developer 2 | 3 | In December 2016, the Node.js Foundation held an in-person development workshop 4 | after Node.js Interactive North America to accelerate work on its new Node.js 5 | Certified Developer program. 6 | 7 | The certification program aims to establish a baseline for competency in 8 | Node.js. While not an expert in all areas, developers who pass the certification 9 | will be able to hit the ground running with Node.js professionally. 10 | 11 | The Job Task Analysis (JTA) working group determined specific topics for the exam 12 | and the skills, knowledge, and abilities a certified candidate should be able to 13 | demonstrate to become a Node.js Certified Developer. 14 | 15 | The process for our workshop is explained below. We’ll start with a few 16 | premises! 17 | 18 | **Please see [this repo](https://github.com/nodejs-certified-developer/certification) for activity specific to certification development.** 19 | 20 | ------------ 21 | 22 | #### We are certifying early Intermediate level developers. 23 | 24 | Developers who certify cannot do everything, but hit the ground running with a 25 | Node.js job. 26 | 27 | Considering the constraints of the exam environment (isolated and proctored), we 28 | needed to address concerns around security, exam item exposure, and cheating. 29 | Discussions spanned the full gamut of what we use on a day to day basis as 30 | Node.js developers. Amongst resources considered to have available/unavailable: 31 | 32 | - Google search 33 | - Lodash, underscore 34 | - JavaScript frameworks 35 | - Node.js frameworks 36 | - Testing frameworks 37 | - A white list of modules 38 | - Keeping resources within VM 39 | - Potential of developers to create npm packages that have answers pre-coded and 40 | this can be logistically taxing to monitor by the Certification team. 41 | 42 | The issue of the programming environment candidates would encounter as part of 43 | the certification was discussed at length as well. Considerations included: 44 | 45 | - Important to be vendor-neutral, no lock-in 46 | - Tiers of support for Node.js were talked about: Linux, Mac, Windows. Ways to 47 | provide a single environment but account for those who develop outside of OSX 48 | so they are not penalized. 49 | - Make sure we're covering the approximate quirks that different operating 50 | systems have in the answer logic/testing 51 | - Write agnostic JavaScript/Node.js items 52 | - Infrastructure may be provided by a third party with constraints as yet 53 | unknown 54 | 55 | ### Scope 56 | 57 | Participants individually attempted scope statements in writing and then 58 | presented them aloud while transcribed. The critical elements of each were 59 | highlighted, captured, and combined into a single scope statement. 60 | 61 | >Node.js Certified Developers can work proficiently in JavaScript with the 62 | Node.js platform to build, debug, test and maintain secure framework-independent applications and CLI tools.   63 | 64 | >They are capable of handling asynchronous I/O effectively and efficiently 65 | to manipulate, transform and persist various data using HTTP, files, 66 | streams, and multiple processes.  They can leverage and integrate 3rd party 67 | modules effectively.   68 | 69 | ### The Topics! 70 | 71 | The next order of business was to determine the primary domains of performance. 72 | Participants named many topics, which were then transcribed and posted on large 73 | (24” x 36”) Post-It sheets.  As we converged on ideas, it was realized that some 74 | topics were out of scope, others could be captured under another domain.  The 75 | determined Domains are: 76 | 77 | Below is the final blueprint. 78 | 79 | | # | DOMAIN | WEIGHT | 80 | |:--: |--------------------------------------------------------------- |:------: | 81 | | 1 | **Unit Testing** | 5% | 82 | | 2 | **Diagnostics** (Basics, Debugging, Performance) | 5% | 83 | | 3 | **http(s) TCP** | 11% | 84 | | 4 | **Events** | 9% | 85 | | 5 | **Child Processes** (Basics, no IPC/fork) | 7% | 86 | | 6 | **Buffers and Streams** | 9% | 87 | | 7 | **Error Handling** | 7% | 88 | | 8 | **File System** | 7% | 89 | | 9 | **Control flow** (Async tasks, Callbacks) | 10% | 90 | | 10 | **CLI** (-E, -R, etc) | 3% | 91 | | 11 | **Package.json** | 5% | 92 | | 12 | **Javascript Prerequisites** (Closures, prototypes, var/let/const) | 6% | 93 | | 13 | **Security** (Basics only) | 5% | 94 | | 14 | **Module system** (Scope) | 6% | 95 | | 15 | **Process/Operating System** (no IPC) | 5% | 96 | | | Total | 100% | 97 | 98 | The most valuable and heated discussions of this workshop was in determining 99 | these weights. The diversity of roles that were giving input to the 100 | weights--hiring managers, trainers, teachers, and developers of a wide range of 101 | experience levels is key in finding confidence in the selected weights. It is 102 | important to note that we will monitor the performance of candidates in alpha 103 | and beta testing to determine whether these need to be adjusted for setting a 104 | passing score. 105 | 106 | Individual tasks were written for each domain and subtopic, however the working 107 | group did such a great, detailed job that we risk exposing potential questions 108 | for the exam. These tasks will the foundation of the Item Writing development 109 | phase. 110 | 111 | ### Testing Details 112 | 113 | A test length of 3 ½ hours was deemed appropriate for the scope of the exam and 114 | for human comfort/attention span. The test time includes introductory material, 115 | practice items, instructions regarding control structure, as well as final 116 | instructions regarding results reporting. 117 | 118 | The test will consist of approximately 30 items, depending on the results of 119 | Beta testing.  The test will be comprised of one form with item variants for 120 | security purposes. 121 | 122 | Writing, editing and testing code are going to be the assessment mechanisms used 123 | in this exam.  In some items, partial code will be provided to the candidate to 124 | reduce the time required to demonstrate the skills to be evaluated.  In other 125 | contexts, the candidate would write an entire program. 126 | 127 | No prerequisites or credentials are required to take the examination.  This has 128 | to be stated for those who are not familiar with certification programs. 129 | 130 | ### Recertification Interval 131 | 132 | Recertification requirements and interval: 133 | 134 | 1. Regulatory requirements:  there are no regulatory requirements for Node.js. 135 | 2. The exam will reflect changes to normative documents annually with LTS cycle. 136 | 3. The exam will reviewed and updated every 2 years   137 | 4. The LTS release support cycle reflects the nature and maturity of the industry or field in which the certified person is working. 138 | 5. The risks resulting from an incompetent person include the following:  bad hire; lost recruitment money; incremental training costs; missed deadlines. 139 | 6. Ongoing changes in technology, and requirements for certified persons are reflected in ES releases 140 | 7. Requirements of interested parties were taken into account in formulating the task force, and will be included in guiding bodies for updating and revision of the exam. Interested parties include: 141 | - Programmers Training companies Foundation Consultancy companies 142 | - Organizations using Node Hiring managers 143 | 8. No surveillance activities are planned to evaluate certificants on an ongoing basis. 144 | 145 | ### Test Retake Interval 146 | 147 | In order to maintain current certification, certificants will be required to 148 | retake the Node.js certification exam every two years.   149 | 150 | ### Exam Review Interval 151 | 152 | Because of changes to the Node language, every two years the exam will be 153 | reviewed for content appropriateness and accuracy.  If it is determined that the 154 | exam needs substantial revision, then another JTA will be undertaken. 155 | 156 | ### Recommended learning materials 157 | (to be refined and moved to a separate document) 158 | 159 | A subset of these will be provided as part of the isolated exam environment. 160 | 161 | - Node docs 162 | - node_modules readme files 163 | - MDN JavaScript docs 164 | - Package.json docs 165 | 166 | #### Books 167 | - [Eloquent Javascript](http://eloquentjavascript.net/) 168 | - [HTTP – the Definitive Guide](http://shop.oreilly.com/product/9781565925090.do) 169 | - [HTTP Developer’s Handbook](https://www.amazon.com/gp/search?index=books&linkCode=qs&keywords=9780672324543) 170 | - [Node Cookbook](https://www.packtpub.com/web-development/node-cookbook-second-edition) 171 | - [Node Up and Running](http://chimera.labs.oreilly.com/books/1234000001808/index.html) 172 | - [Node.js in Action](https://www.manning.com/books/node-js-in-action-second-edition) 173 | - [Node.js the Right Way](https://pragprog.com/book/jwnode/node-js-the-right-way) 174 | - [You Don’t Know JS](https://github.com/getify/You-Dont-Know-JS) 175 | 176 | #### URLs 177 | 178 | - IETF 179 | - [RFC 2616](https://tools.ietf.org/html/rfc2616) 180 | - [RFC 7230](https://tools.ietf.org/html/rfc7230) 181 | - [RFC 7231](https://tools.ietf.org/html/rfc7231) 182 | 183 | #### Training Materials 184 | 185 | - [NodeSchool.io](https://nodeschool.io/) 186 | - [learnyounode](https://github.com/workshopper/learnyounode) 187 | - [scope-chains-closures](https://github.com/workshopper/scope-chains-closures) 188 | - [stream-adventure](https://github.com/workshopper/stream-adventure) 189 | -------------------------------------------------------------------------------- /getting-started-learning-nodejs.md: -------------------------------------------------------------------------------- 1 | #### Getting started learning Node.js 2 | In Node.js, it’s a challenge to keep learning materials up to date. There are a lot of great tutorials out there that may not be maintained for versions, so our short list here is some great ways to jump in. It is by no means the comprehensive list of ways to get started in learning Node.js! 3 | 4 | [NodeSchool.io](http://nodeschool.io) is an online, distributed community of Node.js folks learning and teaching one another. Take a look at https://github.com/maxogden/art-of-node alongside choosing some of these modules http://nodeschool.io/#workshoppers (a buddy to work with can be helpful here). 5 | 6 | If you’d like a refresher of JS or are new to the language, check out http://jsforcats.com/ first! 7 | 8 | -------------------- 9 | 10 | RisingStack also offers a great walkthrough. https://blog.risingstack.com/node-hero-tutorial-getting-started-with-node-js/ 11 | 12 | There are a few courses that are low cost and offer a more comprehensive getting-started experience(<$50 USD) as well: 13 | - https://www.coursera.org/learn/server-side-development (free but can pay a little for more services such as a certificate of completion and grading) 14 | - https://www.udemy.com/the-complete-nodejs-developer-course-2/ $19 USD 15 | 16 | We can’t stress enough the power of others in helping your Node.js learning experience. Please check out our [docs](https://nodejs.org/en/docs/) and look for [your local Node.js event](https://nodejs.org/en/get-involved/events/). Check out [help](https://github.com/nodejs/help) for some great community members answering your queries asynchronously. We’re also [on IRC](http://webchat.freenode.net/?channels=node.js) and happy to answer questions. Say hi! 17 | --------------------------------------------------------------------------------