Novice: Able to create a class and understands the purpose of the constructor function. Understands the use of arguments/parameters in the constructor function and methods of the class. Uses if/else statements, but has multiple levels of nesting. Code lacks organization and has multiple issues with syntax/styling.
Advanced Beginner: Is able to give default values to a class and can use array indexing to extract data from array or modify array. Uses if/else statements with one level of logic (no nesting). Code shows effort towards organization but suffers from poorly named variables and requires significant refactoring.
Proficient: Able to use array prototype methods and can use documentation to check syntax on methods and examples. Understands how multiple classes can interact with each other. Code is logically organized, functions/variables have descriptive names, and there is minimal duplication.
Exceptional: Uses array prototype iteratation methods effectively to manipulate data without using documenation as a resource. Code is well-refactored and has excellent syntax/style. Logic handles all situations where user gives incorrect/unexpected input.
Novice: Can talk through the concept of testing and why it is useful. Can vaguely describe what each test is doing but has some gaps in understanding and uses incorrect terminology.
Advanced Beginner: Is able to read through each line of the test and follows the steps of testing (Reads test, fails the test, writes implementation, etc.) Uses correct terminology when explaining each test and can make test pass, but does not use error messages effectively.
Proficient: Utilizes error messages and pays attention to what line the test is failing on. Understands the difference between what is actual and what is expected and makes the test pass using errors as a guide.
Exceptional: Takes advantage of TDD (Test Driven Development) by using each error message to drive implementation of code. Has a mastery of understanding what each test is asking for, reading and comprehending errors, and implementing code for each assertion.
WORKFLOW / COMMUNICATION
Novice: Uses terminal to access directories/files and is able to clone down repo. Is able to read the directions in the README and get the tests running
Advanced Beginner: Uses keyboard shortcuts and is able to navigate tools and code efficiently. Workflow is quick and is not dependant on mouse/trackpad.
Proficient: Able to confidently defend decisions made in code and communicates thought process well, displaying a solid understanding of the foundations. Acknowledges when they are stuck and seeks for advice and collaborates well throughout the process.
Exceptional: Expert communication from beginning to end and considers all angles as they go through the evaluation. Able to defend decisions that consider architecture, scalability, and performance.