ProCoders

Personal Project

Assessment Criteria

Criterion A: Code Quality

Maximum: 8

At the end of the course, learners should be able to:

  1. follow and implement the Ruby style guide into their code
  2. show an understanding of best practice when working with an MVC framework
  3. write readable code in order to reduce technical and cognitive debt
  4. cater for exceptions and deal with them accordingly
  5. follow SOLID principles
Achievement LevelLevel Descriptor
0The learner does not reach a standard described by any of the descriptors below.
1-2
  • rarely follows and implements the Ruby style guide into their code
  • rarely shows an understanding of best practice when working with an MVC framework
  • rarely writes readable code in order to reduce technical and cognitive debt
  • rarely caters for exceptions and deals with them accordingly
  • rarely follows SOLID principles
3-4
  • sometimes follows and implements the Ruby style guide into their code
  • sometimes shows an understanding of best practice when working with an MVC framework
  • sometimes writes readable code in order to reduce technical and cognitive debt
  • sometimes caters for exceptions and deals with them accordingly
  • sometimes follows SOLID principles
5-6
  • usually follows and implements the Ruby style guide into their code
  • usually shows an understanding of best practice when working with an MVC framework
  • usually writes readable code in order to reduce technical and cognitive debt
  • usually caters for exceptions and deals with them accordingly
  • usually follows SOLID principles
7-8
  • always follows and implements the Ruby style guide into their code
  • always shows an understanding of best practice when working with an MVC framework
  • always writes readable code in order to reduce technical and cognitive debt
  • always caters for exceptions and deals with them accordingly
  • always follows SOLID principles

Criterion B: Documentation

Maximum: 8

At the end of the course, learners should be able to:

  1. document how the application can be booted, deployed and contributed to
  2. document the purpose of the application, what it does and how it is architected
  3. apply comments to classes in order to explain their purpose and usage
  4. document public methods following YARD conventions
  5. explain any complicated methods in descriptive language and provide examples of input and output
Achievement LevelLevel Descriptor
0The learner does not reach a standard described by any of the descriptors below.
1-2
  • applys comments to few classes in order to explain their purpose and usage
  • documents few public methods following YARD conventions
  • explains few of the complicated methods in descriptive language and never provides examples of input and output
3-4
  • documents how the application can be booted
  • documents the purpose of the application
  • applys comments to some classes in order to explain their purpose and usage
  • documents some public methods following YARD conventions
  • explains some of the complicated methods in descriptive language and rarely provides examples of input and output
5-6
  • documents how the application can be booted and deployed
  • documents the purpose of the application and what it does
  • applys comments to most classes in order to explain their purpose and usage
  • documents most public methods following YARD conventions
  • explains most of the complicated methods in descriptive language and sometimes provides examples of input and output
7-8
  • documents how the application can be booted, deployed and contributed to
  • documents the purpose of the application, what it does and how it is architected
  • applys comments to all classes in order to explain their purpose and usage
  • documents all public methods following YARD conventions
  • explains all complicated methods in descriptive language and usually provides examples of input and output

Criterion C: Test Coverage

Maximum: 8

At the end of the course, learners should be able to:

  1. write unit, integration and feature tests where necessary
  2. test not only the happy path, but also scenarios where data is not as expected
  3. show understanding of which areas of the codebase are more critical and should be highly covered and which areas may need minimal or no coverage
Achievement LevelLevel Descriptor
0The learner does not reach a standard described by any of the descriptors below.
1-2
  • writes unit, integration and feature tests for few of the necessary areas of the codebase
  • rarely tests the happy path, and few scenarios where data is not as expected
  • shows little understanding of which areas of the codebase are more critical and should be highly covered and which areas may need minimal or no coverage
3-4
  • writes unit, integration and feature tests for some of the necessary areas of the codebase
  • sometimes tests the happy path, and some scenarios where data is not as expected
  • shows some understanding of which areas of the codebase are more critical and should be highly covered and which areas may need minimal or no coverage
5-6
  • writes unit, integration and feature tests for most of the necessary areas of the codebase
  • mostly tests the happy path, and most scenarios where data is not as expected
  • shows good understanding of which areas of the codebase are more critical and should be highly covered and which areas may need minimal or no coverage
7-8
  • writes unit, integration and feature tests for all of the necessary areas of the codebase
  • always tests the happy path, and all scenarios where data is not as expected
  • shows strong understanding of which areas of the codebase are more critical and should be highly covered and which areas may need minimal or no coverage

Criterion D: Quality Assurance and Security

Maximum: 8

At the end of the course, learners should be able to:

  1. write acceptance criteria to cover security, performance, fault tolerance, user experience(happy path and failure states) and implement features that meet the these acceptance criteria
  2. cater for CORS, CSRF, CSP, XSS and data sanitisation(OWASP)
  3. serve pages only over HTTPS, including redirects to HTTPS and Strict Transport Security
  4. store sensitive credentials outside of the code repository
  5. authenticate internal API end - points for authorised access only
