Development Discussion - Feature Theory

Tagged Under : ,

software_lifecycle There has been an interesting discussion floating around work recently that I thought would be very interesting to share here. I am excited to hear feedback and discussion on this topic as it is not only fascinating, but very relevant to my work.

Scenario: You have built a fantastic application to build widgets. Your application is a great v1 at building widgets and you have much room for improvement, but the foundation of widget building is solid.

Feature Ask 1: Customer A has been using Widget Builder Plus for a few months and has found that it’s very easy to build thingies with it. If you use a few parameters for different purposes, it builds very slick thingies. Can we put in a thingie generator to keep from having to use widgets to build thingies?

Feature Ask 2: Customer B has been using Widget Builder Plus to build Thingamabobs. By hacking the XML files generated by Widget Builder Plus, you can generate a basic thingamabob that only needs modest modification to be a full fledged thingamajiggy.

Of course this is totally laced in humor and mildly facetious, but you get my point. In the world of software development, it’s very important to be scenario minded so you are sure that your building features for your users, not a Swiss army knife that can do anything but is difficult to navigate.

So the question I pose is this. If you develop an application, and find a large portion of your users are using the application for a different purpose entirely, do you:

A) Add more features from the alternative usage to the application to satisfy the users that are using your program incorrectly?

B) Retrain your users to use your application more effectively for it’s intended purpose.

It’s really a difficult problem, you surely do not want to lose users of your application by removing the abilities that they are finding so useful, but at the same time, if you are looking at the evolution of your product 2, 3 or more versions down the line and comparing it to your product’s vision, do you risk feature bloat and confusion to keep functionality you never intended to provide?

Thoughts?

Comments:

Post a comment