If you’re making software for businesses, there are four kinds of things you might be doing:

Outsourcing. “Tell me what solution you need and I’ll make it for your”. Example: (often offshore) companies that are selling development for an hourly rate.

Consulting. “Tell me what your problem is and we’ll figure out the solution together.”

Productized service / customizable product. “Here is the problem, here’s the solution, let’s apply it to your business”.

Products. “We know you are having this problem and here’s the exact solution you need”.

From my perspective, this is all about understanding the problem. The more you know about your customers, the more value you can provide and the more money you can charge.

If you’re doing outsourcing, you’re competing with thousands of other software providers. Your profit margins are probably not so high as you’re competing with thousands of other companies that are providing pretty much the same services.

If you’re doing consulting, you can price your services based on the value to the customer, not your costs.

If you’re doing a productized service, you can make your profit margins extremely high. Your costs are relatively small, the value your providing can be huge, and in a narrow niche you won’t be many competitors lowering your prices.

If you’re doing a product, your variable costs are probably tiny. Which shouldn’t stop you from charging based on the value you’re providing, not by your costs.

So the more you understand you customers, the more specialized solution you can make for them and the more money you can make.