Sam Soffes

Four Questions

Posted on

I recently got an email from a college sophomore that had some questions about getting started. Asked him if it would be okay to answer publicly and he was for it.

#1 How did you begin programming?

I started “programming” for the first time when I was 10 years old. My mom took me to an HTML class our local ISP was offering for free. I thought it was amazing you could type some stuff and make visual stuff happen. Started writing HTML in all of my free time in Notepad on our white Dell tower.

My first actual programming was in ActionScript when I was 13 in a Flash 5 demo. That was my first if statement. Shortly after, I started dabbling in PHP and took a C++ class in sophomore year of high school. That said, we didn’t use any of the ++ parts. Didn’t learn about object-oriented programming until the following summer.

A friend and I drove down to Atlanta, GA from Louisville, KY for an Apple tech talk on what was new in Mac OS X. We went purely as fans. I didn’t even know what Objective-C was at the time. After seeing all of the new stuff they added in Xcode (like a better debugger, etc.) I went back to the hotel room and purchased my first item on Amazon: Mac OS X Programming by Aaron Hillegass. I spend the rest of the summer working on a Mac app. So, somewhere in there was the real start.

#2 What advice can you give to someone just starting out like me?

This junk is hard. Don’t give up. Basically anything is possible if you just do it. The most important thing I learned in that C++ class was resourcefulness. Our teacher was a really great guy. He mainly taught Computer I (how to use Windows, Office, etc.) but wanted to offer programming. He took a class the previous summer and was excited to teach us.

He would work a few chapters ahead in his free time and then explain it to us in class. Didn’t take long for the few that tried in the class to get things quicker than he did. Whenever we’d get stuck though, he’d sit with us and try to help us figure it out. I remember the first time we got a linker error very vividly.

“What’s a linker error?”
“I have no idea. Let’s try this:”

Then he copy and pasted the error into Google. Clicked the first result and there was our solution. Next time I got stuck with some mysterious error or wanted to do something I didn’t know how to do, I tried googling it. It turns out there is a lot of information on the Internet. This is basically how I learned everything with the exception of that first book I bought. You just have to get started.

Still to this day, my attitude is “sure, I can figure this out.” Being resourceful instead of giving up when you get stuck the most important thing you can. I think this is what makes the difference between a good programmer and a great programmer (resourcefulness and that attitude that you can figure it out that is).

#3 You worked on the Bible app!? I use it everyday!

Cool to hear. Bible was my first iPhone app. I got hired at, a mega-church in Oklahoma, to do PHP development. I moved from where I grew up in Kentucky to Oklahoma in December right after I graduated high school. This was 2007. iPhone came out after I graduated.

When Steve announced the iPhone SDK in March, I said to my boss, “We should make an app.” “Let’s make the Bible,” he replied. So I spent all of my time on the app until the App Store launched that July.

It was actually called “YouVersion” for awhile. I vividly remember typing the name into iTunes Connect—my boss and his boss standing behind me. “Hey, let’s see if Bible is taken.” backspace Then I typed it in and it never changed. Really cool memory.

Turns out this whole app thing was a big deal. At the time, we had no idea. We quickly reached 100,000 downloads. For a church, that is more people than they can ever hope to interact with. I got to work on it for a bit longer since it was doing so well. The last release I released was version 1.8. That came out a few months before iPhone OS 2.0 was announced.

After that, I spent a ton of time working on, the supporting website for the app. The little PHP script I threw together for the iPhone app was the first API I ever wrote too. In the shift to working on the website again. A few months later, I left to become a freelancer for the first time.

#4 What is life like as a freelancer?

It has it’s pros and cons. Most of the time, I love it. Toward the end of projects, I often hate it. Having flexible hours, getting paid a lot, and choosing what you work on is great. Clients are the worst sometimes though.

I’ve had the luxury of not having to worry about finding clients that much. When I first made the transition, it was pretty scary. A client approached me and asked if I wanted to help with their project. Funny enough, it was a PHP project. (Thankfully, the last PHP project I ever worked on.) They agreed to buy 100 hours of my time and paid up front. Got the check before my last paycheck at my full-time job. At the time, I was charging $125/hour. $12,500 was a huge amount of money to me at the time. My mortgage was only $740/month back then. (By the way, buying a house at 19 was cool. Only having it for 6 months was financially the worst thing ever.) I remember cashing the check at a Chase on 2nd Street in Edmond, OK. Formidable moment.

Anyway, having a bunch of runway helped ease the stress. Got another two clients after that one and horribly mismanaged my time. Ended up being really stressful because I didn’t set good deadlines for myself.

Since then, I’ve made the transition from full-time to freelance a few times. Having some runway or clients lined up is the key. It’s easy enough to get some clients while you have full time employment to try it out. Learning how to manage projects is really important. Then you can just get a big enough project and quit.

I’ve been full-time freelance for over a year now this time around. The biggest lesson this time is making sure your clients know what they wanted going in. Clients not knowing what they want is the biggest source of frustration as a freelancer.

Final Thoughts

Hopefully some of that was useful. I could go on and on about freelance work. If you take anything away from this, it should be to be resourceful, you can do it.