Sunday, February 15, 2009

Sense in the Madness

Two weeks ago, we had the Facebook Application Seminar; last week was "Pitching Week". There is a common theme in these two past two weeks and that's ideas are important.

CS3216 is no about programming Facebook applications. That's really quite easy. CS3216 is about coming up with a good idea for a Facebook app and EXECUTING it. So there are two parts - idea + execution. Both of which are equally important. We first focus on the idea and for the second half of the semester, we will deal with the execution part in the form of the Final Project.

The goal of the Application Seminar is to have the students study some existing applications in detail so as to learn about how they work and also practise analyzing the application and thinking about what's good, what's bad and what's ugly. We also experimented with blogging as a means to "encourage" (aka force) students to pay attention during the presentations and also to think a little deeper about what they heard.

It really isn't that hard but it is something that I would like to encourage students to do critically to their own apps as they work on their Final Project. It is quite easy to get so caught up in doing the work that we sometimes forget to just sit down to just think about what we're doing.

I always tell my students, "More Thinking, Less Coding".

While the students might be a little upset to have the Application Seminar Critique foisted them, they might be comforted to know that I suffered with them because I had to read through not just their critiques but the comments they left on each other's entries. Overall, I think it was a good move - but I would only doing once during the semester. :-)

Pitching Week is all about ideas. First, the students heard from the folks who are interested in working with them. There was NDP, NLB, APB and lots of others.

There are many things that the students should have learnt from the session if they were paying attention.

First, the session provides students with a perspective of what the industry cares about in terms of Facebook apps and why they care about what they care about. Some of those who turned up have a better idea about what they want; others only have a foggy idea, but that's how it is.

Second, the students get to see how industry folks pitch their ideas. Personally, I think marketing is important. Technical skills are useless unless the sales matches up. There is no point building stuff that nobody will buy or use.

Third, this is the chance to strike up partnerships. The folks who came to the pitching session has some things to offer and I do hope that by linking them up with the students, meaningful partnerships can be formed.

The quest for ideas culminated in a Pitching Party last Friday. The idea of the Party was suggested by a student in last year's batch. We tried it out last year and it worked, so we did it again this year.

In my opinion, it was as successful as last year. While I had planned for the session to start at 6 pm and end at 9 pm, we ended at 10 pm instead. The point of the Party was to allow students to pitch ideas to each other.

At this point, they are supposed to be thinking about their Final Projects and so they can use the Party to try to get other students to join their groups, or if they had already formed their groups to try to elicit feedback from the group on their Final Project ideas.

We also had some ex-students at the Party to do some pitching and also to give their views and comments on the ideas pitched. I thought it was a good session and I thoroughly enjoyed myself.

Some students commented that they were quite overwhelmed last year. They thought they were all set on developing their Facebook app from Assignment 1 for their Final Project, but they were not quite so certain after all they heard in the two sessions we had last week.

That's actually good news. It is my hope that students will spend more time thinking about their ideas and what to do for their Final Project instead of rushing into things.

Monday, February 2, 2009

Facebook Application Seminar

First, I would like to apologize to my students (and folks from the workshop) for letting class run overtime till about 9 pm earlier this evening. As it turns out, the presentations we had this evening were particularly brilliant and I didn't have the heart to cut people off even when they ran over time.

I am supposed to post my blog entry at the end of the week, but in this instance, I decided that it would be helpful for me to start the ball rolling because this week is a little different.

Instead of merely blogging in general about what they think about today's session in general, the students are supposed to pick of the apps presented today (but not their own) and do a simple critique. Yes, I'm being evil as usual, but there are always reasons for evilness. :-P I do not believe in random evilness, only purposeful evilness.

One of the goal of CS3216 is to make students think -- and by structuring the class and assignments in such a way as to encourage (or people will claim "force") students to think, I believe that I am earning my pay.

In any case, the CS3216 blogs will be particularly active for the next 7 days. Each student will have 24 hours (till 23:59 tomorrow (Tuesday) evening) to post his/her entry and there should be some activity going on for the rest of the week as students thrash out their thoughts on the Facebook apps they heard about today.

Will this work well? Frankly, I dunno, but if we don't try, we never know do we? What's quite clear to me is that I have an exceptional class of students who have set very high standards in both their first Facebook assignment and in the presentations we had earlier this evening. :-)

