What is your current programming and musical life?

For the past (almost) 3 years I’ve lived in Melbourne, Australia, where I’m a senior full-stack engineer at Envato using mostly Ruby on Rails and React. The people I work with know me as a good generalist with expert knowledge on Ruby on Rails, TDD, and technical writing.

I’m not performing or even playing classical music anymore, but just before the first lockdown in March of 2020 I bought an acoustic guitar and have been singing older country/western music as well as folk music in English and Italian. I no longer practise, per se, or try to get better – it was the brutal culture of perfection and competition that made me leave classical music in the first place. Now I just enjoy playing music and occasionally perform informally.

What is your primary instrument and what age did you start learning it? Did you study any other instruments, either as a child or an adult?

My primary instrument was operatic voice. I was a Rossini mezzo-soprano, although my favourite music to sing – if I had to pick – was Italian opera of the Rococo/High Baroque period. I started taking voice lessons at age 15, wanting to learn to sing rock and pop music, but quickly taking a liking to the classical pieces the teacher had me sing to develop technique. I had already taken piano lessons starting around age 11 or 12 and violin/Irish fiddle lessons from age 12 to 15 or so. I was also a pretty good lead guitarist in high school.

What was your experience of learning a musical instrument, and how did it differ from your experience in learning to program?

It’s hard to compare because of how much I changed as a person between the time I started studying music and the time that I started learning programming. As a teenager and young adult I was a die-hard perfectionist and was very hard on myself, which got in my way a lot. I felt that I could simply never be good enough. The fact that the classical music world idealises talents like Mozart’s or Chopin’s only made it that much harder to feel good about the work I was doing. By the time I started programming, I was still a perfectionist but was a lot more accepting of works-in-progress. It helped that I learned programming guided by my partner at the time, a sysadmin, who made sure I knew that this work was very difficult for almost everyone and that frustration and not getting it were essential stages of learning. He sat me down one day when I was particularly frustrated and told me, “Everyone feels this way. Everyone feels like they aren’t cut out for this sometimes.” His encouragement has inured me against imposter syndrome to this day.

How old were you when you started programming? Why did you start programming?

Starting an opera career, as you may know, is terribly expensive. Most of the singers I knew had parents who were able to help out with lessons, young artist programs, master classes, and other professional development opportunities required to become a professional singer. My parents were not able to help that way. I needed to find a career that would pay for all that while also providing the time and location flexibility I’d need to travel for auditions and performances. That’s one of the reasons my ex encouraged me to get into tech, as well as the fact he thought I’d be suited for this work and fit in well in the industry. So, despite having no interest in computers, I started learning Ruby in 2013 at age 26.After I got into the tech world, though, I saw how much more supportive it was than the opera world. Instead of being met with “Why should we listen to you when there are so many talented singers out there?”, the mentality was more “What are you working on? That sounds really cool! Tell me more!” In tech I found an appreciation and gratitude for all the talented people doing amazing things that was just absent from the classical music world. I wonder how different my life would be if the abundance of talented and creative musicians were celebrated instead of being used to cut people down.

Do you have any specialisms in your musical performance?

I specialised in Italian operas of the High Baroque. I especially enjoyed singing Hasse, Porpora, and other Rococo composers, as well as Vivaldi. I specialised in castrato roles specifically.

Do you have any specialisms in your programming?

I’m a crack shot at Ruby on Rails as well as having spoken at conferences internationally on TDD and technical writing. I’m also on the Cucumber core team, although I consider myself an honorary member since my actual contributions over the past few years have been minimal.

Do you hold degrees in music, computer science, or something else?

I actually studied finance back in the days when you could get a job in investment banking with a 6-figure salary right after graduation. Unfortunately, the bottom fell out of the finance industry right before I graduated so I was forced to look for a Plan B.

What influence, if any, does your musical background have on your programming, and vice versa?

The influence of my musical background on my programming is probably mainly reflected in the way music trains you to think, but I’m not conscious of the specific ways that happens. I am aware of a body of research indicating people with musical training do better in STEM. Things would be different, I think, if I started musical training now. I’m more comfortable with failure as a way to gather information and learn, and with incremental, iterative improvement.

Aside from music and software, what other hobbies or pursuits do you have?

