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.