Capstone Project

During the last four weeks of this course, you'll spend most of your afternoons working on a single project.

Because the goal of this course is to prepare you for work on a software development team, your capstone project must be developed in a team. Since we love to pair program, it's best if your team has an even number of members, but an odd number can also work (please discuss this with staff first).

Capstone work is set to begin somewhere around the beginning of the final month (for Cohort 1, Inception Day is November 30, 2018) with an Inception meeting, to discuss scope and timing and how involved the sponsor wants to be. From then until the end of the course, the students will spend at least half their days in teams working on user stories.

Are you a potential client/sponsor?

Here are some constraints for you when you're thinking of an appropriate project:

  • it must be real work on a fresh code base -- not debugging or modifying an existing product or tool
  • students can use existing libraries and assets, or tie together existing APIs and data sets, but the bulk of their work must be original
  • the finished product may not be fully functional, but based on the weekly sprints and demos, it should be partially functional (i.e. not full of half-implemented features)
  • the finished product must be suitable for inclusion in student portfolios, either as a link to a live app, or a screenshot with description, and be demoable in person during demo day
  • the source code must be published under an acceptable open source license (e.g. MIT or ISC) and must not include any confidential or proprietary intellectual property... see below for more details.
  • if you are a current bootcamp student and want to sponsor a project of your own, you may not be a coder on that team. You will be the client, and learn about how to communicate your ideas and priorities to a team of developers who have their own ideas about how things should be implemented.

Step 1: Discovery

Spend this time exploring ideas and building a team.

Do you have an idea? Discuss it with your fellow students.

Do you want to work with a client (or "project sponsor")? Here are some worthy projects that could use your help:

  • http://www.codeforbtv.org/projects/cvoeo-app - build a mobile app for a non-profit to help several hundred Vermonters per year to manage their money, complete their paperwork, and earn up to $750/year from Financial Futures benefits

  • http://codeforbtv.org/projects/greenup-app - work on the official Green Up Day mobile app (written in React Native), or grab a side project like facilitating communication between team leaders or displaying an embedded map in their web site

  • https://www.codeforamerica.org/past-projects/court-bot - integrate (or reimplement) CourtBot with the Vermont docket; CourtBot sends text messages or makes voice calls (using Twilio) to prompt people about outstanding citations or court appearances

  • Home Outside Flower Pot Planner

  • https://github.com/openopps/openopps-platform - Open Opportunities is creating a network of federal employees that will lead to a more effective, efficient, responsive government by sharing skills and collaborating on projects that support the mission of an agency or the government as a whole.

Step 2: Proposal

Write up a brief (500 words or less) project proposal. Include

  • the team members
  • the business or personal issue the project will solve
  • a rough description of core features

Schedule a time to discuss the project with a teacher. We will evaluate it for feasibility, or send it back for more work (or for replacement with a different idea).

If it's acceptable, we'll assign you a coach, who will check in with your team as needed, and attend demos, retros and planning meetings for advice and counsel.

If your project is sponsorless (i.e. your own idea), your coach (or maybe another student?) may agree to act as the sponsor, or help you find one. (In XP/Agile this role is called the "customer" or "business owner"; it's useful to have a person who's detached from the day-to-day coding to make decisions about priority and scope.)

Deadline for proposal for Cohort One: Tuesday, November 27

Step 3: Inception

Schedule a time for a project inception. Invite all team members and stakeholders (the project sponsor if you have one) and your coach. Allow at least 4 hours, intending to come out of the meeting with some rough wireframes, a story grid, a system architecture, and a work plan for each of four weeks. If you need to do more planning, schedule another 2-hour planning meeting for later in the week.

Step 4: Iteration

During each of the four weeks, schedule the following:

  • Weekly planning meeting
  • Daily standup meeting
  • Weekly retrospective
  • Acceptance meeting / sponsor demo (weekly, or more frequently if possible) -- to get the client to sign off on the features, report bugs, and adjust priorities
  • In-class demo (show and tell!) -- we will set up Friday morning slots during weeks 2 and 3 for you to demo your app to the class; consider this a dress rehearsal for Hiring Partner Demo Day

FAQ

What about licensing?

The baseline expectation is that this code is free or open source and the product has no legal encumbrances, so any of the students can use it as a portfolio piece or as a basis for future work. Any additional encumbrance -- e.g. that the idea is proprietary to the client so students agree not to launch a competing business, or that the data set is already under a license -- will need to be discussed on a case-by-case basis.

See https://opensource.guide/legal/#which-open-source-license-is-appropriate-for-my-project for more information about open source licenses.