Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion angular/mentoring/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ If you have ever studied at RS School, or simply share our "Teach it forward" id

#### Mentor responsibilities

- **Code review** of your students' pull requests after each sprint
- **Code review** of your student's pull requests after each sprint and task
- **Answering students' questions** throughout the course
- **Conducting a sprint interview** with each student after every sprint of the team task
- **Conducting the final Angular interview** at the end of the course
Expand Down
196 changes: 196 additions & 0 deletions angular/mentoring/mentoring-roadmap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# Mentoring Roadmap

This document describes the mentor's journey week by week β€” from selecting mentees to the final interview.

**Total duration:** ~11 weeks (1 week onboarding and team setup + 8 weeks team task + 2 week final interview).

---

## Week 1 β€” Finding Mentees & Onboarding

### 1.1 Selecting Mentees

Students submit applications in the Discord channel **#students-looking-for-mentor** ([open channel](https://discordapp.com/channels/788026364372320256/1163363732672483369)).

Each application follows a standard format:

```text
Name:
Location (Country/City):
Communication languages:
RS App profile link:
GitHub profile link:
Telegram profile link:
Intro Task link:
About me:
```

> **Prerequisite:** Only students who have completed the [Angular Intro Task](../tasks/angular-intro-task/README.md) are eligible to apply.

**What the mentor does:**

1. Browse the applications in Discord.
2. Reach out to candidates who look promising (via Discord or Telegram).
3. Conduct an introductory conversation with the student β€” assess motivation, background, and potential.
4. If the student meets your expectations, confirm the mentorship.

**Guidelines for choosing mentees:**

- The student should be self-motivated and have a desire to learn.
- Having a completed intro task is a baseline; look for evidence of effort and curiosity.
- You can mentor **2 to 6 students** β€” choose a number you can realistically support with **3–5 hours per week**.

### How to Add a Student to Your Mentee List

Go to the confirmation form:
πŸ‘‰ <https://app.rs.school/course/mentor/confirm?course=angular-2026q2>

Select **all** students you want to mentor (including those you already have) and submit the form.

> ⚠️ **Known bug:** Students who are already assigned to any mentor (including you) will **not** appear in the selection list. To add a new student alongside your existing ones, you must:
>
> 1. Submit the form **without selecting any students** (this will unassign all your current mentees).
> 2. Open the form again β€” now all students (old and new) will be visible in the list.
> 3. Select all your existing students **plus** the new student and submit the form again.

**Alternative (easier) way:** If you don't want to deal with the form, simply post a message with the student's name in the Discord channel:
πŸ‘‰ <https://discord.com/channels/788026364372320256/1500812637053784257>

### 1.2 Getting to Know Your Students

Once mentees are confirmed:

