For the purpose of this article I will be referring to the reader as "you" and likely as the "Client" -the person, business, or agency requesting work, as well as the "Developer" -the person, business, or agency performing work.
Before a client should even attempt to find a developer, the client should do a few things first.
Search for it
Search the site for what you need, perhaps someone has already made it. Or perhaps someone has made something different that can cover what you need. The Resource Manager is full of 3rd Party Add-ons.
Note: You can use the Asterisk symbol * as a wildcard
Ask about it
If the search revealed nothing, consider asking the question if such an add-on exists. We're only human and sometimes we miss things so it's possible that it does exist but you didn't find it. See if anyone else knows about it. There's a lot of people out there, utilize them. It's likely they will offer you links to add-ons you may have not even seen.
Still Can't find it?
If what you are looking for doesn't exist, you couldn't find it, and others couldn't tell you where to find it or they offered you suggestions you weren't too happy with, then now it is time for you to perform a few preparations.
Write it out
Write out exactly what you need in full detail. The more thorough, the better. How should the Add-on work? What does it do? How does it do that? Does it require any special permissions? You may not be able to foresee every question a developer may ask you, but try to make sure you answer every basic question you can think of.
Take the effort to do this because if you can't know what you want, how is anyone else supposed to?
Sketch, draw, paint, spit, or otherwise map out exactly what is needed. I personally like to not only write it all out, but then create an image of how it should appear. You don't have to be an artist! Draw it on paper, on the computer, use lines, stick figures, vectors, whatever works for you.
No developer in the world has ever been annoyed because the client provided them with concept art. It makes so many things more clear and expresses to the developer exactly how you vision the work looking when it is done. Sometimes even, the concept art can speak for itself.
Need some examples? Here are some of mine which I have used:
Now, once you've done this and you have a clear understanding of exactly what you need, there is another thing you need to do and that is to figure out your budget and how much you are able to pay for it.
Budget and Pricing
Some projects are minor, some are major. Some you may think to be minor are major and some you may think to be major are minor. Does that make sense? The point is you need to be willing to figure out how much you can afford to spend on this while still being able to eat food and pay for gas.
Nothing is free so don't expect handouts. Many developers utilize their skill as their primary source of income. To them, you are the next meal ticket and they have to be willing to spend their time, efforts, and experience on something for you. It's only right you make it worth something for them so stop being cheap.
Now that the project is written out, drawn up, and you have a good feeling about how much you can afford, it's time to find a developer to perform the task.
There are two ways to do this, you can ask developers directly by sending them a PM or you can post a public request and let them come to you. Both have Pros and Cons.
PM Direct to a Developer
You send a PM to the developer and you hope beyond hope that they will accept. Understand that they may not or they may be too busy at the moment to help you. The benefit to this is by sending a direct request you know exactly who you are dealing with and you can easily check out their work and determine their worth.
Now you're posting the job request publicly and it's up for grabs. You don't know who will respond, when, or what quality of work they perform. But because it's public you may get a range of prices and the people that respond are typically not too busy. Your project will be seen by everyone that clicks on it and so you may get a faster response than if you sent it specifically to just a single person.
Regardless of which method you choose there is an issue that needs to be addressed and that is the budget price. Everything comes down to money in the end, that's just the way it is.
Both clients and developers need to understand that Clients hire developers because clients do not know how to code it themselves. This means they may not know how much work a specific add-on may truly be. This has caused much work to go undone because the price offered by the client was too little. It's a sad sad case here because what happens is a developer feels the client is too cheap and therefore ignores the request and the client will never know why.
It is important to be open and honest. If a developer should see a request but determine the payout is too low then perhaps that developer should contact the client and inform them that the price of such a project may be a bit higher than the current budget.
If this is the case, then the client should be willing to re-evaluate his or her budget. Maybe you want a project that you felt costs around $700 but developers feel is closer to $1,500. Alright, that's a difference for sure, but it isn't bad, you'll just have to pay in installments, not many of us can afford to pay a full $1,500 in one shot and you shouldn't have to be paying such a huge amount upfront anyway, that's just terrible. Don't do this at all, ever. Instead come to a payment plan agreement with your developer.
It's okay to do upfront payments, but not if the upfront payment is significant. There's nothing in the rule book that says a developer can't code some of the work and then take some money. Paying such a huge deposit is a massive risk to the client and if a developer can't understand this, then that's not the developer for you. Also understand that using PayPal is a risk to everyone. I would instead suggest using a service such as oDesk or Elance for your first time with someone and then use PayPal (because it has cheaper fees) once a client and developer have both grown to know, understand, and respect each other.