Last week, Kat and I were lucky enough to sit down with Chad Fowler, programmer, author of The Passionate Programmer, start-up investor, founder of both The International Ruby Conference and RailsConf, and musician.
We talked about music, creativity in tech, and the importance of valueless software—you’re going to have to trust us when we tell you that that’s not a paradox.
*"Nobody becomes a musician because they want to get a job and lead a stable and comfortable life. The music industry is too cruel an environment for this to be a feasible plan. People who become professional musicians all want to be great. At least when starting out, greatness is binary in the music world. A musician wants to be either great (and famous for it!) or not do it all." - Chad Fowler, The Passionate Programmer*
Kat: You mentioned in your book, The Passionate Programmer, that a musician’s mindset of wanting—needing—to be great helps you be a remarkable programmer. Would you say that’s limited to programming, or can it be applied to a lot of different areas?
Chad: I think it has to be applicable to a wide variety of professions, although probably not all of them. It probably is limited to professions where you're actually creating something.
If you're doing something that's just rote processing or something like that, it probably doesn't make sense to be great.
"I think there is a desire, sort of an arrogant desire, to be seen as special"
I think there is a desire, sort of an arrogant desire, to be seen as special that most musicians have. Very few musicians are happy to just be a side person that just works. No one gets into music for that reason, and some jobs are just work.
There are probably people who would say, well, programming sounds like just work to me, so I might just be biased.
Katya: Do you think people underestimate the creative component of programming?
Chad: People who aren't programmers do, and people who are crappy programmers do.
When I got into programming, I was surrounded by people with master's degrees. I didn't have a degree in anything, but I'd studied music and was playing music professionally. I was amazed at how uncreative pretty much everyone around me: these people with advanced degrees—PhD students—following me around, taking notes at work, because I was thinking and they weren't thinking.
Great programmers definitely are creative.
Even if you're making boring software, it can be creative and wonderful as well.
Kat: Could you talk more about the thinking that you do but didn't see your colleagues with advanced degrees do?
Chad: It’s been a long time, so it’s hard to say. Coming to software from a classical composition background, it was sort of like the exact same part of my brain was engaged in solving problems in both places.
When you're creating let's say an orchestra piece, you have a simple idea and as soon as you have that simple idea you go into problem-solving mode. It's almost exactly like having a software idea and having to go into okay what's the implementation of this. You have an idea and then you have to write little dots on a piece of paper for an hour to make it come out you know and those dots line up and different orchestrations mean different things.
"When you're creating let's say an orchestra piece, you have a simple idea and as soon as you have that simple idea you go into problem-solving mode."
For me, I have sort of like epiphany moments where I realize I've got myself stuck in a musical train of thought and if I break it something remarkable will happen at that moment and I can do something unusual and create something engaging.
Getting into software felt the same way. For a while, I do rote stuff and I just type code and I frame the problem, I figure out how to solve it, and I start going. I guess the thing that was missing for me in these people I'm talking about is moments where they would back up and question everything again.
Maybe that's my jazz improviser side of me coming out. I'm always thinking how is this fitting together. Does it feel good? Does it communicate what I want?
Software, in terms of the implementation, is communication with future programmers. Maybe I'm one of the future programmers, even if I'm writing it, but it's a communication exercise, as much as it is an exercise of typing instructions for a computer.
"Software, in terms of the implementation, is communication with future programmers."
There's something about re-evaluating and looking for epiphanies where you change direction. My colleagues would be happy to be given an instruction and then just sit and type and filter done with it and ask for another one and not really think about the overall picture of what they're creating.
Katya: Could you tell me about a time when it seemed like you were tasked with something cut and dry, but you really needed to think critically and creatively to succeed?
Chad: I was with a small company that made educational software 15 years ago, and we had built this really fancy system that I was hired to do.
For various reasons, we ended up launching it and having to roll it back because the customers didn't like it. It was a year of wasted effort, and it was one of the worst experiences of my career so far.
What happened after that was they said, well, we'll just keep maintaining the old system. The old system was this nasty old antiquated pile of junk written by a founder who was barely a programmer and didn't consider himself a programmer.
It was such a mess and had all this terrible, repetitive. repetitive work you had to do on a daily basis to maintain it. This is an example where I think repetitive boring tasks lead to more art.
I had one programmer working with me. We built something that was elegant and beautiful and sort of looked like its own programming language, but it was a programming language for specifically doing these repetitive tasks and it would auto-generate a bunch of code.
The business impact of it was we took something that used to take 14 hours and reduced it to three minutes.
But that wasn't why I enjoyed it. It was that we made this beautiful thing and no one had asked us to do it, so it gave us the freedom to be creative and and weird with it, which we did and it was fun.
In the next part of this conversation, Chad talks to us about "valueless software," a concept new to Kat and Katya. He also writes about it here
Another example: I started doing exercises where I would write software that was useless—not even boring but literally didn't do anything anyone wanted.
"I started doing exercises where I would write software that was useless—not even boring but literally didn't do anything anyone wanted."
I used to like to read about esoteric programming languages, like white space, where it's all tabs and spaces. One of them was called Ook! which was a joke language that was supposed to be a programming language for orangutans.
Every symbol in the language was the word Ook with different punctuation. It was fully specified, Turing complete language. Technically you could write an operating system in this thing, but obviously no one would.
I used this as an exercise to focus on the implementation—the actual process of creating software—instead of focusing on the outcome.
Since no one needed Ook! interpreter, I wrote the world's first Ook! Interpreter. No one needed it, so I was completely focused on the process of creating it and how I thought about the internals of it, which led to a more creative process.
You could say that useless software is the ultimate in boring software since no one wants it.
Katya: It sounds a lot like an exercise you’d do in a poetry class!
Chad: It is—I took it away from music. I realized that software developers don't practice—we practice on the job because there isn't a concept of practice. I started working on different ways that I could try practicing as a software developer, like I do on the saxophone.
One of the first things that I realized I needed to do is not be in a hurry to make something work because, otherwise you're not gonna practice.
Katya: Do you think that’s an unexplored space in programming? Artists will sit down and, for example, paint not to create a piece of art, but just for the process of creating itself.
Chad: Lazy musicians and lazy artists don't do that. I practiced the saxophone—half the time I'm just playing stuff that sounds good and the other half I'm practicing. If it sounds good, you're not practicing, because you're not stretching your boundaries.
"If it sounds good, you're not practicing, because you're not stretching your boundaries."
I know artists that are just constantly cranking out art but they're not really practicing art because they're making something every time.
I do agree that it's an under explored area.
Right around that time, a guy named Dave Thomas, who's one of the co-authors of The Pragmatic Programmer, wrote a series of posts called Code Kata. That was taking the concept from martial arts of having a thing you do for practice and applying it to software.
He actually started writing a book where it was a bunch of different exercises you could do that were just for practice. If you search for that you'll find nerds on YouTube screaming "code kata!" There's always like music and they're solving some useless problem and trying to explore some area of their craft as they go.
Katya: I think it’s really interesting that you keep using the word "useless." It seems like you’re growing a lot from it, so it doesn’t sound useless at all.
Chad: The creation of it is not useless, but the thing that you create is useless—it has no value. In fact, when I wrote the blog post about this experience I called it valueless software as a way to practice so that you don't get fixated on the value that comes out at the end of the thing that you make but instead you focus entirely on the process
"...Don’t get fixated on the value that comes out at the end of the thing you make."
Katya: You’d think that people with advanced degrees would have more time to explore different areas and specialize. Do you think they get arrogant, or is there a problem with the way we teach computer science?
Chad: I think there's a problem in the way we teach and learn everything actually—at least, you know, the mainstream ways. College is not set up to make people think and make people smarter—it's set up to crank out a piece of paper that you can have so that you can meet the minimum bar to go get a job.
That was very evident and it still is in computer science courses. You meet people that are either new graduates or are still in school and they're just there because you're expected to go as soon as you graduate high school when you have no idea what the hell you're gonna do with your life.
They say that people don't actually grow up until 27 now in the US, so you've finished all of your education and you're in some lame job by the time you figure out what you really want to do with your life.
I think that's mostly it—that people just go. I was a jazz saxophone and a classical composition double major, and I decided not to take very many general ed classes because a degree didn't really mean anything to me. I didn't want to be a teacher and that's all you can do with that.
All I did was learn, so for me college was amazing. I came out of the way smarter than when I started and I went straight into the software business. I think it's because I chose something I was passionate about that kept me intellectually on fire all the time and kept me in this creative mode all the time, so when I got into the workplace I needed something like that.
I could imagine someone saying… "Okay, I'm supposed to study business. I'm gonna go to some business school but I don't really want to and it’s just what someone said. I think that's what most people are doing: just going through the motions, not following a passion." That's why my book is called The Passionate Programmer. I think that's the key element that most people lack and it’s why almost everyone in the world is bad at their job.
Katya: That’s a bold statement. Do you think it’s because everything is so transactional now? It doesn’t seem like anyone does anything for the process, like you were describing. It’s just all about the result.
Chad: I don’t know. You use the word *"now"* as if something has changed and I don't really know if anything's changed
I probably shouldn’t say that everyone is bad at their job, but almost everyone is not remarkable at their job or not especially good or maybe even especially geared to do their job.
Katya: I’ve been hearing about the idea that you don’t need to be good at your job—you need to be good at something else, something that you love. Stepping away from the sort of Steve Jobsian idea that your passion has to translate to a career, per se.
Chad: I think you need to be good at the thing that you do all the time. I'm constantly trying to convince myself that my job is how I make money and I don't have to define myself by it and identify too strongly with it. I can have a terrible time at work but still have a good life.
But I spent too much of my waking time working for that to be possible. It’s a nice meditation to do sometimes but honestly you need to find a way to do something for most people I can't speak for everyone but most people I know anyway you have to do something that you enjoy and are therefore good at it's very hard to be good at something you don't enjoy unless you're a masochist.
Katya: What’s your take on people who have a side hustle? Like they’re going to be a PostMates delivery person and do what they love, even if it's not profitable.
Chad: I like that. It scares me, too, because my younger family members are doing that and I worry about long-term viability and how safe they'll be financially when they're older.
I have a friend and bandmate that I used to play with when I was younger. We both were in music school and were sort of top tier of the young people in the city for a while, then we went our separate ways for 20 years.
I've recently reconnected with him. He plays piano, I play saxophone. We've started playing a lot together and he told me his philosophy, because I asked someone, "What's Chris doing?" and they said he's taking whatever weird gig nobody wants and only playing weird stuff. You know, strange parties no one wants to go to and playing with people that are terrible or stray or weird in some way. I thought okay is he on drugs or what, and I mean that very literally in the music world.
When I talked to him, though, he said he has a job teaching and he's decided he's never going to play again where money is the expected outcome, because he doesn't want to play things just because people want to hear them.
He uses his day job for his living, and then on the side he does the thing he loves. I have explicitly done that as I've reentered the music scene in the last few years and it's way better.
I'm not jaded like the rest of my old musician friends, who seem to hate listening to music now because all they do is play like crappy blues gigs and they play "Mustang Sally" 20 times a week in Memphis while drunk people dance. Eventually you judge your music by like what kind of food is served on the breaks, instead of what kind of music you make.
Kat: What’s the better environment for people looking to be more creative in programming? Are there pros and cons in both startups and big company environments?
Chad: There's pros and cons. It depends on who you are, too.
I wouldn't say it's the case at Microsoft, but you can do some really weird stuff if you are creative and embedded in a big crusty old company that's not very productive.
The example I told you, where we automated the stuff that used to take 14 hours, was from a startup. Sometimes I talk about getting a cubicle job somewhere in Arkansas, where I live, and not really telling them what I do and then seeing if I can automate all my job so that I only work 10 minutes a day. I think that might be possible in a big company where the expectations are low.
For me, being a start-up CTO, where I'm really hands-on, is where I've done some of my best, most creative tech work, especially in the middle of the night. I think of it almost as the equivalent of jazz performance. You are performing when there's an outage in the middle of the night. You're trying to figure out how to bring the system back or deal with you know a performance issue that's critical and causing problems for your customers and you have to think on the spot often with a partner or maybe a group of people that are on call
Unfortunately, I have spent many, many nights like this at Wunderlist before we were acquired as we are rewriting the system. Some of the weirdest ideas that I've ever had and then implemented happened in the middle of the night while troubleshooting these kinds of things, but they're just different types of environments.
It depends on you know personally what your goals are and how well you work. I tend to work with groups of people under stress the best and that's where my creativity comes out. Others like to sit by themselves in a quiet place and think alone.
Kat: Being a musician has clearly impacted your thinking, but are there any ways you’ve directly incorporated music and art into your software?
Chad: Not really. There are a lot of aspects like design patterns. In software there are patterns and in jazz improvisation they're almost exactly the same.
The one experience that I had that was really close is in 2003, Dick Gabriel, who I think is the first person to write about design patterns in software coincidentally, has an MFA or a doctorate and poetry. He's a very influential thinker in the software world especially like Lisp, object-oriented programming early days.
He and a few other people created a pilot program at the University of Illinois in Urbana, which was an MFA and software development. I was part of that pilot with eight other people. We went for a residency period. The idea was do the deep residency period all together and then go off on our own and come back. They were going to let me into it even though I didn't have a bachelor's degree, which was sort of exciting.
We only did the initial stint, which was nine days on site. It was all like Writers Workshop. Everything we did was straight out of the playbook for doing an MFA in poetry. It was a fascinating experience. You bring your software, you sit in the corridor, and everyone discusses it. You're not allowed to talk, that kind of thing. We had an interesting cross-section of musicians and poets and artists
Not the same analysis as poetry, of course, but the same sort of process and an expected outcome of thinking about what you're trying to communicate with this and the techniques are you used to communicate it.
That was the end of the experiment—I don't know, maybe they didn't like us—it never went on past the one nine-day thing we did.
Kat: You have a lot of advice for software developers looking to become more remarkable. Do you have any advice for young people still trying to figure out what to do with their lives?
Don't do the obvious thing. Do the thing that you're passionate about. Even if you can't figure out how you make money from it, I think you'll either figure out how to make money from it, decide that you don't care because it's what you have to do with your life, or keep yourself mentally emotionally and intellectually engaged and growing while you navigate to the thing that ends up being what you do with your life.