Jun 05
A study in software creation - What are we doing?
As mentioned earlier, the end goal is a Spell checking application that I can leave running in the background, and call into life at a keystroke for quickly checking and correcting a word. All well and good, so let’s fire up Visual Studio and get to it!
Oh, wait. This idea was meant to create me a new development style that fixed problems I had with my old style. I guess I’d better stop and think about it first.
The first thing I notice is the project, whilst simple on the surface, is not very well defined. I’m spell checking something, but I’m not sure what.
Step 1 : Actual programming is a step in solving another problem, not the problem unto itself
Whilst I (and other people) program just for fun, 99.9% of the time, we’re solving a problem. So, let’s go back to the “client”, and work out what we’re actually doing.
It turns out that I want to spell check individual English words, checking them both for typographical errors and for spelling errors caused by not knowing how to spell it other than by phonetically guessing. I want this both in a small tray application for windows, that I can use for a “click, type and correct” problem, but I also want a reusable API I can embed into my other programs. Hey, I’m a geek! Because I’m also an awkward, typical client, I won’t know if it’s what I want until I see it and ask for something entirely different.
So, let’s get our customer requirements down in a list.
I want.
- A spell checking API
- That works for English words (But maybe other languages later)
- Corrects typographical errors
- Corrects phonetic spellings to real spellings
- Is reusable in many different application types
I also want.
- A spell checking application
- That sits in my Windows system tray
- Pops up when I click on it/press a hotkey
- Lets me type in a word
- Quickly tells me it’s correct, or provides the correct spelling for me
Right, now we’ve got a real customer specification, something I was previously quite bad at acquiring. Of course, in the real world, I won’t be the customer, but it’s the best I can do for now.

