Back to Homepage

Credit: Martin Grandjean

Homework 1: Design your organization (4 points)

Andrew J. Ko

The first step of any software project is defining why the project is happening at all. What problem is it solving? Why have the specific people on a team come together to solve it? What makes them the right people to solve it? Do they have the skills to solve it? In this homework, you're going to answer these questions, designing your organization intentionally.

Step 1: Creating a team (25 min)

Most teams come together around trust first and then choose a problem. This is because is trusting relationships are necessary for collaboration: they provide the psychological safety (Edmondson, 1999) necessary for risk taking, feedback, and open communication. Because of this, we're first going to form teams, and then identify a problem space.

Your team must be 3 to 5 people. (I want the teams large enough that you encounter communication and coordination complexities that reflect real teams in practice). Because of the size of this class, you won't be able to form the exact team you might want. You're also going to have to interview each other to assess the potential for trusting relationships.

Here's the process to follow

Remember that this is a hiring marketplace. You may need to adopt some aggressive recruiting practices to land the candidates you need to succeed.

Once you have a team, write your names down on the team registration sheet for credit for today.

Step 2: Write a mission statement (10 min)

Your team 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? Are you just trying to get a high grade in this class? Choosing a larger purpose 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. Write down your mission statement, arguing about the words as much as you need to until you come to agreement.

Step 3: Choose a problem to solve

Ideate problems you can solve within the scope of your mission statement. Remember that problems are not solutions—they are a characterization of consequential causality. Solutions are what you make to change the causality of a problem so that its consequences no longer occur.

I fully expect this step to take more time than we have in class. 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, here are a few constraints on the problem you choose:

Step 4: Choose your leader (10 min)

Every team needs a leader. And a manager. They are not the same thing.

A leader inspires the team with their vision of how everyone should work together. A leader offers strategic advice to any team member who must choose between several different ways to get their job done. A leader motivates the team to stay on task and complete the project. A great leader helps maintain a positive working environment and actively constructs their team's culture. A great leader promotes fair play among team members and recognizes their individuality. A great leader is humble, and recognizes and accepts that their team members may have more expertise on a particular topic than they have.

A manager deals with the work assignments and day-to-day scheduling. A manager 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). A manager constantly evaluates how the team works together and improves their process to make the team more efficient and effective. A great manager lets their team members work autonomously, without micromanaging them. A great manager facilitates communication between team members and with external parties (i.e. the customer (and the professor)).

In this class, the leader and manager should not be the same person. How should you choose in whom to bestow this great power and even greater responsibility?

Hold an election for leader. If you are considering this role, tell everyone why you want the position. Then everyone should write down one team member's name on a piece of paper, fold it up, and put it in a pile. When everyone has voted, open up all of the pieces of paper and read off the names. The person with the greatest number of votes will be your leader!

In case of a tie, hold a run-off election between the top two vote getters from the first election. If the run-off ends in a tie, flip a coin. The winner of the coin toss will be the leader of the team.

The leader should start immediately, facilitating (but not micromanaging) all remaining steps in this exercise.

Write your names down on the team registration sheet at the front of the classroom and be sure to indicate who your team leader is.

Step 5: Assign roles

This is a critical step, as it ensures at least one person is responsible for every important function of a team.

Remember that one person can take on multiple roles (and given your team sizes, each of you probably should take on multiple roles). Choose people who have the skills for the role or are eager to learn the skills for the role.

Step 6: Create a shared workspace

Grading Criteria

For homework credit, submit a link to your organization on Canvas.

Your shared GitHub space will be graded on the following scale:

Further reading

Edmondson, A. (1999). Psychological safety and learning behavior in work teams. Administrative science quarterly, 44(2), 350-383.