Ask HN: I've had some software developed, now the coder is holding me for ransom.
I hired him in August 2008, he quoted me $2500 and said it would take two months. Its now almost april and hes almost finished. Throughout the process hes been angry, rude and keeps talking about how incredibly patient he's being with me.
I offered him 10 percent of profits, just because I thought I might as well seeing as my initial investment looked like it was going down the pan anyway. But hes been holding me ransom the whole time, basically wanting more money, a lump sum at the end of development and he wants my investor (who may invest a modest amount in the software) to buy him out.
What can I do? I cant afford to pay him bonuses, I dont want to give him more percentage and I definitely want to try and get him off my back and cut him out of the project.
I'm thinking the best way would be to get someone to reverse engineer the software so I have complete control over it. It currently authenticates the user on startup using a script on his server.
My question is, can anyone tell me what the best way to do it would be? Is reverse engineering Java Swing apps doable? Im thinking I should hire someone of Rentacoder to do this and just get this headache over and done with.
Thanks for any advice.
102 comments
[ 2.9 ms ] story [ 186 ms ] threadI suggest you to be flexible in this matter & take a step which would do less damage to your investment. I hope HN folks will come up with some good advices :).
However, once I'd released 40 percent of the money and it was slightly late, I'd already wasted 2 months and said goodbye to 40 percent of the funds, so I felt like I had to stick with it. A foolish move in retrospect!
You can technically reverse engineer the code (it will not look exactly like the original). Depending on the agreement though, if the coder owns the source, you're probably better off not doing that.
Next time specify who owns the source in the agreement, and make sure that you're getting the source as you release the funds.
second, getting someone to "reverse engineer" an existing app is a very bad idea. you're already in a bad situation, that would make it even worse.
assuming you find someone to do this, they are going to be morally questionable. i, for one, would never agree to do such a thing, not for any price.
if you're not happy with the work you're getting, you should have said so a long time ago. if the terms you've negotiated so far allow you to do so, i'd offer him some smaller amount for the source code and call it a day. if he says no, hire another coder to start again from scratch.
2500 bucks is not very much money to lose. i just lost six months of my time working on a startup that didn't pan out, for which i received a grand total of 1500 bucks. given how much i was making at my last full-time job, that's an opportunity cost to me of about 50 grand. but i'm sure as hell not going to make things worse by mucking around in the situation any longer. i took my lumps and i'm moving on.
Please feel free to let me know why it would be wrong for me to do that, as I'm not trying to be unethical.
Also: corrected the dodgy formatting!
suppose you reverse-engineer the app and the old programmer finds out. he says "hey, that's my work, you are not allowed to do that" and sues you. if he's as vindictive and unproductive as you claim, that seems a likely outcome.
what you're talking about is throwing good money and effort after bad. you're digging yourself into a deep, dark hole. you and the programmer could be taking revenge shots at each other for years.
starting over puts you at zero, which is way better than sinking deeper and deeper into negative numbers.
I had to go back and edit the thread to make it readable after someone pointed it out to me.
by the way, by putting a couple of blank spaces at the beginning of the quote, your comment is causing the page width to get stretched out.
Until PG fixes, you can fix this yourself client-side with a bookmarklet or a greasemonkey script. See ...
http://news.ycombinator.com/item?id=437002
Dude I'm in your exact situation...hired someone to do a project, and he is now a year late. I gave the guy concession after concession just to get him to finish...hell I cut about 70% of the features just to have him finish quicker. And told him...as long as he finish quickly I'd waive the late fees.
You can't work with these people...even after all my concessions the guy still gave me major attitude when I demanded that he hurry up or I'll sue him.
So Monday I'm getting the lawyers involved. Not sure about your situation, but I had my guy sign a contract that specified late fees. So its a little easier to sue him, since the late fees will more than cover lawyer fees. Of course since you have a smaller amount, you can try your luck at small claims court.
Sounds like you have a similar problem, at least Im not the only one.
I waived any late fees ( I didn't even mention them) and offered him bonuses if he finished within a certain date (he didnt but hes still demanding them).
Its amazing how angry he gets when I ask in the politest way possible that he show me some progress, even when he's 6 months late!
I would give your guy the ultimatum right now. If your experience is anything like mine, it'll be faster for you to hire a replacement(who'll be paid upon completion) to finish the site from scratch, than it'll take your current guy to finish.
It sounds like you are really thinking about just forgetting about it. That might be a good idea, getting your app or money may not be worth the money.
But before you do, check to see if there are any fast and efficient things you can do to collect. Small claims court might work out. Would a lawyer be willing to take your case for a large percentage of the money, and no payment upfront? It might not work, but it will at least give you a chance to get your app without putting in a significant amount of time.
I found an ebook with tips for collecting business debts, so the ebook will probably have a lot of information you can use. http://www.viacorp.com/DebtBook.html
Edit: I just realized looking through the book that you can petition a court, this might include small claims court, to send the case to arbitration. Arbitration has a lot of downsides for the consumer. The results heavily favor the plaintiff, and the defendant usually pays the fees if found guilty. But all of that is good here.
I beg to differ. As an entrepreneur, this path would cost time and money. $2500 can't be such a big deal. Also, you'll never get support for the code by anybody else. As a programmer, I'd never work for anybody who sued a fellow programmer over disagreements (only possible case for excuse of this: trojan inside the code or backdoor.) You are part responsible because you hired the programmer,
Next time perhaps you should use a site like rentacoder, elance, or topcoder. And learn first how people use it, it is a tool to help you out, not a one-click solution.
1. That he has money to pay. 2. That he will pay the money he's ordered to pay. 3. That he will pay that money in a timely fashion.
Bottom-line, this person is not going to give you a product that you're happy with and definitely not on the timeframe you need. Go ahead and file a small-claims case against the person but count the money gone.
There's lots of good advice on here about what to do, raise the cash again, hire a good programmer using the advice given above and below this and move on. Don't waste any more time pleading, threatening, or talking to this guy. Sue him and put it in the past, count the money gone. If you ever get any of it back, apply it to something different, server costs, etc.
Honestly? $2,500 is a very, very cheap price to pay for everything you've learned here. Learn from it and how to avoid this situation in the future (plan out all contingencies ON PAPER with the person ahead of time.)
Does your contract with engineer cover the very likely case of the project being delayed? I mean, most projects out there are subject to delays or budget overruns. Writing software is unpredictable business. If your contract does not make any provisions about this, that's very unfortunate but I'm sure you won't make the same mistake next time.
If your contract does cover it, then what you're entitled to is specified therein. Trying to reverse engineer the software so you can sidestep these provisions is very questionable, and would also expose you to litigation.
That's probably not going to help the OP achieve what he really wants, getting his software finished.
The programmer he hired agreed to do the work for about $8 / hour. Not sure a lawsuit can possibly make sense from an economic perspective since people that work for near minimum wage don't have a lot of extra cash to cough up for monetary damages.
You might be asking for advice in the wrong place.
If you want to make money selling desktop apps, the advice you'll likely get from this crowd is "learn how to do it yourself." Otherwise, give your coder at least a 50 percent interest in all of the proceeds from this app.
Given what you tell us of his reaction, it sounds like you might be offering him an insulting percentage; think about it like: where would your idea to make a quick buck be without somebody who writes code?
Sometimes it's all about respect; other times it's about credit (being known for coming up with X); and still sometimes it's all about money, but most of the time it's a combination of the three. Find out what his combination is.
If I hire someone to build a house they don't get insulted when I offer them 10% of future rental yields. How can it be insulting to offer a percentage which wasn't even in the initial agreement?
Maybe you're thinking about it in the wrong way. If you were to commission somebody to create a painting, you wouldn't paint over his or her name, scribble your own over it, and try to take credit for the work, would you? Even if you bought an unsigned piece of artwork for investment, you wouldn't go around telling people you created it, would you?
Sometimes it all boils down to something as simple as respect or attribution. If this desktop app is the next big thing, the coder probably just wants to at the very least make sure that he gets some kind of acknowledgment for his work. For some, acknowledgment can be as simple as ensuring nobody rips off their code and reverse-engineers it, and stamps a different name on it. For others, it is about monetary compensation.
I don't know what this dude's deal is, but of all the factors in your little moneymaking scheme, having the ability to write working code is probably the most valuable. 10 percent doesn't seem like a very equitable exchange.
But this software was planned out very clearly, there were some minor changes, but nothing big.
Im not sure why 10 percent doesn't seem like a good deal for him, he quoted me 2500 dollars, which is all he should get. Out of desperation and a desire to get the project moving and actually get some results, I offered him 10 percent when it was several months late.
That is really going to limit your flexibility down the road, so it is probably easier to just develop from scratch. Perhaps you should let him know you're disappointed with how things have worked out and are thinking about getting something simpler developed by someone else. Be honest and don't come across as personally critical and the discussion may push him to finish things, or break him of the mindset that you are trying to take advantage of him.
I outsource design work on a per-project basis, by the way, and like to ask people to let me know how long they take completing the work, especially since most of the time it involves iterating a couple of times. This approach lets me figure out what their hourly take-home is when all is said and done. If it ends up being too low, I like to increase it a bit more to build good relationships. Having reliable go-to people who can take care of problems on short-notice at a low cost is a lot more valuable than losing $20 here and there over individual projects.
What, precisely, is your "job title"?
Very very few can truly afford to "outsource" design. When you start adding metrics, time worked, etc. it's hubris. Your post started off OK but ended up badly.
When you use the words "take-home" in the same sentence as the word "hourly", you're violating some serious syntax.
Most probably than not, this programmer can work a year more on this project and still not "finish" it in real sence. Specially if there was no specific finishing point mentioned in the agreement.
Software rarely gets finished. All these might be the programmer's point of view, just wanted to mention.
- They don't know how to write a specification. It's like asking a non-architect to draw you blueprints to a house. You end up with things like "there should be an arch here that's... um... about this tall".
- They don't actually know what they want 80% of the time. They will tell you (and you will document if you're smart) how they want it built, and when they see exactly that they will turn around and want it another way.
- They have absolutely no appreciation for how much work you're actually putting in. "But it's just a button on a page!". It's often insulting to work with people like this.
The spec for my contract changed constantly, and in the end took twice as long as I had anticipated.
And I still haven't gotten paid.
I don't know about that. Personally, I'd take $2500 over a 50% interest in most apps-for-hire I've seen. The OP may, in fact make a lot of money off of what he's trying to sell, but asking a programmer he doesn't already know to take that bet seems like a way to get a programmer who can't find other work (probably for a good reason).
To the OP: even if you're right, morally and legally, and you manage to get someone to disable the authentication, and you don't get sued, what you're asking for is still a bad idea. You won't have the source code. You won't be able to make any worthwhile changes. You won't get very far selling an application that you can't modify.
Your best bet is to either start over (someone here might be willing to do the work, for example - I'd consider it), or work things out with your programmer. Note that working things out might involve you getting a lawyer, though he might well have some legitimate claim to more money, if, for example he did work beyond the original spec for your project.
He hired a guy to write code. That guy seems to be jerking him around. The way forward should be to dump the guy and get someone else. There are a lot of software engineers out there. Reneging on a deal isn't ok just because you know Java and your client doesn't.
There's a concept in economics called "sunk costs". You can't recover your investment, so whatever your choice, the money's gone. The only choice you have at this point is: do you continue or do you stop?
Since it looks like you have to pay more for continuing (and maybe even more after that) you should contrast that to the costs of starting over. It may be better to stop and try again if that's cheaper. It feels terrible, but it can be the best choice.
http://en.wikipedia.org/wiki/Betting_(poker)#Fold
Or, you could still be arguing with this guy over code you don't have, a product he hasn't finished, and a price that's still rising (it's not going to go down), and even at best you wont trust the program or have anyone to maintain it.
And doing business with jerks is bad business.
You could start legal proceedings and 2 months down the line see someone else launch your product... I'm one for speed.
Second question: You said, "I offered him 10 percent of profits" - did he accept? Was that part of the written agreement or an oral offer? My thinking is that he's probably going to ask for more and more as he gets closer to finishing and, if you do decide to totally back out and start over, this is important.
Third question: What will he do with the code he has written if you decide to end the project? Will he release it for free, market it separately, or...? Does your contract cover that?
if you didn't get a contract signed, you kind of brought this on yourself. if you did and he's violating the terms, take him to small claims court.
if there isn't a contract, consider walking away and finding someone else to do it.
i'd highly suggest avoiding rentacoder and simlar sites. they do not typically produce high quality work, and there is often a language barrier issue.
Drop him. Here are two good reasons to drop him:
1. You are wasting your time -- I don't think he'll give you anything, or you'll end up spending so much money that profits are unreasonable.
2. Even if he does, what guarantee is there that there is no "surprise" hidden in the code? I have seen freelancers do that when they're disappointed in the buyer.
Find another guy and learn from your mistakes:
a) Pay weekly, based on milestones.
b) Setup a Subversion repository and do a mandatory weekly commits. No commits, no money.
c) Ask for a very short but functional proof-of-concept first, once it works and you have received source -- pay money by this formula: $ = rate x hours.
There is no trust between you and freelancer and you should never work without at least a bit of trust and understanding of each other.
Having a one year project and having no source code for what you paid for is unreasonable for a key asset of your company.
For the price you're offering, you won't find any good programmers that'll work for you, you'll only find hacks who think they can and are more than willing to take your money while learning.
If you think you can spend 2k to have some monkey write some code for you that you're going to sell and make a ton of money with, you're sadly mistaken. If you think your idea is with 90% and he'll do all the work for 10% and 2k, you're also sadly mistaken and very like to be taken, as you clearly have.
If you think you have an idea that's worth anything, you need to find a good programmer and bring him on as a full partner, he'll be the one doing most of the work and offering anything less will be insulting and unlikely to work out for you. He needs to be as vested in the success of the endeavor as you or it'll likely fail.
If you just want your idea implemented by a contractor and you keep all ownership and a reasonable estimate is that it's two months of work, then you're looking at 10k to 15k to get it done right by a competent programmer, not 2k. You'll get what you pay for.
Your best bet at this point is going to be to start over. Get yourself a good hacker; I bet there are a few around here looking for short-term gigs - I am, for one. If you have a decent written spec, it should be no problem for any decent programmer to give you a reasonably accurate timeline and meet the milestones. As others have said, pay by the milestone, and make sure you get the source code.
I imagine it's plausible given how easy most .NET projects are to disassemble. If you contact me at my email address at (alnayyir #at# gmail dot com) I could discuss the matter further with you.
First, $2500 covers 50 hours of work. Do you think your app can be written in that timeframe ? Hardly. So this amount is not a compensation, it's more of a marginally attractive retainer.
Second, the 10% share is a joke. The reason being is that if there is a written app, then 10% commission gets you a simple e-com distribution (shopping cart, invoicing, payment processing). The 30% commission buys you a "fire and forget" kind of deal - you give the distributor an app, they brand it, promote, market and sell it and they also provide front-line support. THIRTY PERCENT.
You effectively offered a guy a 90% commission deal and now seem to be surprised he isn't happy. I wonder why.
The 10% share of profits is a sign of good will on behalf of OP. It was not part of the original agreement and in that question is ridiculous to complain that it is too small. The developer is not a cofounder, he is a freelancer.
I'm sorry but contractual obligations will always come before what seems fair or not.
I merely pointed out that ($2500 + 10% of profits) is a patently bad deal for the developer and it explains the sour state of affairs that they both ended up with.
The fact that the developer is not upholding his end of a deal is another matter. I haven't commented on it.
Also, I agree that providing a percentage of the possible profits is not a very good motivator. Unless you're some master marketer with proven businesses experience behind you, it's a bad gamble for the programmer.
To the OP. The programmer is black-mailing you. That never ends well. If you can, just scratch the project and start over.
The legality of you reverse engineering the software is a different matter. But if you have paid the $2500 in question, then you own it.
You don't have the source code? He just gives you a crippled binary to demonstrate his progress which only works after authenticating with his server?
I'm not sure why people here are telling you that there is either some ethical or legal problem with taking control of the work you already paid for.
Without some transfer of IP rights either by copyright assignment or by bare license I don't see what consideration would be for a contract to produce custom software.
If the contract is determined to be invalid the buyer can then make claims to the IP under the doctrine of promissory or reliance-based estoppel since they have built a business on the expectation that the software would be delivered with appropriate rights to distribute and modify it.
I have some clients that were gypped for a lot more than USD2.5k - they thought they were getting the IP and instead they were getting a non-transferable license to use (and the software was buggy and had - appallingly - developer backdoors and remote off-switches).
Explicit terms in contracts is a very smart move; don't assume anything about what the local version of contract and tort law will deliver to you.
Of course, off-shored development makes it all a bit more complicated - which party actually holds source code and can be sued? It's a bit of a mine-field.
$2500 for 2 months of work comes out to 8 dollars an hour. This isn't a good wage for a programmer anywhere and should have been your first hint that this wasn't going to work out.
So inside a company, $1250 is less than a week's worth of work for anyone good?
Depending on the contract structure, he might be free to sell it on his own, give/sell it to a competitor, or release it on the web for free. Meanwhile, poor OP is now six months behind schedule and has to start over.
Sorry but I don't know how you can be so black and white about the issue without us knowing more information. If OP followed this advice without thinking through the problem, he could be much, much worse off. It could be that you are right but, without more info about the contract, we don't know.
You're very wrong about this. I ran an outsource programming company in the Philippines for years, and $8 per hour is far higher than the highest rates I ever paid my best programmers.
Try living in a third world country some time, and get used to the labor rates they expect, before you make blanket statements about what's a good rate "anywhere".
There are literally thousands of qualified programmers in third world countries who would die for a chance to earn $8 per hour. Many of them are lucky to earn $8 a day ...
1. The quality of the work is probably middling to poor...
2. ... so figure out how much of your time $2k and the code is worth to you.
3. Hopefully you're friendly with an attorney. Print out all of your documentation for this deal, sort it chronologically, and run it by them to see where they think you stand.
4. Provided #3 turned out okay have your friend send a letter asking for the deliverables or a refund.
5. Be prepared to either walk away or negotiate an agreement both of you are equally dissatisfied with.
6. If you walk away be careful about using the binaries you've got, this guy may have rights to the profits even with everything else that's happened.
Have a lawyer draw up a contract. Make it clear that you own the copyright to every line of code that goes into the revision control system that you own, and if possible, manage. Make sure the contract ensures you see the code often, making it a vital part of signing off any milestone. Always, always have a contract, even if you're out on this adventure with a pal. Money can't buy you friends but it most certainly can lose you some.
Find out the market rates for a good developer in your area and pay a decent wage commensurate with the time taken to write good software (2500 $ isn't much even here in Bangalore, I think the guys is just taking you for a ride, unless the software is very simple in which case it can be rewritten trivially) .
Try to meet up with the developer every 3 or 4 days (or at least talk on the phone) and as someone mentioned here, own the repository he checks into.
Good Luck!
An important red flag (among all the others in your post) is the statement that he is "almost" done.
When any programmer thinks about that statement, it's almost certain to elicit a belly laugh.
If he appears to be "almost" done, it is highly likely that he is really around 50% done. Keeping that in mind should help you make your decision to walk away.
If you've paid for work so far, and your contract gave you rights to the source code, demand the source code. You could hand that to another developer and it might be of some use.
If he won't provide it, and especially if he's local, sue in small claims court for your money back.
If you have a running version without source, you could rebid this elsewhere and use both your previous correspondences and the working version itself as a new spec to accelerate the new work.
If it's truly $2K worth of work by an ornery contractor, it can likely be reproduced for about the same cost. But it's also possible that he was way undercharging you and that's why he's become ornery.
If you have a working code delivery but not source, Java code can be decompiled to recover somewhat useful source code. However, unless there's some fancy custom algorithms/graphics/etc. in your app, a basic 'Swing desktop app' might be easier for a new contractor to build from scratch in their style than try to reuse something from an unreliable coder. Only go the decompilation route if you are confident of your rights to the work (because it was clearly a work-for-hire with you receiving the rights under your written contract, and you haven't orally modified that contract in your pleadings with the developer).
Rentacoder and other sites really help prevent a lot of these problems by nudging people -- especially those new to software development -- into doing things the right way... having a clear contract, planning for likely delays, staging things, getting multiple bids for comparison, etc.
Likely, he was thinking of a one bedroom house. You were thinking swimming pool, gourmet kitchen, etc, etc. Professional software developers know how to deal with it. The lesson is easily worth $2500.
I went through the EXACT same situation with a Java developer last year. The developer extorted us, refused to hand over code, always demanded more money, was rude and insisted that he was doing us a favor. We finally let him go. Coincidentally, it was around August 2008!
Fire him and move on.