Richard Mitchell

Software Engineer - Red Gate Software
Engine programmer and factotum.

How to tell you've created something truly special.

Published Monday, July 09, 2007 7:54 AM

In my history as a programmer there are a few occasions that stand out when I feel I've written something truly special (yes there's a Red Gate bit but that comes later). The difficulty I generally find is how to quantify special. Mainly I think of this of the user being able to use the thing produced for something that it was originally not designed to do, or some feature that is obvious that users enjoy and make use of.

Now I admit, I'm not a back-office programmer, there's nothing I like less than to write a program that nobody ever sees and just sits there doing it's job quietly and efficiently without anybody realising it exists. I like to create tools for users, I like to create tools for fellow programmers and these are my 'users'.

So something special. Here are a few examples that I consider special.

  • Change the colo(u)rs
Now I know initially this doesn't sounds very interesting but really the only way this conforms to my definition of special is that users loved the feature. All I had to do was create a background for the testing suite and for reasons I'll not go into it had to take up the whole screen and appear as non-computery as possible. So I created a user control the drew a gradient from one colo(u)r to another. Simple, then I chose some colo(u)rs. But because I was feeling generous and I desperately wanted to re-use my user control
I placed it on the options screen allowing people to choose the colo(u)rs and lo and behold every-single-different user I ever saw had different colo(u)rs on their background. It was a simple feature but one that made users very happy and for that reason it was special.

  • Making everything an option
For the same company I also produced an automated system that was computer controlled. However it was trying to re-create something that was inherently a user only operation and because of the external influences on the conditions of what the program was operating on the operating parameters changed regularly. So I created an options screen that was based on an internal XML data structure meaning I could add parameters simply by changing the XML and they would be available to the UI and me coding the program. The number of options was staggering for such a small program - I think it got up to several hundred arranged in a tree-structure. However the operators loved it and some of the settings that they created to use the program baffled me as I'd never thought of setting the options in to me a non-sensicle manner. But it worked and they thought it was special.

  • Cache it if you can
The next bit of work I performed that I consider special was when I created a querying system for a company that created dynamic websites. The problem was that each page was a list of articles be they jobs/news/events/etc. Previously this was done by up to 200 stored procedure calls per page displayed, obviously this wasn't scaling well so I was brought in to fix the problem. What I created was a bit of a beast, it was an 800 line stored procedure that did everything including manufacture the kitchen sink. However on top of this I was able to introduce three levels of caching. The last level was a HTML cache, it turned out to be a 30 minute job and when it went live all the websites sped up by about 500% on cached pages. The webmasters and users of the sites loved it of course. The system wasn't really designed to have this extra cache but the design was special so it's implementation was really easy and effective.
  • Mapping! Who'll use mapping?
OK I know this is a Red Gate bit but bear with me. When we SQL Data Compare 5 we introduced a feature called mapping, this allowed users to compare a table in one database with a table in another database regardless of the name or even the columns as you could map from one to the other. This has proven quite popular although the special feeling came when I heard about a user who had used mapping to compare a table in one database to itself! He managed this by creating a mapping one the table to itself and then set the WHERE clause to set the rows to be compared from one side to the other. I was amazed that it could work and the user using that feature for something other than it was intended made me think that the feature was special.

There are other things that I've done over the years, most recently our comparing to backups API was designed from the start as a bolt-on component of SQL Data Compare and the integration has only taken half of the time estimated because we got it right - that's special.

What do you think makes a creation special? Can you think of things you've done that your users love or that is used in a creative way that you didn't intend.

*phew anybody got some plasters, my fingers are bleeding after all that typing*

Comments

 

Andrew Clarke said:

A curious thing once happened to me like that. I once had a strange compulsion to write a command-line Spreadsheet program. It was, I seem to remember, done to accompany a magazine article I was writing.  It turned out to be far easier to do than one might imagine, and very easy for end-users to understand and use.  I put it in the public domain and rather forgot about it.

Then the letters and phone-calls started flooding in. It started to be used for all sorts of purposes I couldn't have imagined. A clothing manufacturer automated their entire accounting system using it; schools wrote their reports and correspondence with it. I became fascinated and gave what support I could. One firm of tailors gave me several pairs of trousers for assisting them with their application

Finally came a call from Australia. Did they realise that all the blind piano tuners in Australia were running their accounts using my application. Evidently they were all issued with a box that attached to the serial port and which read any ASCII file out. Because my spreadsheet was command-line, it could be adapted perfectly for disability access.

The only downside was that I never got much for the work, except for several pairs of trousers. However, it was nice to think of those Aussie blind Piano tuners using my program, even though they managed to find something better a couple of years later. I certainly never sat down to write an accounts package for Aussie blind Piano tuners
July 11, 2007 11:29 AM
You need to sign in to comment on this blog

















<July 2007>
SuMoTuWeThFrSa
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234
Encouraging .NET Reflector Add-ins
 Jason Haley is well-known for the resources he's provided to developers who wish to extend Reflector's... Read more...

Using .NET Reflector Add-ins
 .NET Reflector by itself is great, but it really comes into its own with the help of some add-ins. Here... Read more...

Unique Experiences!
 You'd have thought that a unique constraint was an easy concept - Not a bit of it; it can cause a lot... Read more...

Dynamic Data Templates in ASP.NET 3.5
 Gayani gives an introduction to Dynamic Data Templates in ASP.NET 3.5 and explains how one can save a... Read more...

First Steps with .NET Reflector
 If you are new to using .NET Reflector, or you are wondering whether it would be useful to you, you'll... Read more...