Author Archives: Jason

Million Dollar Consulting

I believe I first read Million Dollar Consulting by Alan Weiss in 2011. I thought it sucked, and I thought most of it didn’t apply to me. I thought it only applied to fancy consultants who worked exclusively for huge companies.

Over the course of the next five years I kept hearing about it, so I decided to give it another look. This time around it seemed like an entirely different book. I was clearly just not ready for its advice the first time I read it. This is a wonderful example of the fact that what you get out of a book depends on more than just what’s in the book. A book’s value equals the book’s information multiplied by who you are at the time. If you gain knowledge or have additional experiences between two readings of the same book, you might see the book in a totally different light. You might grow “hooks” that catch parts of the book you didn’t catch the first time around.

One of the things that stuck out most for me on this reading of Million Dollar Consulting was the importance of relationships as it pertains to getting clients. The author said people don’t go googling for consultants and I think for the most part he’s right. There’s too much trust necessary in hiring a consultant to just find one online and hire him. My understanding is that people like this are usually sought out via referrals. This got me thinking about how to develop good relationships with high-caliber people. One way that I’m doing this now is through my BNI group. I’ve gotten one client via BNI so far, a really good one. Another way I’ve found to form good relationships is by attending conferences.

Another takeaway from the book was the idea of getting strong “conceptual agreement” to a project before presenting the proposal. My understanding of Alan’s sales process is that by the time they get to the proposal/contract, it’s just a formality. They’ve already talked enough about the project by that time that the client is already totally onboard with the project.

I also gained a new term from reading this book that I don’t know how I lived without before, and I don’t know how I missed it the first time. The term is market gravity which in my understanding is how easy it is for you to attract clients. I used to think that the way to smooth out the boom-and-bust cycle of freelancing was to work for a number of clients at a time. I tried working that way for a while and it’s fucking horrible. What I believe now is that it’s best to have one client at a time and to cultivate the ability to quickly and easily spin up a new client engagement at the time your current engagement ends.

I would definitely recommend this book to any freelancer. If it doesn’t seem good the first time around, maybe give it some time and read it again.

The History of the Ancient World

The History of the Ancient World covers the “earliest accounts” through the fall of Rome.

I think my main takeaway from this book is that the ancient world was an awful place. It seems like the default way that power was transferred from one person to another was via assassination, often by a family member. Often the children of royal families were killed in order to prevent their ascension to the throne.

I don’t remember a lot of what was in the book (natch) and it was honestly pretty hard for me to follow due to the esotery of the material and the fact that I often have a hard time grasping/remembering stuff in general. It was kind of interesting to get a high-level view of the history of the world though.

I think the reason I picked this book up is because I like the idea of having an understanding of the world from its very beginning. A number of years ago I read Shadows of Forgotten Ancestors by Carl Sagan and Ann Druyan which describes the origin of the human species and the biological reasons why we have racism, why we have a bias toward family members and people geographically close to us, and why we have a taboo against incest. I also read Guns, Germs and Steel by Jared Diamond around the same time which answers the question of why technology progressed faster in certain parts of the world than in others. (The answer had to do with the plants and animals available for use on different continents, the shapes of the continents, and some other stuff I don’t remember, as opposed to anything to do with the inhabitants themselves.)

So I guess this book helped put another little puzzle piece in place as far as who we are and where we came from. It also made me appreciate today’s world. We have some bad stuff going on, like global warming, deforestation, general environmental destruction, the threat of nuclear war, mass government surveillance, the threat of machine intelligence, the obesity and lifestyle disease epidemic and some other awful things, but I also understand it’s true that the world is the safest it’s ever been. We don’t have to worry so much about hunger, disease, war, crime, and many of the other things that were a worse problem many years ago. This book helped me appreciate that.

The 48 Laws of Power

I thought this was a silly book. The power tactics it describes seem to revolve around deception, backstabbing, and that kind of thing. It seems like most the examples it used were from kings and queens of the ancient or medieval world, or con artists. I’m sure the author’s takeaways from those historical events were plenty correct, they’re just irrelevant. The vast majority of people don’t live in an adversarial or competitive world.

