The Art of Coding and Music

Orchestrating a Path from Playing Cello to Software Engineering

Sabrina Towne
Building Ibotta
6 min readAug 16, 2023

--

Photo by Ilya Pavlov and Ira Selendripity on Unsplash

While the fields of computer science and music may seem starkly different, there are many intriguing parallels between the skills required in coding and mastering an instrument. During my time at university, I have been able to hone my expertise in coding and playing cello simultaneously while finding commonalities between the two subjects. The following skills have been most helpful during my time in university and during my transition from a musical background to my current role as a Software Engineer Intern at Ibotta: creativity, critical thinking/problem solving, persistent practice, self awareness, and adaptability.

  1. Creativity

As a music major at the University of Denver, I learned the technical aspects of playing an instrument in addition to a deep understanding of the historical context of music and how it is performed. Utilizing my foundational knowledge, I’ve been able to transform musical performances into my own creative expression that an audience can connect to and be moved by. The ability to convey meaning beyond the written composition is what distinguishes a musician as a true artist within the industry and can shape the trajectory of one’s professional journey. Throughout my experience as a cellist, telling a story through performing is one of my biggest passions and strengths. Similarly, the storytelling aspect of developing software plays a huge role in being a software engineer.

Contrary to popular belief, software engineering is not just a technical or logical endeavor. Whether you are a frontend or backend developer, creativity is critical in the process of developing code that is future-forward, innovative, and user friendly. When I first learned how to code during college, I harnessed my creativity and inquisitiveness from music by thinking outside the box and beyond what was required of me. Using the tools and foundations I was taught in my introductory classes, I questioned the design and logic choices in front of me and refined my programming skills through creative solutions. Even during my earliest days of programming, I always found ways to implement creativity into the code I wrote and the algorithms I designed which has inspired me equally as much as music.

2. Critical Thinking and Problem Solving

Coupled with creativity, the ability to problem solve and think critically is an essential and invaluable skill for both fields. In my decade of experience playing the cello, problem solving takes many forms. Whether I am practicing a solo piece, collaborating with other musicians, or participating in a large orchestra, there are always methods to make the performance sound better. The methodology of learning a piece from the beginning to performing it in front of an audience is meticulous and intentional. Oftentimes, it requires persistence through technical challenges and roadblocks in order to produce a performance that you can be proud of.

Just as my approach to learning a new piece of music requires a significant amount of dedication and critical thinking, so does developing code for any kind of purpose. Additionally, during my time at Ibotta, I learned many industry-specific tools and practices. By tackling these newly discovered tools and practices, I was able to learn and grow in a new environment, but also utilize skills I learned in university to approach challenges in an intentional way. Whenever I came across a roadblock in my code, my problem solving experience enabled me to identify issues with my code, propose solutions, and test these ideas to make continuous improvements without getting too stuck for too long. I learned that progress was not always linear, and that if I was thinking critically, I would be able to come to the desired result.

3. Practice, Patience and Perseverance

A common quote I heard growing up was “practice makes perfect.” While absolute perfection is arguably unattainable and a false reality, consistently working towards a desired outcome and the ability to remain patient and persevere through difficult situations is essential to mastering any discipline. Looking back, I recognize the countless hours I spent on a single line of music, only to later realize how similar it was to my experience mulling over a single line of code. Just as I was perfecting my skills for a performance on a large stage, I also continued to constantly improve on my coding skills to use them in a bigger context.

Before college, I had little experience with software development and what really helped me progress at a fast pace was my skills in practicing cello. As I overcame challenging pieces of repertoire through patience and dedication, I also tackled problems in my code with the same attitude. This was done by breaking a problem down into manageable, bite-sized pieces that build up to the end product. I would ask for feedback from fellow colleagues and mentors, reflecting on my progress and identifying where I could improve. Through this process in both fields, I learned the true value of persevering through challenging situations and having the patience with myself to ultimately be successful in both music and coding.

4. Self Awareness

Self awareness is key for anything that involves personal or professional growth. The ability to introspect on one’s experiences, mistakes, and successes helps improve future actions and is further motivation to become a better version of oneself everyday. Over the years, I have been able to improve my skills as a musician and cellist by being aware of my strengths and weaknesses and taking action on both. One of the main practices that helped me perform successfully was recording myself playing. When listening back to the recording, I would note critiques that I would take action on in the future and adjust accordingly to my future goals. This enabled me to self reflect and to take actionable steps to becoming a better musician. This type of reflection and hindsight is beneficial for both musical performance and coding.

Self awareness in my journey as a musician has also helped me address room for growth in my venture into software development. The curriculum I was exposed to during university gave me a solid foundation in computer science and refined my skills in various programming languages, data structures/algorithms, and unit testing. While I was instilled with the confidence to learn and work individually, I was limited by not having as many collaborative opportunities as I would have liked. During this internship, I recognized this limitation and pushed myself to collaborate with others as much as possible, which resulted in more comfortability in communicating my technical skills but also drastically improved my growth and learning within cross-functional projects.

5. Adaptation

Just like technology is evolving and advancing at a rapid pace, so is classical music. In the past, classical music played a significant role in society, serving as a form of entertainment and expression. In the modern world, classical music has evolved from what it used to be and shows up in more subtle ways. While it may not be the genre you first turn to for leisure and weekend plans don’t usually revolve around attending symphony concerts, music as an artform still continues to tell stories and inspire audiences on a deep level. Realizing this shift, musicians have adapted by diversifying their skill sets to consumer needs, such as playing alternative genres or marketing their musicianship in a unique way.

As a software engineer, adaptation is important for learning new technologies and tools that have recently come out but also by building upon cross-disciplinary skills. I believe it is important as a developer in a growing industry to be flexible and open-minded to new ideas, structures, and tools due to the evolving nature of the industry. I have learned during my time at my internship that soft skills such as teamwork and communication play a large role in my technical success and growth.

My background in music has greatly influenced my current role as a software engineer intern as I step foot into the tech industry and utilize the skills I have learned in seemingly opposite fields. What I noticed throughout my internship and my experience as a developer is how my skills in music have complimented my professional work and continuously contributed to my growth. I believe that my passion for music has aided me to become confident in my skills as a software engineer. These transferable skills have not only helped me learn from ground zero but helped me improve and become even more confident in my skills through this internship. Whether you have a musical background like myself or come from a different field than software engineering, there are many transferable skills that can enhance the process of learning and accelerate growth. Everyone brings a unique perspective to the table based on their backgrounds and being able to identify your individual strengths will benefit your career and success in the industry.

Interested in working at Ibotta? Check out https://ibotta.com/careers

--

--