Dangling by a Trivial Feature
prog21.dadgum.com
prog21.dadgum.com
This post is a prescription for paralytic featur-itis.
This literally keeps me awake at night.
Statistic: it takes roughly 200 non-converting free trial downloads of my software to get one data point of feedback telling me why they decided not to buy.
If a user is already unhappy about dealing with you (safe to assume, since they're uninstalling your product. Fair to say?). It might be worth filtering whatever trolling you'd receive from such a feedback mechanism if it's that important to you.
As a personal interest of mine, what part of that 200 non converting trial downloads used the program up to expiry vs opened once?
Following the article's use case, the software could transmit the last dozen or so commands or actions performed by the user. In a simplistic scenario, how would you interpret it if 40% of your user's last commands are "Save"? Success, surely! How about "Undo"?
The art and magic, of course, are in figuring out valuable yet inexpensive metrics for your app, capturing that data when you have thousands or millions of users, and interpreting the meaning.
My feeling is that anything personal including user content and searches should be opt-in but opt out is ok for monitoring feature usage that can't be linked to an individual. Obviously online/web apps reveal at least this anyway. Does context web/mobile app/PC app make a difference?
Similarly it seems easy for metrics to mislead you into thinking the most important features for your app are the ones that get the most usage. It could easily be that some other features users would like far more but are currently hidden or poorly designed so that users are avoiding them
For instance: I don't care about seeing my current cursor coordinates when using an image editor. I probably have some other must-have tiny feature that the author here wouldn't even notice.
A plugin architecture format shared by applications would be invaluable and solve this problem.
Plugins, while valuable for people willing to take the time to learn about your product's eco-system are unlikely to help users who are willing to spend only 5 minutes evaluating your product.
Much more than that, and you're back at the start. In this case, the plugin would need to interop with the app to pickup internal UI states (dragging a selection rectangle, versus just moving an item) and interface with that coordinate system.
I'm curious how you think you'd have "interoperable modules" that would provide such functionality, without creating a large framework to specify all this stuff in the first place.
It is, in most cases, significantly more work to create a plugin architecture that could allow for some feature to be implemented than it would be to implement that feature statically — and most of that extra work is not shared.
The notable successes tend to be domain-specific and manifest as end-user programming environments. The spreadsheet might be considered a weak example of this. It has a clear user model that allows for powerful extensibility, but doesn't really facilitate "interoperability" in any meaningful way -- each spreadsheet tends to be a one-off.
The Max/MSP (and Pure Data/Pd) environments for audio/visual signal and event processing are perhaps more successful in that they allow the simultaneous construction of UI and logic in a visual programming environment. A program (aka "patch") can be built as a reusable sub-program that manifests the same kind of interface as the primitive (native-code) modules. But again, this is another narrow domain application with a specific visual-semantic model which works well for that domain. That contrasts to the OP's problem of adding arbitrary UI to a software whose main domain has nothing inherently to do with either the added UI or even to programming.
I'd also say that the venerable programmable programmer's editors, Emacs and Vim, form another category of end-user programming environment with loose interoperable modules. These are certainly subject to a fairly high degree of extensibility within their domains. But these are saddled by frustrating UI constraints and architectural models inherited from their now ancient origins. Interoperability between "modules", such as it is, is largely ad-hoc and far from guaranteed.
Each of these successes can teach us something about what works for these kind of programmable-framework environments. But to achieve The One Architecture To Rule Them All goes beyond simply having the tools of design, architecture, language, and environment. It must also become a computing platform, where by "platform" I mean an ecosystem that's large enough to have the social synergies that make the above examples and other conventional software platforms successful.
Eclipse is an example of an immensely successful plug-in architecture-based software.
It's amazing how well plug-in ecosystem in Eclipse operates. For instance, I could install the PyDev plug-in and have an intelligent Python editor -- but at the same time the EGit plug-in provides seamless git integration that works with any language!
How all these plug-ins come together and play nice with each other to create a cohesive and powerful IDE is impressive!
Also as Apple showed, a nice polished product sells and that final polish matters. It's a lot more difficult to do that when you need to deal with an unknown quality like plugins.
The tool should work efficiently without you ever looking at the settings, but if you need it you should be able to change anything you like.
Not sure it applies to consumer interfaces. Ideally it shouldn't. But for tools that you use to do day-to-day work, absolutely.
If I have to dig through 10 pages of arcane settings to find some "simple thing" like the one described in the OP's example feature, it might as well not exist (assuming the context that I'm a new user and not already committed to using this software), I've already moved on to the next candidate app.
You might be able to ask users on some forum.
And maybe there's something on the website about feedback or feature request.
Having said all that how do you control the flood of "Why doesn't X do Y?" (when Y is in the menu, on the tool bar, on the splash tips of the day, in the tool tip, etc)
We still have this road ahead.
I expect two dials on any microwave I use: Time, Power. Maybe a control to set the time, if it has a clock.
I don't disagree with your general point about tools being able to be reprogrammed, though. One of the reasons I loved Autocad as a tool is the Lisp interpreter that allows you to script and extend it. I think that's a perfect example of a professional, mainstream tool with a good API that non-programmers find useful (if only to run scripts they find).
http://www.samsung.com/se/consumer/appliances-kitchen/microw...
But when you look at the Samsung US range of microwaves:
http://www.samsung.com/us/appliances/microwaves/all-products
...it becomes clear that (Samsung US belives) simplicity doesn't sell as well there...
Or maybe you care about rect's area! And the status line doesn't display area either. You can't have all that: it won't fit and it would look like crap. So you need settings.
Design is about making decisions. Trying to duck that leads nowhere.
(A quick example: Apple's spreadsheet app Numbers has a behavior where the handle for moving a chart around on the workspace disappears if the chart is moved all the way to the left. It kind of docks the window, requiring an annoying work around to free it. There's no way anyone who uses it would not encounter this, but it's been that way for many years)
The problem space of user facing features is overall quite complex. A developer can neither understand the beginning user's experience, nor the heavy user (they usually don't have the time to use their own application as a worker would, IDEs being an exception.)
Just blindly adding features because a user requested isn't a solution for obvious reasons. I think a combination of user feedback, usability testing, quantitative analysis, along with creative problem solving by developers and product people is needed. Not to mention the nitpicky reality of there being an actual business case need for the feature.
I don't think he was talking about someone that acknowledges that their understanding of users is incomplete and wants to learn more.
CLUELESS_BOB PHB "Hey, can you do this for the project?"
CLUEFUL_ANN DEV "Well, I could do that, but the question I want to ask is 'Why the hell would anyone want that?'".
--
See also the confusing non-match between password echoing in gui or command line environments. Someone needs to ask "Why would a user want to do that?" and then get it done.
When the software is made for artists there's a very different dynamic at work then when a a similar piece of software is created by engineers just to scratch an itch .
For starters, its built on a volunteer basis, so there is no monetary reward for making it easier to use.
Also, some of the developers are probably actually unaware of the main concepts in UX design and even don't want the software to be user friendly because to them that is synonymous with 'dumbing-down' the system for beginners.
>http://developer.gimp.org/gimpcon/2006/index.html
GIMP targets experienced users. If we acknowledge that GIMP is not (primarily) for beginners, we cut off a lot of problems such as “do we need to support that,” etc. Peter noted that a “GIMP Light” would not just have some options cut off from the menus: it would have a completely different user interface, even if it would use the same code under the hood.
Some developers work on GIMP to promote the Free Software movement and would probably not contribute if GIMP was not free. Others think that GIMP should provide fun for its developers, although our user base has grown a bit large for just doing fun experiments. We have to acknowledge that we address a user base that may be more experienced in image manipulation than we are, so the developers are partially out of the target group.
Before converging towards a definition of the GIMP target groups and GIMP vision, there were several discussions involving examples and use cases, whether GIMP should be the best image manipulation program in the universe (best for who?), whether those working on icons and those working on photos have the same needs (number of images open, relative sizes), whether people need to switch frequently between GIMP and other applications (browser or editor for web work), whether we will support painting with shapes and natural media, etc.
Eventually, a GIMP vision emerged...
What GIMP is:
GIMP is Free Software
GIMP is a high-end photo manipulation application, and supports creating original art from images;
GIMP is a high-end application for producing icons, graphical elements of web pages, and art for user interface elements;
GIMP is a platform for programming cutting edge image processing algorithms, by scientists and artists;
GIMP is user-configurable to automate repetitive tasks;
GIMP is easily user-extendable, by easy installation of plug-ins.
What GIMP is not:
GIMP is not MS Paint or Adobe Photoshop
TODO
Make it easier to perform repetitive tasks (macro recording)
Provide a UI with a low barrier to entry
GIMP should be easily extensible by the average user: one click-installation of plug-ins
Well, "a UI with a low barrier to entry" was on that TODO list at least. If they had hundreds of thousands of dollars lying around, probably someone would have been hired to focus on that one. But they have zero dollars and its not a big enough priority for most of the developers to motivate the type of changes required.
If you don't want to get your hands dirty, pay for illustrator.