What I’ve found in my observations of wealthy and powerful people is that most of them seem to have a strong desire to help other people. There are a number of occasions where I’ve been set up with a meeting with some rich and successful person. I’ve found that the most successful people often end the meeting with, “So Jason, how can I be helpful to you? What can I do for you?” Less successful people don’t tend to ask this question as much. The correlation has been very interesting.

I found The 48 Laws of Power interesting and entertaining but not very useful. In fact, some of the advice was downright wrong. “Never apologize” is one of the pieces of advice. Terrible advice. People who think an apology will only bring attention to their mistake where it might otherwise have escaped notice are being horribly naive. If you make a mistake that no one notices and then you apologize for it, the other person will probably either laugh and say there’s no need to apologize, or they will appreciate the fact that you went out of your way to bring a mistake of yours to their attention that they otherwise would not have known about, and they’ll respect you more for it. I’ve never lost respect for someone due to an apology of theirs, but I certainly have lost respect for someone due to a failure to apologize when they should have. Maybe “don’t apologize” is good advice for politicians or kings or whatever but not regular people.

I don’t think I even believe that the author believes much of what he wrote in the book. I think it was probably written to be shocking and over-the-top. The book isn’t totally without value but I wouldn’t really recommend it.

It’s also generally a bad idea to listen to advice that’s not based on either scientific evidence or someone’s personal success. This book isn’t based on either.

Entrepreneurship Journal, 3/24/2016

A few weeks ago I started listening to the Stacking the Bricks podcast with Amy Hoy and Alex Hillman, the people who run 30×500. I was so fascinated by the first episode that I binge listened to the whole podcast.

A large portion of the episodes were interviews with 30×500 alumni. One guy was a Ruby developer who created something called Ruby Steps. There was another Ruby developer who wrote some Ruby book. I also learned that Brennan Dunn was a 30×500 alumnus, and that the first edition of Double Your Freelancing Rate was only 30 pages.

One particular snippet of one particular episode really stuck with me. Amy said something like, “We don’t allow our students to be ‘creative’. If you’re a Ruby developer, then congratulations, your audience is Ruby developers.” To me that was a real breath of fresh air. When I was trying to sell scheduling software to hair salons I was frustrated by how much I was clearly not cut from the same cloth as the people in my target market. I wasn’t like them and there was no way I could ever be like them. It’s nice to know that it’s okay to choose an audience of peers, and that it’s apparently possible to make a living (or at least make a meaningful amount of extra money) selling something to that audience of peers.

When I heard this, I asked myself, “What am I?” I am, of course, a Ruby developer, although I don’t have much faith that I could come up with a Ruby book or course or anything like that. I could come up with something like that, some course on how to learn Ruby or something like that, but I don’t think I’d be able to believe in it. Why should someone choose my book or course over all the other programming books/courses out there? I can’t think of any good reason. (Maybe Amy and Alex could help me think of something. I do plan to take 30×500 when I can. Enrollment for it has only opened up once since I killed Snip, and at that point I had just bought a house AND quit my job, so I was kinda financially wiped out for a little bit and couldn’t justify spending the $2500 or whatever on 30×500. I hope/plan to be able to afford 30×500 next time enrollment opens up, or at least one of the next times enrollment opens up.)

In addition to a Ruby developer I’m also a freelancer. That’s an area where I can more readily connect the dots as far as how to help people. I’m certainly not the greatest freelancer to ever live but I have had a certain amount of what you might call success. I’ve had a couple six-figure years as a freelancer. I’ve been the main breadwinner for a family of four and never missed a rent/mortgage payment due to not having money. I also know the answer to a number of very basic questions, for example, “How do I get my first freelancing client?”

So I decided to write a book for freelance programmers. A friend of mine suggested that instead of thinking of the book first, I should focus on the audience first. I can decide on the book’s topic after I learn what the audience wants to learn. This approach makes sense to me and so that’s how I started.

