> 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/src/course/ksb.md).

# KSB's

## Knowledge

* **K1:** all stages of the software development lifecycle (what each stage contains, including the inputs and outputs)
* **K2:** roles and responsibilities within the software development lifecycle (who is responsible for what)
* **K3:** the roles and responsibilities of the project lifecycle within your organisation, and your role
* **K4:** how best to communicate using different communication methods and how to adapt appropriately to different audiences
* **K5:** the similarities and differences between different software development methodologies, such as agile and waterfall
* **K6:** how teams work effectively to produce software and how to contribute appropriately
* **K7:** software design approaches and patterns, to identify reusable off-the-shelf solutions to commonly occurring problems
* **K8:** organisational policies and procedures relating to the tasks being undertaken, and when to follow them (e.g., the storage and treatment of GDPR sensitive data)
* **K9:** principles of algorithms, logic and data structures relevant to software development (e.g., Arrays, Stacks, Queues, Linked Lists, Trees, Graphs, Hash Tables, Sorting Algorithms, Searching Algorithms, Critical sections and race conditions)
* **K10:** principles and uses of relational and non-relational databases
* **K11:** software designs and functional/technical specifications
* **K12:** software testing frameworks and methodologies

## Skills

* **S1:** create logical and maintainable code
* **S2:** develop effective user interfaces
* **S3:** link code to data sets
* **S4:** test code and analyse results to correct errors found using unit testing
* **S5:** conduct a range of test types, such as Integration, System, User Acceptance, Non-Functional, Performance and Security testing
* **S6:** identify and create test scenarios
* **S7:** apply structured techniques to problem solving, can debug code and can understand the structure of programmes to identify and resolve issues
* **S8:** create simple software designs to effectively communicate understanding of the program
* **S9:** create analysis artefacts, such as use cases and/or user stories
* **S10:** build, manage and deploy code into the relevant environment
* **S11:** apply an appropriate software development approach according to the relevant paradigm (e.g., object-oriented, event-driven or procedural)
* **S12:** follow software designs and functional/technical specifications
* **S13:** follow testing frameworks and methodologies
* **S14:** follow company, team or client approaches to continuous integration, version and source control
* **S15:** communicate software solutions and ideas to technical and non-technical stakeholders
* **S16:** apply algorithms, logic and data structures
* **S17:** interpret and implement a given design whist remaining compliant with security and maintainability requirements

## Behaviours

* **B1:** Works independently and takes responsibility (e.g., has a disciplined and responsible approach to risk, and stays motivated and committed when facing challenges)
* **B2:** Applies logical thinking (e.g., uses clear and valid reasoning when making decisions related to undertaking work instructions)
* **B3:** Maintains a productive, professional, and secure working environment
* **B4:** Works collaboratively with a wide range of people in different roles, internally and externally to the team, with a positive attitude to inclusion & diversity
* **B5:** Acts with integrity with respect to ethical, legal and regulatory ensuring the protection of personal data, safety and security
* **B6:** Shows initiative and takes responsibility for solving problems within their own remit, being resourceful when faced with a problem to solve
* **B7:** Communicates effectively in a variety of situations to both a technical and non-technical audience
* **B8:** Shows curiosity to the business context in which the solution will be used, displaying an inquisitive approach to solving the problem (includes the curiosity to explore new opportunities and techniques; the tenacity to improve methods and maximise performance of the solution; and creativity in their approach to solutions)
* **B9:** Committed to continued professional development
