Last night, I was celebrating my 23rd birthday, and as sometimes happens, my group of friends started talking about projects that we were working on or wanted to work on. I had been thinking for some time about a project that I had been working on in school with one of my current housemates, so I decided to mention it to everyone there. despite the nature of the project, I got a lot of positive feedback on it. The people there told me to go for it, so we got together to make plans for working on it again.
One of the classes that you can take at Case Western is called Software Engineering. Ostensibly, it teaches you about different methods of software design and development and as part of that you work with 1 or 2 others on a large project that you use software engineering methods that you learn in class, including object oriented design, UML, testing, and requirements analysis. After thinking for a while, I remembered some time ago that my mother, who manages a small cemetery, had asked my brother a while ago for a program to help manage and keep track of information related to the cemetery (deeds, burials, plots, etc.). I proposed this to my partner, and we got together to talk with my mother about requirements.
It was a nice project, in that we had a real client to gather requirements from, and the end product would have actual use. Unfortunately, we had to drop some requirements and add some requirements based on the project grading guidelines. In doing the project, I learned a lot about Python, GUI development, and object oriented development (in most cases, by doing things The Wrong Way�.) What we ended up with was a skeleton of an application that could track who was buried where and store their respective deed and burial information. We were missing quite a bit of polish (printing, data export, good looking UI, etc.).
Originally, when we started writing the project, we had some notion that we might eventually work on it to sell it, but those thoughts faded as the semester wore on. When we brought it up again, we thought that it might be a good idea to try to market the product. Most competing products cost quite a bit of money, so we would be trying to market to smaller cemeteries that might have a hard time affording more expensive software. Our other advantage would be that our product would look good and be easier to use since it was not designed in the late 80s and early 90s like our competitors.
As such, we started researching how much effort it would take to form an LLC and get properly licensed so that we could make our business as legitimate as possible. We are going to do quite a lot more market research to reform our feature set and pricing as well as figure out where to start marketing. We will probably initially only market to local cemeteries (those in Ohio) and market outside of Ohio if we are more successful.
Here is what I think that we need to do for the program:
- Rewrite our requirements based on actual research.
- Scrap our existing code base, except for maybe database models.
- Evaluate our technology stack decisions:
- Is Python still a viable language or should we use something more like C# that can be compiled and integrates with Windows well?
- What GUI toolkit is the best to use?
- Should we be using an ORM?
- Should we use SQLite or have a MySQL instance on client computers?
- Do we want to make this a web app?
- Obviously, this decision affects and is affected by others.
There are also business questions that we will need to answer:
- What type of licensing should we use? One-time fee or SaaS?
- How would we implement this licensing? Would we need a licensing server?
- Do we want to hire a designer to work on our GUI?
- How are we going to advertise our product? Are there industry magazines or blogs that we could put information in? Are there any conferences that we could go to to network and sell?
- Should we talk to a business consultant regarding our business?