I wanted to get this application out for private beta testing before Christmas, before I embarked on my two-week vacation at my parents’ home in New York. However, I didn’t like having to write a lot of rules that embodied just a few general principles, and I realize that I could generalize the software as mentioned in my post “Intelligence versus Intellisense” and throw out the rules. So, I rewrote some of my algorithms in the past week since I arrived home and am currently testing my software. My biggest concerns right now are
- performance. Each branch of a search can be so expensive (exponentially so) that it’s worthwhile to invest a substantial time in upfront analysis to determine whether a branch is necessary.
- producing high-quality messages with few false positives. Since my analysis is “deep,” I shouldn’t generate many false errors. Ultimately, I will run my code on Rotor and determine how many bugs the framework shipped with.
I noticed that having a near term release schedule makes me more efficient in my development. For example, I have shifted my focus to producing the minimal software that works for the first release. “Keep it simple, stupid.”
While I started with support for both C# and VB.NET, the initial version will only support C#, because of high code churn and the additional drag introduced by supporting multiple languages. While working through the VB 8.0 specification, I encountered numerous differences between the two languages; while I accounted for many of these differences, when my analysis tool does process VB code, it interprets much of the code using C# semantics especially in subtler matters like method resolution and conversion. Normally, the same operator in two different languages doesn’t exhibit identical behavior, so I typically map the operator to another function in situations that would cause the behavior to be different.
The text editor component I initially used was quirky, so I purchased another more Visual-Studio conformant editor from ActiPro Software for $300+.
In a few weeks, I will do a limited release to selected beta testers, who have emailed me earlier. I learned from the Shareware Industry Conference, that limited betas are more effective than public betas. Regular correspondence with a few beta testers is preferable to no correspondence with a large set.
After incorporating initial feedback and refining my product, I will send it out for a public beta for a few months, after which I will offer a feature-full free version and a more advanced commercial version. Depending on the reception of the commercial product, I may add more features and language support; adding an additional language support is especially cheap.
I am willing to spend a bit more time on this product, since this will likely pay for my living expenses for the next year as well as expose me sooner to the real world details of software marketing. Plus, the underlying technology, which also forms an important part of my other products, will mature rapidly.