When a big business tycoon opens a software companies, they get projects of millions of dollars, and the company is always flooded with projects. While if it is a startup that initiates from a room, you have to work very hard to make a continuous flow of projects.
I know about sites Rent-a-Coder and eLance. Very few startups are profitable this way.
What are the alternatives to increase profitability?
Many of the founders of these big businesses have spent years cultivating client contacts in their previous jobs and business relationships. If they have successfully built this base of relationships, when they go independent as a new business they can draw away a certain percentage of these clients to their new business. I know a couple of different people who have started their own development businesses. One started small, one started quite a bit bigger, but both of them pulled much of their initial client base from already established business contacts from previous jobs. Once a few successful projects have been completed for these appropriated contacts, word spreads and business grows.
Just about anyone who has to find a development firm to take on a million dollar project is going to find someone with a proven track record. There was an old saying, "No one lost their job buying from IBM." Unless there are individuals at the startup who have the experience, it is going to be tough.
People signing the agreements on multi-million dollar contracts also expect a little wining and dining (I've heard of providing othe services as well.) and startups rarely have the resources to do this. The sales process can take much longer and a lot of resources are needed for sales pitches, quotes, specs that may never pay off.
They network with the big buyers and offer them their services. You can do a similar thing, look up some VPs/CEOs/COOs/CTOs at various large or medium-sized software companies (lead411, jigsaw, linkedin can help find them) and present your services. Most of them are interested in hearing new ways to improve their processes.
I don't know how it is going in other places, but I see in my environment that big companies usually gives only their names and give the real work to somewhat smaller subcontractors. But those smaller subcontractors are still large enough to do just some paperwork and pass on the real work.
At the third or fourth level, there are really small noname companies (sometimes one-person companies) which can do their job very effectively due to the complete lack of bureaucracy.
But sometimes a level may collapse because a higher-level participant realize that a mediator doesn't do any effective work. In this case, a smaller company may come up one level in the pyrmamid. In other cases, the smaller company may gain very professional skills at a narrow technical area, so they can develop own clienture.
So, my answer is: be, even a 99th level, subcontractor.
Being a company that just sells "software engineering" is far too generic. As Franky B says, the key is to find a niche that just isn't big enough for the big boys. Finding that niche can take time. We had to grind away taking the scraps from the big boys until we noticed a very small niche growing in the market. Because of our small size we switched straight away to focus on it. That was 4 years ago, the medium sized competitors started to take an interest about 12 months ago, but by then it was too late, we dominate that sector now. Yes, it gets risky as the big boys come in, but then, they are more likely to simply buy you out at that point rather than try to compete.
Its because the ROI on advertising and agressive sales is often high.
As a small competitor you can be more competitive on your pricing, cater to a niche, offer better support.
Sell yourself on being small, a botique service. There are very small startups that have done well.. (ie twitter).