Homework 1: Design Your Team
- Due Oct 12, 2020 by 3:30pm
- Points 5
- Submitting a website url
The first step of any software project is defining why the project is happening at all:
- What problem is it solving?
- Who's coming together to solve it?
- Do they have the skills to solve it?
In this homework, you're going to answer these questions, designing your team intentionally.
Throughout, remember that teams are effective because they 1) trust each other and 2) want to work together. Trusting relationships are necessary for collaboration: they provide the psychological safety (Edmondson, 1999) necessary for risk taking, feedback, and open communication.
Step 1: Understand your roles
This is a critical step, as it ensures at least one person is responsible for every important function of a team.
Find your team's assigned roles on this spreadsheet Links to an external site..
- Who is your project manager (PM)? In this class, a great PM:
- Inspires the team with their vision of how everyone should work together.
- Offers strategic advice to any team member who must choose between several different ways to get their job done.
- Motivates the team to stay on task and complete the project.
- Maintains a positive working environment and actively constructs their team's culture.
- Promotes fair play among team members and recognizes their individuality.
- Is humble, and recognizes and accepts that their team members may have more expertise on a particular topic than they have.
- Monitors work assignments and day-to-day scheduling.
- Finds the team members the resources they need to complete their tasks (e.g. a time and place to work, meeting coordination, computing power, disk space, expert consultants).
- Evaluates how the team works together and improves their process to make the team more efficient and effective.
- Lets their team members work autonomously, without micromanaging them.
- Facilitates communication between team members and with external parties
- Who is your designer? In this class, a great designer:
- Deepens the team's understanding of the problem the team is addressing
- Envisions the design
- Prototypes the design
- Specifies the requirements of the design
- Ensures that the implementation of the design meets the specifications
- Tests the design to ensure that it meets the needs of who it was designed to help
- Tests the usability of the design to make sure that it is learnable and prevents errors
- Creates and curates visual content such as icons, images, fonts, and colors
- Manages the style guidelines for the implementation and ensures compliance toward them
- Who are your developers? In this class, developers:
- Verifies that the design can be implemented
- Verifies that requirements are achievable
- Implements the design to ensure requirements are met
- Verifies that the implementation meets requirements
- Triages issues
- Resolves issues
- Ensures a stable deployment
The person in each role should be someone who has the skills for the role or is eager to learn the skills for the role.
The PM should start immediately, facilitating all remaining steps in this exercise.
For Autumn 2020, we assigned roles according to your responses on the pre-class survey. Every team must have one PM, one or two Developers, and one Designer. If, after reading through the above, your team wants to swap two or more members' roles, communicate this to your TA (by Canvas or Discord message) right now.
Note, at the end of this course in Homework 9, you'll have the option of "firing" teammates. You won't be able to fire them in the middle of the quarter, but if at the end you believe your teammate did not fulfill the obligations of their role, you will be able to recommend they be "fired." If all of your teammates in an organization "fire" a person, the fired person will lose 10 points in the class (a whole grade point). Therefore, remember that at all times, you should fulfill your duties.
Step 2: Choose your team's mission and name
PM leads
Now that you know each other and your roles, your organization needs a reason for being:
- What is its overarching goal and its overarching values?
- Are you trying to make the world a safer place? A healthier place? Get a high grade in this class? Dismantle racist structures?
The designer and PM should lead this conversation, helping the team identify a larger purpose that will focus everyone's work in the same direction and help resolve disagreements about how to spend your time, because every bit of work will serve different goals.
One way to distill this reason for being is by writing a mission statement. You can see several examples of mission statements on this blog post Links to an external site.. For example, imagine I started a company that was committed to ensuring that the internet was a platform that eradicated racism, rather than amplifying it. I might write a mission statement like this:
Advancing an anti-racist internet.
Once you've chosen a mission, choose a team name that captures your organization's purpose. We'll use this name throughout the quarter to refer to your team. There's one constraint: Discord is set up with team letters (A-J); your team name must start with that letter—but you can choose any word that starts with that letter :) For example, if you're on Team F, and your team's mission was to increase joy with cats, you might choose Team Felines. (This will help us keep track of teams more easily, while giving you some voice).
Once you've chosen a name, have your designer choose a logo to represent your organization. (Consider just choosing a Creative Commons logo from the Noun Project Links to an external site., rather than designing something yourself). You'll use this logo in your GitHub organization later.
Step 3: Create an online presence
PM leads
- If you don't have a GitHub account, create one. Make sure that each of your GitHub profile is associated with your full name so we can grade using your contributions on GitHub. (Otherwise we won't know who you are!)
- You should already have a team on the class GitHub Organization. If you are not on the team, have your PM ask the TA to add you.
- Step through the HowToo strategy for setting up a GitHub repository Links to an external site. to create a repository. When you edit the README file, include your names, roles, and mission statement.
- Write a comment on the HowToo strategy, providing feedback on it. Remember that the comment should not be anonymous, otherwise we cannot give you credit.
Step 4: Select and describe a design problem
DESIGNER leads
Your team's designer should lead a conversation about: what problem do they want to solve within the company's mission. Remember that problems are not solutions—they are a narrative about some way the world functions that has unwanted consequences. For example, climate change is a problem, solar energy is a solution; diabetes is a problem, chronic disease management in primary health care is a solution. Solutions are what you make to change the causality of a problem so that its consequences no longer occur.
Discuss, debate, and deliberate outside of class to arrive at a problem you're all excited about solving this quarter.
Because we'll have limited time in this class to build and deploy a software solution, here are a few constraints on the problem you choose:
- It should be a small problem, not requiring a massive, complex solution.
- It should be something you can build with web standards. (The class has web development as a pre-requisite, so using programming languages beyond HTML, CSS, and JavaScript will limit how much your teammates might be able to help with development).
- It does not have to be novel. It can be a replication, extension, or adaptation of an existing software solution.
To represent your problem, your designer should write a description of your problem, which details the scope of the problem, its consequences in the world, the things that cause the problem, and why existing solutions don't resolve the problem (if you choose a solution that already exists, just explain the problem it solves as if the solution doesn't exist). Convince your reader that your organization has a reason for being.
Note, as state above, your problem should not refer to a solution; "a solution that does X does not exist" is not a statement of a problem. That's like motivating the need for Instagram by saying "The world is broken because it doesn't have Instagram." The problem motivating instagram would be something like, "People love sharing photos, but all existing solutions for sharing them involve clumsy, impersonal file sharing."
Continuing the anti-racism example from above, a good problem statement might be something like:
The internet and the social media platforms are often used as platforms to advance racist causes and racist hate speech. For example, Facebook's most widely shared content are regularly the perspectives of racist commentators, and Twitter is often a place where Black Americans are harassed and bullied by white supremacists. Some social media platforms offer modest ways of mitigating the harm of racist speech, such as blocking people on Twitter or muting particular news sources, but these designs do little to eradicate racism itself. Within the constraint's of the United State's first Amendment, how the internet become a place that not only prevents the spread of racist ideas, but also helps the people that believe those ideas overcome their racist bias?
That's it. No solution, just a problem.
Store your final draft of the problem in your GitHub repository's README file.
Grading Criteria
For credit, submit a link to your GitHub repository on Canvas.
We will grade your README file as follows:
- 0.25 points for listing your team members' names
- 0.25 points for your team members' roles
- 0.25 points for your team name
- 0.25 points for a coherent mission statement
- 1 point for a comment on the HowToo strategy for setting up a repository
- 3 points for a clear, concise, logically sound problem statement that defines the problem being solved, its consequences in the world, the things that cause the problem, and why existing solutions don't resolve the problem. We will deduct points for problem statements that are unclear, verbose, logically flawed, or present a solution.
Further reading
Edmondson, A. (1999). Psychological safety and learning behavior in work teams Links to an external site.. Administrative science quarterly, 44(2), 350-383.