From the article Confessions of a Necromancer:<p>if you have the trust of your client, and s/he has real power, you have done half the work already.<p>don't make stuff and then try to sell it unless you are growing an existing client base.<p>breaking into markets you don't know is probably impossible.<p>Build up trust with the client and sometimes they will reward you for it.<p>When you've paid for all the mistakes, you should know how to do it right the next time.<p>A good specification lets diverse people work together without confusion or conflict.<p>If you can test each piece alone, and you have reliable ways of putting them together, the whole should work.<p>Don't be afraid to charge the real cost.<p>be aware of your expenditure and manage your losses. You can survive a long time with less income if you are in tight control of what you spend.<p>What's good software?
Good software is used by people to solve real problems. Good software saves people money, or makes them a profit. It can be buggy, incomplete, undocumented, slow. Yet it can also be good. You can always make good software better yet it's only worth doing when it's already good.