> For the complete documentation index, see [llms.txt](https://founders-and-coders.gitbook.io/coursebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://founders-and-coders.gitbook.io/coursebook/archive/handbook/project-documentation.md).

# Final project report

For your final projects, both in-house and Tech for Better, you'll write a detailed README on the project.

The following sections are required. Your report is supposed to demonstrate a certain set of knowledge, skills and behaviours. These are listed alongside the relevant questions as quotes.

## Introduction

* What are you building?
* Why are you building it?

## Project scope

* What are you *not* building?
* How did you decide what features were important?

## Project plan

* How are you going to structure your sprints?
* What order are you going to build in?
* How did user research inform your plan?

## Requirement analysis

* How will you ensure your project is accessible to as many users as possible?
* Are there any legal or regulatory requirements you should consider?

## Project learnings

* Did your team work effectively?
* What would you do differently next time?

## Research and findings

* What did you find out from user testing?

## Project outcomes

* Were your assumptions right or wrong?

## Recommendations and conclusions

* What features would you prioritise to build next?
* Was the project a success?

## Software Development Lifecycle stages

### Planning

* What roles did your team take on?

  > Explain the roles and responsibilities of all people working within the software development lifecycle, and how they relate to the project (K2)
* Did these roles help your team work effectively?

  > Outline how teams work effectively to produce software and how to contribute appropriately (K6) Compare and contrast the requirements of a software development team, and how they would ensure that each member (including themselves) were able to make a contribution (K6)

### Analysis

* What might be the intended and unintended consequences of building this product?

### Design

* How did you plan a user experience?
* What technical decisions did you make?
  * Server-render vs client-render vs both
  * Relational or non-relational or no DB
  * Self-hosted or platform-as-a-service
  * Frontend first vs DB first
* Did you create a technical specification?

  > Review methods of software design with reference to functional/technical specifications and apply a justified approach to software development (K11, S11, S12)

### Implementation/Build

* How did you ensure your code was good?

  > Create logical and maintainable code to deliver project outcomes, explaining their choice of approach. (S1)
* What interesting technical problems did you have to solve?

  > Outline and apply the rationale and use of algorithms, logic and data structures. (K9, S16)
* How did you debug issues that arose?

  > Apply structured techniques to problem solving to identify and resolve issues and debug basic flaws in code (S7)

### Test

* How did you verify your project worked correctly?

  > Identify and create test scenarios which satisfy the project specification (S6)
* Did writing automated tests catch any bugs?

  > Analyse unit testing results and review the outcomes, correcting errors. (S4)

### Deploy

* Where/how did you deploy your application?

  > Review and justify their contribution to building, managing and deploying code into the relevant environment in accordance with the project specification (S10)
* What problems did you encounter during deployment?

### Maintain

* Is it easy for someone make changes to the codebase?
* Could a new person quickly be onboarded to contribute?

***

* Establishes a logical thinking approach to areas of work which require valid reasoning and/or justified decision making (B2)
* Describes how they have maintained a productive, professional and secure working environment throughout the project activity (B3)
