Friday, February 19, 2010

Scrum Musings

Just read up on Scrum recently and am quite impressed with how it supposedly brings about far greater productivity in a team. While I haven't experienced how good Scrum could be myself, I have decided to blog about some of the stuff that I have learnt in theory. Perhaps, we could all try to implement a few sprints for the Final Project and see if it works. 

What I think Scrum is? 
Scrum provides a basic framework for organization of a Product Backlog - which includes functionalities, features, technologies, enhancements and bug fixes for a software development team. 

Scrum Team is self-organizing, and is most effective when its team members are reliable, and take initiative to discuss what goes into the Product Backlog at the First Sprint Meeting Overview. Thereafter, the team conducts several sprints (iterations), to achieve and design the final product. 

Daily Scrum Meetings are held to facilitate discussions among team members, and get everyone updated on what everyone else is doing or have done. This lasts just 15 mins. Only the pigs (i.e. people who are core team members, committed to the project) can talk. People who are just there as extra help (i.e. chickens, who are just involved), should not be allowed to interfere with Scrum Meetings. This reduces potential distractions, and helps the Scrum Team focus on its main purpose and objective. It also helps the team iron out problems, and help out team members who may be facing problems with Sprint assignments. Teamwork is the key here. 

A Scrum Review Meeting is held after every Sprint, to assess the effectiveness of the Sprint, and how best to plan for the next sprint. 

Why I think Scrum Works - Even for Small Teams 
Scrum is useful in that it enables a team to understand its integral strengths and weaknesses. It provides a platform for team members to help out one another in weaker areas, and enable stronger team members to focus on what they do best. Teams are self-organizing and help out in everywhere they can - as a result, work gets done much faster and productivity increases. 

Scrum gives people a chance to cut through the noise. Basically, it gives team members to chance to focus on what is important, and eliminate what may seem cool - but is actually unimportant to the progress of the team. 

Scrum gives team members a chance to talk at every Scrum Meeting, highlight impediments to be overcome, and provide updates. From my numerous experiences working with different people, I realize that communication is of utmost importance. Sometimes, people can just clam up and refuse to highlight problems and choose to stay silent. Scrum certainly provides an open and receptive environment to overcome this issue. 

How I think Scrum can be used in CS3216
The usual sprint lasts 30 days. This is unfeasible in 3216 due to the much shorter time duration given between assignments. I think it is better to start with 3 day sprints? This will enable team members who have never used Scrum before to adapt to Scrum gradually, and keep changing and adapting to requirements, update Product Backlog, come up with better Sprint Goals and Sprint Backlog - basically adapting to the situation as the situation calls for change. 

Use of Google Docs to post all Scrum Backlogs, Project Timelines, Agenda - team members can just update Google Docs and work anywhere and anytime. 

The best Scrum Teams work in familiar environments. Ken Schwaber advocates Daily Scrum Meetings to be held at same place, same time. This may not be feasible due to different timetables lack of designated Scrum Rooms. Still, this is a problem that can be easily overcome. 

Scrum is fluid in nature. Don't let anything be cast in stone and be prepared for change as it comes. 

P.S. am really new to this. Let me know of suggestions and how we can implement Scrum better. I will post again after we have tried it in practice. 



Tuesday, February 16, 2010

Millenium Development Goals

These days, I have been thinking how to use infocomm technology to solve the world's problems, achieve the Millenium Development Goals (MDGs) by 2015, and in the process, bring us a step closer to saving the world.

It seems like a lot have been done already, there're numerous websites on raising awareness on poverty, initiatives to link people from all over the world together. However, what else can we do to solve practical problems? How do we raise the standard of living of people living on less than US$2 a day using technology? This baffles me. The point is, we take for granted what is in our world. The Internet, Google, use of mobile technology have made our lives easier, and we forget how fortunate we are.

Yet, these technologies are not available to the poor people in less developed countries. For instance, I went on a youth expedition project a year back to a village in South East Asia. Life there was peaceful and laid back. Every morning we had coffee and bread for breakfast, carried on our work painting and building a kindergarten for the villagers, and learnt much about life in the village. The village had stuff like water pumps, but still relied on wells. They had no gas stoves, and used basic methods to cook their food. There were no computers, very few television sets, and the villagers used scooters and bicycles to get around.

There's a huge gap between what the MDGs want to achieve and how our technologies can help to achieve the MDGs in a practical way (not just awareness, fundraising etc.)

Any ideas, anyone?

Tuesday, February 2, 2010

Mafia Wars!

What a coincidence that I'm blogging on Mafia Wars! I actually think the game is pretty addictive and it appeals to me as a user despite its rather ugly design and meaningless clicking just to increase the amount of Cash that you have, fight, buy properties or increase inventory. As Ji Wei puts it during the presentation, this is a really simple application with not much animation, graphics and is relatively simple to program, but still, more than 6.3 million people play it everyday!

To summarize, what made Mafia Wars so popular?

if you've read "Rich Dad Poor Dad" before, you realize that Robert Kiyosaki always has his mantra of "best-selling author" vs. "best-writing author". A well-written book may not sell as well as a book that was well-marketed (or rather, a book that appeals to readers, a book that people will need and want to read). I think this is true for FB apps (and for that matter, other web developments) as well. What will get FB users addicted to a game is not a darn difficult to program app full of graphics/animations/functions. What's needed to make an app sell and reach out to tons of people is a basic/easy interface that people can understand within 2 mins.

Another point that I felt was noteworthy for Facebook application developers was how optimization plays a big role in getting tons of people to use the app in the shortest possible time. For instance, players have to invite a certain number of friends to join their Mafia before they can unlock a higher level. This is a fantastic marketing strategy and is akin to online word-of-mouth, just that it is way more effective. A user who desperately wants to unlock that higher level will try to invite all his friends to join Mafia Wars, and may even do so repetitively.

And lastly, what makes Mafia Wars so addictive?
1. buy more weapons, inventory, armour, loot other players, chance to fight with other players/friends
2. buy more properties to increase cashflow, increase payout and current take
3. reach higher Levels in Mafia Wars - unlock different property, inventory, weapons - maybe want to see what's in store for me?
4. Earn Godfather points to get exotic weapons, inventory

the most important point out of the four is the chance to reach higher and higher levels of gameplay. I think this introduces a competitive element in Mafia Wars, and people are naturally keen to keep going back to the game as long as they think there's more they can do in Mafia Wars.

Hmm, food for thought regarding gaming apps:
1. keep the concept simple and straightforward. know who your users are. People probably aren't very interested in reading a tutorial on how to play your game. they just want to figure it out by themselves and if they manage to, they'll keep playing. if they don't, you just lost a customer and all his friends.
2. Spam. i hate to write this, but this works!
3. give people a reason to re-use the app over and over again.