Let's say you have this bright idea of a software project in the back of your mind. You've tried out the commercially available options and none of them solves the problem that you're experiencing. You're an Excel guru and have written more then one spreadsheet with fancy SUMPRODUCT formulas and you understand how to use INDEX and MATCH to look things up. Now, however, because of hiring more people, because the business has grown, it's becoming more and more necessary to come up with a better system. There's too much copying and pasting to get the data you need. Some of the spreadsheets qualify for "spaghetti programming". You'd like something better. This is a brief overview of what to expect, whether you have me do some programming for you or whether you get a different freelancer to do it for you.
Whoever you are hiring is going to need to understand the problem. You're going to need to understand the problem to be able to find a solution. Even before you've contacted anyone, write down a list of the things you don't like about your current system. Also write down a list of the things that work good and that you don't want to change or lose.
Find someone that is willing to discuss ideas with you. Programmers like to write code, sometimes even before they know what they are writing code for. If the person you hire doesn't give you the confidence that they've tried to understand your problem, and that they have a good solution to that problem, you may have the wrong person.
In brief, you can think of programming as the connection between the point of data entry and the results that management needs. If you're the CEO or the CFO or the owner of the business, or maybe all three, you know what information you want to be able to make decisions. Perhaps there are some key metrics you want to track. Maybe you need a better system to collect what is happening on the job site to be able to bill the customers. Maybe you want a better way of tying in the records from the last jobs into better bids for the next jobs. So you know what you want, but how do you start getting that information from the field into a usable source for you in the office?
So come up with what you need as the end result, then figure out what data is needed for those end results, and then figure out where is the fastest, easiest point to collect that data.
Data entry or data collection needs to be as seamless as possible. The app or service that is collecting the data needs to do as much as possible by itself. Can it assume that the user is doing the same job he was doing yesterday? Can the app figure out what job based on the location? Can the app figure out any information based on the user that is entering the data? The more information that can be automatically collected that way, the easier the data collection process goes. Another benefit is if the user that is entering the data can get some benefit from the data; if the data entry makes their job easier, they are more likely to do it. If they are just doing it because management tells them they need to, when they get busy, they are going to find it easy to just not do it.
After the problem space and the solution space have been fleshed out, the fun begins. As the one that is paying for the programmer, you want to make sure that you are getting what you expect. You want to make sure that you are in control of the assets that are involved in the project. This includes, but is not limited to: the domain name, the source code, the server(s) or infrastructure where the code is deployed. It's going to be easier at first, both for you and the programmer, if he just maintains everything under his own accounts. However, that comes at a risk, what happens if they get hit by a bus? What happens if they don't fulfill their part of the contract?
If you hire me, I'll walk you through any part of this that you don't understand. If you're hiring a programmer, the decisions on where to buy a domain, where to host the code, where to deploy the code may not be a part of what you enjoy doing. A good programmer or IT person will give you enough information for you to make those decisions without making you overwhelmed.
And to finish up, you're going to need to talk about cost. The best is going to be if the project can be structured so that there are small steps so that you and the programmer can verify that you are getting what you expect, and he is getting remuneration for what he's been doing. Just a word of advice, when you're getting custom programming done for you, don't be asking what this is going to cost, the real question that needs to be answered is 'How much is this going to save me?'.