Three weeks into CS3216, the rush has finally started to kick in.
There's nothing like seeing, in cold hard text, the feedback that our application is at a completely nothing stage, to give you a metaphoric kick up the backside. Sure, we all knew that we weren't anywhere close to reaching a stage where our product was even usable, let alone good, but seeing that expressed officially was still a huge motivation.
Maybe that is why coding for this is what is constantly running on my mind now. On a long bus ride, I was extremely restless and I found myself going over the details of the next fix that I wanted to make. It seems like I've become addicted to it - while my rational brain tells me I should go to bed to be somewhat more productive the next day when I'm more awake, my impulsive brain tells me that I should start working on the next feature / fix NOW. Which is a good thing, I guess?
When I'm not coding, I've found that thinking about the scale of the task that lies ahead is rather paralyzing. The number of considerations (functionality, usability, security, clean code, design to name a few) in a product are immense, and I'm not sure what I should be prioritizing. Since making such a decision is not easy, I'm avoiding it and just jumping on the next biggest glaring problem available. But as we learned in Algorithms courses, the greedy solution does not guarantee a globally optimum solution. The opportunity cost in time of coming up with a proper plan of action seems immense though, so against the advice of pretty much anyone with an ounce of rationality, I've taken to firefighting. Here's hoping that a productive team meeting over the weekend can sort this out.
Facebook Application Seminar
Luckily (or unfortunately), the seminar presentation analysing an existing Facebook application, proved some sort of diversion from the aforementioned rush. My group has made an interesting choice, I believe, in choosing an application that has ~3.5k monthly users rather than the hugely popular ones everyone else has picked. I believe that only looking and analysing successful applications exposes you to quite a significant bias (see: survivorship bias), so looking at some not-so-successful ones provides a bit of balance.
An interesting point of this application, not really relevant to the actual content, was that the code was set to include fake competitors (bots) if not enough competitors were found online. The ethics of this are interesting - from the user point of view, I did not know they were bots, and I would have hated the UX if I were stuck at a 'Waiting for Users' dialog. But, hey, I don't like being lied to!