I’m really interested in foreign languages and math. I’m pretty fluent in Italian, despite never having been to Italy, and used to speak German, French, and Latin as well. I also taught myself three semesters’ worth of university-level calculus. Because I have ADHD, it can be tough to focus on a single thing over a long period of time, which has prevented me from keeping up my three other languages or getting to the level of math I would’ve wanted.

What would you say to a musician considering a career change into programming?

I feel like that’s really unique to the person. For somebody whose experience with the classical music world was as negative as mine was, I’d say do it and don’t look back. As far as general advice I’d give anyone, I’d recommend self-teaching or bootcamps over a university program. Both those approaches are more likely to give you the skills you need to actually hit the ground running in a career in programming, particularly if you’re going in a web development direction (whether front- or back-end). I’ve known a lot of people who have graduated from university CS programs only to find out that the things they’ve learnt don’t get them very far looking for their first jobs.

And finally, what advice would you give your younger self when you started programming?

I honestly feel like, with my ex’s guidance, I was able to take an optimal approach to learning. With the help of his colleagues, he put together a collection of quality sources for me to self-teach. Those sources helped me learn both good programming skills and practices as well as how to talk the talk to come off as the fabled “good culture fit” at good companies. Looking back, it could not have turned out better and, even though we’re not together anymore, I’m eternally grateful for Daniel’s support and encouragement.

More Info:
– Dana’s Twitter

What is your current programming and musical life?
Current programming life is as Senior Architect for Panther Protocol, which is a project to bring privacy and trust to the world of blockchain and DeFi (decentralised finance). This involves a lot of research and design, plus some coding in TypeScript, Solidity, and Circom which is a DSL for writing Zero Knowledge Proofs. Musical life is relatively quiet currently due to the pandemic, but recent/upcoming gigs include playing with the London Tango Orchestra, Classico Latino, and the Monika Lidke Band (jazz/folk crossover).

What is your primary instrument and what age did you start learning it? Did you study any other instruments, either as a child or an adult?
Primary instrument is cello, and I started around 7 years old. I probably started tinkering with the piano around 4 or 5, since my mum is a piano teacher.

How old were you when you started programming? Why did you start programming?

I also started coding at 7, in BASIC on a Commodore Pet 4000 at my friend’s house. I was immediately obsessed – difficult to know exactly why, but I guess it was the satisfaction of creating something new and seeing it immediately come to life, combined with the extremely rational mental models involved. Learning music felt very different at the beginning, and it probably wasn’t until I experienced ensemble playing that I felt a strong attraction to it.

Do you have any specialisms in your musical performance?

Music specialisms include being a multi-genre cellist (jazztango, Latin, folk, classical etc.) and having an excessively nerdy obsession with various aspects of music theory (especially harmony).

Do you have any specialisms in your programming?

Specialisms in programming include Free/Open Source, Linux/UNIX, shell, Python, Ruby, infrastructure software, virtualisation, orchestration, high availability, cloud, automation, git, Trusted Execution Environments, blockchain, digital asset custody, and Zero Knowledge Proofs.

Do you hold degrees in music, computer science, or something else?
I have a degree in Maths & Computation from Oxford, and a postgraduate in performance from RAM in London.

What influence, if any, does your musical background have on your programming, and vice versa?
My musical background probably infuses my tech career with playfulness, (probably an unhealthy degree of) perfectionism, and emphasis on collaboration.

My tech career arguably brings a more analytical and methodical approach to my music-making, or maybe I would have been that nerdy even if I only did music.

Aside from music and software, what other hobbies or pursuits do you have?
Other hobbies include tango dancing (hope to resume post-pandemic), running, cycling, swimming, yoga, meditation, travel.

What would you say to a musician considering a career change into programming?
To those considering a career change I would say, you can (and probably should!) take up programming without giving up your music! Both are incredibly creative pursuits which complement and enhance each other wonderfully.

And finally, what advice would you give your younger self when you started programming?
To my childhood self, I wouldn’t say much since I had so much fun programming! To my undergraduate self I’d say to ease off the video games, go deeper into computer science studies, especially the really juicy stuff like algorithm design, cryptography, protocol security… oh, and that social network website thing we built in 1996 or so? Definitely think about putting some more effort into that, it might attract a bit more interest some day…

More Info

This is part of a series getting to know the people in the MusiCoders Slack group who are both professional musicians and professional software engineers.

Photo credit: Nancy Morla

What is your current programming and musical life?

