Team Dynamics

Posted: November 29, 2013 in CS3216, Shubham's Posts

I feel sorry to hear about what happened to Jim’s team last year. I actually know Hieu really well and I know that he is an exceptionally talented student and a really good programmer. I can empathise with him (life can get really lonely when you are the only coder). I can also empathise with Peggy and Uncle Jim (life can get really lonely also if you know that your team lacks programming talent). But, hats off to them, for managing to do a good job at the end! All is well that ends well and more importantly

“What doesn’t kill you makes you stronger” – Legendary Prof Ben

Q1: How much control and authority would you have given to this fourth voice in our choice of platforms (HTML5/native iOS)?

A1: I cannot give a flat yes/no answer because I believe it really depends on the situation.

If there is only one coder in the team and he is really good at some platform and the app can be done on that platform (anticipated performance issues aside), I will not change the platform unless the teaching staff or the fourth person logically proves why we really cannot and should not do the app on that platform. If the only coder in the team has never worked on iOS before but he has good knowledge of HTML 5, I will go ahead with HTML 5.

The situation changes slightly if the team member is not at expert at either but has a little experience in one of the two. Even in this case, if the team member tells me that he wouldn’t have enough time to learn the new platform and he wants to work on the platform he has a little experience with before, I would still back the team member’s ability and not switch platforms. However, if the team member is okay with anything and the fourth voice is of someone from the teaching team, I will listen to it.

Personally, being a project manager and irrespective of whether I know how to code or not, I will try to understand the logical reasons being given in support of either platform. I would make a pros/cons list (I made this list in the CS3216 projects this year too). I would try to see if their is a clear winner after talking to the fourth voice as well as the lone coder team member. If the fourth voice has a very strong point, then I would talk to my team member and try to convince him. But then too, I would not force the team member to use something he is not comfortable with. I would reason with him logically but since he is the person who is going to ultimately do the work, I cannot and will not go against him if he is really not comfortable using some platform.

If the fourth voice is of someone from the teaching staff and they feel very strongly that we should choose one of the platforms, I would be very tempted to do as they advise. This is because the teaching staff is much more experienced than either of us. Moreover, I am sure the teaching staff will also provide logical reasons for their advise. But again, even though I would talk to the team member, I wouldn’t blindly follow the teaching staff if the team member thinks he cannot pull it off and learn the new technology in time.

For me, the fourth voice will never have the veto power. This is because the fourth voice will not be as directly impacted as the team members will be if the project doesn’t go well. So, I will first try to understand the arguments for and against by talking to both the parties and then try to convince the team member if his arguments are not that strong (by convince, I mean reason with him and seeing if he understands why the fourth voice is saying what it is). But ultimately, I will not force the team member to do something he doesn’t have faith in. If he tells me that he can make the app work well on the platform he is comfortable with, I will back his decision and ability. After all, I chose for him to be in my team in the first place because I believed he would help make my project successful.

There is one last case where the team member is being unreasonable and the app simply can’t work on his platform of choice. In this case, I will tell the team member to listen to me if I am the project manager. If he doesn’t, I will tell Prof Colin about the situation and ask him for his decision. If his reply is that we must resolve it by ourselves and I am the project manager, I would put my foot down and expect the team member to listen to me (for this to work, there must be a clear democractic election of the team leader beforehand, if this is not done, you can’t expect your voice to be heard as a project manager).

Q2: With the deadline just 2 weeks away, how would you as project manager resolved this problem (iOS vs HTML5) if it were to occur within the team?

A2: In Jim’s case, they had already made the decision to try out both the platforms and so their decision was a bit easier because they must have had results and would have known the platform on which more progress was being made. I would have chosen the platform on which more progress has been made because given the team resources, the progress was the best answer as to which platform is better. Of course, the features which were left to be implemented would also have to be taken into account. However, it might very well be that there is no conclusive answer. In that case, with 2 weeks left, I would go ahead with what my team members are most comfortable with. 2 weeks is a very short span of time and if no conclusive answer has been found till now, I can’t take the risk of more experimentation. Unless the fourth voice is willing to help us by actually helping in the implementation (read, coding), I would go with what my team mate feels he is most comfortable with.

Q3: What are some of the issues that we presented that could have happened to any team? List down 3, and talk about how you would have resolved these issues.

