A few weeks ago, we finally launched Goodnotes cross-platform. After 12 years of being a product only available on iPad, we are so proud and happy to see our product finally available for Android, Windows, and Web users. To celebrate this milestone, we had a chat with software engineers, Miguel and Onn, about all the hard work that went on behind the scenes to make this dream happen.
Hi Onn and Miguel! Congratulations on the big launch! Before we dive into all things cross-platform, can you tell us a bit more about who you are?
Miguel: Hey there, I'm Miguel Barrios and I’m from Madrid, Spain and I work remotely from my home here. I have around 15 years under my belt as a software engineer, mainly focused on mobile technologies, particularly in the Android domain. Two years ago, I hopped on board with Goodnotes, just as the cross-platform team was taking its first steps. These couple of years have been an absolute blast. At Goodnotes, there's this fantastic atmosphere of constant improvement that has allowed me to dive into a wide array of learning experiences.
Onn: Hey, I’m Onn. I grew up in Malaysia, but moved to Hong Kong to pursue my bachelor's degree. After graduation, I decided to stay in Hong Kong for work as well. I joined Goodnotes more than 3 years ago, as the first software engineer to work on cross-platform related projects. In the beginning, I was a one-man band prototyping for the current cross-platform apps, but after achieving promising results from the prototype, we quickly grew the team to more than 15 people across the world. It's been a blast and a unique opportunity to work on this technically challenging yet satisfying project.
What was the biggest challenge while working on this?
Miguel: Goodnotes has been around for an impressive 12 years as an iOS app with a lot of success on the platform. This gave us a very solid foundation to build upon. As our iOS app continues evolving and getting better, we need to keep the pace up to be able to achieve feature parity. Our users have very high expectations and we are determined to meet those expectations, to our best ability.
From a technical point of view, a cross-platform app means that we need to build several different apps for the different platforms we support: Windows, Android, and Web, and we decided to reuse as much code as possible from the iOS app. In order to achieve that we used some state-of-the-art stack of technologies that allowed us to share the base code on all of our platforms. Working with that stack was hard and challenging. Even more, finding engineers with experience in those technologies was near impossible, so we needed to find people who were able to learn and adapt quickly. Using these technologies also presents other issues, notably integration with platform-specific features and optimizing performance, that we continuously need to work on improving.
Onn: Similar to what Miguel answered, the biggest challenge was definitely around customers’ expectations. Non-iPad users have been longing for the Android and Windows versions of the app for more than a decade, and they have high expectations of it given how well our iOS app is received by users. The biggest challenge, then, is to meet users’ expectations while exploring state-of-the-art technologies to port the current iOS app to other platforms. We are using new technologies like compiling Swift to WebAssembly, Progressive Web Apps, Trusted Web Activity etc. in order to reuse our Swift logic efficiently. This has given us some headaches in terms of technical complexities, platform support, as well as performance issues. Despite that, we were able to make good progress and come up with a functional app thanks to the talented team dedicated to our cross-platform efforts. We will keep improving what we have to make it better :)
How did you collaborate as a team?
Miguel: At Goodnotes we value asynchronous communication, and the cross-platform team is no exception. We believe in documenting our decisions on product requirement documents, initiating the development with a technical plan and even writing down our train of thought on pull requests. Each individual contributor is assigned one or more projects that they’re responsible for, while we also encourage helping out on other projects to ensure a good level of knowledge distribution. On a personal level, what I enjoy the most is engaging in pair programming sessions with my teammates. It's a great opportunity to learn new things, find different solutions to problems, discover new tools and techniques, and more. It's where the real magic happens, and I'm all for it.
Onn: Before building new features, we usually come together as a team to discuss the technical approach and the implementation plan, to ensure we are on the right track as well as to cover each other’s blind spots. Given the team is spread across Europe and Asia, we rely a lot on asynchronous communication for our day-to-day work. The team is also open to feedback and we tend to provide constructive feedback on each other’s work, resulting in a healthy feedback loop that helps each other grow. Albeit we value asynchronous communication, we would still jump on Slack huddles any time the team needs us. It is the flexibility and the ownership of the team that contributes to the successful launch of the product.
What was your favorite part of working on this launch?
Miguel: My favorite part of working on this launch was the challenge of bringing everything together. We really focused on making the app run smoothly and quickly, even though there is still room for improvement. Getting subscriptions and purchases to work seamlessly was a key highlight too. It was all about making sure users could enjoy the app without any hitches and easily access its features on all the supported platforms.
Onn: It’s gotta be the process of seeing the dots being connected when the product comes to life. The team was laser-focused on delivering features and improvements to the app, piece by piece. Only when it was close to launch did we start to bring all of them together, making it look like a full product. I particularly enjoyed the part where we tackled extremely challenging problems when improving the performance of the app.
What’s next for cross-platform?
Onn: Although we have just officially launched the cross-platform apps, we are not done yet. In fact, we are just getting started! In the coming months, we will be focusing on improving the app’s performance within the technical stack and architecture that we use, reaching feature parity with the iOS app and shipping features that will make note-taking more convenient and enjoyable. Something that we are working on right now is the offline support and the PDF links for navigation.