The difficulty often is in making yourself known and available so that companies will know that you are available and willing to offer your services as a software developer. And one of the best methods to make yourself known publicly is by volunteering your efforts for some projects. For example, you could go to the local schools and offer to build them something in exchange for your name being mentioned as one of the developers of that software product. This not only provides good advertisement for your services, but will also bring you in contact with a variety of individuals who may call upon you for your services themselves.
Apart from volunteering, you should try to tap your friends' network and contact those who are owners of small businesses. Most small businesses could use a software specialist on call, or who could build out small pieces of code that simplifies their lives - and they will be willing to pay you a reasonable rate for a work that is well done. The advantage of this approach is that your friends already trust you, and this eases many of the concerns that new companies will have.
Use these volunteering opportunities and friend's network for building up your portfolio. Your portfolio should demonstrate, in good detail, all the types of projects you have done, their degree of complexity, time to deliver, and the final product. Attaching a client testimonial will complete the loop. Build up this portfolio over time - this will be very helpful in not only bidding for work, but also when the client wishes to meet you face to face.
Using these above tips, you will soon find yourself on your way to generating substantial extra income through writing software on a contract basis.