As part of my audience-building and research I’ve been spending time on /r/freelance. A good portion of the questions there are things I happen to know something about. For example, what should you do if your client doesn’t pay? Just anecdotally it seems to me like most of the questions are centered around the early stage of a freelancing career.

Based on that input I thought it would be a good idea to write a book for programmers who are either employed right now and thinking about going freelance or in the early stages of their freelancing career. The working title of that book is Freelance Launch Kit.

A concern that I have is that I’m just being a poor man’s Brennan Dunn. The answer that I have to that concern is that Brennan is (as far as I can tell) targeting all freelancers while I’m targeting only programmers, plus I’m only targeting beginners whereas Brennan’s focus is not limited in that way.

Final, unrelated note: MicroConf 2016 is happening week after next and I’m going. I expect that like Double Your Freelancing Conference, MicroConf will be a huge leap forward for my entrepreneurial development.

How to build a network as a freelance programmer

Relationships are the foundation of business, especially freelancing

Success in most business endeavors is largely dependent on the owner’s ability to build and maintain relationships. Some businesses are more relationship-oriented than others.

Freelance programming is one of those particularly relationship-oriented kinds of businesses. An individual freelance programmer is an owner of a professional services business, similar to how a solo lawyer or solo bookkeeper is the owner of a professional service business.

A professional service business is especially relationship-oriented for two reasons.

The first reason is that a large amount of trust is necessary in order for a client to hire a service professional. My client engagements often cost many tens of thousands of dollars and can last many months or even years. If you’re going to spend that kind of time and money with someone, you’re going to want some very good reasons to believe you can trust the person. It’s obviously a whole different ballgame from buying, say, a bottle of shampoo, which requires very little trust and not much money (unless it’s some of that really good million-dollar-a-bottle shampoo). A person has to trust you in order to hire you.

The second reason a professional service business is particularly relationship-oriented is that the service provider and the client spend so much time interacting. The client and vendor have to like each other, or at least they have to like each other enough not to want to fire each other. If you act like a weirdo idiot dipshit toward your client, they’re probably not going to refer you to many other clients. It’s not enough to hit your deadlines and “do great work” and all that stuff. You have to be a good communicator as well in order to maintain the relationship. In fact, many people have told me that they’d prefer a developer who’s a good communicator and just an okay developer over someone who’s an awesome developer but shitty communicator.  A person has to like working with you in order to refer you.

How jobs get filled

The way jobs get filled and the way freelancing gig get filled is pretty much the same. I’ll just use the word “job” to mean either actual job or freelancing gig.

I think most people are aware that most jobs are filled via referral. This goes back to the trust thing. When a company has a need for, say, a Rails developer, the first thing the boss might do is to think of anyone he personally knows who does Rails work. Then he might ask his employees if they have any friends who do Rails who might want to work there. Then he’ll probably reach out to people outside the company to ask the same question. Only if those things don’t produce satisfactory results will he put up a job posting. So the priority list goes like this:

  1. Developers I know
  2. Developers my employees/co-workers know
  3. Developers who anyone I know knows
  4. Strangers from job boards

Obviously, the amount of “trust juice” is highest at the top of the list and lowest at the bottom. That’s why job board applicants often have to jump through a ton of hoops, but developers who are referred from trusted sources might not even have an interview, not even as a formality.

If you think of groups 1 through 4 above as concentric circles expanding outward from the hiring manager, the aim of your networking is to be in the “developers I know” circle for as many people as possible.

The Networking Snowball

“The Networking Snowball” is something I made up just now. It’s how you can build a network if you’re starting from nothing.

I started freelancing in 2011. I was living in West Michigan after having bounced around the country for a number of years, meaning I didn’t have deep roots anywhere. In addition, I was working on transitioning from PHP to Rails (I move I’ve never regretted), so a lot of my old contacts weren’t terribly valuable because they mostly led to work that wasn’t very interesting to me anymore.

Here’s what I did when I started freelancing, which is what I would recommend to anyone who’s starting out or thinking about making the leap:

  1. See if your current or most recent employer will be your first client
  2. Reach out to all your past employers (at least the ones you liked) and see if they’d want to be your client
  3. Reach out to all your contacts and see if they know anyone who could use your services
  4. Start hitting up the job boards for work

