# Apprenticeship project report 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)