Questions about writing and selling a computer program.
July 7, 2009 2:34 PM   Subscribe

A while back I decided to write a checkbook db in Access that would have some budgeting and other functionality I really wanted. We've been using it for three years now and I still love it. It does things and has reports that no other checkbook programs out there have (as far as I can tell) and I think others would like it too, so I'm wondering about getting it written and trying to sell it. (continued-->)

So, I have some questions maybe the Hive can help me with.
I guess I should first say my budget is limited to maybe a thousand or two, max.

1.) I have some self-taught VBA skills and recently took an intro C++ class so I understand some programing concepts at least. And I have a legal copy of MS Visual Studio 2008 on my PC that I was able to get through my school. I can put what I have into pseudo code and a flowchart, and am willing to code as much as I can, but I don't have the knowledge to start from scratch. How should I go forward getting it coded?
2.) What kind and how much ongoing support would be necessary to provide, if any? I'm not trying to compete with any established companies, I just want to try to make some money on this and then maybe I could expand my ability to provide better support later, if necessary. Obviously I want to provide the least amount possible. I'd rather issue refunds than do much support.
3.) What is the best language, etc. to write it in? My considerations are attractive gui, low development cost, and reliability.
4.) Right now there are no internet accessing functions, and the only input other than keyboard input would be an ability to import Money or Quicken files downloaded from bank websites. Do I need to be concerned with security resistance to vulnerability exploits, etc?
5.) Is there anything else?

Please don't reply just to tell me that it's not a good idea for a program or that it wouldn't sell. I'm just trying to assess the situation to know what all would be required if I do try to get it going. Thanks everybody for your help.
posted by atm to Computers & Internet (11 answers total) 1 user marked this as a favorite
 
Best answer: How Windows-centric is the GUI? I'm thinking that this is definitely a program that you should consider doing online vs as a thick, platform-specific client. Since you modeled it in Access, it *should* be *fairly* trivial to get the table structure into MySQL and you can probably get a quick mock-up in RoR or Django to see if you really want to pursue it further. I understand you know you have competition out there, but if the app were to actually be successful, you also need to think about a companion version of it for the iPhone OS, Android and Blackberry OS.

However, let me digress (or re-focus) and reply back directly to all five sub-questions somewhat Windows deployment:

1. If you are really limited to PC deployment, learn the .NET framework components and seriously consider using C# over C++. Alternately, you could focus entirely on Sliverlight development. You may be able to find other folks to help you, but you won't be able to "outsource" much development with $1-2K.

2. You will - at a minimum - need to test your app with every Microsoft monthly patch release and every service pack and release updates accordingly (if anything in your app breaks). Similarly, if you base it on .NET or Silverlight, any updates to those components will require testing and potential patching. You can definitely get away with digital-only support, but be forewarned that your app deals with telling folks what their financial situation is, so they will expect a great deal from you, especially if they invest alot of time and energy into using it.

3. Covered in my answer to "1"

4. All apps have security issues unless they are trivial or you are an outstanding programmer. You will also - most likely - use third-party libraries for various tasks, each of which will have vulnerabilities that you need to account for (and issue updates for).

5. License management (since you are going to be charging for it); multiple OS version support (even if it's just the Windows family); keeping a good, updated product & company website; community forum; a way to receive support requests (ticketing system/forum); sharp logos, toolbars, etc (hire the Icon Factory dudes :-) ; automatic update checking/downloading/installing

I've most likely missed many items, but there are good, indie, professional coders here on MeFi with tons of experience who will no doubt provide much more detail and may refute some of my more opinionated rantings.
posted by hrbrmstr at 3:11 PM on July 7, 2009


Best answer: Well, it's possible to deploy .net apps cross-platform thanks to the Mono project.

Frankly, I think you should give it a try yourself. Developing in C# with visual studio really isn't much harder than doing it in Access in the first place. Just buy a book for your version of C#.net and you should be good to go. (I'm a web developer, and I've written GOOD custom apps in C#.net for people.) I haven't seen much break between .net releases.

You can even develop it using Access as a backend initially, and then port it to another type of database if you need to for distribution. I would use a copy of your current access project and just go from there.

You developed something cool in the first place by tinkering, what's going to hurt you by tinkering more? Even if you only get it half-way, then you can sell it out. There's some good articles over on Software By Rob about starting your own Micro-ISV and acquiring or selling it later.
posted by SpecialK at 3:32 PM on July 7, 2009


Best answer: IANAProgrammer, but I have done some rudimentary research into programming for an idea that I had (don't worry, it's a word processing app idea!)

1.) I think you should use and advance your skills in getting this coded. You will gain much experience, and spend nothing but your time, and boost your confidence. I suspect that you are much more skilled than you give yourself credit for!

2.) What type of support do you anticipate having to provide? Installation? How to use it? Sotware bugs?
There are affordable (and even free) installation applications, that you can set up on your sotware CD that are similar to the Windows installers that you see when installing the fancier programs.
As for training, create a good user guide or provide training courses (you can perhaps charge for this and hire someone to do this).

From a customer standpoint, good support builds loyalty, goodwill and a good reputation, which might lead to increased sales!

3.) Nthing C#

4.) I have no idea, but it's good to look into this.

5.) From a business planning standpoint you might want to consider how you want to market your product. You will likely want to get a Website going with online payment features. Yahoo Small Business (among others) offer all the tools you need pretty much in one place.
You might also want to set some timelines and goals. Do you want to develop one big program with all the features or would you rather develop smaller versions over time. Or maybe a free version and a pay version - Don't let these questions intimidate you - in fact, they should get you excited about all the possibilities that are out there for you and your product!