You’ll notice that, like the list of hiring steps from earlier, these steps are in descending order from “highest amount of trust juice” to “lowest amount of trust juice”. Who would be more likely to pay you money to do work for them than the people who are paying you money to do work for them right now? And the next best bet is people who aren’t paying you know, but have happily paid you before.

Going through this list of four steps will provide you with your first paying client which will be the nucleus of your snowball. Even if your current employer wants to be your first client, it’s still a good idea to carry out steps two and three and just let people know what you’re doing. If you announce that you’re now self-employed, but also mention that you’re not available at the moment because your services are so in demand, it will make you all that much more desirable in their eyes.

(By the way, notice how I didn’t say it might provide you with your first paying client. It will. If steps 1 to 3 don’t work, you’ll eventually get work if you diligently the job boards and contact a large number of prospects. It might seem like your efforts are futile and you’re wasting your time, but then at some point everything will hit at once and you’ll get some work. You just have to put in the time and effort.)

As part of building your snowball you should always have a mind for “collecting” people. When you start freelancing, you should spin up a CRM account if you don’t already have one. Begin by putting every professional contact you can think of into your CRM. Then, each time you get a client, put everyone at your client’s company into your CRM who you think could be useful to you in the future. This also goes for people you meet at tech meetups, conferences, and whatever other kinds of networking events you might go to.

If you come across a particularly interesting person while working with a client, especially if it’s a fellow freelancer, ask that person to an off-the-clock one-on-one meeting to get to know each other a little better. If the other person is business-savvy, and especially if the other person is a freelancer, he or she will get what you’re talking about and usually be glad to get together compare notes with you. If the other person is a freelancer, you should ask him or her what would be a good referral, and just how you can help in general. Usually the other person will naturally reciprocate the question.

Here’s the next step of building your Networking Snowball: go through your CRM periodically, maybe once a month, and reach out to everyone who you think it makes sense to reach out to. A question that might come to your mind is, “What do I say?” Good question. I like to reach out only to business owners or salespeople and ask, “Is there any way I can be helpful to you right now? Are there any intros or referrals you’re looking for at the moment?” People will usually appreciate this offer for help and reciprocate the question. This tactic is a good one to use periodically, but it’s also a good one to use on the occasions when you’re looking for work. You can elicit referrals from people in this way without looking desperate and without looking like you’re only contacting them because you want something out of them.

How to continue your networking self-education

I’ll leave you with a list of good networking books, in no particular oder:

  • Get Clients Now! by C.J. Hayden
  • Endless Referrals by Bog Burg
  • The Go-Giver by Bob Burg
  • Dig Your Well Before You’re Thirsty by Harvey Mackay
  • The Little Black Book of Connections by Jeffrey Gitomer
  • How to Win Friends and Influence People by Dale Carnegie

What to do when the client doesn’t pay

It’s a really bad feeling to put a bunch of time into a project for a client and then get stiffed for the bill. This happens to a lot of freelancers. It has certainly happened to me. It doesn’t happen to me anymore. I’ll tell you why it doesn’t happen to me anymore in a bit, but first let’s talk about what to do when you’ve already been stiffed.

What everyone wants to know is how to recover the money. The unpleasant fact is that if you got stiffed by your client, there’s a really good chance you’re never getting your money. I’m guessing that that’s not the advice you were hoping for. The good news is that you can do something even BETTER than getting your money back (at least over the long run), which is to make sure you never get stiffed again.

In order to understand how to avoid getting stiffed, let’s take a look at the reasons a client might not pay. Here are some:

  • They don’t have the money
  • They’re dicks
  • They’re insane
  • They think you didn’t do what you agreed to do (even though you did)
  • You genuinely didn’t do what you agreed to do, and you actually don’t deserve the money
  • Some combination of the reasons above

Let’s look more closely at each reason and what you can do to combat it.

They don’t have the money

It’s better to work with clients who have a lot of money than clients who don’t have very much money. This statement sounds like a no-brainer but I’m embarrassed to admit how many times I’ve chased after prospects who ultimately turned out not to have very much money.