→ I’ll start a front-end bootcamp next week. Aiming at cybersecurity once I have enough web dev experience.
→ I was a studio musician on occasion before the pandemic. Nowadays I’m a music reviewer, curator and marketer at a record label, and I play my instruments in my free time.

What is your primary instrument and what age did you start learning it? Did you study any other instruments, either as a child or an adult?

→ Viola. I started at 16, but had been playing the violin since I was 9.
→ I started taking piano lessons at 17 and kept at it throughout my college years.

What was your experience of learning a musical instrument, and how did it differ from your experience in learning to program?→ My learning process for musical instruments wasn’t that self-aware in the beginning. The meta-cognition required to make practice sessions more efficient started developing at about 17, but only consolidated during my college years. At that time, I learned things like:

• Documenting and tracking my progress.

• Working in sync with my body and mind, and not against them (best times of the day to practice, the importance of rest, mental practice etc.)

• Approaching challenges/errors as a laboratory of problem solving instead of mindless repetition

That very meta-cognition was a game-changer when I started learning to program. Making progress tangible is a great way to cope with frustration. Things feel difficult, but doable.

How old were you when you started programming? Why did you start programming?

→ I was 26 and really interested in electronic/algorithmic composition. So I chose to do my master’s degree in those fields. There was a natural need for automation in them, so I learned languages like Pure Data, LISP, and SuperCollider.

Do you have any specialisms in your musical performance?

→ Not really. I was an orchestral musician back in the day, but I decided to focus more on composition.

Do you have any specialisms in your programming?

→ I’m still a beginner in web dev, so I haven’t specialized on anything yet. A lot of focus on JavaScript right now, though.

Do you hold degrees in music, computer science, or something else?

→ Bachelor’s in both viola performance and composition. Master’s in composition.

What influence, if any, does your musical background have on your programming, and vice versa?

→ Playing in ensembles and orchestras gave me team skills that I’ll probably make good use of as a professional programmer.
→ Things like discipline, patience, and tolerance to frustration are inevitable parts of a musician’s life. They’re transferable to any career, but programming needs lots of them.
→ Algorithmic composition has a good balance of creativity and logical thinking. In a way, I was already thinking like a programmer before learning any languages. But programming really helped me develop my own style as a composer.

Aside from music and software, what other hobbies or pursuits do you have?

→ Foreign languages
→ Salsa dancing

What would you say to a musician considering a career change into programming?

→ If you’ve developed the mental toughness to become a professional musician, you already have a lot of what it takes to be a programmer.
→ Your brain is probably more trained to think like a programmer than you realize.

And finally, what advice would you give your younger self when you started programming?

→ Don’t freak out so much about the math part. Everything can be re-learned through the meta-cognition tools you developed as a musician.
→ Don’t wait so much to take the leap. You’ll never be “100% ready”.
→ Find a community as soon as you can.

More Info

This is part of a series getting to know the people in the MusiCoders Slack group who are both professional musicians and professional software engineers.

What is your current programming and musical life?

I think of my working life as a 50/50 split between tech and music. I clearly can’t do as much as a full-timer in either field but I find dividing my time interesting and refreshing.

I work for Platform.sh as a staff engineer, designing and writing web API services, scripts and tools (in Go and PHP). The company originated in France but it allowed remote working from the beginning, and has developers all around the world.

I’m also the second violinist in the Ligeti Quartet (since 2010) and I do some freelance work in and around London – mostly chamber music, orchestras and sessions.

What is your primary instrument and what age did you start learning it? Did you study any other instruments, either as a child or an adult?

I learned violin and piano from the age of 7, and violin took over at university.

What was your experience of learning a musical instrument, and how did it differ from your experience in learning to program?

Learning music was very structured. In music you often go to a 1-1 tutor every week from an early age – imagine if you had that for programming! Maybe people do these days. I learned code by writing it and looking things up every step of the way, first via books and later via Google.

How old were you when you started programming? Why did you start programming?

My dad taught science and computing in my school. So I started probably around 8, first doing silly things in BASIC, and then a bit later making websites in HTML and a bit of C or Perl, and later PHP. Many tables were involved. It was a hobby until late in my degree when I started doing it for money too.

Do you have any specialisms in your musical performance?

