Group Projects

Group Projects

Today we will spend a bit of time thinking about how we will build our group projects. You should try to use as much of what you've learned this unit in your project. You'll have 3 or 4 people on your team and you're expected to partition the work among team members. Each team member may want to choose a task they are strong in, or a task that will solidify knowledge for them. The rest of the team should support these decisions as much as it makes sense. You may also consider designating certain team members as: Time Keeper and Git Keeper (you can come up with your own inventive names for these roles!)

You can use the initial planning time to establish teams and scope out what you're going to build. A teacher should approve your project idea before you begin. During your planning, you should define milestones and (at a minimum) commit to your repo at each milestone. You are expected to build the appropriate parts using Test Driven Development (branch, red, green, refactor, diff, commit).

For full-time students, towards the end of the project, you'll be notified about what are known as Feature Freeze and Code Freeze. Feature freeze is the point when you are not permitted to work on any new functionality. Code freeze is when no further changes to the codebase are allowed. During the project presentation, each team member should speak. Each team will have roughly 5 minutes to describe what you've built, show a demonstration, and possibly highlight a particularly interesting piece of code.

Team dynamics

You've been pair programming for a couple of weeks now, but this is the first time you're going to build something on a team. Be sure you remain mindful during your group project. You're going to be under pressure to finish something under a time limit. You're going to want it to be great and something you can be proud of, and this could add to the pressure. You're going to need to depend on your teammates. Sometimes they won't disappoint you, and sometimes they will. How you react is up to you.

Remember to have Integrity, Kindness, and Effort. Be open and honest with yourself and your team. Try to minimize surprises by being transparent. Keep the communication levels high and ask for help when you need it. Focus on setting up your teammates for success. And have fun!

These group projects are as much about how you work together as what you build.

Learning outcomes

  • Communication
    • In team
    • To external people
  • Planning
    • Thinking about what you want to learn
    • Milestones
  • Code skills
    • Technology
    • Debugging

Anatomy

  • Team formation
  • Planning
  • Feature freeze (t - 60 mins)
  • Code freeze, presentation prep (t - 30 mins)
  • Presentation

Team Formation

  • We'll run a script to make it random ;)

Presentation

  • Everyone speaks
  • 5 minutes (timed)
  • Q & A

You might like to cover:

  • What project is (told + demo'd)
  • Learning objectives
  • Challenges and learnings

Gotchas

  • Dominant team member
  • Different skill levels
  • Too many of the same communication style
  • Multiple people doing the same work (not together)