Achievement LevelLevel Descriptor
0The learner does not reach a standard described by any of the descriptors below.
1-2
  • writes acceptance criteria for few features to cover security, performance, fault tolerance, user experience(happy path and failure states); implements features that meet few of the acceptance criteria
  • rarely caters for CORS, CSRF, CSP, XSS and data sanitisation(OWASP)
  • serves few pages only over HTTPS, including redirects to HTTPS and Strict Transport Security
  • stores few sensitive credentials outside of the code repository
  • authenticates few internal API end - points for authorised access only
3-4
  • writes acceptance criteria for some features to cover security, performance, fault tolerance, user experience(happy path and failure states); implements features that meet some of the acceptance criteria
  • sometimes caters for CORS, CSRF, CSP, XSS and data sanitisation(OWASP)
  • serves some pages only over HTTPS, including redirects to HTTPS and Strict Transport Security
  • stores some sensitive credentials outside of the code repository
  • authenticates some internal API end - points for authorised access only
5-6
  • writes acceptance criteria for most features to cover security, performance, fault tolerance, user experience(happy path and failure states); implements features that meet most of the acceptance criteria
  • usually caters for CORS, CSRF, CSP, XSS and data sanitisation(OWASP)
  • serves most pages only over HTTPS, including redirects to HTTPS and Strict Transport Security
  • stores most sensitive credentials outside of the code repository
  • authenticates most internal API end - points for authorised access only
7-8
  • writes acceptance criteria for all features to cover security, performance, fault tolerance, user experience(happy path and failure states); implements features that meet all of the acceptance criteria
  • always caters for CORS, CSRF, CSP, XSS and data sanitisation(OWASP)
  • serves all pages only over HTTPS, including redirects to HTTPS and Strict Transport Security
  • stores all sensitive credentials outside of the code repository
  • authenticates all internal API end - points for authorised access only

Criterion E: User Experience (UX)

Maximum: 8

At the end of the course, learners should be able to:

  1. provide users with visual and verbal feedback on their actions
  2. provide users with visual and verbal support when no data is available
  3. follow conventions for layout and interface for the format proposed
  4. implement a mobile first design
  5. following HCI principles
Achievement LevelLevel Descriptor
0The learner does not reach a standard described by any of the descriptors below.
1-2
  • rarely provides users with visual and verbal feedback on their actions
  • rarely provides users with visual and verbal support when no data is available
  • rarely follows conventions for layout and interface for the format proposed
  • implements a mobile first design for few pages
  • follows HCI principles for little of the project
3-4
  • sometimes provides users with visual and verbal feedback on their actions
  • sometimes provides users with visual and verbal support when no data is available
  • sometimes follows conventions for layout and interface for the format proposed
  • implements a mobile first design for some pages
  • follows HCI principles for some of the project
5-6
  • usually provides users with visual and verbal feedback on their actions
  • usually provides users with visual and verbal support when no data is available
  • usually follows conventions for layout and interface for the format proposed
  • implements a mobile first design for most pages
  • follows HCI principles for most of the project
7-8
  • always provides users with visual and verbal feedback on their actions
  • always provides users with visual and verbal support when no data is available
  • always follows conventions for layout and interface for the format proposed
  • implements a mobile first design for every page
  • follows HCI principles throughout the project

Criterion F: Performance

Maximum: 8

At the end of the course, learners should be able to:

  1. employ techniques to avoid N + 1 queries
  2. implement caching for expensive queries
  3. utilise a CDN to deliver HTML and assets
  4. optimise assets for high speed delivery
  5. achieve a speedindex score of < 5000 on slow 3G connection for top level pages on webpagetest.org
Achievement LevelLevel Descriptor
0The learner does not reach a standard described by any of the descriptors below.
1-2
  • rarely employs techniques to avoid N + 1 queries
  • implements caching for few expensive queries
  • utilises a CDN to deliver few HTML pages and assets
  • optimises few assets for high speed delivery
  • achieves a speedindex score of < 8000 on slow 3G connection for top level pages on webpagetest
3-4
  • sometimes employs techniques to avoid N + 1 queries
  • implements caching for some expensive queries
  • utilises a CDN to deliver some HTML pages and assets
  • optimises some assets for high speed delivery
  • achieves a speedindex score of < 7000 on slow 3G connection for top level pages on webpagetest
5-6
  • usually employs techniques to avoid N + 1 queries
  • implements caching for most expensive queries
  • utilises a CDN to deliver most HTML pages and assets
  • optimises most assets for high speed delivery
  • achieves a speedindex score of < 6000 on slow 3G connection for top level pages on webpagetest
7-8
  • always employs techniques to avoid N + 1 queries
  • implements caching for all expensive queries
  • utilises a CDN to deliver all HTML pages and assets
  • optimises all assets for high speed delivery
  • achieves a speedindex score of < 5000 on slow 3G connection for top level pages on webpagetest