My day job is writing iOS apps. My main hobby is writing, recording and producing electronic-rock music. Sometimes these two seem more similar than one would think, and in this article I'll try to explain how.
First some background information - I've been pursuing a career in programming for a while now, and the last couple of years I've focused on doing iOS development. But I've been a music buff and guitar player for a long time now.
I also do electronic arrangements, production and some recording with my current band. I did all the pre-production for our two short albums, did some mixing and also played and recorded every instrument except the drums and piano.
The band is called Plastic Knives, and this is what it sounds like:
The idea for an article that compares programming and music came to me after talking to one of my colleagues. Now and then he likes to inquire about the progress of my musical side-project. After one of these chats, he told me,
"It seems to me that creating music has helped you become a better programmer. There are just so many similarities."
So here are a few ways in which my programming relates to my music production and/or writing. If I get any programmer or musician to try and do the other, that would be more than awesome.
1. Big on software tools
2. Read a book
You can do a lot of stuff with some googling as you go along. This can get you so far, but, in the long run, you really need to invest more time and read a book or a more in-depth tutorial. Music writing/production and programming both have a constant learning curve, and as soon as you think you know everything, something new comes along that proves you need to learn more.
3. Learn from your peers
Contrary to reading a book, talking to someone who has experience in the field takes next to no time. However, even a 10-minute conversation with a senior programmer or experienced musician can have a dramatic positive effect on your work. This generally applies to a lot of fields, but when it comes to technical work that has a lot of creativity to it, this becomes even more apparent.
4. Iterate and take your time
If you want to have a good final product, you need to iterate. A lot. Rushing leads to bugs in songs and strange noises in user interfaces.
5. Organize yourself
In your Digital Work Station (DAW) there's a lot of sound tracks, effects and options turned on most of the time, just like there's a bunch of classes, objects, processes, threads and resources which interact with one another in a computer program. If you don't follow some basic organizational rules and patterns, you'll end up with spaghetti and a headache.
6. Time estimation
Obviously, you get better at this with time and experience, but sometimes this can be ridiculously flawed on both fronts. This happens mainly when you get new ideas during the execution process.
7. Practice and persistence lead to perfection
No one is proud of the first few programs they write, and no musician wants everybody and their mother to hear their first couple of songs. This is normal - practice and results come in time.
8. A little math goes a long way
Sure you can do any of these things with a basic knowledge of math, but knowing a little more goes a long way. Whether we're talking about algorithms or wave editing, understanding what's really going on under the hood will give you the ability to implement your ideas more easily and expand the horizon of your creativity.
Most days I can't do without a fresh pot, and I've found a lot of programmers work the same way. Also, contrary to popular belief, most rock musicians don't go for the more expensive under-the-counter stuff.
10. Know when to stop
When staring at a chunk of problematic code, or listening to a troublesome song section, it's good to know when to stop. Often a solid break or, even better, a good night's sleep can help you spot and iron out the issue.
It's no secret that having something that occupies you beside work is a great way to clear your head, whether it's similar to your work or something totally different. I enjoy doing both music and programming. I hope you share a similar passion for your work and have a cool hobby that helps you in the same way creating music helps me.