Capstone Project Expectations

Back to Capstone Project Overview

Onboarding

Everyone will be assigned to an application at the start of the project. We will do our best to match you to a project that is a good fit for your skills and interests. Some projects will be new and some will be existing applications. Most often, students will be assigned to an existing application so that is where this guide will focus.

This project will span 4 weeks. Although you are working as a team, you will be assessed individually.

If it is a new application, you will be given a project brief with a list of features to implement. Your first several days will be spent planning and designing the technical aspects of the application.

If it is an existing application, you will follow the project’s documentation and set up your development environment. This might include setting up multiple apps or services. If the setup instructions are unclear or incorrect, you will be expected to take notes, ask questions, and then update the README with the correct information if applicable. Plan to spend at least a whole day on setup and getting familiar with the project.

Pro-Tip: Updating the README is a great way to get familiar with the project and make a first contribution on the job, too!

Guide for Navigating a Legacy Codebase

As you are getting familiar with the codebase, consider the following questions:

  • Where will you start in the codebase, and why did you decide to start there?
  • What is familiar to you about the codebase?
  • Are you making any assumptions? If so, what are they?
  • How are you identifying what files are relevant to your issue?
  • What is the data flow in the application?
  • What is unfamiliar? (different file structures, new packages or gems, etc.)

Take notes on your findings and questions. This will help you as you begin to work on your project and will be a great resource to come back to when you start your first job.

Working Like a Developer

After the onboarding and setup period, you will be assigned your first feature. Some features will be small and others will be large enough that you will need to break them into multiple issues. You should ask clarifying questions to your project manager as needed. There will be daily opportunities to do this synchronously in the daily check in, otherwise you can use Slack to communicate with your project manager or ask to schedule a call. Your project manager will be the final decision maker on the scope of the feature, but you are encouraged to ask questions and provide input.

As the developer, you are responsible for:

  • Planning the feature (see below)
  • Writing the code to implement the feature
  • Testing the feature to verify it works as expected
  • Writing or updating the documentation for the feature
  • Ensuring your code does not break existing functionality or tests
    • If existing tests break or are inadequate, update them. Be sure to document those changes and why there were needed in the PR.
  • Ensuring CI passes before requesting a review
  • Verifying your deployed changes are functioning as expected in production

Planning the Feature Looks Like:

  • Clarifying requirements of user stories with the project manager
  • Breaking down the feature into smaller issues if needed AND adding those issues to the project board
    • Remember, PRs should be focused on a single feature or bug fix. If you are working on a large feature, break it into smaller pieces and submit them as separate PRs. Each PR should have a single purpose and address a single issue.
  • Choosing the appropriate tools, patterns, and technologies to implement the feature
    • This might include a research spike and discussing tradeoffs with the project manager or other developers

Structure and Rituals of Agile Development (and thus this project)

  • Every day you will have a check-in with your project manager where we will discuss your progress, any blockers, and your plan for the day.
    • Usually in the morning following the Warm Up or immediately after lunch. Occasionally, these will happen at an off time or on Slack instead.
  • You will be assigned issues on the project board and be expected to update the issue as you work on it.
    • If your tasks aren’t being updated, your project manager will assume you are not working on them which will result in a failing grade.
  • You are expected to create new issues for your features as needed and to update the project board’s backlog with new issues as you discover them.
  • Retros will be held 2-3 times over the course of the project.
  • Backlog Refinement sessions will be held 2-3 times over the course of the project.

Work should generally be limited to the scheduled work time hours on the calendar between 9am-4pm MT, Monday through Friday just like a real job.

What is a…

  • Check-In/Standup: A brief daily meeting with your team where we will discuss your progress, any blockers, and your plan for the day
  • Issue: A task or unit of work that needs to be completed
  • Blocker: A problem that is preventing you from completing your work or moving forward
  • Backlog: A list of issues that need to be completed but are not yet scheduled
  • Retro(spective): A meeting where we will discuss what went well, what didn’t go well, and how we can improve
  • Backlog Refinement: A meeting where we will discuss the issues in the backlog and decide which ones to work on next
  • Project Board: A place to track the status of your issues

Git Workflow and Technical Expectations

Code Quality

  • Test your code thoroughly
    • This includes both unit tests and integration tests
    • Nothing should be merged to main without tests
  • Write code that is clean and easy to understand
    • Follow the conventions of the language and framework
    • Variables, methods, and functions have helpful names
    • Use consistent formatting (line breaks, indentation, etc.)
  • Unused code and unnecessary comments and logging should be removed before opening a PR
  • Keep the README up to date (database schema, screenshots, endpoint documentation, changes to setup instructions or testing etc.)

Git Workflow

  • Create a new branch for each issue
  • Write helpful commit messages
  • Keep your branches focused in scope (avoid large PRs that include many features)
    • If you are working on a large feature, that is a sign to break it into smaller issues and submit them as separate PRs.
  • Code should be reviewed and approved by at least one other person before merging
    • Reviews should include comments and suggestions for changes. Just saying “Nice work” is not helpful. See below for more details.
    • Each team member is expected to provide at least three detailed and feedback-rich reviews over the course of the project
    • The developer and the reviewer equally share the responsibility of ensuring broken/breaking code is not pushed to production.
  • PRs should be reviewed within 24 hours, Monday through Friday, or acknowledged in Slack if and why there will be a delay on the review
  • Deploy your code immediately after merging your approved pull requests to main and then visit the production application to ensure your deployed changes are functioning as expected
  • Use pull request templates that document and create discussion for finished features

Performance Review and Rubric

Lesson Search Results

Showing top 10 results