Me: Let's talk about you. What is your background? How did you land here?
Jeffrey: Growing up, I chose my own curriculum, and I always had an interest in making games. When I got the idea for the math game four and a half years ago, I started gathering resources to make it possible.
Me: What's your typical day?
Jeffrey: Yesterday, I went to a meeting with some business coaches, and realized that people want curriculum, not games. I spent a few hours trying to work through that. I went to yoga, then spent the rest of the night programming. It seems like the more customer-facing tasks I have, the more programming I do at night.
Me: I want to talk about freelancing. Have you ever had a traditional job?
Jeffrey: I've been with two consultancies and one startup. The closest would be when I was with a startup for 13 months and they were paying me the entire time.
Me: How did you manage to avoid that?
Jeffrey: I had a little bit of money left over from scholarships when I graduated, and I was able to hold out and built my skills. It's been a huge privilege for me to be able to work the way I do, and I know not everyone is in that position. I'm going to take advantage of that, and not settle for something where I'm less effective. There are definitely situations where people need to work in a more traditional job, or work better that way. I don't want to knock them.
Me: I am hoping to show people how to do what you're doing.
Jeffrey: First, if you have any privileges, that's great; take advantage of them. Obviously, society isn't fair - any unfairness you have stacked your way, take advantage of it, and use it to help other people. Live frugally. For a while, my rent was $200. I went a year without a paycheck after graduating. I ate a lot of rice and beans.
Then, I moved to a country that had a low cost of living when I had my first job, in Medellin, Columbia. I could live the high life for not a lot of money. I was working about 25 billable hours, plus educating myself, plus learning Spanish, plus administrative. It was about 55 hours a week to get paid for 25. But I came back from Columbia with more money than I left.
I would say, learn a valuable skill. When I had the idea for making a game, I didn't say, "Let me go find venture capitalists, an artist, and programmers who will make my idea for me." No one will listen to someone with just an idea, and they won't give that person cash or their valuable work time-- especially if that person is 21! Learn a valuable skill, preferably one that will help you follow your dreams and help support you while you create something. For me, it's programming.
Jeffrey: Making estimations about the value of something versus the price of producing it. People will ask about, say, three things. One is cheap to produce and provides a huge value for their customers. Another is expensive to produce and doesn't provide a lot of value. The other is expensive to produce but does provide a lot of value.
To be a freelancer, you have to be able to recognize this. Estimate the cost, and estimate the value to see what are good investments. Then, you have to find ways to talk to the client about what they should do. One definition of freelancing is a client handing you a pile of work, and you do it. But that doesn't provide them the best value. It's the easiest interface, but eventually, you'll get swamped, and they'll want to know why the work isn't being done faster. You can talk to them and ask what they're trying to get done. Let's find the way that will take me the least time and be easier for you to maintain.
For every problem, you have to look at how the customers are going to use it, how the business is going to make money with it, and how your client, the businessman, is going to view it. How difficult will it be to program at the start, and how much will it take to maintain? You're looking at a huge variety of different issues, how to balance them, and communicating about all of it. That skill, understanding their needs, is almost as important as being able to write a good line of code. There is a difference between solving a technical problem and solving the client's real problem.
Me: In creating the game, what tools are you using?
Jeffrey: I'm using web tools. You access the curriculum online through a website. I've been using Ruby on Rails for the back end, and Ember JS on the front end. Those are tools that really help you gloss over the technical things. Once you learn the programs, you don't have to worry about the nitty gritty aspects. You can instead focus on making something that your users love.
Let me tell you the story of how this came to be. Four years ago, I was working in a lab at UC Berkeley for a summer program. I was a chemical physics major, and I was trying to be a scientist. I noticed that it would be a lot easier if I knew how to program. So I learned how to program, because I had a problem that programming could solve.
Once I started learning, I began to have other ideas of what I could do with programming. One of them was a game that taught math. That was four and a half years ago. In the time between then and working on this game, I was learning the tools. I was working for other people, getting better at programming, and working in various teams, seeing how customers interacted with various web products.
Me: So you're not a lifetime computer geek programmer person?
Jeffrey: No. I actually failed to learn how to program twice, trying to teach myself. It's very tricky because there are hundreds of different languages, and some of them are better at teaching than others.
Me: And there's no program to teach you programming with fun little characters.
Jeffrey: There are actually a lot of people working on stuff like that right now. I've contributed to at least 3 Kickstarters with that goal in the past few months!
Last week, I talked to Jeffrey about his exciting new math curriculum.
Follow Jeffrey: @JeffreyBiles