[
  {
    "path": "FAQ",
    "content": "Last updated April 3, 2018\n\nThe Node.js Certified Developer (NCD) designation is desgined to provide a vendor agnostic evaluation of the capabilities of a developer to develop Node.js this means a  Node.js Certified Developers can work proficiently in JavaScript with the Node.js platform to build, debug, test and maintain secure framework-independent applications and CLI tools.  They are capable of handling asynchronous I/O effectively and efficiently to manipulate, transform and persist various data using HTTP, files, streams, and multiple processes.  They can leverage and integrate 3rd party modules effectively.  \n\nThe certification program aims to establish a baseline for competency in Node.js. While not an expert in all areas, developers who pass the certification will be able to hit the ground running with Node.js professionally.\n\nNode.js Foundation is worked closely with The Linux Foundation to create the blueprint and process for administering the program. The Linux Foundation offers a neutral home for running training and certification programs, thanks to its close involvement with the open source community. It offers several open online courses (MOOCs), including an Intro to Linux, Intro to DevOps: Transforming and Improving Operations; Developing Applications for Linux; Kubernetes Fundamentals; among many others.\n\nCurrent status of the NCD (April 2018) \n\nWe are currently working to test and make sure the testing environment is conducive to effective administration of the Node.js Developer Certification test. \n\nIf you have signed up to participate as part of the beta we will contact you as soon as possible for you to take the NCD. Or if you'd like to sign-up for early access you can do so here - https://docs.google.com/forms/d/e/1FAIpQLSfCGtf0dDqYSFOzTZQANzjKOqvZn0g2-s7nVvQzmwRfIiotxA/viewform \n\nTo stay informed on the latest updates around the Node.js Certification we suggest you watch this repo on Github. \n"
  },
  {
    "path": "ITEM_WRITING.MD",
    "content": "# Item Writing\nPublic facing Item Writing development repository for the Node.js Certified Developer exam  \n\n*This repository is a reflection of project work collaborated on in private repositories to maintain the integrity of the exam questions.*\n\n![bmo dancing](https://media.giphy.com/media/10bxTLrpJNS0PC/giphy.gif)\n\nThe Item Writing development is being held as a series of online, distributed webinars and collaborative video sessions to allow for global contribution. There are 30 item writers--one per question. A smaller subset of these folks comprises the Item Writing Review Team(IWRT). This group, 12 people, is responsible for reviewing items written, honing unsatisfactory items, and holding consensus/leveling meetings with the other members of the IWRT to finalize the question set. We're aiming for item writers to not be able to view questions in progress outside of the domain to which they are working on, so that they can remain eligible to be certified if they wish to do so. The IWRT will more likely be exposed to enough questions that this will be difficult to allow. \n\n[Full Node.js Certific Developer content topic list](https://github.com/nodejs/education/blob/master/certification.md#the-topics)\n\nTime commitment for the Item Writing team: \n- 1.5 hour intro webinar to learn the format and how to write the question(s)--item writers & IWRT\n- 2 to 5 hours independently writing and reviewing the question with Item Writing Review Team members--items writers & IWRT\n- 5 to 6 1-hour online meetings to reach consensus, group review, and level items--IWRT only\n\n# Node.js Item Writing Handbook\n\n**Folks to reach out to**\n*Cert Team*\n- Tracy (@hackygolucky)\n- Liz Kline\n- Wallace Judd\n  \n**Item Writing Review Team**\n- Rajat\tKumar\n- Ryan Lewis\n- Nathan White\n- David\tClements\n- Bradley\tFarias\n- Evan Lucas\n- Matteo Collina\n- David\tGonzalez\n- Ashley Williams\n- J P Wesselink\n- Todd Kennedy\n- Duncan Hall\n- Bryan\tEnglish\n\n**Item Writers**\n- Alex Young\n- Chetan Karande\n- Diogo Resende\n- Nikita Galkin\n- Rachel White\n- Rafał Pocztarski\n- Ruairi O'Donnell\n- Ruy Adorno\n- Sean Canton\n- Suhas Deshpande\n- Suman Kunwar\n- Thomas Hunter II\n- Tierney Cyren\n  \n### SCHEDULE\n\n2 weeks – Currently – create two item templates for Node.js  \n1 week  – conduct 3 webinars for author training  \n3 weeks – April 25 - May 15 –  time for authors to submit items  \n1 week –  May 15 - 22  –  review items & assemble preliminary test \n  \n**UPDATED TIMELINE**\n- [x] Preliminary user/market research, project planning, and JTA recruitment\n  - May - September 2016\n- [x] JTA workshop to establish domains and weighting\n  - December 2016\n- [x] Determine and procure infrastructure partner\n  - January - March 2017\n- [x] Item Writing recruitment and development(ongoing)\n  - April - Current 2017 \n- [ ] Alpha testing\n  - December 2017\n- [ ] Beta I: early access, 40 candidates\n  - January 2018\n- [ ] Beta II and establish cut score: 100 candidates\n  - February 2018\n- [ ] QA testing\n  - March 2018\n- [ ] General Release\n  - March 2018\n- [ ] Review for Node.js bugs and exposure(every month)\n- [ ] Workshop to revise for LTS update and exposure\n  - October 2018\n  \n### ITEM WRITING\nItem writing development occurs in GitHub and is tested in a sandbox within the HackerRank infrastructure, where the in-browser hosted Node.js environment will live for the Node.js Certified Developer exam. We’ll be backing up all items as private repositories in GitHub. A repository has been established with tight permissions to account for atomic work and allow for item writers to not be exposed to so many exam items that they themselves could not certify.\n\n#### The Questions\n\nThere will be a total of 32 items on the Node.js Certified Developer exam. We will have 5 variants of the exam overall. This allows for reducing exposure and potential cheating on the exam. \n  \nWe will have 10 anchor items, the same on all exams.  \nWe will need 22 unique items on each form.\n\nItem writers will create one question with 4 variants.\n  \nItem writers, along with Item Writing Review Team members, will submit their items via a fork and pull model. IWRT members will review and comment on submitted items for consistency\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2017 Node.js Certified Developer exam production\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "## Node.js Certified Developer\nPublic facing repository to document and update community on Node.js Certified Developer project development\n\n*This repository is a reflection of project work collaborated on in private repositories to maintain the integrity of the exam questions.*\n  \nIn December 2016, the Node.js Foundation held an in-person development workshop\nafter Node.js Interactive North America to accelerate work on its new Node.js\nCertified Developer program. The Job Task Analyis(JTA) working group determined specific topics for the exam\nand the skills, knowledge and abilities a certified candidate should be able to\ndemonstrate to become a Node.js Certified Developer.\n\nThe certification program aims to establish a baseline for competency in\nNode.js. While not an expert in all areas, developers who pass the certification\nwill be able to hit the ground running with Node.js professionally.\n\n\n**Please see [this](https://github.com/nodejs-certified-developer/certification/blob/master/ITEM_WRITING.MD#item-writing) for activity specific to the active item writing development phase.**  \n  \n------------\nThe process for these workshops is explained below. We’ll start with a few\npremises!\n\n#### We are certifying early Intermediate level developers.\n\nDevelopers who certify cannot do everything, but hit the ground running with a\nNode.js job.\n\nConsidering the constraints of the exam environment (isolated and proctored), we\n needed to address concerns around security, exam item exposure, and cheating.\n Discussions spanned the full gamut of what we use on a day to day basis as\n Node.js developers. Amongst resources considered to have available/unavailable:\n\n- Google search\n- Lodash, underscore\n- JavaScript frameworks\n- Node.js frameworks\n- Testing frameworks\n- A white list of modules\n- Keeping resources within VM\n- Potential of developers to create npm packages that have answers pre-coded and\nthis can be logistically taxing to monitor by the Certification team.\n\nThe issue of the programming environment candidates would encounter as part of\nthe certification was discussed at length as well. Considerations included:\n\n- Important to be vendor-neutral, no lock-in\n- Tiers of support for Node.js were talked about: Linux, Mac, Windows. Ways to\nprovide a single environment but account for those who develop outside of OSX\nso they are not penalized.\n- Make sure we're covering the approximate quirks that different operating\nsystems have in the answer logic/testing  \n- Write agnostic JavaScript/Node.js items\n- Infrastructure may be provided by a third party with constraints as yet\nunknown\n\n### Scope\n\nParticipants individually attempted scope statements in writing and then\npresented them aloud while transcribed. The critical elements of each were\nhighlighted, captured, and combined into a single scope statement.\n\n>Node.js Certified Developers can work proficiently in JavaScript with the\nNode.js platform to build, debug, test and maintain secure framework-independent applications and CLI tools.  \n\n>They are capable of handling asynchronous I/O effectively and efficiently\nto manipulate, transform and persist various data using HTTP, files,\nstreams, and multiple processes.  They can leverage and integrate 3rd party\nmodules effectively.  \n\n### The Topics!\n\nThe next order of business was to determine the primary domains of performance.\nParticipants named many topics, which were then transcribed and posted on large\n(24” x 36”) Post-It sheets.  As we converged on ideas, it was realized that some\ntopics were out of scope, others could be captured under another domain.  The\ndetermined Domains are:\n\nBelow is the final blueprint.\n\n|  # \t| DOMAIN                                                        \t| WEIGHT \t|\n|:--:\t|---------------------------------------------------------------\t|:------:\t|\n|  1 \t| **Unit Testing**                                                  \t|   5%   \t|\n|  2 \t| **Diagnostics** (Basics, Debugging, Performance)                   \t|   5%   \t|\n|  3 \t| **http(s) TCP**                                                 \t|   11%  \t|\n|  4 \t| **Events**                                                        \t|   9%   \t|\n|  5 \t| **Child Processes** (Basics, no IPC/fork)                          \t|   7%   \t|\n|  6 \t| **Buffers and Streams**                                           \t|   9%   \t|\n|  7 \t| **Error Handling**                                                \t|   7%   \t|\n|  8 \t| **File System**                                                   \t|   7%   \t|\n|  9 \t| **Control flow** (Async tasks, Callbacks)                          \t|   10%  \t|\n| 10 \t| **CLI** (-E, -R, etc)                                             \t|   3%   \t|\n| 11 \t| **Package.json**                                                  \t|   5%   \t|\n| 12 \t| **Javascript Prerequisites** (Closures, prototypes, var/let/const) \t|   6%   \t|\n| 13 \t| **Security** (Basics only)                                         \t|   5%   \t|\n| 14 \t| **Module system** (Scope)                                          \t|   6%   \t|\n| 15 \t| **Process/Operating System** (no IPC)                            \t|   5%   \t|\n|    \t|                                                         Total \t|  100%  \t|\n\nThe most valuable and heated discussions of this workshop was in determining\nthese weights. The diversity of roles that were giving input to the\nweights--hiring managers, trainers, teachers, and developers of a wide range of\nexperience levels is key in finding confidence in the selected weights. It is\nimportant to note that we will monitor the performance of candidates in alpha\nand beta testing to determine whether these need to be adjusted for setting a\npassing score.\n\nIndividual tasks were written for each domain and subtopic, however the working\ngroup did such a great, detailed job that we risk exposing potential questions\nfor the exam. These tasks will the foundation of the Item Writing development\nphase.\n\n### Testing Details\n\nA test length of 3 ½ hours was deemed appropriate for the scope of the exam and\nfor human comfort/attention span. The test time includes introductory material,\npractice items, instructions regarding control structure, as well as final\ninstructions regarding results reporting.\n\nThe test will consist of approximately 30 items, depending on the results of\nBeta testing.  The test will be comprised of one form with item variants for\nsecurity purposes.\n\nWriting, editing and testing code are going to be the assessment mechanisms used\nin this exam.  In some items, partial code will be provided to the candidate to\nreduce the time required to demonstrate the skills to be evaluated.  In other\ncontexts, the candidate would write an entire program.\n\nNo prerequisites or credentials are required to take the examination.  This has\nto be stated for those who are not familiar with certification programs.\n\n### Recertification Interval\n\nRecertification requirements and interval:\n\n1. Regulatory requirements:  there are no regulatory requirements for Node.js.\n2. The exam will reflect changes to normative documents annually with LTS cycle.\n3. The exam will be reviewed and updated every 2 years    \n4. The LTS releases support cycle reflects the nature and maturity of the industry or field in which the certified person is working.    \n5. The risks resulting from an incompetent person include the following:  bad hire; lost recruitment money; incremental training costs; missed deadlines.   \n6. Ongoing changes in technology, and requirements for certified persons are reflected in ES releases    \n7. 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:\n  - Programmers, Training companies, Foundation and Consultancy companies\n  - Organizations using Node Hiring managers\n8. No surveillance activities are planned to evaluate certificants on an ongoing basis.\n\n### Test Retake Interval\n\nIn order to maintain current certification, certificants will be required to\nretake the Node.js certification exam every two years.  \n\n### Exam Review Interval\n\nBecause of changes to the Node language, every two years the exam will be\nreviewed for content appropriateness and accuracy.  If it is determined that the\nexam needs substantial revision, then another JTA will be undertaken.\n\n### Recommended learning materials\n(to be refined and moved to a separate document)\n\nA subset of these will be provided as part of the isolated exam environment.\n\n- Node docs\n- node_modules readme files\n- MDN JavaScript docs\n- Package.json docs\n\n#### Books\n- [Eloquent Javascript](http://eloquentjavascript.net/)\n- [HTTP – the Definitive Guide](http://shop.oreilly.com/product/9781565925090.do)\n- [HTTP Developer’s Handbook](https://www.amazon.com/gp/search?index=books&linkCode=qs&keywords=9780672324543)\n- [Node Cookbook, 3rd Ed.](https://www.amazon.co.uk/Node-Cookbook-Actionable-solutions-development/dp/178588008X)\n- [Node Up and Running](http://chimera.labs.oreilly.com/books/1234000001808/index.html)\n- [Node.js in Action](https://www.manning.com/books/node-js-in-action-second-edition)\n- [Node.js the Right Way](https://pragprog.com/book/jwnode/node-js-the-right-way)\n- [You Don’t Know JS](https://github.com/getify/You-Dont-Know-JS)\n\n#### URLs\n\n- IETF\n  - [RFC 2616](https://tools.ietf.org/html/rfc2616)\n  - [RFC 7230](https://tools.ietf.org/html/rfc7230)\n  - [RFC 7231](https://tools.ietf.org/html/rfc7231)\n\n#### Training Materials\n\n- [NodeSchool.io](https://nodeschool.io/)\n  - [learnyounode](https://github.com/workshopper/learnyounode)\n  - [scope-chains-closures](https://github.com/workshopper/scope-chains-closures)\n  - [stream-adventure](https://github.com/workshopper/stream-adventure)\n"
  },
  {
    "path": "RFP fo Node.js Certification Maintainence.md",
    "content": "# Request For Proposal - Node.js Certification Maintenance\n\nThe Node.js Foundation is requesting proposals from highly qualified consultants with demonstrated expertise in providing Node.js technical consultation and technical support services which may include technical planning, coordination, implementation and consultation.\n\n## Introduction: Summary of the intended procurement\n\nThe Node.js Foundation intends to award a contract for proposed technical support and consulting services that are expected to be performed for a two year term which shall be from [date] through [date]\n\nThis RFP has specific vendor requirements. Proposals will only be accepted by vendors that meet those requirements.\n\nThe successful vendor shall abide by all provisions of the proposed Agreement (see Attachment A).\n\nPayment for the services set forth in this RFP is anticipated to be as indicated on the attached Cost Proposal Summary Sheet (Attachment C)\n\n## Project Scope and Approach\n\nAs the launch of The Node.js Certification exam goes into alpha we are trying to identify the appropriate resources to maintain the certification exam in the long-term. We are gathering requirements to maintain the exam and define the requirements of a Technical Certification Maintainer. Requirements will be discussed among a group of collaborators, Node.js Foundation members and the Node.js Foundation personnel and contractors. \n\nThe Node.js Foundation is requesting proposals from highly qualified and experienced technology consultants who have the capability of providing technical staff members to support the technology for The Node.js Foundation Certified Developer Program. The support personnel shall be expected to provide support for the Node.js Foundation, 24 hours per day, and 5 days a week. Special Project Assignments may require work to be done before 8 A.M. and/or after 5 P.M. and/or on the weekend.\n\n## Required Services to Be Provided:\n\n- Support Services including:\n  - Information technology planning, coordination, migration and consultation and implementation support\n  - Maintenance and insuring ongoing operations\n  - Performance monitoring procedures, documentation, knowledge transfer, periodic strategic planning sessions\n- Planning & Program Coordination including:\n  - Vendor will have overall responsibility for the initiatives and priorities (including policy proposals, operation, guidelines, and strategic plans) are reviewed by the Node.js Certification Committee.\n  - Vendor is expected to appoint a Technical Lead. The Technical Lead will present any initiatives or recommendations to the Node.js Committee. \n\n## Scope of Work\n\nScope of work shall include, but shall not be limited to:\n \n- Manage the uploading of Node.js Certified Developer questions into Github\n- Verifying questions are properly loaded in the NCD Test Environment\n- Collaborative analysis and long-range planning\n- Assist in the development, evaluation, implementation of policies and procedures\n- Assist in efforts to improve performance\n- Provide advice and support in dealing with migration efforts to LTS version of Node.js\n- Resolve Node.js issues in accordance with industry standard and acceptable maintenance and support benchmarks. \n- Consult and resolve technical issues and to ensure that there is NO significant issues. \n- Report on status of technology issues and communicate effectively with The Node.js Foundation.\n- Respond to and correct technical bugs in a the alpha-test and subsequent versions of the Node.js tests and releases and upload into the hosting environment.\n- Incorporate changes to reflect updates to latest Node.js LTS version\n- Take feedback from a collaborative group of reviewers\n- Meet technical support service levels for Node.js Certified Developer Program\n\n## Qualifications \n\nIn order to participate in this RFP process, a proposer must meet the minimum qualifications threshold listed below. Minimum requirements can be met by combining experience, expertise, and resources of vendor.\n \n- Vendor has completed at least two (2) projects of a scope similar to that anticipated by this RFP in the past two (2) years (reference Attachment B)\n\n## Submission of Proposals\n \nCost proposals must be received by [date] to The Node.js Foundation via email to: Mark Hinkle, Executive Director, no later than [date]. Email address: mhinkle@linuxfoundation.org. \n\nQuestions regarding the cost proposal should be submitted in electronic format by [date]. The Node.js Foundation will communicate responses to questions to all participants no later than [date]. Questions should be directed to: Mark Hinkle at the email address noted above in Paragraph 4.1 above. \n\nAll cost proposals are final after the filing deadline. No adjustments shall be permitted after that time. Any cost proposal received after the exact time specified for receipt will not be considered unless it is received before the award is made and it is determined by The Node.js Foundation that the late receipt was due solely to mishandling by The Node.js Foundation. The Node.js Foundation will not be held responsible for proposals not received, or received late due to technical or electrical issues. \n\nVendors must be aware that the submission of a cost proposal shall create a contractual liability to perform, if the cost proposal is accepted by The Node.js Foundation and a contract is awarded.\n\n## Proposal information, protests and timeline \n\nCost proposals must be submitted by a duly authorized officer of the Vendor's organization. \n\nCosts for development of the proposal are to be borne by the Vendor.\n \nThe Node.js Foundation reserves the right to reject any and all cost proposals, and to cancel the procurement process. The justification supporting the reason for any type of rejection shall be submitted to the Vendors in writing. \n\nAfter review of all cost proposals, a recommendation for award may be made. Following notification to Vendors, protests may be submitted to the The Node.js Foundation regarding the cost proposal process and selection of the recommended Vendor. Protests shall be received within seven (7) calendar days immediately following the recommendation to award a contract, given two days mailing time. The Node.js Foundation shall respond in writing (via email) to the protestor within ten (10) days of the end of the protest period.\n\nThis agreement shall not take effect until approved by The Node.js Foundation and shall terminate on [date]. The anticipated effective date shall be [date].\n\n## Timetable\n\n|Milestone                                                |Date  |\n|---------------------------------------------------------|------|\n|Issuance of request for proposal                         |[date]|\n|Mandatory Bidder's Meeting \t\t\t\t\t\t\t                       |[date]|\n|Deadline for written questions \t\t\t\t\t\t\t                   |[date]|\n|The Node.js Foundation responds to questions \t\t\t\t\t       |[date]|\n|Deadline for proposal submission \t\t\t\t\t\t                  |[date]|\n|Notification to vendors of recommended vendor \t\t\t\t       |[date]|\n|Protest Period \t\t\t\t\t\t\t\t                                  |[date]|\n|The Node.js Foundation responds to Protests no later than|[date]|\n|Award of contract (if approved) \t\t\t\t\t\t\t                  |[date]|\n|Contract commencement date \t\t\t\t\t\t                        |[date]|\n\n## Litigation Status \n\nThe Vendor awarded this contract shall perform all work under the proposed contract taking necessary steps and precautions to perform the work to The Node.js Foundation's satisfaction. Vendor shall be responsible for the professional quality, technical assurance, timely completion and coordination of and assistance in the creation of all documentation and other goods/services furnished by the Vendor under this contract. \n\nAll work shall be performed in accordance with the scope of work detailed in Attachment A. Should any exceptions be necessary, these exceptions will be negotiated and must be mutually agreed to by both parties and noted in writing in the resultant contract.\n\n## Overview of Evaluation Process \n\nThe Node.js Foundation will conduct a comprehensive, fair and impartial evaluation of proposals received in response to this RFP. All proposals received from vendors will be reviewed and evaluated by qualified personnel. Proposals will be evaluated using the following criteria to determine the proposal that best meets the needs of The Node.js Foundation. \n\n1. Mandatory Elements \n\n- The vendor's personnel have received adequate training \n- The vendor adheres to the instructions in this RFP on preparing and submitting the proposal \n\n2. Technical Qualification \n\n- The vendor's past experience and performance on comparable engagements \n- The quality of the vendor's personnel to be assigned to the project and available for technical consultation \n- Assignment of work to ensure that the engagement is adequately supervised by the Vendor at all staff levels\n"
  }
]