Contemporary string quartet music. The “contemporary” part is not a genre, it usually just means the composer is still alive, and rehearsals are often a collaboration or at least a discussion. “String quartet” is also not a genre but it does seem to be a particularly complex and rewarding occupation. I studied a bit of Baroque violin and I love that music but it hasn’t featured in my professional career.

Do you have any specialisms in your programming?

Backend web development. Mostly this involves designing and writing API servers and clients. I currently work in Go, PHP, a little bit of Python, a tiny bit of JavaScript, and plenty of shell scripts. Like any developer I enjoy new, greenfield projects but I have done a lot of work on preserving backwards compatibility for “legacy” APIs and tools.

Do you hold degrees in music, computer science, or something else?

An undergrad degree in Music followed by two years at a conservatoire.

What influence, if any, does your musical background have on your programming, and vice versa?

Musical work is often really independent, and I like to think that makes me a more self-directed programmer than I might be otherwise. I’m comfortable with not being able to understand something, and with learning by doing. In the other direction, I think the business and project management ideas I’ve learned from tech are quite helpful in music – what to do and what not to do. And it really helps in both fields to know how to use a spreadsheet.

Aside from music and software, what other hobbies or pursuits do you have?

I have a toddler and that’s plenty for now.

What would you say to a musician considering a career change into programming?

I still do both, so I might not be the best person to ask. I think getting into open source can help; it means you can learn how to collaborate with other developers before you even have a job, and those collaborative “soft skills” are the most important ones.

Both of my careers can be wonderful and really hard on different days. But the killer feature of the tech industry is the potential for ultra-flexible remote work.

And finally, what advice would you give your younger self when you started programming?

Slow down – take a little bit more time to design and research first, and write tests, and leave the code a bit later. But also, feel freer to venture into technologies you’re unfamiliar with, it never takes as long to learn as you think.

More Info

Who is this post for: bootcamp grads who didn’t receive instruction on testing in their course
What does it cover: an overview of the types of testing you should know about, along with links to further resources

Congrats on graduating from your bootcamp! Just when you thought your brain couldn’t get stuffed with any more concepts or ideas, welcome to the wonderful world of TESTING. This blog post should get you started with some fundamentals. Good luck!

Before we dive into testing, there’s a mindset shift you need to make. When you are learning at a bootcamp, you are working at a very small scale. You don’t need to consider things like application load, test performance, pipeline execution time – you just want it to compile and run. But once you get into professional software development, scale is probably the biggest difference: we have over 4000 tests for our backend system alone. Test execution time is something we care about. Once written, an automated test can provide value for years. So part of understanding a good test strategy is understanding the scale and the timeline of an enterprise project. Now on to testing!

What is testing? Testing really means “automated” testing. Manual testing is something we avoid as much as possible because it’s not scalable or reliable (humans make errors). Testing is a critical skill for modern software developers, and most importantly, it’s often the differentiating factor in whether your tech test will pass.

What kinds of testing are there? Broadly speaking, there are 3 main types for you to worry about now. These types are in the testing pyramid below:

Pyramid of Automated Tests

Unit tests are the foundation layer. This is where you practice the famous test-driven development (TDD). We like unit tests because they are fast to run, don’t require complicated setup, drive good code practices, and give quick feedback to the developer. Not sure what to test? Start with normal, boundary, invalid and extreme testing.
Resources:
The Test Pyramid
TDD By Example by Kent Beck
Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce
Secure by Design by all the Dans. This book is highly readable and will help you with design and testing.

Integration tests (also called service tests) test the communication between different parts. You don’t want to check details of logic here because these tests have a more complicated setup and are slower to run.
Resources
– Integrated Tests Are A Scam

Acceptance tests (also called end-to-end or E2E) tests for web apps usually through a browser (sometimes headlessly, sometimes not). They are attractive because you can see the interaction, and they are unattractive because they are SLOW and notoriously unreliable – if your network speed tanks, the test could fail because it looks for a button that hasn’t turned up. Basically you want to avoid these as much as possible, but they do have value.
Resources
Cypress testing framework

Bonus test types
As a junior developer, you probably won’t need to worry about these types of tests, but it’s good to know!

Load testing: how does your application behave when stressed, such as receiving too many requests at once or a request with a payload that’s too large to handle.
Resources
https://www.guru99.com/performance-testing.html

Penetration testing: this is normally done by a 3rd party security expert. They are looking for vulnerabilities in your application.