A3: The three issues off the top of my head are:

  1. Conflict of opinion – This is a very common issue. Actually, you should be worried if this doesn’t happen in your team. This is because no two humans think the same. Put a team of 4 and you would have 4 opinions. And opinions are good, opinions show that the people involved care. I absolutely love when people argue in my team, it means that they care about my project. In the most cases, I have observed that it is not very difficult to resolve the conflicts if the team members don’t lose their heads and become too agitated. The best solution is to make a pros-cons list and see which argument has more weight. The other solution I have used is to consult the teaching staff. The last solution if all else fails is to let the project manager decide. According to me, for real world projects, the project manager should be the person who has the most stake in the success or failure of the project. For example, during our final project, Leon Qiao was the project manager since it was his startup BigSpoon. When I had the opportunity to do project management during the assignments, I let the decision be handled by a vote and then take the opinion of the majority. However, that is just my style of project management.
  2. Lack of resources in the team – In Jim’s case, it was the lack of programming talent. But more generally, you could be short of artists, game designers, etc.. This is a nasty situation. The first way to resolve this would be to pre-empt and prevent. For example, if you know you are going to make an iOS application, try to rope in iOS developers. If you can’t find any, see if your idea can be modified to work well on any other platform. If not, then see if you can learn the technology within the time constraints. Estimating the time required to learn is a difficult task and this is where the teaching staff can help you. Ask them if it is possible. Ask prospective team mates if they could learn the technology in the short amount of time. If nothing works or you get negative replies, then change the idea, as the last report. If you employ these strategies, you should never be in a situation where you lack talent. However, it might be that you didn’t estimate that you need 3d artists and suddenly you realise that you need a 3d artist for the success of your project. Well, that is a tough situation to be and it should not have happened. If it does, then you didn’t plan your resource requirement well enough. In this case, your best bet is to ask for help. Ask your friends, ask other teams, etc.. Ask the teaching staff. However, if all else fails, you can either decide to shelve the feature or learn the skill yourself, time permitting. But, again, this situation will not happen if you plan the project meticulously. So, a few hours spent thinking about the product might save you many hours cursing why you did not.
  3. Over-the-top expectations from team member or unrealistic ideas – One problem that might might happen is that a team member isn’t able to deliver as much or as well as you had expected. This is a bad situation to be because this means that your project will have to suffer. Many a time, the solution is simply to push the team member and egg him on. Maybe meet more often? Talk to the team member? Ask him for progress updates more often? Many a times, I myself, have the tendency to start slacking. I believe my FYP professor handles me really well. He simply puts more pressure on me, reminds me more often, etc.. As a team leader it is your responsibility to get the best out of your team mates. Its okay to be the “annoying guy” if it helps your project. You don’t have to impress your team mates to marry them later on in life, you have to get the best out of them. Alternatively, it might not be the team mate who is the source of the problem. His task might be too difficult or he might not have the required expertise. In the first case, the project manager should do more homework. He should analyse the tasks again and maybe break them down into smaller components and then try to estimate the man hours of effort needed. In the second case, if the team member doesn’t have the required expertise, he really can’t do enough about it. All you can do is to help him learn faster. This involves motivating him, reminding him about the task, trying to share some of the workload, etc..

Final Project – BigSpoon

Posted: November 29, 2013 in CS3216, Shubham's Posts

Unlike many of my class mates, I did not have an idea in mind already. I went into the pitching session with an open mind. I initially thought it would be very cool to do something Google Glass related. However, there was only one Google Glass available for all the Google Glass based projects and that really put me off. What is more difficult than doing a project on a completely new technology? Doing a project on the completely new technology when you wouldn’t have the technology all the time with you for debugging. I also had problems with using the Google Glass. I am short sighted and it wasn’t comfortable using my regular glasses under the Google Glass.

Instead of searching for team mates for a particular idea, I decided to search for ideas after finding team mates. I requested ZX, Gaoxiang and Yos, thankfully, they all agreed to join me in yet another project πŸ˜€ Working with them in the assignments had been so much fun and so easy that I feel I am lucky to have found such team mates. Goaxiang initially suggested doing a project related to automated essay scoring (my FYP) and even though it would have been awesome to apply my FYP to a real project, I was not overtly keen since I my AES software lags behind the state of the art (I hope to change that by the next semester).

After finding the team mates, I messaged almost every external presenter to ask them more about their ideas. I had already been really impressed with BigSpoon during the presentation. Add to that the fact that the team was made up of CS3216 alumni. What could be more awesome? πŸ˜‰

