Project Specification

Before you start blindly designing something, it is useful and necessary to put some thought into a plan for your project for the quarter. This includes defining a schedule and a set of milestones, and assign members to the various components of your project.

Your specification should cover the following topics:

  • Project Charter (4-5 pages)
    • The charter provides a high level description of your project
    • Project Overview (1/2 page): Summarize the project in layperson’s terms (e.g., one that a non-engineer could understand). This should not be more than one paragraph.
    • Project Approach (1-2 pages): Provide more details about what you will accomplish and how you plan to accomplish it. 
    • Minimum Viable Product (1-2 pages): Describe a minimum viable product that demonstrates your project. This should be something that you will achieve with very high probability. It demonstrates the basic functionality and idea and enables feedback. Aim to get an MVP as soon as possible. Then iterate quickly on top of that adding more features as you have time. How will you iterate upon that over the quarter? What are the specific objectives of the project for this quarter? What are the longer term goals? 
    • Constraints, Risk, and Feasibility (1/2-1 page): What are the potential stumbling blocks? What is realistically feasible here? The quarter goes by very quickly. The better approach is to over-deliver on what you promise, rather than under deliver on a set of unrealistic goals. Be sure to include risks – a list of things that could go wrong and how to avoid them.
  • Group Management (1/2 page)
    • What are the major roles in your group’s management?
    • How will decisions be made? By leader, consensus?
    • How will you communicate? Facebook Messenger, email, physical meetings, slack, discord, … ?
    • How will you know when you’re off schedule, and how will you deal with schedule slips?
    • Who is responsible for which deliverables and milestones?
  • Project Development (1/2 page)
    • What are the development roles and who will handle them?
    • What hardware/software will you use? What do you have available? What do you need?
    • If there is software/hardware that is needed, provide a justification for its cost. Where will you order it? When will it arrive?
    • How will you do testing?
    • How will you do documentation?
  • Project Milestones and Schedule (1-2 pages)
    • Define milestones that clear define their objective, what it means to complete each milestone, who is responsible, and when you expect to complete them. 
    • Define the milestones at two scales, a high level set of key milestones aka deliverables, and a low level set of weekly milestones that move you towards deliverables.
    • You must be able to demonstrate the completion of each deliverable. For example, take a video of something working, make a graph showing some processed data, or complete a documented github repos. 
    • Prioritize and organize your milestones. Some are necessary, others are useful, some are hopeful if time permits, etc. Gantt charts are helpful to better visualize the milestones and understand their dependencies.
    • A good rule of thumb is one milestone per person per week. And one deliverable per person every 2-3 weeks. The general expectation for UCSD classes is 8 hours/week of work outside of lecture. Think about breaking milestones into 8-10 hours of work. Be realistic at the same time, make sure you are driving towards a deliverable. 

Suggestions:

  • Like everything else in this course, you want to do this job only once. Of course, everything you plan now will be changed as reality imposes itself, but the more seriously you take the planning now the more productive you will be at having a successful project. If done well, this will make your quarter run more smoothly and serve as a blueprint for a successful project.
  • Formatting makes a huge difference. Spend some time now to learn to use a good document editing tool (latex?), find a professional template, etc.