Software Prototypes into Finished Products?
blastedtokyo asks: "With all the talk of offshoring and outsourcing, it seems that taking an entrepreneurial route is a great way to take your life out of the hands of overpaid goons and put it squarely in the hands of an underpaid one. Without an organized team of coders, testers, and designers it seems very tough for a single person to get started in anything other than consulting, or selling stuff on eBay. With my background in product design, and my knowledge that my coding skills aren't the greatest, I'd like to find a vendor or team to help develop some software ideas that I've been stewing over for a while. In other words, I've got the business plan, some credit-cards ready to be maxed out, the bitmap-demo and the specs for a few possible projects, but would like to get a team to code up a working prototype suitable to get some initial customer evaluations. Does anyone have experience sourcing such a vendor? How would you interview a firm to know that their staff is easy to work with and competent? Is it possible to do something like this without delays, excessive mis-communications and cost overruns, or is it better to just start hiring contractors, one at a time?"
Since you seem to have several ideas, why not just set up one of them as a free project at sourceforge.com, and work from there? That way you can work out some of your ideas without going through a lot of cash. Granted, that means giving up your idea to the public forum, but it might be worth it in the long run for the experience of creating something from start to finish.
Aren't really most good software companies built not on making one good product and selling it perpetually, but continually improving that product and creating new ones as well?
http://www.iccohio.com - ICC Ohio - has added "Offshoring" as one of their core competancies and selling points.
I would imagine that, unless you've dealt with offshoring previously, that someone you can communicate with is the most important thing, and then holding the company doing the offshoring to the deadlines and deliverables of your project.
That said, I have no interesting or useful business ideas.
Go to Rentacoder.com and the similar sites. Prepare for some interesting experiences.
You will loose your shirt, by the way. The guys who do independent software projects, the kind that are sold shareware or download-register, all write the stuff themselves to start out. And some of them have worse coding skills than you, believe me.
Before you ask for help, I think you will be spending some wise money by consulting a lawyer first, then a lawyer after you find someone to help you, then a lawyer once the project is done. Your idea can be extremely valueable with someone with more money ane assests.
Useless sig.
Find some people that are out of work and willing to work for a share of the eventual profits. Have them develop the code, then when it's working, file chapter 11, and sell the assets off to another company (also owned by you) at firesale prices. Bingo, you get your software development done cheap! Think it's funny? You'd be suprised how many times this has actually been done!
"Freedom means freedom for everybody" -- Dick Cheney
This is easy. Sign up at rentacoder.com and put your job out there. Dozens of software teams from South America, Russia, Romania, India, etc. will bid competitively for your work, offering to do it for a pennies on the dollar. rentacoder holds your money in escrow until the job is done according to your spec. rentacoder manages any arbitration should things go wrong. I've been very happy with rentacoder and the talent I've found out there, and no I dont work for them.
Vonnegut was right: Of all the words of mice and men, the saddest are, "It might have been."
based on the content of this question and the apparent lack of market analysis, prepare to be a part of the most forbidding statistic prospective SMB-ers ever hear.
Consulting outfits are in business to take your money; completing your project comes second to billing.
The only way to handle consultants is to have your own very knowledgeable and forceful project manager to drive the consultants. This person needs to know enough about coding so that they cannot be BSed, or needs to have a trusted resource that will keep an eye on things.
I've yet to hear of even a single offshore success story; all of the ones I've heard end with "we were already way past the deadline, and we had to start rewriting from scratch!". Managing a project in your own office is very difficult. Managing one half-way around the globe staffed by people with different language and culture... forget it.
Good luck!
That, of course, is the issue, and what elevates this post (in my mind, at least) above an ad. You don't seem to want someone who can build you a particular widget, you seem to want a partner that will assume some of the risk of launching a venture. And that is a very, very different thing. Craig's List is full of crap from people who have a great idea... "all we need is all of that other stuff, and a website, and we'll be rich. Wanna do the website?"
My advice: "unask the question". You really seem to want a partner. You're concerned with managing timing, cost-overruns, etc., and clearly don't have the finances to build a company to keep that in house. So, you need to sell your idea to someone who does have the resources and ability to share the risk. Think of this as low-end VC. How does one get (low end) VC? Go sell it to people.
Like I said, if you want code in exchange for money, sure, we'll give you whatever you want, it will be priced fairly, delivered on time, and be generally well done. You can get this from a lot of places (although I must say we provide nice perks for using us, and we write *excellent* code.). If this is your angle, lots of people can give you what you want, and analysing who is best to provide it is a business decision. Weigh cost vs. expected outcome, based on the history of the vendor. Ask for references. When you pick someone, stay on top of the process while it is going on, and don't be afraid of calling bullshit when you see it. Also, don't call bullshit when something isn't. Make sure that changes don't derail the project.
Simple, right?
There's the problem.
I forget what 8 was for.
Why would you want to (essentially) outsource development of your idea? You may not be the greatest coder in the world, but you should be able to put together something by yourself. If it's a large enough project that it might take 2-3 additional people plus you a number of months to complete, then start your company, find those people, sell them on the idea, and get them to come work for you in a startup capacity - reduced or no salary, stock or option grants, etc. in return for shared responsibility in creating the company.
Face it - a consultant or contractor is only obligated to give you what you've contracted for, and is probably going to be more than happy to eat up your cash reserves by working extra hours to fix bugs, meet demo deadlines, etc. His/her reward is relatively small, and effort is commensurate. Someone sharing responsibility with you for putting out the product will be a lot more motivated (by a greater reward, and a greater risk) to provide whatever effort is needed to get the product out and get money rolling in ASAP - presumably your desire as well.
"Great men are not always wise: neither do the aged understand judgement." Job 32:9
Here's what I would do:
Hire a couple people who have experience with extreme programming (XP). They'll deliver exactly what you want, without bugs*, with a release every week.
You tell them the most important things to do, and they'll do them in order of your priority (not some made-up technical priority). They won't do other things that they think are nice, just the parts that you ask them for. Hopefully, you'll ask them for only what is needed for your demos.
The weekly releases are key; you can see exactly what's happening. You don't have to wait 6 months to find out that the program doesn't really work, or doesn't do what you want it to do. You'll also quickly get a usable program that does the few things that you need to demo. If at that point you realize that your product idea wasn't so hot after all, you've just saved a lot of money over what you would have spent if you hired a team that wanted to spend all kinds of time creating a flowery design and building infrastructure.
As far as hiring XP types, try to find a local XP person who is well-respected and ask him or her for some leads. Maybe get a technical friend to help interview the programmers. But be sure to hire people who have experience working this way. You don't want to pay them to learn how do release software incrementally.
(*By "without bugs", I mean "without known bugs". Lots of people write software and leave a lot of bugs in until the end. That hurts demos. XP people will fix buggy code as soon as they see it. And they'll write automated tests to make sure that bug never shows up again.)
Choosing a vendor is certainly one of the hardest decisions to make. Before you talk to anyone make sure you have a lawyer who can protect your interests and write un an NDA (at a minimum) for you. I've noticed from working with clients these are important things in succeeding:
Geography
Work with someone in your area. Believe me, you'll be plenty busy with everything else that you won't want to deal with timezonea or thick accents.
Integrity and Experience
Part of your interviewing process should be to get references for the vendors on your short list. Check them. Also use your personal network to check the potentials out. You're betting it all, you want someone you can trust. You want to make sure they've done the kind of work you're doing. Many firms say they have experience doing what you need but don't really. Ask to talk to one of those customers they claim to have. Make sure they have done the work recently. Lots of companies change focus.
Experienced Staff and Manager
A lot of firms will let you sit down with the team who will be doing your work. This would be another part of interviewing a vendor for me. Ask if you can follow around (for a day) one of the people who would make up your team. I'd spend a day or two around the office of the firm you're hiring. Make sure you like how they work. Also, make sure the manager of your project is someone with experience and whom you really like. They will be the one keeping you informed with the good and bad news. They will also handle your requests for change.
Financial Flexibility
My firm sometimes works with startups for a stake in the company instead of pure cash. Ask about alternative financing options. I don't know any contractors who will work like this.
Hi. First a bit about me and my firm (not a plug--we're too busy to take on random work and we're probably not in your region), then the free advice. I own an 8 person (and growing :) software engineering consultancy that does project planning and software development for new products in the embedded and distributed application spaces.
We specialize in a few different types of work for small firms and billion dollar companies. Man/machine interfaces. Medium scale (5 to 500 end points) distributed soft real time data gathering and collaborative apps. Hard real time embedded consumer and diagnostic devices. To give you some idea, over the last 10 years we've worked with x86, PIC, 8051, etc. using VxWorks, Win*, SCO, FreeBSD, Linux, PalmOS. Oracle, PostgreSQL, SQL Server dbs, C, C++, Java, Perl, etc. A wide variety.
The advice: don't try to farm the project out. Find a firm that has experience using the tools you need to have used doing the kind of work you need to have done. Make sure that their management team and engineering staff are the same ones that worked on prior, sucessful projects like yours will be, and check with their past clients to make sure they did an acceptable job.
Get a project plan from them with a detailed task breakdown (be reasonable about how detailed: don't expect them to make up tasks for things you can't yet spec clearly). Have them identify risks up front and get those tasks moved to the front of the schedule. Make sure you see clear descriptions of architecture--vague descriptions and diagrams are a good sign that they don't get it yet. Make sure you or somebody you trust technically reviews their work.
Once hired, visit them frequently throughout the process. Assuming you don't have an airtight spec, you'll want to work on site as much as you can or have them work on your site--rent space in an incubator or industrial park or even a house, but get you and them and everyone you can to work in the same physical space for a good part of each week if not full time.
You can try to get them to take equity, but sucessful firms generally avoid doing that unless you or your advisors have a really good track record, a solid bplan, etc., etc. If they're eager to take equity, then they may be starving. If they're good, that's ok, but it's often a sign of desparados.
Good luck--you've chosen a hard path, but it's a lot of fun and hopefully you'll do well at it.
- Barrie
Here's what I would do:
Hire a couple people who have experience with seat of the pants (SOtP). They'll deliver exactly what you want, without bugs*, with a release every week.
You tell them the most important things to do, and they'll do them in order of your priority (not some made-up technical priority). They won't do other things that they think are nice, just the parts that you ask them for. Hopefully, you'll ask them for only what is needed for your demos.
The weekly releases are key; you can see exactly what's happening. You don't have to wait 6 months to find out that the program doesn't really work, or doesn't do what you want it to do. You'll also quickly get a usable program that does the few things that you need to demo. If at that point you realize that your product idea wasn't so hot after all, you've just saved a lot of money over what you would have spent if you hired a team that wanted to spend all kinds of time creating a flowery design and building infrastructure.
As far as hiring seat of the pants types, try to find a local seat of the pants person who is well-respected and ask him or her for some leads. Maybe get a technical friend to help interview the programmers. But be sure to hire people who have experience working this way. You don't want to pay them to learn how do release software incrementally.
(*By "without bugs", I mean "without known bugs". Lots of people write software and leave a lot of bugs in until the end. That hurts demos. Seat of the pants people will fix buggy code as soon as they see it. And they'll write automated tests to make sure that bug never shows up again.)
I'm exactly what you're looking for. I'm a coder, work from home, and clients who have a detailed description of what they what are hard to come by.
/. anonymity, this would make for a great plug! Oh well, happy hunting!
I have a large number of contacts, local developers like myself whom I have worked with in the past and established a good rapport. You can be certain that it is faster and easier to take on a team that already works well together then to try and unite people you don't know very well. You'll find that there are a huge number of people like me, working from home part-time (20-30 hrs/wk) to make ends meet. I suggest looking around for locals who are involved in sourceforge projects, as being willing to put your code up for the world to see tends to say something. Look on Monster.com for local resumes which meet your needs, if these people don't have a full-time job, a 6-month or so project may be something they are interested in. I strongly suggest stayin g with locals unless you already know the team well.
Now if I was just local and was willing to breach my
you can't start brand new project by setting short-term goals
if you want to break your project into a short term goals, you should have more then some ideas
the sorter is a time period of your 'short-term goal'; the more precise you have to be to get into your target on time
Assuming that you can find a firm (and there are plenty of good suggestions above), you absolutely need to make sure that you know what you are getting. You need to interview the firm and interview the exact people that will be on your project. Also, you need to know what the process and likelihood are that the people on your project will be switched out. I spent some time at a consulting shop, and it seemed common for the client to think that they were getting people experienced in the tool that we were implementing on their project when they ended up with experienced people who were new to that tool. Even if they got people experienced with the tool there was a fair amount of staff turnover from project to another project.
Also, you'll need to manage the development closely (in an almost XP style). None of this "here ya go, I'll see you in 2 months" sort of work. You want to monitor the work and truly be able to understand what they are doing even if they can code better than you are.
Finally, expect to spend a lot of money. Rates are way down from what they were a few years back, but a "few credit cards ready to be maxed out" may not cut it for the prototype development, let alone enough to deliver anything.
I started a software company a few years back with the same kind of thing in mind. One thing to consider is that if you can convince other people that you have a good idea, they may work for equity instead of cash. It worked out very well for me. You just need to make sure that if they have another job, you aren't violating any non-compete agreements.
Good luck!
degs at the domain of 68k with a dot and an org
What I resent is that unlike actual methodologies, XP is more of a religion. Where unsupported hype, trolling, insults and mindless zealotry are the main coin. And facts are usually to be avoided, or slightly altered.
E.g., the fact that the poster child for XP, the C3 project, was a project with fixed requirements, _not_ something requiring constant change. And it just burned money for many years in a row, didn't deliver even a fraction of what it had to do, until it was considered a miserable failure by the customer. Incidentally, it also gave the "on-site customer" stress-related health problems.
Yes, contrary to what the sacred XP scriptures claimed, that project was _not_ a success. The whole XP myth is based on repeating a lie over and over, until enough idiots start believing it. And God knows there's one born every minute.
But let's get back to XP zealots' trolling. Sorry, claims like basically "only XP gives you bug free code, while the rest of the world leaves bugs in", are bogus and it's just trolling. No programmer willingly leaves bugs in _release_ code. XP or no XP.
What XP does is redefine what bug means, so, blimey, under our double-speak standard we didn't have bugs. Well, gee, ain't it the easy way out...
Straight off the sacred books of XP: if the customer didn't explicitly give you an automated test-case that fails, then you don't have a bug. No, I'm serious.
If the customer's automated test case inputs the number 10, then presses button A, and then button B, that's the only "bug" you can possibly have. If inputting 15 and pressing directly button B causes the program to crash and burn, or even to garble the database, hey, it's not a bug because it wasn't in the automated test case.
Worse yet, if inputting a 65000 character string instead of a number there causes a buffer overflow and allows someone to take control of your machine, it's still not the developpers' problem under XP. If the user didn't explicitly give you a test case with a 65000 character string as input, it's not your problem. Yes, all the buffer overflows we moan and bitch about in Windows and IE would count as "delivering code without bugs" under the XP standard.
(Incidentally they also fit another XP koan: writing the simplest thing that can possibly work. Making the extra effort to write a buffer class with checked bounds, or an URL validator class, so such bugs don't happen... well, that's "wasting time with flowery design and frameworks.")
What's your recourse as a customer then? Well, hey, it was _your_ fault that you didn't give them the right test cases. But don't worry. You'll give them the new test cases, write it as a change request, and pay them another cycle to fix it. That's the XP way.
That's just one of the many lies and double-speak that XP is _based_ on. On one hand accuse everyone else of shipping buggy stuff, on the other hand conveniently redefine the _exact_ _same_ stuff as "without known bugs" for yourself.
But, as I've said, that's just one of many.
A polar bear is a cartesian bear after a coordinate transform.
Who are you going to market your product to? Remember, individuals don't generally like to pay for software. Therefore your business model may be doomed before it starts.
Businesses more readily pay for software, but your product needs to solve an existing business need. If you have lots of competition in your space, your probability of profit goes way down.
Face it, software is a hypercompetitive business.
I use only RentACoder to find new freelance projects since I've discovered it a year ago. In opposite to other auction's type sites - no need to pay any sort of subscription. I have 100+ completed projects. Sure - system is working. My brief RAC history: http://www.takereal.com/freelance/rating.asp
To clarify a few points, here's a little more background. First, I'm definately planning on hanging on to the project management/specs and not farming that out. I'm looking to outsource the coding because 1) I suck at it and 2) it's not what gets me excited. At my old day jobs, I worked side by side with great coders and while I know I probably couldn't afford any of them on a full time basis, I'd be doing a huge disservice to string together crud that I wrote. For me the thrill is putting a useful product in people's hands, growing a business, creating a great place to work and finding ways to do it on a shoestring.
Second, as my handle indicates, I'm physically located in Tokyo. As a person of mediocre Japanese skills and western upbringing, finding local help at a rate that I can afford is tough. Working with someone remotely is possibly easier than working with someone locally. I'm expecting to relocate somewhere else in the world as this project grows but to get started initially I just wanted something that could be use to gauge (business) customer interest. At this point, showing off my Flash demos draws a lot of friendly "well that looks great, come back when you have something real" remarks. I'm looking to have something that people could quickly try it out on their systems for a few days and either call me a complete moron or tell me they might be able to work with me, partner up, etc. In other words, I'm looking for the proverbial proof of concept.
Third, I'm curious about people who have suggested giving up equity in an early stage like this. I've always heard that one of the biggest mistakes of small businesses is giving up equity too early and too generously. While I realize I have little else (cash) to give, I figure it's not something to be casually thrown about, especially if someone that I ultimately have trouble working with ends up with a significant equity stake and demands to have his share bought out.
Fourth, as far as an open source business model goes, I'd like to go that route in finding lots of grassroots help but I worry that would eliminate any advantage I had in building a business. For example, let's say I put the idea out in the public domain and managed to get 15 people interested in working (part time of course) on a GPLed version of it. If/when the project became usable by customers, there's nothing to prevent a better funded firm (like IBM) from bundling it into part of their solution offering and becoming the de facto commerical support vendor for the product.
Finally, for those of you who wish me failure and call me gutless for not writing it myself, I have no doubt that this is no sure thing. It's exactly the reason I'm looking for contractors or oursourcing firms. It'd be downright irresponsible for me to start interviewing full time employees, hire a handful of them but know that I'd only be able to pay them for a few months before running out of cash if there were significant delays, negative customer response, etc.
Now, I can code. I understood the problem domain, I have a lot of experience managing complex projects and 3rd party suppliers, and we knew pretty much what we wanted. It was still a nightmare.
Here's what I recommend
Now, a brief word about equity - you have to balance the value of your cash against your equity. If you retain 100% of the company but go bust in 6 months for lack of cash, your equity is effectively valueless. On the other hand, if you hand 95% of your equity to a blood-sucking VC and your company goes public at a value of $100 million, you will _feel_ like you lost 95 million dollars, and you will almost certainly lose control of the company.
Now, it is absolutely true that giving away too much equity too early is almost certainly going to mean you lose control of your company. But if you can find a bunch of decent programmers who are willing to work for a bit of cash and a reasonable equity stake, you have a decent chance of holding on to your cash for a while longer, getting some highly motivated business partners without losing the farm.
In case you're interested, we rewrote 80% of the original code within 6 months, the company's still alive but never really got the impetus we all hoped for, and I left after around 18 months.
It's all very well in practice, but it will never work in theory.
NO. STAY AWAY FROM XP.
I don't know if it was your eloquent argument, your convincing use of logic, or your articulate and thorough statement of the issues and problems -- but based on your recommendation, we have no choice but to stay away from XP!