Oh yes, there could one one thing more awesome – the people you want to work with want to work with you πŸ˜€ So, it was decided, we were doing BigSpoon. And BigSpoon team did really make it easy for us. They had already thought about their design to the minutest detail. In fact, they had almost made a prototype using Powerpoint (I also didn’t know before that Powerpoint could be used as a prototyping tool πŸ˜‰ ). Leon Qiao had also spent effort in designing the data model. We quickly decided that the final app would have to have 3 components – iOS consumer app, restaurant facing web app and the server, of course.

We had hardly planned what to do when another friend joined our team- Chen Liang. We were obviously not going to say ‘no’ to two more hands who could code πŸ˜› So, when he asked if he could join our team, I must have shouted out ‘Yes’. We would have said to a sixth person too had Prof allowed – the way I see it, the more the merrier πŸ˜€

Me and Zhixing Yang took over the iOS part, Chen Liang, Gaoxiang and Yos were to handle the web app πŸ˜€ It had been two years since I had done CS3217 and so I had completely forgotten about iOS development. It took me some time before I could get re-familiarised with everything. I was also really struck by all the improvements Apple has made not only in XCode but also iOS. iOS development is much less painful now (all hail, ARC and storyboard :D). Actually, if you have never used Storyboard before, it can get a bit frustrating at first because getting used to the GUI and finding the different options can really take some time. Many a time, I was tempted to just do everything in code, but I am glad I didn’t give in.

FYP played a bigger role during the final project. Prof Hwee wanted frequent updates and so I really had to divide my time between my FYP and the project. In fact, this has been a big grudge of my undergraduate life. I am never able to devote sufficient time to interesting modules because of other interesting modules. When I was doing CS3217, I had my UROP. Now, FYP. I really want to do a PhD because then, I would have only one project to worry about. But, anyways, I did the best I could do, cut down on some sleep, drank more Coke (beer would have sounded so much cooler but my parents don’t allow me to drink 😦 ) and carried on.

The project also gave me a chance to go and interact with real customers. All hail Jay for arranging everything! I have begun to appreciate the marketing side of a business even more after this stint.

What was really helpful was the feedback of the teaching team. I wish the same process could be applied to the other assignments. The meetings with the tutors were really helpful. My special gratitude to Su Yuen and Omer, and of course Prof Colin, their feedback really helped us. They pointed out things that were as big and glaring as the white red cherry used in a Sunday morning cricket Test match, but they were things we wouls never ever have noticed on our own.

I must also say that we were lucky to be working with Jay and Leon Qiao. They had gone through CS3216 a year before and so they understood the requirements very well. They helped us at every step.

I love STEPS, especially presenting to Profs whose modules I have taken before. Its almost like a ‘thank you’ to them for teaching CS3216 students the basics of computer science which has enabled us to do awesome things.

The only regret I have is that we ran out of feedback forms. I think Prof underestimated the response, but I am sure next year, the students would be cursing our batch because they would have many more feedback forms they would have to get filled πŸ˜› HAHA

Cab Share

Posted: November 29, 2013 in CS3216, Shubham's Posts

I did my third assignment with Yos, Gaoxiang and Tien. I didn’t know them before CS3216.

We thought of many ideas for assignment 3. I was thinking of an event recommendation service. Gaoxiang wanted to do some version of a geolocation based name card. But we ended up make a taxi fare sharing app. I couldn’t convince my team mates about my idea. In hindsight, its good that they were not convinced since I was thinking of using some machine learning to recommend events (a continuation of my summer internship work) and it was probably not the sort of thing appropriate for CS3216. I didn’t see any real use for Gaoxiang’s idea. The idea for CabShare was inspired by one of the problems onΒ

Taxi fare sharing app suddenly made sense to all of us. I liked it because I usually take two cab trips per semester – one going to Changi from NUS after exams, the other coming from Changi to NUS when the semester starts. They cost 30$ each. I hate shelling out 60 bucks every semester when I know that there will be many more people going from NUS to Changi during that period and in an ideal world, I should be sharing rides with them. The idea fitted also because we could fulfil all of the milestones with it like geolocation, local storage, etc..

