In this post, our editor Si Jie gives his opinion on how, as programmers, every small detail affects the web as a whole.
Disclaimer: This post does not intend to bring harm to any site, or persons mentioned.
As a web developer, I have a different perspective when browsing sites. A poor user interface may be an annoyance to users, but to the people whose livelihood exactly depend on engaging these users, proper site development is the first critical step in retaining users. Never mind the content, never mind Search Engine Optimisation, never mind everything. The first impression that a user has already determines how he will use the site.
So when I received this email from Starbucks, I started thinking.
I received this email 1 hour after it was sent out. As I read the mail, I couldn’t help but think that Starbucks just invited a DDoS^ on themselves. I chuckled a little, wondering if their web portal has grinded to a halt by now.
It turns out, the damage was more than just that.
My experience with the upgraded Starbucks website since a year ago was that it was a buggy website, patched up with little hacks all over the place, with generally slow response.
I’m not qualified to say what they did wrong or what they could improve on – after all, I’m likely less experienced than their engineers.
But at least, from a consumer point of view, their web portal takes a while to even log in and display my cards. (read: 5-10 seconds) Given a website of a reputable brand nowadays, I expect better.
So when I received this email, I couldn’t help but wonder if I could even update my particulars.
Unfortunately, I was right. I couldn’t even login to the web portal. It just kept loading and loading. And loading and loading.
It never logged me in.
Out of desperation for the 1-for-1 drink and the special card, I fired up the app. Luckily, I had logged in beforehand (my friends on iOS reflect that they get logged out, but luckily I remained logged in).
I immediately notice that I can’t even load my cards. I can’t help but wonder – to the patrons at Starbucks shops islandwide, how are they paying for their drinks? To the barista, are they keeping up a smile while explaining and apologising for the downtime in the app? Keeping in mind, even if their POS is somehow connected to a different back-end, we cannot fire up our app to pay!
In back-end development, this shows that the system is unable to scale on-demand. I understand that the influx may be huge, but a well-developed back-end should always be able to scale when it needs (otherwise, how can I always expect to login to Facebook or Google instantly?)
The fact that cards cannot be loaded too, provides insights on how their database is potentially constructed. I would imagine requests for different things hitting the same database. Maybe I think too much – perhaps it is just, albeit also an equal sin, inefficient database queries.
I digress. Nonetheless, I quickly fired up settings and updated my particulars. At least my particulars could load. I found the coffee preference interesting – where is the “normal” option?
Anyway, I quickly submitted my particulars (I had no updates anyway) and stared at the app while it tried to persuade the server that another user wants his 1-for-1.
A good minute or two later, I sat back in my couch, relieved that I made it in time for the belated Christmas gift.
Meanwhile, my friends on iOS are still trying to log in.
^ DDoS: Distributed Denial of Service. Refers to a web service rendered inoperable or inaccessible when massive traffic overloads the server. While usually malicious, this can be inadvertently caused when large amounts of legitimate viewers access the site at the same time.