I Am Not a Software Company: How I Make Money Not Selling Software

December 31st, 2007 by Jaybill McCarthy

money.jpgAs I’m sure you know by now, I am a freelance web application developer. I’m not a designer, a flash developer, an HTML/CSS coder or a user experience expert. Each of those things are disciplines in their own right. My focus is pretty narrow. In a nutshell, other people decide what the thing is supposed to do and I make it work. Paint it whatever color you want. I’m a software developer. I write programs. I am not an artist. I’m a craftsman. I’m finally making a decent living at it, so I thought I’d share some of the things I’ve learned.

There are two main ways to make a living if you write software. The first and most obvious is simply selling software. Write a piece of software and sell it to someone. Simple, easy to remember. The problem with this approach, for me, is that it distracts me from my very narrow focus: making things that work. The very best software is useless if it’s not implemented correctly. While there is some appeal to doing not much and collecting license fees for my work, it’s really not that simple. When you sell software, you have to support it. You have to fix bugs, make improvements, etc. I could of course offer support contracts, but then I’d be married to every piece of software I sold for the rest of my life. Not a terribly attractive prospect.

The second way to make a living with software is to make something useful out of it and sell that. What I’m doing now is providing a service. I’m taking software that I either write or reuse and integrating it into a working web site. The price of this service based on what it is worth. Note that I did not say “what it costs”. Cost and worth are two very different ways of determining price.

Cost is determined by counting up the resources it takes to create or implement something. “Resources” in this case means “development hours”. If a project takes me 50 hours, I take my hourly rate (which includes some markup, presumably) and multiply by 50 and that’s the price. That’s fine if you’re reinventing the wheel every time you do a new project, but I very heavily reuse things I’ve done before. This means that unless I lie about how long things take, I make less money on jobs where I can reuse things I’ve done before. In essence, I punish myself financially for being more efficient. This does not make a ton of sense to me.

This also creates the paradox of having to estimate how long something will take before I’ve done it. As this is nearly always impossible to determine, I will almost always get beat up in terms of money doing estimates. If I don’t, it’s luck. I don’t really like gambling with my livelihood. Cost-based estimating also puts me in a position where I am constantly trying to sell people hours of work. I don’t know about you, but I’d rather sell people things that work and spend less time working.

Worth is how much someone is willing to pay for something I’ve done. I implement a feature, from scratch or by reusing something I’ve already done and the price is X. Cost is my problem, not my client’s. I do not estimate, I quote. If it takes me 2 hours or 2 months, the price does not change. There is no negotiation on the price. If a client cannot afford to pay for said feature, they don’t get it. Remember, the relationship between me and my client is that I provide them with useful things and they pay me for that service. If they don’t pay me for that, then they aren’t really a client, but a recipient of my charity. This is not to say that charity doesn’t have its place, but that place is not in the client/contractor relationship.

Worth-based quotes eliminate problems. Cost-based estimates invite them. I am very up front with prospective clients about my policies in this area. A successful (and fun) project depends on a good client/contractor relationship. Arguing about how much things cost creates animosity between me and my client before the project even begins. If a prospective client is unwilling to pay for things based on what they are worth, it’s not in anyone’s best interest for me to work for them, even if it means turning down a paying gig. I’d rather spend the effort working with someone else that sees the value of what I do in terms of the useful things they get and not the dollar amount.

So I don’t sell software, I sell useful things. What about the software itself, then? Easy. I open source it. This means anyone could take the software I’ve spent lots of hours producing and use it to do exactly what I do. This means that potentially, someone could take my work and use it to compete with me for jobs. Why would I put myself in this position? Also easy. I’m not a software company.

By making my work open source, I do a few important things. First, I retain copyrights on everything I do. I never, ever, ever sell source code to clients. This means that I can reuse code from any client project on any other client project without issue. Clients get source code, of course, because the source code is open source. Everybody wins.

Making useful software available to everyone means that more people will be able to implement that software. If the software is useful, easy to extend and lots of people implement it, it can become a de facto standard. Others can contribute to and enhance the software in ways I didn’t even think of or didn’t have the resources to do.

Doing things this way is a huge selling point for freelancers and clients alike. I’m not rolling my own, I’m using something that’s freely available and well-documented that lots of people know how to use. This provides long-term peace of mind for clients and for me, because the application in question is not subject to our continued relationship. There are other people who know how the thing works. Everybody has options.

Can other people use my work to do what I do? Sure. Can they do it as well as I can? Some can, some can’t. I leave that decision to my potential clients. I am, after all, selling a client the implementation of useful things. If they believe I can do what I say, they will pay me to do so. If they believe someone else can do it better, they’ll hire the other person. I’m in this position with any prospective client. It’s called a free market economy. The software in question matters very little, all other things being equal. Why should I be scared to compete on a level playing field?


Posted in cost, freelance, money, open source, worth |

2 Responses to “I Am Not a Software Company: How I Make Money Not Selling Software”

  1. Robert Says:

    Perhaps you could answer me some questions, because I’m not sure if I understand you right.

    1. Are there links available with the Open Source code of your current and past projects? Could you post them here, so that I’m able to use your work in my own commercial projects?

    2. If you publish your source code as Open Source, are there customers willing to pay money for you, if they can download your work for free? I mean, what do you think how much customers/projects you win through your strategy? Are you fully engaged since you start your strategy?

    3. Isn’t it better to produce closed code and get customers who need you as person to enhance their software you build for them? I mean, if you provide your whole work (source code) to your customer and your customer knows a student who is cheaper, isn’t it characteristic with your model, that the customer would like try to use the cheap student instead of you? If you deliver your work as open source you’re not in the position to enforce your hourly wages.

    What do you think about it?

    Robert

  2. Jaybill McCarthy Says:

    @Robert - Valid questions, let me answer each of them in turn:

    1. There will be. The main app I’ve been working on for the past year or so is called Communit.as. It will be available at http://communit.as - still ironing a few things out.

    2. I am fully engaged, yes. In fact, I turn a fair number of things down. The number of people interested in my work has only increased since I have started doing things this way. Remember, my goal is to provide useful sites, not to sell software.

    3. I never have been and never will be the cheapest option. I am, however, *very* cost effective. There’s a world of difference. If someone is shopping for a solution based only on price, I’m not what they are looking for. Could a student install something I wrote and customize it? Sure. Can they do everything I can do? Maybe, depends on the student. Again, you’re hiring me because you want me to do a job based on my experience and track record, not because you want to buy software.

    All of the things you mention kind of speak to a common question: “Wait, aren’t you throwing money away? You’re going to get less jobs that way!”

    Yes, I am. I’m okay with that. I’m not trying to get the *most* jobs. I’m trying to get the *best* jobs. I want to engage only with clients who understand the value of what they’re getting.

    Really, nothing I’m proposing here is terribly alien. How many people make a living implementing Wordpress? Lots. Wordpress is open source. Could a client hire a student to implement a Wordpress blog? Sure. Is it going to be as well executed and cost effective as something done by an experienced pro? Maybe, but it’s a gamble.

    What I’m doing is no different, I’m just using my own software instead of someone else’s.

Leave a Reply