Working with my team was pretty smooth. Tien and Gaoxiang had used Ruby on Rails before, so they knew what they were doing. Yos is really hard-working and he has done front-end stuff before too. I did geolocation + taxi fare calculation (front-end essentially). It wasn’t like assignment 1 when we used to meet everyday. For assignment 3, our team met less often. However, the communication was good. We used Facebook chat to the max and didn’t really have any problems communicating. We spent a lot of time in discussing and testing the user interface, user flow, etc.. We didn’t let the implementation difficulty dictate the user experience. This was really good to witness and speaks volumes about the quality and motivation level of my team mates.

Working on this assignment was interesting also because this was the time when I had to start spending hours on my FYP. I had totally neglected my FYP during Assignment 1 and so I had to make up for it. Most of the seniors said that doing CS3216 with FYP was hard and I should have listened, but I didn’t. Anyways, thanks to my awesome team mates, I was able to cope with both.

I didn’t feel a lot of pressure working on CabShare. I think this is because I could always rely on my team mates and trust them to not only do their part well but also help me if I face problems.

Also, to calculate the taxi fare, I cheated and was piggy backing on some other service by making requests to their server and pretending it was their website. This is the benevolent service –Β πŸ˜€ If they ever come running after me, I would reiterate what I learned in the first lecture –

ask for forgiveness not permission

The one problem that we faced was deciding what the offline mode should show.Our app is not a content based app, so offline mode doesn’t really make much sense. My team mates didn’t even want to do it since they felt it didn’t add much value (they were right in my opinion too). However, I was a bit more paranoid about my grade, so I convinced them to show at least a message saying the app is offline πŸ˜›

In this assignment, I did feel the 7/30 coolness score was a bit low. I still don’t know why the app didn’t work for the teaching staff. In fact, I wish we could demo them our app just like we demo our final projects to them. I completely understand their point of view that we wouldn’t have the chance to demo it to real users. But it would be good to split the coolness marks to 15 (before demo) + 15 (usability after demo). In our case, the teaching staff couldn’t get OTP to work. Now, this prevented them from doing anything inside our app since the app would let them in only if they provided the correct OTP. If we had a chance to demo, even if they wouldn’t have given us more points, they would at least have been able to see how the rest of the app works. This would have led them to be able to comment on the UI in the rest of the app, etc. etc.. I hope Prof Colin agrees with me here and has a demo session for the assignments too from next year πŸ™‚

Cloakie uncloaked!

Posted: November 29, 2013 in CS3216, Shubham's Posts

We were actually thinking of making a social calendar!! We ended up making an anonymous Facebook messaging app.

I knew Chinab before this module and was overjoyed to see he was taking CS3216 too, considering that he is not from School of Computing and this is the 5th year of his NUS life. So, of course, I wanted to do one of the assignments with him. And why not start with the 1st, right?! I was Zhixing Yang’s tutor in CS2103, so I knew him from before CS3216 too. Needless to say, he was one of the best students in the tutorial group, well, the class really. So, I asked him if he would like to do Assignment 1 with me and he agreed πŸ˜€ We were still searching for one more member but we were unsuccessful in finding one. We really wanted to work with another 2 people but Prof Colin said that a group couldn’t have more than 4 people. He was okay with 3, but not 5.

Okay, first hurdle crossed. I have a team for assignment 1. Now, we need to decide on what to make. Chinab suggested a social calendar. We were having dinner together at College of Alice and Peter Tan, UTown (yeah, thats right, one of the advantages of working with me is you can have free dinner from 6pm to 10pm if you happen to be in UTown). Initially, we liked the idea of social calendar, but then, we started to think of the features. We were able to come up with many. For example, a calendar which lets you search what your friends are doing at any given point, an intelligent even assigner, categorizes friend’s events for you, etc. etc.. Over some dal makhani and plain cold stale naan, we had hit the jackpot idea!

Now, come the next day or a couple of days later, I don’t remember (and don’t you dare to think that not being able to remember is my fault. I am too advanced for my time, I am born with the expectation of a time machine but in a time when human technology hasn’t progressed that much), but I remember us huddled around in SoC Basement at around 10pm was to decide the main features and possibly the architecture too so that we could start work on our assignment 1. We were brainstorming and slowly, we came to the realization that a social calendar is not really something we NEED. In fact, we were not sure it offered something new at all. Then, while we were still coping with harsh truth that our multi-million dollar mind boggling idea might just be a pipe dream, Chinab suddenly asked me if we had tried ‘Bang With Friends’ (don’t blame me of thinking about such apps, Chinab is the culprit).