Start paying attention (if you are not already) to how your company does business, especially if they are small (since you will be more easily exposed to the different aspects of the business) - how do they market? how do they develop products? how do they plan?

It doesn't matter if you are just yourself or a multinational - planning and good organization is key, with tangible, attainable (but challenging) goals to look ahead to - that's the difference between a dreamer and a doer!

Go! Go! Go!
posted by bitteroldman at 5:44 PM on July 7, 2009


Response by poster: Thanks for all the info guys! In no particular order:

I'm thinking that...:

---I'd probably go with Windows-only compatibility, seems like it would be the biggest bang for the buck.

---I'd like to develop the program in the lowest maintenance language feasible. Wouldn't it break more often if it depended on a platform that gets updated and patched (and attacked) like .net? That's one of the reasons I don't want to sell it as an Access db. Too many variables.

---Personally, as of this writing, I prefer it to be a local program, even though it would lack the benefits of a web-based program. I do have ideas for extensions for phones and even web-based functionality along with phones, but for now local only.

---How often would an MS patch or service pack, etc. break a c++ program? Or other languages? How big of a problem is it?

---Regarding vulnerablities, wouldn't a c++ program be an unlikely target or victim of an attack unless/until it has notoriety? Are the odds against me to the point that I'd need to spend money protecting it soon after or during initial launch?

---Point taken about support inspiring goodwill, etc which leads to more sales. Still I want to keep it bare minimum.

---How can I tell what language/db back end/gui a particular program is made with?

Thanks again.
posted by atm at 6:28 PM on July 7, 2009


Best answer: 1) Write it yourself. It will be hard work -- plan on spending 200 or 300 hours on this kind of a project -- but you'll learn a ton and have a marketable skill at the end.

3) Consider writing it in Python with the wxPython GUI library. It's really easy to get started, and it comes with some awesome GUI components that make your program look fancier than it really is. Use SQLite, a simple database library, to store your data and generate reports. (Note that I'm not particularly against C#, I just haven't used it.)

Don't do a Web version. Most people would be very wary about giving any financial data to a 3rd party, especially a brand-new startup that no one has heard of.

4) Don't do any Internet access and you'll be okay.

5) Consider releasing a limited trial version. The only software I've paid for in quite a while was Moneydance, and that was only because I tested it and found it was quite good.

Think of creative features you can add that make your program appealing to specific groups of people. A checkbook-balancing app? Everyone has that. Add some features that are specific to some group of people you know a lot about, and market it heavily to them. Maybe college students have special budget program needs, or parents of young children, or blind people, or car enthusiasts? Make your customer feel like part of a club and they're much more likely to buy your product.

Be sure to let us know how it goes!
posted by miyabo at 6:37 PM on July 7, 2009


Here's the bottom line - there are many other programs out there that do this sort of thing, and do it quite well. Even if you get a pretty complete version together, the odds of you selling more than a handful of copies are quite slim. That said, I still think you should write it.

In fact, I'd urge you to consider coding up a prototype and releasing it for free, under an open source license. Sure, you won't make any money from the project, but you aren't likely to do that anyway. By open sourcing your ideas, though, you'll be able to get other people may help you work on it. You'll be able to draw from your new ideas and their experience to make something that's far better than what you could do alone.

By doing this, you're going to gain a hell of a lot of experience, and put together a tangible product that is proof to the world that you have some coding chops. You'll also gain a nice resume line and make contacts in the open-source community that can help you land a programming job later on. Those is worth far more than the few bucks you might pocket.
posted by chrisamiller at 7:06 PM on July 7, 2009


Best answer: Microsoft updates don't break your software, whether it's written in C# or C++.

Have you checked out all of these programs that are targeted at personal users?
posted by PueExMachina at 9:40 PM on July 7, 2009


Best answer: If you're a college student with some people skills, you may be able to convince a bored computer science student to help you with the technical stuff in exchange for some of the profit (?) or glory or whatever. It looks great on a resume for that student, especially if you go through the motions of hiring him/her to work for you.
posted by Electrius at 10:29 PM on July 7, 2009


Response by poster: Thanks everybody.
In no particular order:

--I'm sure I'll have to write a lot of it myself. I am just trying to find out some things with this thread before I start. Since I don't have much experience I'm trying to make sure I go in the right direction from the start.

--I looked at wxPython gui library and it raised a problem. If I want to be able to sell the program and also be able to keep the code confidential, it looks like GPL licensing won't work since that would require me to make the code available to my product. So what are my best options then?

--I guess there's a difference of opinions on whether MS updates will break a program in c# or c++. Can anyone explain further?

Thanks again for your help.
posted by atm at 8:12 PM on July 9, 2009


Best answer: wxPython is under the LGPL license, not the GPL. This means you are allowed to sell programs with it under any conditions you choose.

Microsoft is absolutely fanatical about making sure updates don't break old software, especially software that doesn't do anything really weird (yours is unlikely to do so). Sure, it's always good to check, but I wouldn't worry too much about it

Good luck!
posted by miyabo at 11:59 AM on July 10, 2009


Response by poster: Thanks for all your help, Miyabo.
posted by atm at 12:02 PM on July 11, 2009


« Older Same sentence, different language, still makes...   |   What new wavey song was this that played on sirius... Newer »
This thread is closed to new comments.