It’s no secret that Goodnotes wouldn’t be where we are today without our users. We place a high value on their feedback, suggestions, and requests. For a long time, they have been voicing the need for a ruler within Goodnotes, and a few weeks ago, we finally introduced the highly anticipated feature to our Goodnotes 6 users. Now users can draw straight lines and create precise angles. We chatted with Carles, one of our Senior iOS Engineers, about his journey into iOS, the behind-the-scenes process of shipping this feature, and what life is like for an engineer at Goodnotes.
Hola Carles! Thanks for taking the time to tell us more about the work involved in shipping the ruler feature in Goodnotes 6. Before we dive into it, can you tell us more about yourself and why you joined Goodnotes?
Absolutely. My journey into the iOS world was quite by chance. After completing my studies in Telecommunications with a specialization in Audio and Music Computing, I found myself on an unexpected path. During my master's program, an exciting opportunity arose—an internship with Yamaha in Japan. Grateful for this chance, I decided to embrace it to the fullest, adopting a mindset open to any proposal, suggestion, or offering that could shape my career.
Originally, the plan was to conclude my Master's Thesis project during my time at Yamaha. However, priorities shifted, and I found myself engaged in a project of significant importance. The task at hand was to migrate an audio synthesizer, originally written in C, to seamlessly function on iOS platforms. At that point, my knowledge of iOS development was nonexistent. Fortunately, my mentor at Yamaha was nothing short of exceptional. His generosity in sharing his wisdom and patience proved invaluable as I navigated this uncharted territory. And, you know, it was love at first sight. I quickly got hooked on iOS development.
Upon my return to Spain, I took on a role in a Research Group at a University to pursue my Ph.D. in automatic music composition. During this research phase, I implemented my algorithms on iOS to be used in music educational apps. As my journey in the academic realm continued, I reached a point where I felt motivated to take my professional career as a software engineer to the next level. An intriguing opportunity presented itself in the form of a job offer at a gambling app.
Over seven years, I became intimately familiar with navigating tight deadlines, negotiating product requirements, mastering project management intricacies, and collaborating with sizable teams of engineers. The gambling industry, as you might imagine, is both interesting and highly competitive, providing continuous challenges that kept me on my toes.
After achieving a level of stability, I found myself yearning for fresh, exciting challenges. It was then that my former manager introduced me to a modern, dynamic, and rapidly growing company—Goodnotes. The more he shared about Goodnotes, the more confident I became that it was a place where I should belong. Joining Goodnotes has been a game-changer for me. The onboarding process was not only seamless but truly amazing. As I gradually gained more knowledge and responsibilities within the project, during these initial months, I had the chance to get in touch with people from various countries and backgrounds. It was through these interactions that I unraveled the secret behind the success of the Goodnotes app—the good people that make it possible.
For the last year and a half, I've been a member of the Foundation team at Goodnotes. Our primary responsibility revolves around maintaining a vigilant eye on the app's performance and usability, consistently striving for improvement. Also, we actively engage with our users, we aim to assist with their requests for new features—take, for example, the development of the ruler.
What does your day-to-day as a software engineer at Goodnotes look like?
I work remotely, which has its own unique rhythm. My day kicks off, in sunny south of Spain, with a thorough review of messages and task updates from my colleagues who started a few hours earlier. Based on this information, I plan my day meticulously—I've found that writing down my tasks is crucial; otherwise, I risk forgetting important details in the midst of the daily hustle.
Family welfare is a top priority at Goodnotes, so it allows me to take my kids to school. Shortly after, I'm back to work just in time for our daily meetings, which are seamlessly facilitated through virtual platforms. These meetings provide a valuable space for sharing updates, gaining insights, and collectively planning our next steps.
Given the dynamic nature of our work, flexibility is key. A significant portion of my day is dedicated to coding and development, where I focus on implementing new features, optimizing existing ones, or troubleshooting any issues that may arise. I find that background music enhances my coding experience; lately, I've been into deep house sessions for active coding and epic movie soundtracks when dealing with tricky issues.
Throughout the day, I actively engage with my colleagues, seeking rubber duck debugging sessions or engaging in pair programming. I can say that 80% of what I've learned so far has been through the invaluable input of my peers. As I said, GoodPeople are very talented and helpful. I really feel really inspired and supported by them.
And, as the day winds down, I like to unwind by jumping into the swimming pool for an hour before attending to family responsibilities—bathing my kids, having dinner together, and ending the day with a bedtime story.
What made you want to work on the ruler project?
The decision to work on the ruler project was influenced by a combination of factors. First and foremost, it stemmed from the active engagement with our user community. We have a culture here at Goodnotes that places a high value on user feedback, and the ruler feature was a direct response to the requests and needs voiced by our users.
Beyond that, the ruler project presented a unique technical challenge. As someone who thrives on pushing boundaries and exploring innovative solutions, the prospect of developing a feature that seamlessly integrates into the user experience while enhancing functionality was particularly enticing. It allowed me to combine my passion for coding with the tangible impact it could have on our users' workflow. In addition, building the ruler required constructing a new tool from scratch. That meant I had to deal top to bottom with all layers of the app, which translated into a chance to learn about more areas of the app I had not touched yet.
In essence, it was the perfect convergence of user-centric development and technical challenge that drew me to the ruler project.
How did you collaborate to ship it?
Collaboration was a key element in bringing the ruler project to life. While I took the lead on the development side, it was far from a solo effort. I collaborated closely with Product and Design teams to ensure the ruler integrated an appealing user experience and aesthetic appearance.
Additionally, working hand-in-hand with the QA team was crucial. Their meticulous testing and feedback played a vital role in refining the feature and ensuring a smooth user experience. The iterative process of feedback and refinement between development, design, and QA was instrumental in shaping the final product.
Last but not least, the realization of this project owes much to the help of my colleagues Migue, Bret, and Pablo. Their guidance encouraged me to dream big and build this amazing ruler. Their unwavering availability and support were fundamental throughout the entire process.
What were the biggest challenges?
The ruler project, while immensely rewarding, came with its fair share of challenges. One of the primary hurdles was dealing with the mathematics. I found myself revisiting my university years, refreshing my knowledge about orthogonal projections, vectorial rotations, and coordinate translations. The challenge of working through the mathematics behind the ruler was both daunting and, ultimately, incredibly satisfying.
Another challenging aspect was paying attention to performance. Building a fast-responding virtual tool that can be manipulated like a real one required precise consideration of processing usage. Striking the right balance to ensure optimal performance without compromising functionality was a crucial aspect of the development process.
Some days proved to be particularly frustrating. Despite the implementation appearing sound, there was a mistake somewhere causing the ruler not to behave as expected. However, a breakthrough moment occurred during an unexpected pause in my day. While waiting at a traffic light on my way to drop my kids off at school, the missing piece suddenly became clear. I couldn't wait to get home and try the solution (with full respect for road safety rules, of course). There's no better feeling than wrestling with a problem for days, only to pinpoint the root cause and make a simple adjustment that transforms everything into smooth operation.
What were your favorite aspects of working on it?
The "aha" moments were particularly enjoyable. There's a unique satisfaction in unraveling the mystery behind an issue, especially when it involves those unexpected breakthroughs. It's these moments that make problem-solving not just a task but a rewarding puzzle.
I also appreciated the working environment. Having the freedom to propose my own solutions and planning, along with the trust the team placed in me, was particularly rewarding.
Lastly, looking into the intricate world of mathematics to solve the complexities behind the ruler was a personal highlight, turning the development process into a continuous learning journey.
What do you like most about working at Goodnotes?
Firstly, the culture of continuous learning and innovation is invigorating. The company places a premium on staying at the forefront of technology and encourages exploration of new ideas, fostering an environment that fuels creativity.
The emphasis on collaboration is another standout feature. The ability to work seamlessly with colleagues across different teams, share insights, and collectively solve challenges is not just encouraged but ingrained in our culture. It creates a sense of unity and shared purpose that extends beyond individual projects.
Additionally, the trust and autonomy provided to employees are remarkable. Having the freedom to propose solutions, plan my own approach to projects, and the trust placed in my abilities are aspects that make each day at Goodnotes fulfilling.
Moreover, the company's commitment to family welfare is commendable. The flexibility to balance work and family life contributes to a positive and supportive work environment.
But overall, what I appreciate most about working at Goodnotes is the emphasis on GoodPeople—the talented, collaborative, and supportive individuals who make the workplace not just a professional space but a family.