I didn’t really know about ‘Bang With Friends’ but I was immediately intrigued. I mean which guy would not like this name?!? Its really the perfect app, you can choose among a list of your friends who you want to ‘bang’ and if they feel the same way about you, problem solved! All 3 of us agreed that this was the perfect app but it had already been done. So, well, we can’t really do this. This discussion progressed to a discussion on what if we could make an app that let you vent out your true feelings for someone anonymously. We really thought this would make the world better because it would encourage more and more people to express their true feelings which they would never have due to the fear of their personal identity being known.

Well, the above is the story of how the idea of Claokie was born! If Cloakie is successful a few years down the line, this story would be that sort of inspiring story that entrepreneurs will talk about – 3 kids with a dream to change the world, blah blah blah. Anyways, now that we were done with what we would like to make, we dived into how we will do it.

I wanted to get an MVP out as soon as possible. So, I was pushing my team mates to think about the actual user interface, implementation of basic features and start coding asap. We used to start our meeting in SoC almost every day between 6-8pm and used to leave anywhere from 2am to 7am (actually, mostly around 3-4am, I once left at 7am very close to the deadline). Chinab had used php before, so he became the server guy. Me and ZX (Zhixing Yang, I feel ZX makes him sound like a superhero, which he is – a superhero team mate) became the client guys.

We sketched out the UI the first night. Then we moved on to the architecture. We discussed how the interaction between client and server will be, then started coding. This was my first time doing frontend JavaScript and HTML on a real sizeable project (I had used JavaScript and HTML5 canvas before, but that use case was very different, it was not a full blown application and I didn’t care much about how good the UI was). ZX started on designing the look, I started on Facebook login. We always used to work together (all 3 of us). This is the way I prefer working actually. This way we do not waste time in e-mailing, messaging, waiting for response etc..

In hindsight, we probably didn’t utilise our time well. We could have used a templating library to avoid spending hours writing and debugging html string concatenation in JavaScript. But both of us were new to this and so it was a good learning experience. Chinab knew his php well, so we didn’t have to worry about that at all. We were using websockets and defining our own message format for different kinds of messages. The only thing that I probably contributed to Chinab’s knowledge was regular expressions πŸ˜› He was using long and complicated string manipulation and comparison to identify the type of message.

I really feel blessed to have got such hard working team mates for the first assignment. I know both of them made many sacrifices for the assignment. I used to insist we work together as much as we can. ZX, who was an early riser, even changed his sleeping schedule to work late night with us. The best thing about late nights is that the time slots never clash with something else. But we also had a lot of fun in our meetings. We discovered many hacks to get stuff from the Central Library vending machines for free πŸ˜‰ Our biggest achievement was a never ending supply of forks and spoons from the cooked food vending machine and a free packet of peanuts πŸ˜€

Well, we initally planned on finishing the first prototype within a week or less. Not a surprise, but we failed miserably on our own set deadlines. I think I knew we would but I still set unrealistic deadlines for ourselves since nothing motivates programmers like the delivery date, in my opinion. By the mid submission, we had a working system. One could send messages to others. But that was not what our app was about. We hadn’t implemented the anonymous feature yet. However, we were feeling good about having a featureless MVP out at least.

We also had a lot of trouble with regressions. We didn’t test enough and so sometimes ended up pushing broken versions to the ec2 instance. This caused a major misunderstanding a few days after the mid submission when Prof thought that the broken version was all we had and he sent an e-mail that read something like this –

Does absolutely nothing. >.< Clicking on Connect does nothing. Only the Like works (and strangely asks me to confirm the like)

We cleared that misunderstanding soon enough but that did tell us something about not writing unit tests. In our defence, we probably didn’t have time or people to write tests, but I have a feeling that will be the case in almost every project. So, that is a good leasson learned and something we could learn from.

Luckily, in the end, it all worked out. We did have to pull off some all-nighters at the end but well, being NUS students and after having taken Prof Ben’s modules, I don’t think any of us really minded that. We were able to implement almost everything we wanted to do at the beginning. We could have done a better job of the timeline and open graph milestones. I feel the teaching staff were generous in giving us 3/5 for the milestone which dealt with integration with Timeline using OpenGraph collections πŸ˜› However, I am really happy with what we did.

Thanks to Chinab and ZX for working with me for this assignment! I hope you are as proud of Cloakie as I am! Thanks also to ZX for teaching me the basics of Chinese πŸ˜› Now, I no longer point to dishes at the Chinese stall. I say I want ‘shi hong shir chao dong’ (tomatos fried eggs dish) instead πŸ˜€