There are two tactics I use now to avoid working with clients who don’t have much money.

The first tactic is that I require a deposit. The amount doesn’t matter too much; a few hundred bucks is fine. The point is to see how the prospect reacts to the idea of a deposit. If they push back for any reason, that’s a negative signal. I recently “lost” a prospect because when I asked for a deposit he got all in a huff and said he’s NEVER worked with a developer who has required a deposit, and as a result he thought I was “too inexperienced”. How’s that for backwards? Every serious freelancer I know requires a deposit. It’s noobs who don’t require a deposit. I was of course very happy to let my prospect out himself as a bad apple before I invested more time into the conversation.

The second tactic I use is what Perry Marshall calls “racking the shotgun”. In my very first meeting with a prospect, I’ll often say something like this: “I like to start with a small five-thousand dollar project, and then as long as we’re both good after that, we’ll do more work together.” The key here is that the client needs to agree with me that $5,000 is small. If they don’t consider $5,000 to be small, that’s a signal that they probably don’t have very much money.

They’re dicks/they’re insane

I’m lumping these two problems together because they mostly have the same solution, and the solution is simple: the more you work with clients who come from referrals from trusted friends in your network, and the less you work with random weirdos from the internet, the smaller your chances of ending up working with crazies/assholes. This isn’t a 100% fool-proof tactic but it’s something.

You also sometimes end up with crazy clients because you get desperate. This can be solved by having a healthy lead flow, which is a whole other topic unto itself.

And by the way, here are some things I’ve found that are signals of a crazy person:

  • Extremely long emails
  • Talking way too much
  • Extreme frequency of emails/calls/texts
  • Unrealistic expecations
  • Showing up to meetings naked

They think you didn’t do what you agreed to do (even though you did)

If this is the case, I might invite you to abandon your own consciousness for a minute and look at the world through your client’s eyes. Did you lay out your agreement in a way that was 100% clear and complete with absolutely no room for misinterpretation? Did you create some tangible representation of what you were going to do, be it a document, a series of wireframes or mockups, some user stories, or some combination of those?

If the client thinks you didn’t do what you agreed to do, I think there are only two possibilities: a) the client misunderstood because there was too much room for interpretation in your agreement, or b) the client is just not the kind of person who understands plain and simple things. (People like that do exist! The world is full of fucked up weirdos!)

The corresponding solutions to these problems are a) be less ambiguous in your agreements and b) don’t work with clients who are dumb or crazy or whatever.

One of favorite ways to be less ambiguous is to go through a usability testing process with my clients. If you’re unfamiliar with usability testing, I’d recommend the book User Interface Design by Soren Lauesen. Basically the idea is that you let the client help you design what you’re going to build. If the client helps design the work, it’s much less likely that they’ll expect anything much different from what you intend to build.

And as for not working with dumb/crazy clients, it again comes back to having a strong network of people who will refer you good clients, and having good lead flow.

You genuinely didn’t do what you agreed to do, and you actually don’t deserve the money

I don’t think this one requires much explanation. If you fucked up, you shouldn’t take your client’s money.

The take-away

If you’re having problems collecting payments from clients, that’s a symptom of a problem you have further upstream. To avoid getting stiffed by clients, you should:

  • Require a deposit (or even require 100% upfront payment, making it physically impossible to get ripped off)
  • Filter out broke clients by “racking the shotgun”. Toss out a number in early conversations (“projects start at $5K”).
  • Filter out crazy/stupid/mean/whatever clients by building a strong network so you don’t have to resort to job boards
  • Lower the chances of misunderstandings by communicating agreements in a very clear, crisp manner, preferably by allowing the client to be involved in the design process

By the way, I said earlier that if a client doesn’t pay you, your money is probably gone forever. Before you hold a funeral for your invoice you might want to contact Julie Elster who specializes in helping freelancers collect outstanding fees.

Entrepreneurship Journal, 2/24/2016

