I need to hire somebody to write a program for me.
Also I need to ensure that I have legal rights to said program.
Any advice is greatly appreciated.
I need to hire somebody to write a program for me.
Also I need to ensure that I have legal rights to said program.
Any advice is greatly appreciated.
We’d need a lot more specifications about the program. If it requires special or rare skills (3D graphics, drivers/hardware interfaces, enterprise-level uptime, that sort of thing), assume you’ll need to pay well in excess of $100K/year. If you’re just looking for a dialog that calculates some numbers, you’ll probably be able to get a college student to do it in a couple hours for minimum wage or a pizza.
And if you pay them for it, it’s a work for hire, and you own it. You can make them sign something to that effect if it will make you feel better. A lawyer should be along shortly to clarify/expand/correct me.
Also, what’s the scope of the program? Is there a language it has to be in? Does it need to have an install program? If it’s something you’re going to sell, it will need things like technical documentation and quality assurance as well.
The way you’ve asked the question is kind of like saying, “I need someone to build me some kind of transportation device. How much will it cost me?”
The going rate around here for a decent software developer is anywhere from $35 to $150 per hour, depending on skills and experience. If you need a fully polished program with an install, a nice graphical display, persisted settings between uses, QA tests, and all the rest of the trappings of a commercial program, you’re looking at hundreds of hours at least, for all but the most trivial of programs.
Well, OK, I don’t mean to be so vague I’m just paranoid of giving out to much information in fear of losing my job.
Basically, if this helps, I’ve got two machinces that both speak different (computer)languages. I need these two machines to be able to communicate with each other.
(Sorry for not knowing the proper techincal jargon as well.)
Are you just trying to move data between the two machines? It’s not at all clear from your description that that’s what you want, but if it is, there’s probably something already out there that’ll do it for you. Even if it’s not free software, it’ll quite likely be cheaper than paying someone to develop it for you.
Ahh - you need a protocol droid - I’ve heard of a 3PO unit that may do the job
Seriously, you are still being too vague. It appears that you have a machine that produces data in one format that needs to be passed to a machine that requires data in another format, and you need to convert/translate the data in the middle.
The scale of the problem is in the compatibility and understandability of the two formats. If both formats are well documented and have basically similar features, then it is not a seriously complex issue, and won’t cost too much.
If the formats are undocumented, have completely different approaches to the job, or are otherwise quite different, then choose a new problem to solve.
Do some searching in your business space - others have probably had the same requirements - unless this is a completely new development/interface.
I have no real idea of rates, but if you hire someone you have the rights to their work.
Do you need to produce a cost estimate - write a full specification of the requirements, get some people to quote (under NDA), average the responses and double the quote.
Or is this a CYA - two expensive bits of kit/software that just won’t interface, and somehow, the situation has to be fixed. In this case, the cost of admitting the mistake could be less than the cost of trying to develop a translation solution.
The other possibility is an old piece of kit being replaced by a new one - again, someone else may have solved the problem first.
Si
Are you looking to hire them or rent them? You will pay more money for short-term contractors. As others have said, if you pay them to do the work, it should be yours, but be sure to put that into the contract anyway. I would also explicitly state in the contract that your work cannot be reused or resold by said contractor.
When you say you need two computers to “talk” I interpret that to mean networking of some kind - TCP/IP or UDP maybe (although you could even do it over a serial port I suppose.) In my experience fewer and fewer programmers have actually done any TCP/IP. The good news is, most of the languages will now encapsulate TCP/IP objects and make it much easier to do.
In our area independent contractors can get as much as 75 an hour (when I consult I charge 75 an hour - but probably could demand more if I wished. My most regular customer is a good friend and so I never test the waters on it.) If they work for a bigger company I have seen much much higher rates, but typically I pay 150 an hour (I just had a contractor in for 1200 a day.) In bigger cities you can count on even higher pay scales. (I’m not sure where you are located.)
Before I say anything else, read Everything a Businessman should Know about Programming.
Specifications for an application are highly unlikely to allow anyone to backtrace it to a particular corporation, let alone an individual. 99% of any application in a generic sense is redundant to any couple of million companies in the world.
Computers don’t speak languages. Thus, the description you just gave is meaningless. A computer is just a toaster. You can put white bread, brown bread, a bagel, or whatever you want into it, but the toaster doesn’t do anything but one thing. In the case of computers, what that one thing is is running applications (like Internet Explorer, Excel, calculator applications, paint applications, etc.)
Now, without knowing what applications you’re talking about, again we’ve no idea what you’re talking about.
Without knowing what you mean by “talk”, we have no idea what you’re talking about. Computers don’t talk, they just run applications. An application can save data to a file or it can send it over a wire to somewhere. Neither of those is “talking”, and different wires (USB, serial, ethernet, etc.) are entirely different things.
You also haven’t said whether the whole process of sending data from one machine to the other is already in, or if that’s something this person would need to make. If it’s already sending data from machine one to machine two, then who knows whether it’s possible to set up something in the middle to convert the data.
Pretty much, you’ll either need to give as much detail as you can in terms of what applications are being used and what sort of data is being sent, or you’re going to need to track down a programmer and hope for the best.
I’ve done quite a bit of datafeed work. If you have two systems that can both accept and create feeds automatically then creating a bit of middleware to sit in the middle and translate should be fairly simple. Do your two applications have inbuilt API’s? A lot of applications have this type of functionality pre-built and it would make this fairly simple.
Unfortunately if you need to create the network setup and links, the systems don’t have an automatic input or output capacity (or it isn’t configured) or the systems have different network protocols or an air-gap then its a lot more complicated.
If there isn’t a prebuilt option, then if (for example) you are trying to get a Java* app and a C#* app to talk to each other, one option is having the first app create a small text file (ASCII or XML format) that the other system can pick up and parse for the data, and vice versa. You may need to create an automated listener for the receiving system depending on your setup.
You haven’t really given enough information to give a detailed view - is this networked, cross-OS (e.g. Windows to Unix), internet (firewall issues) etc. Any extra information would be useful.
*Insert languages of choice here
Wow, thanks for the responses guys.
Clearly, I’m just going to have to hire someone and bite the bullet. I was more or less trying to avoid being taken advantage of by some unruly programmer!
Seeing how I wouldn’t know the difference between a $100 job and a $10,000 job!
Put in writing exactly what you want the program to accomplish. Then you can get quotes from more than one programmer to make sure the one you choose is in the same ballpark as the others.
If you have trouble putting the specs in writing it’s a warning sign you aren’t ready to pay someone to build it yet. Vague specs are a sure way to drive up the cost.
$100 to $100,000 job, rather.
Well you’re going to have to look up the specs of what all software/protocols/data formats are going to be used in the product anyways. If you let us do a 20 questions thing where you look up the answers to each of our questions, even if it ends up that some amount of the software is proprietary to your company, at least you’ll have that information ready when you start scouting out programmers.
I’ve written “functional specs” (which an Analyst/Programmer then turns into “technical specs” generally unintelligible to a non-programmer) for interface programs and files before, so let me see if I can help you put down in writing the info you need. This is in no particular order.
How will the data be transferred? Is there a physical cable plugged to each machine in one end? Will it be through internet? Will it be through an intranet that never leaves the building?
When does the data transfer need to take place? Every five minutes, every 24h, every time that specific pieces of data change, every time a new piece of data is created (for example, every time someone enters a new bill)?
How much human intervention do you want to have? I’ve had customers that wanted data to transfer itself, others who wanted to have a human being click a button, others who wanted a person to do so much work it would have been more effective to type things twice.
What data exactly do you need to transfer? “The data from the new receipt” is too vague; you’d need something like “customer code, individual line items (concept, amount and coin),…”
Will each of the pieces of data be reflected in the same way in both machines?
If you have a system where customer MyFavouriteCustomer has 12345 as his code, but in the other machine the same guy is X00012345… and this “add X and enough zeros to make 8 numeric figures in front” is the same for every pair of codes, it’s easy to program this conversion.
If the code is the same in both machines, there’s no need to convert.
If there are two codes and they’re unrelated… you’ll have a very sad-looking programmer and get either a table that needs to be updated (pita) or a decision to change all the codes in one of the two machines.
It’s called creeping scope. A big problem that I have seen even within ONE department in a company is that the person defining the need does not really know what can be done. Once you start down a road, sometimes it’s difficult to just turn around.
It is not up to the software programmer to redesign business practices. And often a bad business practice cannot be improved with software. It may go faster, but it will still be bad practice. Just done faster.
It is up to the programmer to help to understand what you want. And it is up to the person requesting the help to document what they do and define a GOAL. No mater how high it may be.
Look to goals. Not solutions. That will be the easiest way to present your ideas. A programmer will ask you a LOT of questions.
I’ve had to mess around with a lot of this in my life. ‘Different languages’ (as others have said) may not be what you think it is. I get geographic data to ‘talk’ to tabular data. The point is, it’s all just data.
How can you possibly say that with the information given? We have NO IDEA of the scope of what Shakes wants to accomplish. He could be talking about doing a translation between something with 200 normalized tables and 1000 stored procedures and another system with data in a totally different format.
I was once on a project that sought to merge several customer databases that were in different formats. The guys who designed the project totally underestimated the work involved. It’s the little things that bite you in the ass when doing conversion work.
For example, consider these two address formats:
1:
Name: Bob Smith
Address 1: Apt 7, 123 Ocean drive
Address 2:
Address 3: Miami, FL
Zip: 12345
2:
First Name: Bob
Last Name: Smith
Street Address: 123 Ocean Drive
Unit Number: 7
City: Miami
State: Fl
Zip: 12345
Add in four more customer databases that all have slight variations on the address formats.
Your job is to take 2 million addresses in the first format, and merge them with 2 million other addresses in the other formats, ensuring that you match the customers who are the same in each so you don’t get duplicates. Avoiding duplicates is important, because if you wind up with two customer records, the customer will get billed twice for the same work. No errors can be tolerated. At least, not many.
Easy problem? What would you estimate as a cost for the work involved? On the surface, that doesn’t look too bad. The formats are similar. The data is simple. How hard can it be?
The development team burned up six hundred thousand dollars on this, plus writing the interfaces to the database software (no SQL, all proprietary relatiional databases) before the project was killed. It would have been cheaper to just type it all back in by hand.
Why so difficult? Well, connsider just the first format. How many different ways might the operator have filled out that address initially?
Name: Bob Smith
Address 1: Apt 7, 123 Ocean drive
Address 2:
Address 3: Miami, FL
Zip: 12345
Name: Smith, Bob
Address 1: 123 Ocean drive
Address 2: Apt 7
Address 3: Miami, FL
Zip: 12345
Name: BobSmith <- typo in original, have to handle error cases
Address 1: Apt 7
Address 2:123 Ocean drive, Miami
Address 3: FL
Zip: 12345
Just the many combinations of writing a simple address line can drive you nuts:
Apt 7, 123 Ocean Drive
#7, 123 Ocean Drive
123 Ocean Drive, Apartment 7
No.7, 123 Ocean Drive
etc. So, you start identifying the combinations, and creating parsing rules. But how do you know you’re correct? Well, you could maybe find a street address guide and do lookups by zip code to see if the street address can be found. But you don’t have a big zip code database in electronic format, so you have to hire someone to enter it. But then you have data entry errors to worry about. Yada Yada.
Multiply this by all the format permutations across the six databases, and the problem gets really difficult. We wound up building a big rules-base parser that did all kinds of consistency checks and comparison checks against various known addresses, and then we had rules for which addresses absolutely could not be parsed due to data entry errors or strange unknown formats, and we flowed those addresses down to a separate file to be hand-edited in an editor that we also built. At the time the project was cancelled, we had something like 60,000 addresses left that we didn’t know what to do with, and had lined up a whole bunch of temps to do the hand-correcting on them.
Simple sounding problems can be hellishly complex once you get into the details. And in this case, we don’t know ANY of the details.
Shakes: Be awfully careful. If you can’t describe exactly what you need to a programmer, AND give him a full understanding of the ‘details’, you’ll get a quote, but it may bear almost no relation to reality. Garbage in, garbage out. You might be better off hiring a consulting firm to do that analysis for you if you don’t have the technical knowledge to do it yourself.
This is a really bad idea.
If you can’t trust anyone on this board, do you have any tech-literate friends you could ask (or hell, could you PM/email one of us)? If it’s just a one-time “gig” type thing, can you browse Craigslist for similar scenarios? Don’t just blindly hire some random programmer!
An analogy to what you’re asking is “How much should I expect to pay for somebody to write me a book?” Well, what kind of book? Are you talking about a 10-page short story a high schooler could write or the next edition of Britannica?
Slight hi-jack. Addresses suck. There is no good way to pigeon hole them. I work with one application that tries to link different databases together based on address. On is proprietary, one is not.
To echo what other people are saying, there’s not enough information here. If you search on the web for “Non Disclosure Agreement” or NDA, you’ll find a million of them. This is just a contract preventing disclosure to third parties in exchange for the right to see something. Find one you like.
Then, find a programmer you’re NOT planning to hire for the job (my email address is in my profile, and there are approximately 200 billion other programmers on this board, plus hundreds more at the CS department of your local university – pick seniors, professors, or grad students, just because they’ve got more experience.) Send them the NDA, and when you get it back signed, send a complete description of the problem, and ask for an off-the-cuff ballpark estimate. You might want to pay a little bit for this ($25 or so) – it will make the programmer more serious about it, and may strengthen the force of the NDA.
They’ll tell you what level of programmer you need (cross-platform data translation may very well be beyond a college student; they often don’t have multi-platform experience), and roughly how much effort it will take. Note the word “roughly:” studies show that programmers nearly always underestimate effort by a significant margin; double their estimate before you start. They’ll also tell you if you’ve underspecified the problem, in which case you may want to work with them to improve the specification (expect this to cost about $35-50 an hour).
On Edit: Also, remember that programmers vary enormously in their competence, experience, and speed–perhaps more than any other profession. Get recommendations and references, and CALL THEM.