Application Critique

Posted: September 3, 2013 in Uncategorized

Yesterday evening was a fun one. It is not always that you get to hear a concise but in-depth analysis of the most influential apps around. The best (and most troublesome while preparing) part was that no presentation dragged on and on. Everything had to be simple and sweet by design. I have become a big fan of Pecha Kucha style, more than even Ignite. I think 20s is kind of perfect, the 15s allowed by the Ignite style feels too short now.

So, I am supposed to blog about Yelp. I got introduced to Yelp around last year and would you believe it, it was because a friend told me it was a good company to intern at. This was the period when I was applying for summer internships, my friends had got one already, and not for the first time in my life I started out too late. Even though I didn’t get an internship offer from them, I did get introduced to the service our relationship has continued since. So much so that I have begun to really look forward to seeing the The Weekly Yelp in mailbox every week.

Oh, and if this wasn’t enough, the presenter was awesome. Her public speaking skills were mind-blowing. Her turn to present was before our group and I remember thinking how I could ever match up to the standards other presenters were setting. And well, after looking at the feedback, maybe I actually didn’t. So, all in all, it was a good learning experience for me.

The presenter stressed a lot on how socially integrated Yelp was. She proved how good a strategy this was by stressing on the staggering 100 million unique vistor mark. Well, its hard to argue with that sort of number, isn’t it? Actually, the presenting group admitted that they couldn’t really accurately pinpoint just why Yelp took off like it did. But social integration was one of the strongest reasons they put forward. I have a few more hypotheses of my own but I couldn’t agree more with them on the social aspect. Yelp allows me to read reviews written by Facebook friends, see what my friends have reviewed and see which friends have liked a particular business. Not only this, Yelp allows me to view a feed of what my friends are doing on Yelp. These features are ‘killer’ because many a time, I have given a shot to 3 star eating places just because a few of my friends liked them. And this gamble has always paid off. So, I would go to the extent of saying that being able to see what my friends have liked/reviewed sometimes becomes more important than reviews of strangers. So, definitely a +1 from my side and kudos to the presenting team for identifying this.

Another fun fact that occured on me listening to the presentation was that Yelp = Yel + p => Yellow pages. Wow! πŸ˜€ This is one of those things which are so trivial that you keep thinking why it didn’t occur to you earlier.

But these fun facts aside, I really liked the story of how Yelp grew in its early years. The presenter mentioned the ‘People love us on Yelp’ campaign back in the days when Yelp was just another start-up. This is one of the examples of where conventional wisdom can hold us back. This sticker is just another advertisement if you go back to the time when Yelp was unknown but yet Yelp didn’t have to pay to get these on the windows of businesses. So, why would this work, you ask. Well, the presenters didn’t have time to elaborate on this but along with the sticker, Yelp also used to send a short and sweet letter congratualting the company on being recognized as a favorite by locals in their community. Marketing genius, I tell you! And they were smart enough not to do this to any random shop they stumbled upon, they included only the businesses that had a small number of trusted reviews. And fast forward 5 years, this growth hack did really pay off, didn’t it?

Fake and fraudulent reviews was another point which the presenting team churned up. This is so obvious but yet so horrifying in that if this threat became real in a significant manner, it could turn a success story into failure in no time. Would you use Yelp if you knew deep down that you couldn’t trust Yelp reviews because the awesome sounding eatery might be a rag tag place whose owner invested more in paying for reviews rather than improving the quality of the food? This point also resonated with me because fraudulence and abuse is what I am most scared about for my dream anonymous Facebook messaging application that I am building right now. But this is such a confidence booster too, because if Yelp could do it and make it big, so can I.

A point that I didn’t hear emphasised enough (to be honest, I don’t remember if they emphasised it at all, but just to be on the safe side) is the role that Yelp community managers play. Their team of 60 or so managers really deserves most of the credit for making Yelp as popular as it is today. Remember the ‘Weekly Yelp’ I mentioned at the beginning of this long rant, yes, that is curated by the awesome community manager for Singapore. Yelp’s community managers, according to Yelp, are hired for the knowledge and enthisiasm for the city they live in, and boy! do they show it.

According to me, one of the most intriguing things about Yelp is the business advertising they do on their website including preferred search result placement and speacial listing features. On googling Yelp, you always find some or the other news article about the controversy regarding how Yelp treats or mis treats the businesses who paid for these ads. Business owners have been known to get violent and cause a ruckus because they feel Yelp is harming their reputation. People have often accused Yelp of favoring its paying members by removing their negative reviews.

