I'm sure that a lot of software developers have, at one time or another, pondered creating shareware. It's pretty attractive in theory: you make a small application in your spare time, publish it to the web, have thousands of users download and purchase it, and then use the proceeds to supplement your kids' college funds, or buy a new gadget every month, or some such.

I'm actually kind of surprised that more young software developers who are in the midst of obtaining a Computer Science or Computer Engineering degree don't do this. It's great experience, it can pad your pockets a bit (when I was still in school, an extra $200 or $300 a month would have been incredibly helpful), and it looks *fantastic* when you're applying for your first post-college job.

Of course, the truth is never quite as much fun as the fantasy. Producing a piece of high-quality shareware can be a very time-intensive task. It doesn't just involve getting the software most of the way there, but instead requires you to build a website to sell the software on, find a company to handle transactions for you, polish the software sufficiently so that it will entice potential buyers, and so forth. Additionally, getting the attention of those potential buyers can be a real trick too.

There are always other options available: you can skip the steps of polishing and payment transaction-integration, and publish your code for free on GotDotNet Workspaces if you choose, or you could always give the software away as Freeware.

Then again, I'm really approaching this topic from the wrong angle. It helps to have a good, solid idea before you start deciding how to spend your first million dollars ;-). So, if you have a great idea for an application, go for it! Just do remember that being a good Windows citizen requires a lot more work than just writing some software. I have a ton of other things to walk through on this topic, and at least a few of them should be more technical than this.

  • UI Design and the Windows User Experience Guidelines
  • Expected installer behavior
  • Add/Remove Programs
  • Integrating a payment transaction engine
  • Advertising