Seeing that so many of my friends are unemployed, some of my frinds and I are planning to create a small software company. 

What are the basic things we should know and do? Are there things specific to running a software company that we'd need to be aware of?

I'll try to list a few things¹ I wish I thought about when creating my company.

The essential thing to know is that either you have to hire people (lawyers, accountants, salesmen, project managers), or you have to learn lots of stuff yourself, given that trial and error technique would often cost you a lot of money.


Be aware of the local laws. When you're a small company and you're sued by your customer for thousands of dollars because some mandatory sentence is missing from your invoice, it's not obvious to handle.

In the same way, when a customer doesn't pay you for months, when you go to a lawyer and learn that the contract you signed doesn't force your customer to pay you, you wish you had consulted a lawyer before signing anything. I spent four years in law college; I'm always surprised by the poor quality of contracts written by people with no knowledge in law. Most of the contracts I've seen clearly say that the developer may never be payed, or that the customer can request any change at no cost.

Remember, some customers will spend a huge amount of time trying not to pay or to pay less. They will invoke the fact that your product does't match their expectations, or that they always thought that the changes you made at their request were for free, or that they don't need the product any longer. Make sure to see F*ck You. Pay Me. by Mike Monteiro which discusses such situations.

This is a job of a lawyer. Lawyers are expensive, but they save you money.
Be sure that the taxes will not be higher than your income. In France, for example, when you start you can easily be in the situation where multiple semi-governmental organizations (such as the mandatory insurance company) will claim thousands of dollars per year, yet your income is several hundreds of dollars per year.

Nobody cares by such nonsense, because it's a way for those organizations to make a lot of money. Even when you don't have any income, you still have to pay. Given that some of them are managed as insurance companies and benefit from their monopoly, you find yourself in front of an entity which behaves much like mafia (i.e. no matter what's your situation, you'll have to pay), but sometimes without the cover benefits.

Seeing taxmen arrive at your company and asking to check the accounts, then finding a few mistakes which will cost you a few thousands of dollars is not a nice thing neither.

This is a job of an accountant: avoiding accounting errors which usually cost too much, and defend the money of your company from the intentional errors of powerful entities.
What makes you better than all the freelance developers? What makes you better than all the larger software development companies? How do you explain to the customers that you're better?

I had a few discussions with my colleagues who wanted to create their own companies. "What do you have that others don't?", I asked every time. Either they can't answer, or they answer something like "I'll ask for a lower price", but they are unable to explain how would they do the cost savings.

Be sure you know the aspects in which you are better than the competitors. Be sure you are able to market yourself, explaining not only what's better, but also why.


Example: a company A ships software at a lower cost, because they use lean management, removing the waste related to tasks which are not needed in order to deliver the product.
Another example: a company B ships high-quality software by using intensive formal code reviews, testing, formal proof, and other techniques used in companies writing live-critical software.
Last example: a company C delights its customers by using radical management and Agile.


More importantly, how you will find your customers? Do you advertise? Where? How? How much would it cost?

Are you ready to answer customers' questions? For example, if somebody asks for the names of companies you worked before in order to ask those companies for feedback, or if somebody asks to show the software products or web apps you've done, do you have an answer?

This is a job of a salesman: somebody who knows your business, knows your strong points, and can quickly, easily and honestly explain why your company is the best.
How do you avoid shipping the project late, when the customer constantly asks for changes in the features you just delivered?

How do you calculate the price the customer has to pay? If you're paid per hour of work, how can the customer be sure that you don't ask to be payed for 213 hours when in fact you worked 186 hours?

How do you keep track of a project? How do you know that the project is about to fail, and when you know it, how do you prevent it?

This is a job of a project manager. Leading a project from "I have a great idea, it's in my head now" to the fully-featured product requires more than knowing how to write programming code.
Are you sure you're ready to deal with customers? What will happen when a customer is not polite? What if a customer says that your product sucks or does not conform to the requirements when in fact it follows them exactly? What if a customer, after two months of development of a three months project tells you that you must rewrite your ASP.NET project in PHP? What if the customer doesn't even know what her project is about?

This, again, is a task of the project manager, the salesman or the support. Dealing with customers after you signed the contract requires a lot of tact, patience, professionalism and, often, anger-management.




¹ Note: my company is in France, so some points may not apply or be less important in other countries.
