views:

460

answers:

6

We occasionally get approached by people who want someone to write software for them. They often take the form of:

I have a great idea for a piece of software and I want to find someone to write it for me. I have money to fund a project. Can you help me?

We are fully a "shrink-wrap" software firm, providing production software for purchase by the general public, not bespoke solutions. Thus, we don't really have experience with consulting or contracting companies. We don't want to shut these people down with "you got the wrong guy, pal!" When people write us, we like to help them.

The question: If you were this person, with an idea and money, but not the knowledge to write it yourself, how would you go about finding someone to write your piece of software?

+2  A: 

You're not in the business of writing custom software. You are also not in the business of finding custom software resources for people with ideas. Even with a disclaimer, you may associate your company's reputation with whatever resources your recommend. While I sympathize with your desire to help, I do not think it's a wise course. Sometimes "you got the wrong guy" is the very best answer.

dwc
Thanks for helping me improve my question.
Rich Armstrong
+8  A: 

Pretty much I believe the person should do this the same way that any organization hires out expertise they don't have.

First determine what you need and have a contracting person write up an advertisement for people to bid on the project and a detailed techical bid spec. Advertise in a reputable source with details of what experience levels and qualifications you want. Have the bidders provide a formal written bid response. Review those, throwing out the ridculuous and obviously unqualified. Ask the finalists to perform a technical presentation where your people can question them (last one of these I was involved with they spent an entire day per finalist on this one.) Evaluate every finalist based on a set of predetermined criteria including cost, expertise, feasibility of the idea etc.

In the case of a software idea that you don't want someone else to steal, I would probably make anyone who wanted to bid on the job sign a non-disclosure agreement before giving them the detailed requirements. Certainly I've helped develop bids for projects like that in the past, so I know it can be done.

If the person doesn't want to to take the upfront time to develop a good set of bid specs then they really don't have an idea they actually intend to get implented. This would be just like if they wanted a new building built but weren't willing to specify how much square footage they need (or how many people the building should house) and what type of features the building needed to have (network rooms, bathrooms, kitchens, private offices, etc). It takes a lot of work on the part of the non-expert to get appropriate expert services and anyone unwilling to do that isn't serious.

HLGEM
+1  A: 

I've been in similar situations (e.g., hardware projects when I'm really a software guy), so maybe this is useful.

First, ideas aren't worth a bucket of warm spit. Money is worth only slightly more. Building the thing is the only thing that matters. So I soon realized I was looking for somebody (who probably has his own ideas and his own money) to do 99% of the work on my project. That's pretty much a non-starter, unless you have a Steve Jobs personality and can talk anybody into anything (and if that's the case, you don't need any help!). Put another way, nobody else is going to give your project the same respect that you do, and attention to details, not subject matter, is what separates the good from the great.

So you've got to learn how to make software on your own. The good news is that there's never been a better time to learn this for free. If you're relatively smart and motivated, and you can operate a web browser, you can do it on your own. Top universities are putting whole computer science books on the web for free these days. Many of the best tools are completely free. (If you're trying to get into hardware, this is not yet true, AFAICT: the more you pay, the more you get, up to a staggeringly high price point.)

You'll probably also want personal support, and (if you live in a town with any programmers) this isn't hard to find either. There are always programmer / programming language / Linux / whatever meetups going on, and if you show up with a prototype of a cool idea, people will help you out with your (specific!) problems for free. Doubly so if you're using the same language/OS as them -- nothing warms a (say) Python/Linux hacker's heart more than seeing somebody get into programming via Python/Linux and actually launching a successful product, and you can totally take advantage of this.

So good luck -- you're gonna need it -- but it's totally doable. Just put away the money until you have a prototype, and roll up your sleeves and get to work!

Ken
I'm afraid it is not possible to just come one day and learn to write software. Even if you have the abilities it would take years until you master general software development skills, debugging, databases and... well, interface design still stays a magic even for the brightest of developers.
User
But interface design is what the software *is*, to the user. If the person-with-an-idea can't tell exactly how at least the core of it should work, he's got nothing. And UI design isn't "magic even for the brightest" -- everybody I've seen make an effort to learn can do it reasonably well.
Ken
A: 

What they need to contract with is a project manager and designer. Effectively, the "Architect" for the project. (Architect is a overloaded word, especially in data processing.)

While the goal may be to come up with a set of work items and a schedule that you can then throw labor at to execute, the real task is for this person to take whatever scheme this client has and "talk them down" so to speak. Project their idea on to the hard surface of modern computing. As anyone who has dealt with "end users" and "requirements", what they want, what they need, and what they expect can all be VASTLY different.

This Architects job is to get those three things on the same page to the satisfaction of the client, AND to the satisfaction of the Architect in that the end result implementation has a good chance at success.

This is time of a lot of interaction, ideally some mock ups, perhaps some prototypes, etc. Zillions of use cases, etc. It doesn't have to be an implementation plan, but it has to be done to focus the user on the problem within the constraints of developing software.

Once this part is done, THEN the task of implementation can be approached.

Also, it doesn't have to be complete, as a good Architect should be able to know what can be deferred for later, more detailed specification as long as the major concepts and interactions are laid out as a well described foundation upon which new "features" can later be added.

The primary "failure" of many computer projects is not necessarily the implementation, but rather the expectations of the client. These all need to be well managed and defined up front for the client to feel that the implementation is a success.

The Architects job is to both build and quell the clients enthusiasm as the project takes shape.

Will Hartung
A: 

I would look for open source software that does something similar and see if I can get a developer involved in the core of that software to help. Obviously it would have to be a project with traction. For instance you could look on http://www.ohloh.net/p for projects and ohloh will show the most prolific developers on that project who may be able to help.

Stewart Robinson
A: 

Tell us your idea. Some of us will get right on it. :)

PaulG