I think a lot about how early-stage businesses and startups should decide to either develop website and applications in-house, contract a programmer, or contract a software developer. Frankly, as the owner of a software consultancy, this is practically all I think about. I've recently been trying to formulate a simple matrix to help people make these decisions.
This entry might be of interest to you if:
- you have a startup idea that will heavily rely on an app or website
- you have an existing business that needs some kind of software built to support your operations
- you commissioned some programmers to build an app, things went horribly wrong, and you're still not sure why
This entry aims to provide some guidelines to help you know how to act (or how you should have acted) based on your particular situation.
Let's get started. There are two main factors I want you to consider: budget and personality.
Personality: Control and Vision
In his book "The Founder's Dilemmas", Noam Wasserman suggests that every founder has an overriding interest in either money or control. This was a pretty awesome insight for me.
In addition to its utility to my situation when I first read the book, it got me thinking more deeply about how our clients decide to hire us, and when they are best served by not hiring us. While I'm not exactly concerned with Wasserman's buckets of money or control with regards to our clients, it did get me started down the right path. For the purposes of early-stage software decisions, which are what I deal with most of the time, I am more interested in slightly different buckets.
When considering a new project, I tend to put our clients (entrepreneurs and small- and medium-size business owners), into one of two categories: Controlling and Visionary. Before I explain what constitutes these personality types, do you already have an idea in your head what I'm talking about? These words are loaded with connotation in American business culture.
I get a lot of feedback that "controlling" sounds like a bad thing. I assure you it is neither good nor bad, but only a factor that can combine with other factors to produce success or failure. One of our best clients was a controlling type of founder and we loved working with him because we understood his nature, and he is not working with us any longer because as his startup evolved it made more sense for him to handle certain things on his own.
This is true also for "visionary". More often than not, people think this sounds desirable when I begin to describe the idea. But again, a visionary founder is as likely to produce a successful result as a dismal failure. One of our worst clients was a visionary - he was scattered and unfocused and wasn't interested in anything but "having ideas" with no meat behind them.
Both core personalities require the right mixture of other people and circumstances to achieve success.
Budget (is complicated)
As you are probably aware, software projects have wildly different price tags. Whether or not someone has a good budget is entirely dependent on what type of project they are trying to tackle. So I can't tell you if a $50,000 is high-budget or low-budget without knowing many, many other things.
Regardless, it is safe to say that budget is a key factor driving development decisions.
I'll address budget more fully later in the entry.
Programmers vs. Developers
Before we get any deeper, let me get specific about what I mean by programmers and developers. There is a difference between someone who programs, and someone who develops.
A programmer is a coder. This is someone who can take inputs in the form of instructions, requirements, and wireframes and turn them into working software. They require high levels of input specificity, and they will give you exactly what you ask for - sometimes with hilarious results. They yield their keyboard like a hammer aimed at a nail. They are focused on satisfying you, the product owner, and the requirements you present to them.
Sometimes a good project manager plus a good programmer equals a software developer.
A software developer is a thinker. This is often a multi-disciplinary person or team that is interested in solving problems. They too can code. But before they code, they may get involved in the planning of the project and provide active and valuable advice and direction. They have stuck with previous projects long enough to understand how success and failure were ultimately manifested, and they are usually interested in the longer-term relationships often at the expense of short-term gain. They are focused on the end-users or the clients of their clients. They tend to think about requirements in terms of value to the end user and they may question assumptions that are presented to them as rules.
Sometimes a good project manager plus a good programmer equals a software developer. So when I speak of programmers and developers I'm not necessarily speaking in terms of individuals.
The Decision Matrix
So let's take a look at the foundation:
Somewhere in the combination of those factors is the right decision about how to handle your software development.
If you think you might tend towards a controlling nature, don't get a technical co-founder. She will just get pissed off and leave you hanging after you've told her the sixteenth time that you like animations that ease-in-out instead of bounce. If this describes you (now be honest), you should probably be hiring programmers to help you achieve your mission.
If you really get into the details and have a specific idea of how everything should work, you might be a controlling founder.
Controlling founders need to spend a lot of time planning, planning, planning. Then get someone who can knock out their exact plan. I can't stress this enough: if you have never planned a software project before, chances are you haven't planned enough. Plan some more. If you are only specifying high-level requirements, you need to get deeper. Don't leave anything to interpretation.
Once you have identified your programmer(s), don't sign a contract for long-term partnership. Insist on portability of code. Be prepared to conquer the world when you have the budget to hire your in-house team.
On the other hand, if you don't care exactly how it gets done, but you have a strong feeling about what the future looks like, you may be a Visionary founder. You should probably be strongly thinking about a technical co-founder with imagination and/or a software development firm who has been around the block a few times.
Visionary founders should paint a picture and let a developer do the planning. Your job is to require regular status updates where you give thumbs up and thumbs down to both plans for work and work completed. You should be ready to personally do a lot of user testing to make sure your vision is being satisfied.
Refining the Matrix
After chewing on this first draft of the decision matrix, I realized that budget is slightly more complicated. The matrix would need to account for no budget.
If you literally have no money to get a web app built, then you can't be picky about how it gets built. And I would define "no budget" as anything less than $5,000 specifically earmarked for software development.
Also, on the flipside, there really are filthy rich people out there that can afford to do whatever they want.
As you can see, the controlling founder need not do anything until he can afford it. The visionary still gets going in the same way.
So... back to the original question: You have an idea for an app or website. Where do you start?
Take a look at the decision matrix. Is it obvious where you fall on this? If so, carry on!
Let's walk through each section.
Sections I and II
Ok, so you have a lot of money. Good for you.
If you are more controlling, you may want to build your own in-house team and culture.
If you are more visionary, I think the best thing you can do is try to find a product team or software consultancy that is tackling or has tackled a similar problem. They've already built a culture and processes for executing on software solutions. Why not capitalize on this and make them an offer? There aren't many software consultancies out there that don't dream of being single product/service companies. You can capitalize on this dream.
Sections III and IV
You've got a big enough budget to be dangerous, but you can't buy an island.
If you are more controlling, plan, plan, plan, plan, wireframe, write user stories, make mockups, plan, plan, plan. Then plan some more. Write an abstract and a summary, and user stories, and draw detailed work flows of how every piece of your application should work. Then hire a programmer who will entertain your every whim and hammer away until everything is smooth.
If you are more visionary, find some good people, give them a fair amount of leeway to accomplish what you need. Make sure to spend a lot of time with them up-front planning and talking about the philosophy behind your business. You should expect them to produce user stories, wireframes, and mockups. They should basically plan everything out twice before writing a line of code. Empower them to make decisions on your behalf and stay engaged with regular feedback.
Sections V and VI
You might be mixing canned tuna into your ramen, but in the currency of ideas, you are indeed a rich man.
If you are more controlling, do nothing. Or maybe learn to code. However, coming up with strategies for making more money that you can save towards hiring programmers may actually be the best use of your time at this point, rather than spending time trying to learn something that isn't really what you want to do. In my experience, it can take a long time to figure out if you are any good at (or even enjoy) programming. In this fast moving world, that time is too valuable to risk. Stick with what you are good at and focus on what you want to achieve.
If you are more visionary, hopefully you have a great idea and are also an outstanding sales person. Lure that smart and available techy type to be your co-founder. Personality fit is more important than pure technical skills, but they have to be able to do some coding.
If you've read this far and you still don't feel like you are ready to make a decision, what is holding you up?
I have no idea if my budget is sufficient, or I don't even know what my budget is.
It is extremely difficult to say what your budget needs to be to achieve your mission, and it obviously depends largely on what you think your mission is. If you just need to get a prototype built, and you are capable of being very disciplined and thoughtful about what your idea really requires to gain traction, you can do a lot with a little.
You can also spend everything you have (whether that's $10K or $100K) to accomplish your minimum-viable product, and work on getting revenue or funding based on the strength of that product.
I have this kind of big idea that I think can be accomplished through an app or website. But I don't even know what's possible.
You would probably do well to get in touch with a software consultancy to help you refine your idea. If you can't afford to hire a software consultancy like Giant Hat, you can at least buy someone coffee and flesh it out. But beware, there is more bad advice than good out there, and a lot of people are going to tell you what serves them best, not necessarily what you need to hear. Just like with advice from your doctor, get a second opinion.
Future Enhancements to the Decision Matrix
I'm sure at this point, many of you dear readers are saying "oh, but you've left so much out!"
There are at least two main factors that I'm ignoring at this point:
- The technical skills of the founder.
- The technical complexity of the project.
I hope that the matrix can expand to account for these factors, but I suspect they somehow cancel each other out in many cases. Perhaps the measurement of the difference between these two factors is third dimension of the matrix.