I’ve never worked as a professional software developer before, but I have had some days where I’ve spent some long hours working on a project that made me wonder, “Is this what it would be like?” In general I don’t mind working, hard, and in fact I enjoy it. When I was studying music in college, I spend many many hours practicing the piano. I honestly didn’t mind it at all. It felt good to learn and make progress. I was gaining new skills and new insight all the time. It helped a lot that there were other people around doing the same thing. Even though practicing piano is mostly a solo activity, it’s inspiring to have a lot of your friends around doing the same thing a few doors down in another practice room.
Programming is mostly similar to that, but there are a few key differences. One of them is getting blocked.
Getting Blocked
I spend a fair number of hours in the last week being completely blocked in my progress. The more hours that go by in that state, the sadder it gets. Occasionally that sort of thing would happen to me as a music student, but it’s not quite the same. If I’m working on a piano piece and I get stuck on a passage, and I can always go away from it and work on other things and come back. But in programming I’ve had the experience where it seems as though I can literally make no progress until I get past a particular hurdle. That’s what happened to me last week.
The worst part of being blocked in that way is that sometimes when you finally figure out what the problem is, you realize that it is a really stupid problem. That’s what happened to me last week. It was the equivalent of turning the power off and restarting something (the android emulator needed to be restarted). But it wasn’t something I thought of doing, so I was looking in every other nook and cranny, trying to find the answer. The silver lining is that next time I am in the same situation, that will be one of the first things I try.
Staring at My Screen
During those long days, I spend hours sitting in front of a screen, and sometimes I wonder what that might do to my health. If I manage to transition into a career as a software developer, that will be something I’ll need to really think about. I have struggled with my weight ever since graduate school, and having a sedentary job is probably not going to help that much. I will definitely have to make a conscious effort to get physically active during the day, whether it be by standing up, going for walks, or whatever.
My hope is that, with a good job that allows me to make enough money that I don’t have to work on the weekends or in the evenings as much as I do know (see my previous posts), I might be have more time for physical activity and other things for my health, such as cooking better foods for myself.
Taking Care of Myself
This is going to be key for me in the long run. I have a young daughter, and I would love to live a long time. I wasn’t feeling too confident about that before I started on this path. But I am more hopeful that I’ll be able to take better care of myself after making career shift. I just have to remember that the career change alone won’t make me healthy. I’ll need to make good decisions, which hopefully I will be in a better position to do, once I am able to improve my work-life balance. At least that is my hope.
I have been a musician and music teacher most of my life, and I’ve spent a lot of time thinking about how people learn. When it comes to playing the piano, I’m always trying to understand how I learn better, because I have had to learn a lot of music.
A lot of people who are learning the piano get stuck, and if they could take a lesson from the programmers, they might find that they can solve the problems they are having. So I’ve come up with a few tips from my time learning computer science that might be helpful to people learning to play the piano, and here they are:
Break down large problems into smaller problems.
The best solution is the solution that gets the result you want with the least amount of effort.
Always consider the listener’s (user’s) experience.
Just because it works once, don’t trust it. Test everything.
Lay down the framework first, and then add the details.
Let’s talk about these one by one:
#1 Break large problems into smaller problems.
Piano students sometimes get discouraged when they look at a long piece of music to learn that has a lot of challenging passages. They wonder if they’ll ever be able to learn the whole thing.
They need to think like a programmer. What is the first thing a programmer does when they want to learn a new framework or language? Hello World! That’s right, the most basic task in any language or framework is to get the computer to print “Hello World!” on the screen. So that’s where you start. What is the most fundamental version of the problem that I can solve, and start there.
In a difficult passage of music with a thousand notes, you don’t have to learn all the notes right at first. Start with playing the first note going to the second note. How was that? Can you do it accurately, at the speed you want? If so, try the first three notes in a row, etc.
What if you can’t play a scale smoothly? Suppose you had to program a robot to play a scale. Say it was a replica of the human hand. How do the fingers have to move? How does the arm have to move? Map out the steps exactly. You don’t need to write it down, but just pay close attention to how the arm and hand needs to move to get the result you’re looking for.
2# The best solution is the solution that gets the result you want with the least amount of effort.
Don’t just look for any old solution. Look for the best solution. The best solution is the easiest solution that gets the job done. If one solution allows you to get the result in 8 hours of practice, and another one only takes 2, go with the easy one. Unless the result you want is to be able to solve a particular problem using a particular solution. For example, say you have to use a certain framework that may not be the best for the job, but for some reason you are locked into using it. In that case, do what you have to do, but always look for the easiest way.
#3 Always consider the listener’s (user’s) experience.
The listener doesn’t care what fingering you use. In fact, the listener doesn’t even really want to know about that, the same way a user who visits your website doesn’t care which framework you used. They just want the website to work, and be easy to use.
Out of consideration for the listener, try to keep a steady tempo and speed up and slow down. That’s more important than playing the right notes. Remember the scene in “It’s a Wonderful Life” when the girl was playing the Christmas song with bad rhythm? That’s the reason that George got mad at her. The bad rhythm is annoying, and that’s how she ruined Christmas.
#4 Just because it works once, don’t trust it. Test everything.
You may have gotten something right because of luck, which means your luck might run out. You want to make sure you can get it right consistently, over time, in many circumstances. Programmers know this, which is why they test their code to make sure it will do what they want it to do. You have to give your program a variety of inputs to make sure that it will work no matter what happens.
As a piano player, you have to do the same thing. Can you play if you have a bad piano? What if you get distracted? Do you know it well enough to play it anyway? Can you start anywhere in the piece? If you make a mistake, can you keep the music playing, or do you have to stop and start over? Remember the user experience? The user is not going to have a good experience if you keep going back to correct your mistakes.
#5 Lay down the framework first, and then add the details.
If you’re building a website, this may mean to start building the pages and make sure you can navigate between them, even if they aren’t complete. Say you have a home page, a contact page, and an about us page. You may start with three simple pages with nothing on them, and make sure that you have buttons on each that allow you to move from one to the other. After that, you can choose fonts, colors, layout, and add cute images to make your website really pop. But what’s the point of doing that if the user can’t even get to the page.
I say the same thing about learning to play something on the piano. Start with the melody and the fundamental bass line. If you don’t have that, nothing else really matters that much.
I have told a few people that I was thinking about pursuing a career in computer science, and the reaction was often surprise, and some people have tried to talk me out of it.
“You should do what you love.”
“Sitting in front of a computer all day sounds boring.”
“Have you tried applying for a tenure track job in music?”
I have to be patient with these people, because they haven’t had as much time as I have had to process this. They know me as a musician. I’m a college music instructor. That’s what everyone knew I was going to be since I was a little kid.
Look folks, here’s the deal:
I love playing music, but what I do for a job is a completely separate decision. Some people love their jobs, some people hate their jobs, many people just think their jobs are okay. My job is teaching music at a college, but I belong to the group that thinks their job is okay.
There are things I love, things I don’t love, and things I hate. That’s pretty much how most jobs are. I love working with students, and I love playing music. But I don’t love the meetings, and I kind of hate giving grades. I like designing courses, but being on committees is kind of boring.
One thing I hate is the salary, which is closely tied to the other thing I hate, which is that there aren’t a lot of jobs available. Salaries are low because the market is flooded with people who have graduate degrees in music. So I struggle to save money, I worry about not being able to retire, I worry that I am going to live in an apartment forever, and work until the day I die. So to compensate for that, I take on extra work, which throws off the work-life balance.
Now let’s talk about computer science. I love programming. It’s fun. Even the hard parts are fun. It’s like a game to try to solve the problem in the best possible way. I’ve never worked in that industry, so I have to guess about the parts that I might hate. But I’ve been around long enough that I think I can guess.
I bet it can be boring. I bet some of the work is tedious. I bet there are boring meetings. I bet there are annoying people that you have to work with sometimes. I bet some bosses are hard to deal with. I bet some clients are hard to deal with too.
But the salaries are higher (I googled it), and there are more jobs available, which means if you’re in a job you don’t like, you can apply for other jobs, and you might find something without having to relocate. And my understanding is that people with these jobs can and do retire, and they can save money for the future. And they have flexibility, and work life balance.
What is work-life balance? That means you work for a reasonable portion of your time, and you can spend the rest of the time doing things that are important to you, like spending time with your family or pursuing hobbies, such as music, or pottery.
In the two scenarios above, the musician is doing music to survive and pay bills, and the computer programmer does music for the love of it, and does not depend on it to survive. That means he is free to do whatever music he finds interesting, and doesn’t have the pressure to please a certain audience or his colleagues in order to maintain his status.
Your job does not have to be your “passion.” That doesn’t mean you don’t care about your job, or don’t do good work. It must mean that you are using skills that you have acquired to do work that someone else is paying you to do. That’s what a job is.
Even if you love your job, it’s still a job, and if you stop getting paid, you’re going to stop doing that job. There is nothing wrong with this. It’s not really that weird at all.
So I say, stop worrying about finding a job that you love, and start thinking about what job you are willing to do that will be somewhat enjoyable and not too miserable for you, and worth the amount of money you will get paid to do it.
Then after work, do the things you love. Write a novel. Compose a symphony. Start a band. Follow your bliss, now that you have the time and resources to do it.
“Our group has a great opportunity to practice that right now, and that’s how I think we should look at it. We all want the same thing: to make a great app, and learn as much as possible in the process.”
Last week we got matched up with a group for the capstone project, which is the last class I have for the computer science degree program. We had our first meeting a few days ago. We did a video chat, and I like the people in the group. They seem really nice, and smart. I am sure that I will like working with them.
This week we are in the planning phase, and an interesting question has come up. We’ve been discussing which tools and frameworks to use. Do we use a framework that we all are familiar with, or do we expand our knowledge and learn something new? We had a mild difference of opinion. We could choose to see that as conflict, but I think we should choose to see it as a fascinating opportunity.
In my opinion, at its core this decision is about whether we want to learn new skills, or go deeper on some skills we mostly already have (or a combination of both). Which route will lead to a better final product, and which route will teach us the most about this profession that we all aspire to?
Here’s my take on this. I think our priority should be to make the best possible app that we can show potential employers. One thing about this program I’ve noticed is that we get a little bit of experience with each thing and then move one. There was one term of assembly language, one term of databases, one term of data structures, one term of operating systems, etc. But I feel like I while I’ve gotten a good overview of a lot of things, but I haven’t gotten really good at any one thing. I haven’t had a chance to go deeply into one area, at least not as much as I would like. This is not a criticism of the program. I think it has to be this way. There is a lot of ground to cover, and it’s impossible to cover everything. A broad overview is exactly what we need.
But I personally would prefer to use this project as an opportunity to show some of my best work. We only have 10 weeks, and week two is already almost over. I think if we use this term to learn brand new frameworks, we’ll lose time figuring out how to the framework works, and we run the risk of spending the time it takes to get familiar with it, only to find out that it’s not the best tool for the job. Whereas if we use tools we have experience using, we hit the ground running.
I just realized that I’m approaching this as a musician might. When I was a music major we had to do recitals at the end of our program, and the recital was supposed to show our most polished work. Most recitals are video and audio recorded, and people use the recordings to apply for graduate school, or for auditions, so you want to put your best possible foot forward. That is how I was thinking about this capstone project. Its a culmination of all of the skills we’ve learned in this program to make the best possible product.
In another situation, it makes sense to make something using a new framework as a way to learn the framework. This is a great way to learn. You can follow a tutorial step by step, but when you start deviating from the tutorial to do your own thing, that’s when the fun begins. I’m a big fan of learning by doing, because that’s the learning that really sticks.
If the tools are equally effective for the job at hand, I prefer to use the tools that we are more familiar with. I want to maximize our chances for successful building a great app in the time we have to do it. That’s not necessarily the best path or the only path.
But one important aspect is how we handle the disagreement within our group. We each have to be able to articulate our reasons for what we want in a way that’s respectful. But even more importantly, we have to listen to each other’s point of view with an open mind. And I have to say, our group has done this really well.
At first the question was about whether to use one framework or another, and after some messages back and forth, we quickly got to the real question which was, do we want to do something we’re familiar with and try to learn it more thoroughly, or do we want to learn something new? I think neither one is the wrong answer, it’s just a matter of decide what our priorities as a group will be. We’ll have a face to face meeting in a couple of days to discuss the pros and cons. I do have an opinion, but I’m willing to be overridden, especially if we can determine that a new tool is better for the job at hand.
Almost every student I’ve talked to across many disciplines says they don’t like group work. But I believe that the people who designed the curriculum knew that working with others is going to be a permanent part of our professional lives. When you work by yourself, you get to have full control over how you meet the requirements of each assignment. In a group, you have to discuss pros and cons of various solutions, and come to an agreement, which sometimes means compromise. Our group has a great opportunity to practice that right now, and that’s how I think we should look at it. We all want the same thing: to make a great app, and learn as much as possible in the process.
It’s good that we’re facing some differences of opinion so early on. If we can solve this in a way where everyone wins (and I am almost positive we will), we will be building a group dynamic that will serve us for the rest of the project.
“Perhaps the most important skill that I learned from doing music was perseverance. I knew that even if I couldn’t do something right now, by breaking the problem down into smaller units and conquering each unit one at a time, I would eventually succeed.”
It was almost exactly 6 years ago that I decided to change careers. I had gone to school to study classical piano, and had been teaching music at a university for eight years. My daughter just turned one. I’ll get into all the reasons I decided to make a change in another post, but for now let’s just say it was time.
I started thinking about things I could do, and a memory started to emerge of when I was in the third grade. My parents bought a Commodore 64, and it came with a book on BASIC programming. I started reading it. There were sample programs that I could copy and run myself. I found it fascinating, and I remember spending hours making silly text games that I would make my parents play. I made a program that was supposed to pick winning lottery numbers, which obviously didn’t work, but it was fun. I also remember getting into some early computer games (all on floppy disks). One of my favorites was called “Impossible Mission.” I loved that computer generated voice saying “Another visitor. Stay awhile. Stay forever!”
It was right around the same time that I also started piano lessons, which I also loved. I ended up studying music in college, and graduate school. But now that I was looking for a new career, I realized I had the opportunity to see what might have happened if I had decided to do computer science instead.
So I decided to see if programming was something I could possibly learn and enjoy. I found several free tutorials and websites including FreeCodeCamp, which I really liked because it was slightly challenging, but not impossible to get through the lessons, and the lessons were fun. I used CodePen, so I didn’t really have to do some of the initial setup that can be kind of annoying and frustrating for beginners, and I could just get right into writing JavaScript, HTML, and CSS.
After working on FreeCodeCamp for about a year, I took my first programming class. Even though it was called “intro to programming,” I was intimidated on the first day when I found out that I would be programming in C++, which I heard was difficult. I had never had to think about types or pointers or garbage collection or any of that. But even though there were moments of frustration, I loved every minute of that class, and the next class, and the next class.
I found the overlap between music and programming surprising. I had developed some meta-skills from studying music for so many years that turned out to be useful in programming. Perhaps the most important skill that I learned from doing music was perseverance. I knew that even if I couldn’t do something right now, by breaking the problem down into smaller units and conquering each unit one at a time, I would eventually succeed.
I found that I could get into a flow state while programming, where I could sit and do it for hours without really getting bored, and time passed really quickly.The same thing used to happen when I practiced the piano, and I knew that was a good sign that my brain was drawn to this activity. Sometimes I felt like I was working on some really complicated machine that only a small number of brilliant people, including myself could understand. It felt amazing to be able to get the computer to do something I wanted it to do, even simple things like sort a list of numbers.
There were other skills I learned from being a musician like frustration tolerance, creative problem solving, and resilience that I had developed in music school were coming in handy as a computer science student.
After a year or so of taking one class a term, I was pretty sure that I was going to be able to get through the degree, and that I was probably even going to enjoy most of it. Now that I’m in my last term of the program, I can say that I was right. It has been a lot of fun to take all of these classes. Even the hard ones (and there were some hard ones!), and even the difficult and stressful times were still satisfying and even fun.
If someone asked me whether or not they should study computer science, I would tell them to do what I did. Dive in. Take a couple of classes, and start learning. You’ll find out pretty fast if it’s something you will enjoy. Don’t worry if you come from a background that seems completely different. You may find that you actually already have many of the skills you need. So if you’re a rock climber who wants to learn to code, or a painter, chef, radio talk show host, or professional clown, it doesn’t matter. Give it a try if you’re interested, and you might find out you love it like I did.
I have four music degrees, and I teach music at a university. For me, like a lot of music majors and graduate students, college teaching was the dream. But I didn’t realize that a university music department could be kind of like a religious cult. That might sound strange, but hear me out.
Sure, teaching college music is awesome. But there are some beliefs held by students and faculty and reinforced at every level that tend to keep people stuck in a place where it may not make sense for them to stay. Here are a few of these limiting beliefs.
You are not a real musician if you aren’t making a living in music: When I was in school, there seemed to be an unspoken rule that success in music means music is your primary source of income. In my mind, making a living in music was always the goal. Many musicians believe that they could never be happy in any other profession.
If I change careers or take a job outside of music, it will be because I failed as a musician. Anytime we heard about someone in music deciding to change majors and careers, people usually reacted, sometimes silently and sometimes out loud, with something like “well…that person was never much of a musician to begin with.” The message was pretty clear: make your living in music, or you’re a failed loser.
If you do what you love, you never have to work a day in your life. In other words, if you make your living outside of music, you will be miserable and sad.
If I had a job where all I had to do was practice and play music all day long, that would be pretty awesome. But that’s not what most college music teaching jobs are like. In fact, it is similar to a regular job in a lot of ways: there are meetings. So many meetings. And there is paperwork, scheduling, spreadsheets, emails…all of that. So the idea that music academia will be a life of following your musical bliss is not the reality.
The Elephant in the Room
College teaching doesn’t pay well, at least not for most people in music. The number of people I have known with doctoral degrees in music who barely make a living is quite high. When I was a graduate student in music, money wasn’t something that any of us talked about much. Instead we practiced all the time, rarely slept, and figured we’d work it all out somehow.
“We didn’t go into this for the money.” That’s what people say all the time, and it’s true, but you do need a certain amount of money. My solution to that low salary problem has always been to take on extra work. I’ve had a half-time job as a church music director for years, and I’ve always taken on side-gigs. But I started to notice that, even with the second job, I wasn’t putting much money away for retirement, and my student loan debt was not going away. My physical and mental health has also taken a hit. I wasn’t getting enough sleep, or eating well, and I wasn’t getting enough exercise. I was tired much of the time.
I had some friends who also played music, but they didn’t do it for a living. They had jobs during the day, but the rest of the time they were making music that they loved. They seemed to have more time for fun musical projects than I did. They were in bands, and many of them wrote songs and recorded albums. They also owned houses, saved up for retirement, and many of them could afford musical instruments and equipment, while I felt like I was barely getting by, still renting an apartment, and couldn’t afford a piano even if I had room for one. So instead of doing what I do in my spare time, which is take a second job, my friends were doing music for fun, and entirely on their own terms.
Meanwhile there were some other new developments in my life. My daughter was diagnosed with autism at age four. There’s a good chance my daughter is going to need my help here whole life, not just until she graduates from college or high school. It was becoming obvious that my lifestyle of working all the time, barely making enough money was not sustainable. I needed a job that made more money in less time, so I could give my daughter the attention and love she needs. I need time to take care of basic things like keeping the house somewhat clean, grocery shopping, and just hanging out with my family.
Time for a career change, right? Seems pretty obvious, but I needed to overcome my programming (no pun intended?).
I’m not a real musician if I’m not making a living doing music? Really? Says who? What’s a real musician anyway? Will I lose all my skills and suddenly forget all that knowledge and experience after I change jobs? Of course not. I always think about Charles Ives, one of the most well-known American composers of the 20th century. His music was highly innovative and experimental, but Ives had the freedom to explore the music he was interested in as much as he wanted. Why? Because he made his living not as a musician, but in the insurance business. Look it up! And nobody would say of Charles Ives that he wasn’t a real musician because he made his living in another field. In this famous quote from Ives about making his living outside of music Ives sums up the reason for making his living outside of his composition.
“If [a composer] has a nice wife and some nice children, how can he let the children starve on his dissonances?”
Will I be miserable in a non-music job? There’s a little bit of misery in every job, including teaching music at a college. There’s no such thing as a job without misery. If there was a job that didn’t contain misery, we wouldn’t have to pay people to do it. The key is to find work that you enjoy most of the time, and even when it’s miserable, you kind of enjoy that too on some level. This is what I’ve found to be the case with programming. I really enjoy building things, and solving problems with code. As every programmer seems to say, there are times of great frustration, as well as moments of euphoria when you finally get something working. I enjoy the process, it is fulfilling and fun a lot of the time. It’s challenging, but I’ve learned to enjoy the challenging parts. Learning these skills has added some depth to my life. Will I be miserable? Probably from time to time, the just like I am now. That’s just life. But I also expected to have a better work-life balance, make more money, and have more time with my family. And on top of all those great things, I will have more time to do music on my own terms, without needing to please any institution or impress potential students or any of that. I can just play for the joy of it. Maybe take an occasional paying gig if I feel like it.
Leaving any cult can be hard. There’s pressure to stay. But don’t blame the cult. That’s how cults are able to survive. If it was easy to leave the cult, the cult would cease to exist.
If you are an academic in music considering leaving the faith, I encourage you to do it. Many have done so successfully before you and built successful careers in other fields, and still were able to keep music in their lives. You get to choose your path, so choose what works for you. Don’t worry about the ones you left behind. They have their path, you have yours. We’ll all be okay.