---
title: 07. Writing Code
---

**ESTABLISHING CODE DEVELOPMENT PROCEDURES AND REQUIREMENTS FOR MENTORSHIP PROGRAMME PARTICIPANTS**

## 1. INTRODUCTION AND LEGAL FRAMEWORK

### 1.1. Policy Overview

This Writing Code Documentation (hereinafter referred to as "the Documentation") establishes mandatory procedures and requirements for code development activities within our Mentorship Programme. This Documentation operates within our comprehensive legal and policy framework, incorporating our Terms of Service, Privacy Policy, Community Code of Conduct, Mentorship Programme Terms and Conditions, Contributor Covenant, and all applicable legal protections by reference.

### 1.2. Scope and Applicability

This Documentation applies to all participants in our Mentorship Programme following completion of priority and effort assignment procedures. All participants should comply with the code development procedures set forth in this Documentation.

**IMPORTANT: Whilst developing your flagship project, you must comply with our [Community Code of Conduct](/community/coc) and [Community Guidelines](/community/guide). Your mentorship repository must not be used for any code or non-code content or behaviour that is illegal, harmful to others, discriminatory, or bigoted. See Section 7.3 for details on intellectual property and style standards. Code reviews are optional and available upon request, not mandatory.**

## 2. DEVELOPMENT WORKFLOW REQUIREMENTS

### 2.1. Prerequisites

Before beginning code development, participants must have completed:

- Goal-setting and roadmap confirmation
- Project planning and approval
- User story development and approval
- Technical breakdown completion
- Priority and effort assignment

### 2.2. Additional Considerations

Before writing code, participants must consider and address the requirements set forth in Sections 3, 4, and 5 of this Documentation.

## 3. BRANCHING STRATEGY

### 3.1. Branch Protection Requirements

**Mandatory Requirement:** Participants are NOT permitted to push code directly to the `main` branch.

**Required Workflow:**
- Create a dedicated branch for each development task
- Make all changes on the dedicated branch
- Submit a pull request to merge changes back into `main`
- Follow standard professional development practices

### 3.2. Branch Scope Requirements

**Single User Story Scope:**
- Each branch must be scoped to a single user story
- This ensures that pull requests remain manageable in size
- Prevents pull requests from becoming too large to review effectively
- Facilitates clear tracking of work completion and progress

## 4. PULL REQUEST REVIEW PROCESS

### 4.1. Optional Review Process

**Self-Guided Development:**
- Code reviews are optional and available upon request
- You can merge your own pull requests without review if you choose
- Use the provided code review checklist (see Section 4.2) for self-review
- Community members and alumni may also provide peer reviews if requested

**Requesting Reviews:**
- If you would like a code review, request one in the #⚗️│alchemy-lab channel or tag programme leadership on your PR
- Reviews are provided when available, not guaranteed immediately
- You can proceed with development while waiting for reviews

### 4.2. Self-Review Checklist

**Code Review Checklist:**
Before merging, consider reviewing your own code for:

- Best practices and industry standards
- Code quality and maintainability
- Feature completeness and functionality
- Compliance with style guides and standards
- Security considerations and best practices
- Test coverage and quality
- Documentation and comments

A detailed code review checklist is available in the resource library.

### 4.3. Review Standards (When Requested)

**Professional Review Standards:**
When reviews are requested, programme leadership or community reviewers will evaluate:

- Best practices and industry standards
- Code quality and maintainability
- Feature completeness and functionality
- Compliance with style guides and standards
- Security considerations and best practices

**Review Communication:**
- Reviews may involve back-and-forth communication
- Review comments are designed to facilitate learning and skill improvement
- Reviews should be viewed as learning opportunities
- Remember that development is a marathon, not a sprint

## 5. PROJECT SCAFFOLDING AND SETUP

### 5.1. Initial Project Setup

**Required Actions:**
Before writing application code, participants must:

**5.1.1 Tooling Structure:**
- Add appropriate tooling structure for the project type
- Examples include: `package.json` for Node.js projects, `requirements.txt` for Python projects
- Configure project-specific tooling and dependencies

**5.1.2 Configuration Files:**
- Add configuration files for code quality tools
- Examples include: `black` configuration for Python projects, ESLint configuration for JavaScript projects
- Ensure all configuration files are properly set up

### 5.2. Continuous Integration Setup

**CI Configuration Requirements:**
- Configure a CI file to run on every pull request
- CI must verify that the following steps pass:
  - Linting checks
  - Build processes
  - Test execution
- CI failures must be resolved before pull request approval

### 5.3. Setup Timing Importance

**Early Setup Benefits:**
- Setting up tooling and CI early ensures code quality from the start
- Prevents the need to fix issues across dozens of files later
- Establishes quality standards before significant code is written
- Facilitates consistent code quality throughout development

## 6. CODE DEVELOPMENT

### 6.1. Development Authorization

Upon completion of project scaffolding and setup, participants are authorised to begin writing code for their flagship project.

### 6.2. Development Requirements

**Branch Requirements:**
- Work must be performed on dedicated branches
- Each branch must be scoped to a single user story
- Follow branching strategy requirements set forth in Section 3

**Commit Practices:**
- Commit early and commit often
- Push code to remote repository regularly
- Regular commits and pushes prevent loss of work
- Maintain clear commit messages following project standards

## 7. LIMITATION OF LIABILITY AND DISCLAIMERS

### 7.1. Reference to Comprehensive Liability Framework

**IMPORTANT: Comprehensive liability limitations, damage exclusions, and maximum liability caps are set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference.**

### 7.2. Code Development Disclaimer

This Documentation establishes code development procedures and requirements. However:

- Programme leadership reserves the right to modify development procedures at any time
- Code reviews are optional and provided when requested and available
- Code reviews do not guarantee acceptance of contributions or specific feedback
- Programme leadership is not responsible for participants' ability to complete development work
- Individual results may vary based on participant skill, effort, and other factors

### 7.3. Intellectual Property Ownership

**Your flagship project belongs to you.** NHCarrigan makes no claim to intellectual property rights over projects developed during the Mentorship Programme. You own your project outright and are free to licence it however you choose.

**Regarding style standards:** Our Style Guide applies only to contributions to NHCarrigan-maintained repositories — it does not apply to your flagship project. You are entirely free to choose your own coding style, linting tools, licence, and copyright attribution for your own project.

## 8. CONCLUSION

This Writing Code Documentation establishes the procedures and requirements for code development within our Mentorship Programme. All participants must comply with these procedures to ensure code quality, maintainability, and alignment with professional development standards.

Questions about code development procedures should be directed to programme leadership through designated communication channels. For comprehensive programme terms and conditions, please refer to our [Mentorship Programme Terms and Conditions](/about/mentorship).

---

*For questions about code development procedures or programme participation, please contact programme leadership through the designated channels outlined in our Community Code of Conduct.*

:::tip[Helpful Links]
- [Join Discord](https://chat.nhcarrigan.com/) - Select the mentorship role to get started
- [Donate](https://donate.nhcarrigan.com/)
:::
