Project 3 General
For this project, I don't think I did much job with the coding, but I go through the code written by others so that I know what happened.
For the first week, I discuss the graphic issue with the team, and I think that should be a part of our assignment, but seems no body think that should be done.
For the second week, out team got the assignment of implement the Sound and Score, I was assigned a job to write the class for the score, but another team member did that for me before I started. So I got nothing to do, so I turn to create the textures for the game, and post it on the perforce. Actually, I’m trying to push the others to use my textures to make a better game. (I’m not the team leader, can’t decide by myself)
For the third week, our team leader Adi seems got some extra time and he decide to help me put the graphics part into the game. I think my ”push” works!
As a team member in Team A, I did all my jobs, discuss the topic with others on Piazza and do some extra job to push my team.
Taking what you know now, how would you plan and manage this task in a global software environment?
I assume this question means I am the project leader, and I should work with other people from other country with different time zone, and the project is still the Tetris and I have 3 weeks to do that.
First, I will not need 12 people to do this task, I will shrink the team into a 2-3 person team. Cost would be extremely cut down. Also communication will be much easier.
Second, as I know China well, I will probably choose the programmers from Chinese second-level city. I need a programmer and an artist, I prefer those people with multiply skills. For example, an artist can do both simple 2D textures and simple audio(won’t be too expensive).
Third, build the environment for the project. A forum, a SVN, a wiki, an instance messenger. In this case, I will choose Discuz (free forum + wiki software, poplular in china), Subversion(free, I think perforce is also too hard to use for such project), Tecent QQ(a free IM software, support group chat, video meeting and file transport). It may take a while for people to understand SVN, but others won’t be problem (people familiar with them like google). But we may still need a simple document to let them know what we use (post on forum).
Forth, we need a kick-off meeting, can be done online (QQ), choose a time that both people are ok. We should talk about the project, discuss some design and do some brain storm in the meeting. I will write down the important part and document it as our design document. Post the document on forum so everyone can read.
Fifth, assign the job to everyone, give them a due date. (but actually it's a first pass, we should still have some time left)
After the first pass is due, check the job they did (they should have done something) and decide what we should improve on the project. Get it done in the rest of the time
Note: If the project goes bigger, this solution may not work. In lager project, I may use some other SVN like perforce, and I will have to separate the whole job to small individual tasks. I will separate the whole team to small team with team leaders.
How would you maximize your team’s time and effort and still get this project done?First, I think, why people sometimes are not willing to do your work is basically it means nothing but a way to earn money to them. So as a team leader, I may spent some time talking about dreams, future, how awesome we would be if we get the job done, ect. (To make myself more persuative, I may need to perform the best in the team)
Second, actually I found that in a team project, team leader would be very busy but others will be a little bit loose. But what if I make everyone a team leader, and we work on multiply projects at once. For example, I got 3 programmer with different skills, and I let A, B, C in charge of three different project, and their team members are themselves. In this case, if A really want his project to be done nicely, he would work hard for B and C’s project first. After that, he would able to push B and C hard to help him to get his job done. (Well, I just come up with this idea myself, I have never tested it, I may have a try later in my own project~)
Third, a working “Pipeline” is important. I found that sometimes people hard to get started just because the task is hard and boring and he has no clue how to deal with it. I think this problem could be solve if I design a good pipeline for them. Start from something easy and let them warm for the project is important.
Forth, choose good team members. If I am the team leader, I won’t let some waste of money and time fools get into my team. I must choose the team members extremely careful, that is important than anything.