I also feel that the presentation gave a bit too rosy a picture of Yelp. Sure Yelp has expanded rapidly, but it is yet to turn a profit. Also, Yelp is facing intense competition from Google Places (fun fact: Yelp was close to being bought by Google in 2009). I seriously wonder if Yelp would be able to stand the enormous scale and aggressive mobile strategy employed by Google for Places. Add to this Android and the fact that Places is bundled into the OS.

Also, in my opinion, the perception of Yelp is taking a major hit from the allegations of extortion practices all of which have been vehemently denied by the company. There was even a lawsuit recently accusing Yelp of demanding paid advertising in return for suppressing or deleting bad reviews.

So, all in all, I hope Yelp can rise above the challenges and continue doing what it is. I love Yelp and if for nothing else, for the fact that it feels like a service made by humans. The social element is definitely a major plus but yet, challenges remain. After all, even though Yelp is based in the US, it is no NASA or Pentagon. It needs to seriously think about other possible avenues of monetization and act very quickly to stem the rising uproar of alleagations.

What you hope to learn in CS3216

Posted: August 11, 2013 in CS3216

The above is a beautiful Hindi (my mother tongue) song Β from the movie ‘Lakshya’. The literal English translation of the ‘lakshya’ is ‘goal’. I think the song fits in perfectly with this post. (Maybe it can be Prof Colin‘s goal to learn Hindi and understand this song by the end of the semester Β #justsaying)

Well, its the start of a new semester for the 7th time in my life. And I actually feel kind of sad that this will only be the second last time. I really wish I could spend my entire life in NUS. I love the people, the professors, the classes, the hackathons, the projects, etc.. But alas, all good things must come to an end. I do hope I can come back to NUS as a professor or stay on as a research assistant or PhD student, but that is not what this blog post is meant to talk about.

This semester, I am going to take CS3216. I had been looking forward to taking it since semester 1 when I saw Angad and Adhiraj taking it, but for some reason or the other, I kept postponing. I was either doing other project modules or finishing my UROP. This year is probably even worse since I am doing my FYP, but this was the last opportunity and so I decided to apply anyway and was delighted to receive Prof Colin’s welcome e-mail soon after.

My classes start tomorrow and as the first assignment, I have to complete this blog post enumerating what I wish to take out from CS3216. So, let me get started…

  1. Create software that will be useful to people.Β If I am able to achieve this goal, I would consider ‘Mission Accomplished’. By the way, ‘people’ also includes ‘me’. If the piece of software I create is useful to me and me alone, that will also count as success in my book. I do not care much about starting a business because I am not concerned about the money side of things. I just want to create something that has utility enough to be useful to at least one person and which I will want to work on once the course is over.
  2. Become good at making web applications.Β Maybe I could have replaced ‘web applications’ with ‘software’. But I did not, one part of the reason is that a web application is what I think I will most likely be making in this module. The second part is that web applications are what I have the least experience in making. I have never had to make one in school. Even in CS3217, my worthy teammates did the web side of things, while I worked on the iOS side. I have spent every summer till now in trying to do internships which are research oriented and so have also not got a chance to create web applications. I hope I will get a lot of experience and be successful in making the frontend and backend of web applications as part of this course.
  3. Develop the habit of blogging. I think this component of the course is really useful too. I have never been much of a blogger (I have been an annoying Facebook poster though). All but the last two posts in this blog were also written for another module, IS1103, which I took in semester 1. Blogs which explain programs or talk about how to fix errors are very useful to the community at large and also increase one’s reputation. I hope I will get into the habit of blogging through this course and retain that habit for the rest of my life.
  4. Learn to prioritize tasks.Β I hope that the stressful semester ahead will force me into doing this. I hope I will be able to leave the urge to make things perfect, learn to move on and do important things first.
  5. Become physically fit by the end of the semester. This is probably the only goal my mother wants me to achieve in life and this is the goal which I think is the most difficult. Actually, I have had this goal before every semester. I hope I can learn to care enough about my health to do physical exercise regularly and not eat unhealthy food.

There are other goals too, which I have from taking CS3216, but this blog post will become too long I do not want to share them publicly. If I do well in this module, I will share them. If not, I will edit this post to remove this para and pretend the above 5 goals were the only ones in my mind.