Necessity

This is somewhat of a philosophical post, so bear with me here!  I find the application development process itself to be really interesting and so it’s something that I think about at times.  As a person who writes samples, articles, demos, and other content for  products, it’s pretty common for me to actually need to come up with the idea for the software – not just the software itself.  This is backwards from most software development.

Think about it – an enterprise developer creates software that speeds up or reduces errors for the company’s people.  A “dot com” developer creates a site that addresses some need in order to bring in people for advertising, subscriptions, or what have you.  A hobbyist developer creates a solution to a problem that s/he is having – a magazine collector wants a tool to assist with the collection, and a musician might want a tool for keeping track of gigs.  The bottom line is, as the old proverb goes, necessity is the mother of invention.

Not so with people like me!  The necessity in this case is the need to create interest and provide help with a product or technology.  I end up racking my brain for a scenario that is somewhat realistic and demonstrates the necessary attributes of the product.

As an example, let’s say that I need to come up with a sample of the new file drag-and-drop feature in Silverlight 4.  Drag and drop is nothing new, but it’s new to Silverlight.  I could create an almost “Hello World” style of sample that just exposed a panel, and when a file was dropped it would display the filename.  That’s a pretty basic sample, and a pretty common way to demonstrate something – just create something quick and dirty that shows it.  It’s not very compelling though, and in the end it doesn’t create much more benefit that a paragraph or two of SDK documentation would provide.  The key is to demonstrate real benefit.

Part of a sample is showing how the code works, but an arguably bigger part is showing why you would want it to work that way.  A drag-and-drop panel satisfies the former requirement, but not the latter.  A better example would be the classic file uploader applet.  As you drag files, they get added to a queue and then upload in the background.  This is a clear benefit to a form submission method of uploading files.  It makes sense, it’s quickly graspable, and with some tweaking could probably even be adapted for actual use on a web site.

There is a balance though.  A sample shouldn’t have so much going on that the demonstrated technology is lost.  It should be easy to factor out the rest and focus on the feature of interest.  In the file uploader example, the queuing and uploading needs to be in separate classes so the work of accepting a dropped file is obvious, clear, and adaptable for other needs.

A sample, demonstration, or article that includes code that meets these criteria is considered a success by me.  Doing this on a project with multiple samples, and over multiple projects can be quite a challenge.  It’s very rewarding to get it right though!

Share

Posted Sunday, January 31st, 2010 at 4:47 pm by Arian Kulp
2,228 views

One Response to “Necessity”

  1. Well-written. Thanks. I have been learning a lot about different CMS programs lately. I have also been experimenting with setting up an e-commerce site using WordPress. Have you ever done that? Any suggestions for me? It’s pretty fun learning it. Visit my blog if you’d like to read more. Thanks again for this blog – it is really educational.