Jun 05

A study in software creation – What are we doing?

Tag: Code,ProgrammingAdam Wright @ 2:14 pm

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.