Starting at the very beginning...

When I was in middle school, we had a computer drafting class. In that computer lab, we had Photoshop v1.0 The first time I saw it, I knew it was something I wanted to learn. I started learning everything I could about this tool. This was pre-internet so it meant heavy books and bugging anyone I could find who knew about it.

My high school had a graphic arts program with photography, screen and offset printing. There I did a lot of Photoshop and learned Illustrator and QuarkXPress. This was in Southern California in the mid-90's. We did a lot of shirts and banners for 10k's, bike races, and marathons. Around that time I got my first internet connection. I spent a lot of time on newsgroups related to the tools I was working with.

I went to college in Northern California and worked a series of uninspiring student jobs while trying to launch a design business. I did a variety of basic computer consulting. Wiring people's offices and homes for ethernet, fixing windows machines, crawling around under desks plugging in cables. I remember talking to a friend of mine who worked at an ad agency about my challenges getting clients. He suggested doubling my rates (from $30/hr to $60). I thought that would never work. I tried it. It worked. I tried to do everything as professionally as possible. Writing proper estimates, weekly reports to my clients, responding as quickly as possible. I stopped fixing windows machines and crawling around under desks plugging in wires. At that time I had switched majors from pre-med to Economics.

I applied for a web design job with a small environmental consultancy. They emailed me back telling me that I didn't get the job because my qualifications weren't a good match. I emailed the owner back to ask why they thought that. He agreed to have coffee with me. He hired me on the spot. I worked there for a few years. A lot of our work was based around making websites to distribute documents for environmental planning and resource management groups. I wanted to build web software to better support this functionality. I lobbied my boss to let me manage that project. We started with PHP and MySQL. I had a tough time getting results. I had no management experience, and our developers seemed socially inept. Eventually a friend of mine turned me onto Python and I rewrote our application in it. Eventually I made it work with both MySQL and Postgres. Consulting around this application started to be the main source of income for our business. I made partner. Sometime around there I graduated with my Econ degree.

I was occasionally getting consulting inquiries from groups outside of our target niche. I wanted to take them on, but my partner (former boss) did not. As an economist, it worried me to be so non-diversified. About this point, I read the 4 Hour Workweek. After a while I went off on my own to start my own consultancy. This was right before the financial crisis.

The economic downturn made things very quiet. It was terrifying. Before this the clients had always found us. I had to learn about sales, marketing, content marketing, SEO, customer development. I was working nearly every waking moment. I was living very lean. Money was very tight. My biggest fear was that I would have to go work for someone else.

I had a clear picture of where I wanted to go. I was extremely hungry. Friends stopped calling me to go out for drinks. The few that stuck around got to hear me talk about this obsession. Not a lot of people could relate, but the true friends at least listened and offered positive words.

My marketing process looked something like this. Find organizations whose work I cared about. Research them rigorously. Call or email them. Tell them I cared about the issues they were working on. Tried to get meetings. Asked a lot of questions and when possible shared ideas about how web-based tools could help them.

I landed some good project with great clients. I was doing some of the best work of my life. The first taste of success was extremely seductive. I remember the first month where I cleared $10k. That seemed like a whole lot of money at the time. I rented an E350 for a weekend and drove around listening to Drake. At this point I knew I was onto something. I put everything I had into this work.

A few months later I booked a ticket to Europe. I went to an open source meetup there. I decided that I was going to book my first EU client. I repeated this intention to myself again and again. At the meeting I met a cool guy working with a great NGO there. I pitched a project to him. He asked me some tough questions about how it would work with the distance. I told him honestly that I had never done this before, but that I'd do everything in my power to make the project a success. He believed me and we started working together. We made it work. Sometimes it meant me waking up at odd hours, or him taking my calls after business hours.

I never bought a house. I did buy cars and motorbikes. Cars are not investments. I did put money in the market, mostly hand-picked growth stocks.

I never hired employees. When I needed to bring in someone I subcontracted rather than hiring. I am not a bank for my clients. They pay a deposit at the start of the project. Our contract has non-trivial late fees. If the account is not current, we stop work and roll-back unpaid code. Unsurprisingly, we almost never have problems in this area.

From this point, I felt I had the basic pieces in place. I stayed disciplined and put in the work. Usually 12 to 16 hour a day six days a week. I traveled all over the EU. I went to spend winters in South America. I keep my life pretty simple. A backpack, a macbook air, a pair of running shoes, and a nice bavarian car. I dated girls with names that were hard to pronounce. I fell asleep on planes and woke up in different time zones. I ate Kobe beef in Kobe, drove M cars and AMGs on the autobahn, watched the sun come up over Istanbul. Above all, I made sure that my discipline was the most important thing.

I'm tremendously grateful for the success I've experienced. As much as I enjoy the tangible rewards for my work, the personal growth and ability to make a difference are the greatest rewards.

A few takeaways:

Find clients whose work you care about, and tell them as much.

Find mentors and ask them for advice. Know when not to listen.

Choose your clients carefully. Then move mountains for them.

It's not just about being a good programmer. Cultivate a wider business skillset.

You can make a fine living as a programmer without a CS degree.

It may get harder to relate to your non-entrepreneur friends. Try to find a few entrepreneur friends.

Use subcontractors rather than hiring employees.

Don't be a bank for your clients. Make sure you have good contact language.

Writing is extremely important. Don't shy away from it. Consider a writing coach.

Be honest with your clients. Don't be afraid to tell them that you don't know an answer.

Enjoy life, but make sure that the things that you enjoy reinforce your discipline rather than interfering with it.