After I shut down Snip in October 2015 I decided to take a break from any kind of product endeavor for a while. Part of my reasoning was that maybe if I stopped trying so hard to make a product business happen, then maybe it would finally actually happen. Not too surprisingly, nothing happened.

Because “don’t try” doesn’t seem like a very good plan, I’ve decided to start trying again, as far as trying to identify a viable idea goes. Unfortunately I have no idea how. I’m familiar with the standard advice on how to do this, which is to just go out and talk to people and try to detect problems that can be solved with software, but so far that hasn’t worked out for me. It’s like looking at one of those Magic Eye things and not being able to see it. You know there’s a picture there, and you know other people have seen it, but you don’t see the picture and you don’t know how to see it.

I’ve been working at this for eight years and I haven’t figured it out. Clearly I’m lacking in character in some way, I just don’t know exactly how, or how to fix it.

Entrepreneurship Journal, 2/16/2016

New client continues to be good.

I had a sales conversation last week with an existing client. Looks like we’ll be doing some more work together soon.

I turned 32 a couple days ago.

A couple months ago someone approached me with a business partnership opportunity that, unlike most partnership “opportunities”, passed muster with me. I learned that the business idea won’t be viable, so we won’t be moving forward with that venture.

Life at the new house continues to be good. I much prefer living in Sand Lake over Walker.

Sorry if this is so terse as to be boring. I decided to try to write this one as fast as I could.

Some days programming is like…

Some days programming is like a day when you go to make breakfast, but you notice someone used all the bread, so you decide to go to the store to buy more bread, but for some reason your car keys aren’t where you left them, so after 20 minutes of fruitless searching you dig up your spare key, but when you try to start your car you discover your battery is dead, and so you decide to ride your bike to the grocery store instead, and on the way your chain comes off twice, and the grocery store is somehow out of bread so you go to a different grocery store, and when you get back to the house you discover that you’re locked out, so you break in through a window, and when you finally put the bread in the toaster, you discover that the toaster is broken.

The optimal number of clients to have at once

My freelancing boom-and-bust cycle used to look like this: I would get a client, usually one who wanted 40 hours a week, and work with that client for some number of months. During the time we were working together I would be too busy with client work to market myself, so when the client engagement inevitably ended, I would have to scramble to find my next gig. Since I would be desperate, I would often compromise on things like rate, payment terms, weekly workload, “coolness” of the client and other things. So I would end up with a client who was in one or more ways not a very good fit, but I had painted myself into such a corner that I didn’t have much of a choice. The worst compromise is for me to work with a shitty client who I want to get away from as fast as possible, meaning that the client engagement doesn’t result in a permanent relationship (meaning referrals), but that it ends in a “thanks for the business, have a nice life” kind of way.

I used to think that a good way to smooth out this boom-and-bust cycle might be to work for more than one client at a time. Working 20 hours a week for two clients is better than working 40 hours a week for one, right? If one goes away, it’s not the end of the world. I did in fact try out this way of working. At one point I found myself working for eight different clients at once! That was a nightmare.

What I found in practice was that two 20-hour clients adds up to more total work than one 40-hour client. Each client has a certain amount of overhead in terms of both time and in terms of space in your brain. If I juggle multiple clients, I have to make weird decisions about whose work I work on when. I rob Peter to pay Paul. I usually have a “favorite” or a “main” client, with the other client being more of an obligation than a privilege.

What I’ve come to believe is that working for multiple clients at once is not the solution to the boom-and-bust cycle.

What I think is the solution to the boom-and-bust cycle is having what Alan Weiss calls market gravity. I’ve spent the last few years building up a healthy professional network of ever higher quality. Because of this, the last time I wanted to find a new gig (and this time it was not a need but a want, which is of course always preferable), all I had to do was ping my network and I suddenly had a bunch of leads available to me.

So my strategy for security now is not to try to have multiple client engagements in parallel, but to always be forming more and more relationships with people of higher and higher caliber. If a person has enough strong relationships with the right kind of people, I think it’s unlikely that that person will find him- or herself short of work for very long.

If you’re interested in learning more about how to form more and better relationships, you can sign up to get notified of the release of my new book, Business Networking for Freelance Programmers.