- **Create a shared communication channel** (Discord group, Telegram chat, etc.).
- **Schedule an introductory group call** β€” let students introduce themselves, share their backgrounds, and get comfortable with each other.
- **Set expectations:** explain the course structure, sprint cadence, and your availability.
- **Familiarize yourself** with the [rules of interaction between students and mentors](README.md#basic-rules-of-interaction-between-students-and-mentors).

### 1.3 Helping Students Form a Team

The [team task](../tasks/angular-team-task/README.md) requires teams of **2–3 students**.

> **Recommendation:** It is best to form teams exclusively from your own mentees. This significantly reduces the mentor's workload β€” you already know every student's progress, and coordinating code reviews and sprint interviews becomes much simpler. See [TEAM_SETUP.md](../tasks/angular-team-task/TEAM_SETUP.md) for details.

**Mentor actions:**

1. Help students find teammates within your group.
2. Guide them through creating the team in [RS App β†’ Team Distribution](https://app.rs.school/).
3. Explain how to choose a project (CryptoTrade / ShopFront / MusicFlow) or help students design their own project that satisfies the requirements of all 4 sprints β€” see [PROJECTS.md](../tasks/angular-team-task/PROJECTS.md).
4. Walk students through the task structure: sprints, checkpoints, diary, scoring.
5. Make sure every student understands:
- The importance of the [development diary](../tasks/angular-team-task/DEVELOPMENT_DIARY.md) (mandatory for sprint interview admission).
- The requirement to develop **at least 2 personal Feature Components**.
- The [code standards](../tasks/angular-team-task/CODE_STANDARDS.md) and PR requirements.

---

## Weeks 2–8 β€” Team Task (4 Sprints + Presentation Prep)

### Sprint Schedule

| Sprint | Duration | Topics | Checkpoint |
| ------------ | -------- | ------------------------- | ------------------------------------------------------------------------- |
| **Sprint 1** | 1 week | Components | [SPRINT1_CHECKPOINT.md](../tasks/angular-team-task/SPRINT1_CHECKPOINT.md) |
| **Sprint 2** | 2 weeks | Routing & Signals | [SPRINT2_CHECKPOINT.md](../tasks/angular-team-task/SPRINT2_CHECKPOINT.md) |
| **Sprint 3** | 2 weeks | Directives, Pipes & Forms | [SPRINT3_CHECKPOINT.md](../tasks/angular-team-task/SPRINT3_CHECKPOINT.md) |
| **Sprint 4** | 2 weeks | HTTP, RxJS & Testing | [SPRINT4_CHECKPOINT.md](../tasks/angular-team-task/SPRINT4_CHECKPOINT.md) |
| **Prep** | 1 week | Presentation preparation | [PRESENTATION.md](../tasks/angular-team-task/PRESENTATION.md) |

### Weekly Code Review

Each week the mentor must:

1. **Review open Pull Requests** of your students before your weekly meeting. Follow the [PR review process](pull-request-review-process.md):
- Check PR format (description, screenshots, deployment URL, self-check).
- Clone the repo, build, and run the project.
- Verify linting and tests pass.
- Leave at least **3 meaningful comments** per PR β€” code quality, architecture, Angular best practices.
2. **Conduct a weekly meeting** (60–90 min, all students or 1-on-1):
- Discuss sprint topics and Angular concepts.
- Go over code review results and common mistakes.
- Answer questions, share tips on resume prep, Scrum, patterns, etc.
3. **Enter scores** into RS APP after reviewing the work.

> **Deadlines for mentors:** Review student work within **1-3 days** of submission. The sooner the better.

### Sprint Interviews (1 per Sprint = 4 Total)

After each sprint deadline, the mentor conducts an interview with **one randomly assigned team** (the pair is formed in RS APP β€” this may not be your own team).

**How it works:**

1. After the sprint deadline, a **team ↔ random mentor** pair is formed.
2. The team contacts the mentor and schedules a call.
3. On the call, the mentor **speaks with each student individually** (~15–20 min per person).
4. The mentor evaluates:
- **Angular knowledge** β€” questions on the current sprint's topics.
- **Personal contribution** β€” what the student implemented, whether they can explain their own code.
5. The mentor submits a score for each student in RS APP.

> **Important:** The call must take place **within 5 days** of the sprint deadline. If the team does not contact the mentor β€” the student receives **0** for that sprint.

**Student eligibility:** Before the interview, the student must have:

- Entries in the [development diary](../tasks/angular-team-task/DEVELOPMENT_DIARY.md) for the current sprint.
- Personally written code merged into `main`.

**Points by sprint:**

| Sprint | Max Points | Topic |
| ------------ | ---------- | ------------------------- |
| **Sprint 1** | 50 | Components |
| **Sprint 2** | 75 | Routing & Signals |
| **Sprint 3** | 125 | Directives, Pipes & Forms |
| **Sprint 4** | 150 | HTTP, RxJS & Testing |
| **Total** | **400** | |

**Scoring guidelines:**

| Level | ~% of Max | Indicators |
| ------------- | --------- | ----------------------------------------------------------------------------- |
| **Weak** | ~20% | Cannot explain code. Does not understand basic sprint concepts. |
| **Basic** | ~50% | Understands core concepts at a basic level. Struggles with details. |
| **Good** | ~80% | Confidently explains code and Angular concepts. Understands "why". |
| **Excellent** | ~100% | Deep understanding: trade-offs, approach comparisons, nuances (CD, DI, RxJS). |

For detailed topic lists and example questions see [SCORE_PERSONAL.md](../tasks/angular-team-task/SCORE_PERSONAL.md).

---

## Week 9+ β€” Final Interview & Feedback

### Final Interview

At the end of the course, the mentor conducts the **final Angular interview**.

- **Pairs are formed randomly** in the RS School application β€” you will interview a student who is **not necessarily your own mentee**.
- The interview covers **all Angular topics** from the course: Components, Routing, Signals, Directives, Pipes, Forms, DI, Change Detection, HTTP, RxJS, Testing.
- Duration: ~40–60 minutes per student.

### Leaving Feedback

After the final interview, the mentor **must leave written feedback** on the student:

- Strengths and areas for improvement.
- Level of Angular knowledge demonstrated.
- Recommendations for further learning.

The feedback is submitted through RS APP and is visible to the student.

---

## Summary Checklist

| When | Mentor Action |
| ---------------------- | ---------------------------------------------------------------- |
| **Week 1** | Find mentees from Discord applications |
| **Week 1** | Conduct intro calls, confirm mentorship |
| **Week 1** | Introduce students to each other, create group chat |
| **Week 1** | Help students form teams (preferably from your own mentees) |
| **Week 1** | Explain task structure, diary, code standards |
| **Every week (W2–W8)** | Review student PRs (β‰₯3 comments per PR) |
| **Every week (W2–W8)** | Conduct weekly meeting (60–90 min) |
| **After each sprint** | Conduct sprint interview with 1 random team (~15–20 min/student) |
| **After each sprint** | Submit personal scores in RS APP |
| **End of course** | Conduct final interview (random student pair) |
| **End of course** | Leave written feedback on the interviewed student |
1 change: 0 additions & 1 deletion angular/tasks/angular-team-task/PROJECT_MUSIC.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,6 @@ The project uses its own backend for storing user content: playlists and uploade
- Adding tracks via inline search: input field β†’ results β†’ "add" button.
- A playlist must contain at least 1 track (validation).
- Playlist deletion with confirmation.
- Data is saved locally (localStorage).

### 3. Recently Played (listening history)

Expand Down
5 changes: 4 additions & 1 deletion angular/tasks/angular-team-task/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@
- Gain experience in teamwork and code review.
- Demonstrate what you have learned over 4 sprints.

**Each team chooses one of three projects:**
**Each team chooses one of three projects or proposes their own:**

| Project | Description | API |
| --------------- | ----------------------------------------------- | ------------------------------------------------------ |
| **CryptoTrade** | Cryptocurrency analysis and trading application | [Binance Testnet](https://testnet.binance.vision/) |
| **ShopFront** | Online store with catalog, cart, and checkout | [commercetools](https://docs.commercetools.com/api) |
| **MusicFlow** | Music streaming service with search and player | [Jamendo API](https://developer.jamendo.com/v3.0/docs) |
| **Custom** | Your own project idea | Any public API of your choice |

> **Custom project:** Teams are free to propose their own project as long as it satisfies the requirements of all four sprints (Components, Routing & Signals, Directives/Pipes/Forms, HTTP/RxJS/Testing). The project must be approved by your mentor before Sprint 1 starts.

Detailed descriptions of each project, sprint requirements, and "Beyond API" features: **[PROJECTS.md](./PROJECTS.md)**.

Expand Down
11 changes: 3 additions & 8 deletions angular/tasks/angular-team-task/SPRINT1_CHECKPOINT.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,13 @@ The first sprint is the foundation of the entire project. The team must come tog

All requirements met β†’ 20 points, any requirement not met β†’ 0.

### Team (done once per team)

1. **Repository created on GitHub** β€” public, with a meaningful project name.
2. **Access shared with the course account** β€” add [rollingscopes](https://github.com/rollingscopes) as a collaborator with Read access.
3. **README.md filled in** β€” project name, short description (2–3 sentences), team members (name + GitHub link for each).
4. **Project initialized via Angular CLI** β€” `ng new` with TypeScript strict mode. The repository contains `angular.json`, `tsconfig.json` with `"strict": true`.

### Individual (each member completes on their own)

1. **At least 1 custom component created** β€” not `AppComponent`. The component uses `@Input()` or `@Output()`. Merged into `main`.
2. **At least 1 diary entry** β€” merged into `main` before the deadline. Location: `/development-notes/{github-username}/`.
3. **Entry contains summary and plan** β€” (a) what you worked on this sprint; (b) what you plan to do in Sprint 2.
5. **At least 1 custom component created** β€” not `AppComponent`. The component uses `@Input()` or `@Output()`. Merged into `main`.
6. **At least 1 diary entry by each team member** β€” merged into `main` before the deadline. Location: `/development-notes/{github-username}/`.
7. **Entry contains summary and plan** β€” (a) what you worked on this sprint; (b) what you plan to do in Sprint 2.

---

Expand Down
78 changes: 78 additions & 0 deletions angular/tasks/angular-team-task/SPRINT1_INTERVIEW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Sprint 1 Interview β€” Components (50 points)

## Instructions for Mentors

The interview takes **~15–20 minutes per student**. The goal is to evaluate two things:

1. **Angular knowledge** β€” ask any questions from each module listed below. You do not need to ask every question β€” pick a few from each section to get a picture of the student's understanding.
2. **Personal contribution** β€” check what the student has done in the project (see [Project Questions](#project-questions) below).

> **Important:** Students have only studied the topics listed in the [Sprint 1 "What to Study"](./SPRINT1_CHECKPOINT.md#what-to-study) section. Do **not** expect correct answers on topics from later sprints (Routing, Signals, Forms, HTTP, Testing, etc.). If a student demonstrates knowledge beyond Sprint 1 β€” great, but the absence of such knowledge should not lower the score.

### Scoring

| Level | ~% of 50 | Points | Indicators |
| ------------- | -------- | ------ | ------------------------------------------------------------------------- |
| **Weak** | ~20% | ~10 | Cannot explain their code. Does not understand basic sprint concepts. |
| **Basic** | ~50% | ~25 | Understands core concepts at a basic level. Struggles with details. |
| **Good** | ~80% | ~40 | Confidently explains code and Angular concepts. Understands "why". |
| **Excellent** | ~100% | ~50 | Deep understanding, compares approaches, explains trade-offs and nuances. |

---

## Knowledge Questions

### General

1. What is Angular and what is it used for?
2. What is Angular CLI and what are its main features?
3. What is inter-component communication in Angular? Describe different ways of sharing data between components.

### Angular CLI

1. How do you create a new Angular project with `ng new`? What flags/options are useful?
2. How do you generate a component using angular cli?
3. What is the basic Angular project structure? What are `app.config.ts`, and `angular.json` responsible for?

### Components

1. What are standalone components? How do they differ from module-based components?
2. How do you configure a component's `selector`, `template`, and `styles` using the `@Component` decorator?
3. How does data binding work in Angular? Explain interpolation, property binding, and event binding.
4. What is the difference between one-way and two-way data binding?
5. What is Angular control flow? Describe `@if`, `@for`, and `@switch`.

### Component Communication

1. How do you pass data from a parent component to a child component using `input()`?
2. How do you emit events from a child component to a parent using `output()`?
3. When would you use `model()` instead of `input()` + `output()`?
4. How can components communicate through a shared service?
5. When should you use `input()`/`output()` vs a service for communication?
6. What is the difference between the signal-based `input()`/`output()` API and the legacy `@Input()`/`@Output()` decorators?

### Signals (basics)

1. What are Signals?
2. How to read and modify the value of a signal?
3. What is the main advantage of using signals instead of primitive values?

### Lifecycle Hooks

1. What are Angular lifecycle hooks? Name the main ones.
2. In what order are lifecycle hooks called?
3. What is `ngOnInit` used for? How does it differ from the constructor?
4. What is `ngOnDestroy` used for? Why is it important to clean up resources?
5. What is `ngOnChanges`? When is it called and what information does it provide?
6. What are `afterNextRender` and `afterEveryRender`? When would you use them instead of `ngAfterViewInit`?

---

## Project Questions

The mentor should also ask questions about the student's **personal contribution** to the project. Expect the student to:

- Describe what they worked on during the sprint
- Navigate to their code and explain how it works
- Demonstrate understanding of the project structure and setup
- Explain decisions they made and challenges they faced
Loading
Loading