Anyway, back to the core issues that I had hoped to highlight (or have students figure out by themselves) in the process of preparing for the Facebook application seminar and in listening to their friends:

1. Thinking about Implementation. This is aspect is mostly of interest to the programmers. At this point, the students have all completed one Facebook assignment and the majority should have a reasonably good understanding of databases and what's possible with PHP. Some groups have worked with Flash and so they should also have some idea of how to integrate Flash with PHP.

One of the things that I hope that the programmers would do is to try to get into the habit of thinking about and figure out how existing apps are implemented. There are two reasons for this: (i) it's good exercise. Most apps are really quite simple and the practice of thinking about their implementation will help students implement their own apps faster in the future; (ii) this is the opportunity to learn about new techniques. If a student should look at an app and realise that it's not obvious how the app is implemented, then it's an opportunity to learn something new. Going through this mental exercise will help the programmers improve their programming skill and I believe that it's complementary to doing actual coding.

2. Learning to Identify Good Ideas. After Assignment 1, it should be pretty clear to the students that the technical part of building Facebook apps isn't hard at all. Yeah, it's a lot of work, but it's not something that NUS students cannot manage. My experience last semester and from what I have seen from the first assignment is that our students are as technically competent as any of the Facebook developers out there.

So what is the difference between a mediocre Facebook app and the 6-million-user app? My view: it's the little cutesy ideas and that's the whole point of having students think through what are the good, bad and ugly points about each app. While all the groups did fabulous presentations, some groups were better at identifying and highlighting the "core" ideas/lessons from the apps they studied.

I shall refrain from commenting on these ideas because that's what the students are supposed to do in their assignment - they will comment on what they have heard from their friends' presentations. If they can highlight points/lessons that their friends missed out, they will score points and their friends' group will lose points. :-P Yeah, very evil, but very fun I think. :-)

I would like to take this opportunity to highlight MTV Cribs again. In many ways, MTV Cribs has all the basic features of Pet Society and more. What seems to be lacking is merely the will to follow through and to "market". Personally, I fail to see why it cannot be made as successful as Pet Society. What's my point? You guys decide how far you go. Size is no barrier, but neither am I here to push the students. My job is to facilitate learning and show people what is possible. Possible doesn't mean easy and each man (or woman) has to decide on what he/she wants to do with his/her life. :-P

3. User Interface Design and Interaction Design is Important. One idea can be implemented in many different ways. Some of which are more annoying than others. One of the key element of good apps is good UI and user interaction design.

Apps should be simple to use. Simple apps with limited features are not necessarily bad, e.g. graffiti. Students should also take into account the psychology of Facebook users. They have no patience for complicated things and also for slow moving pets. :-P

One of the announcements I wanted to make today, but didn't because we ran out of time is that we will be doing a simple case study on user interface and interaction design in two weeks. The case study has already been uploaded to the IVLE Workbin. People can check it out. :-)

4. Understanding the Curse of Success (Scalability). Facebook apps are quite a paradox. If you build an app that nobody uses, you will be very sad. On the other hand, if your app becomes exponentially popular, you may end up in trouble as your web server gets loaded. If the web service architecture is not done properly, it might blow up. FarmWars experienced some load issues last year (part of it was due to poor programming choices).

The developers of Friends for Sale gave a talk last year and their talk was available online. I can't seem to find the video anymore, but the slides are here. Moral of the story is that success on Facebook may cause headaches (and if not handled properly will results in a loss of users due to user frustration).

5. It's okay to Steal (Ideas). Alright, let's put this statement in context. My point here is that many successful apps have found revival after been "converted" to Chinese. Examples include Baidu and Xiaonei. It's not as crazy as it sounds, but one possible route to quick success is to identify a successful Facebook app and clone it for Xiaonei. I'm serious. Do not under-estimate the value of cloning. :-)

It seems that good concepts as far as Facebook apps go, transcends cultural boundaries. See this article. The point here is that it's really not just about ideas. It's a package deal consisting of both the idea and the execution. Not only must you have a good idea, you have to execute well in order to succeed. Ideas tried and test and proven to work are good 'cos you reduce the risk of uncertainty and can focus on getting the execution right.

Alright, I guess this covers most of the summary points I wanted to make at the end of class, but didn't get a chance because we ran out of time. I'm looking forward to see what people have to say about the presentations earlier this evening. :-)