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*