One night after Indonesia's election day, i received email from my company. It said that BBM, one of projects that i had worked, will be shut down, today, 31st of May, 2019. As sad as i were, i actually expected this would happen soon.
One year and seven months ago, i got moved from the project that i worked at that time, Liputan 6, to my company's then hottest project, BBM aka Blackberry Messenger. Prior to that, i already heard many rants from my coworker who worked on BBM that the project was huge and a total mess. Despite that, i was actually kinda excited. Because that means i will learn a lot on this project.
One month diving in BBM's Android legacy codebase, i could approve my friends frustrations. This thing had a structure so monstrous and complex that even adding a small feature or fixing a small bug could lead into a headache. One piece of BBM's business logic was so complex, the engineers could become lost in the middle of figuring its flow. And the most silly things i can remember was, when there were bug reports about some feature that weren't working, we the engineers and even the product managers sometimes didn't know that the said feature was exist in the first place. BBM had so much mysteries.
BBM's engineers in the past, which were still part of Canada's RIM, are, undoubtedly, geniuses. Just imagine, at the time when the Android OS was just barely stable, and RxJava were still not as famous as today, these engineers built their own reactive data types! It's called ObservableMonitor. The idea was it's a collection or list which can monitor its own members if they changed its values, aka reactive. It was simple idea yet so difficult to implement. Eventually, because of maintainability reasons, we decided to refactor large parts of them and moved the implementation with RxJava.
BBM's mobile apps also had this unique form, where it has two layer, the application layer, which are the Android and iOS codes, and another layer that we called BBMCore or simply the "Core". The Core is a native C++ layer which handle most of the common parts and logics between BBM's Android and iOS apps. The app's message delivery and reception system to/from server and the database were inside it. The application layer and the core layer communicates with each other using message sender-receiver pattern. The core, just like the rest of the codebase, were, again, complex. The team who worked on the core were so cautious and careful even one Pull Request of small changes could become a long review.
I worked on several BBM's features, such as migrating the avatars to use the Google's GCP, creating the new Feeds, or as we internally called in "the timeline", implementing the chat screen redesigns, and refactoring some of its architecture.
From the backend side, although i didn't know much about it, i heard the same frustrations from them. Just like other app in the same era, BBM's server were originally monolithic. It was a huge java code with cassandra database.
I remembered one of coworker of mine quoted, working in BBM's legacy code is like fixing a sinking ship where one of the holes already fixed another hole will appears.
Despite of it all, because we had so much talented and hard-working engineers, who patiently working on it, we can made BBM a much, much better thing compared when the first time we touched it. Using TDD and pair programming were a vital part which helps us in this BBM's re-engineering process. Some of us were sent to Blackberry HQ in Mississauga, Canada to introduce our TDD and pair-programming method to the engineers there so we can work together more efficiently. And it's not only the engineers, the product teams, the designer, the HR, the finance, the support team, and our friends from CloudCover and East Agile, all were working hard as well.
We had a mementos for some of our accomplishments. One of my senior wrote on the new architecture we implemented in iOS, my CTO had a talk on how we migrated our infrastructure to GCP, and my other senior wrote about how we built our CI/CD infrastructure in the cloud.
From my perspective, i personally admitted that i grew as engineer because of BBM. I learned many things both technically and non-technically. I learned so much about software architecture and pattern, writing efficient testing to assure my confidence on shipping features, reactive programming where it's the first time i saw it was being used heavily in its purpose, syncing cache and repository, regex, socket, also about working with various type of persons in pair, communicating with english on daily basis, taking responsibilities, managing time, stress, and anger. I grew a lot since then. I also made new friends with the vietnamese guys from East Agile.
Moving back to current day, when i saw the BBM's official announcements of their shutdown on social media, and i saw how many Indonesian people, mainly the generations who grew in 2000 back when Blackberry and BBM were the coolest thing, missed it. And it's not only in the official post, there are many accounts who said goodbye and told on how they missed it. Even the #goodbyebbm was a trending tags. I just noticed that this is the first time BBM's social media post got so many likes and responses. It's just like an ex, we miss her/him when we already broke up.
BBM already launched several features such as stickers, BBMoji, Dana Kaget, new feeds, new group chats, and Group War that unfortunately, wasn't enough to made it to last. The cost to maintain it exceeded the revenue, especially the infrastructures's cost.
However, BBM already tried its best, fighting with its competitor in the messenger arena was really though battle. Thing are going back to normal pace now. The rush and adrenaline we once had everyday were settled down. Most of BBM engineers were moved to work on Vidio. Some of my friends who worked with me on BBM were leaving, and i can understand that. But, when they said they're not leaving because they don't believe the company after losing BBM, but because they don't think they can have another challenge we once had working on BBM, i feel glad for them. As one of its engineer, i feel so happy being part of it.
It was our blood and sweat. And we're proud of it.
Thank you, BBM.