In a user interface, is it better to "gray out" or hide features that are unavailable? [closed] - user-interface

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
In my particular situation, I have a comment form than cannot be used until the user has logged in and joined a specific topic. Then, they can comment on that topic.
In your opinion, should I hide the comment form completely, or disable it and prompt the user to complete the necessary requirements.

Disabling them saves the user from effortlessly looking for functionality she knew to exist before. So in general, hiding something completely from view just generates frustration. Remember the dynamically populated menus in Office 2000 to 2003? Then you know what I mean (cf. Jensen Harris' blog posts on that topic).
I suggest you should disable them and make it clear in what states they are available and how to achieve that.
In some cases, however, such as the application we are developing right now, functionality being there or not depends more on the user's permissions than on the current state of the program. In such cases it can be helpful to just hide things that shouldn't be accessible since users never get to the point where they could use the controls. Simply because they're lacking privileges. See for example Stack Overflow's moderation tools which are accessible once you get above 10k rep but are never shown before, not even as disabled.

If you don't want the user to know there is a comment form you should hide it.
If you want the user to know there's a comment form, but it is not (yet) available to them, you should disable it (gray it out).
There are good reasons why you might want to hide instead of gray. If you are security-trimming the interface, for example.

Gray out.
You want users to be aware of what options are available. If they're hidden a user may never know that additional setting exists.
EDIT:
I guess what I'm trying to say is if you really should hide an option you'll know. IE spacing issues, security, whatnot.

No matter what you do to visually imply something is disabled, old/inexperienced/hasty users will lose time trying to comprehend that the form looks like a form but it isn't.
I would go with a clear message instead.

gray them out. if they click on them provide a message stating why they are unavailable.

Hide the form and provide a message such as:
"Comment on this article by signing in or registering" which links to the login and registration form, once they have registered they should be directed back to the comment form so they can leave a comment.
Leaving the form visible but inactive would make the user think they have to click somewhere special to activate it.

Related

Building documentation into software [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I have seen several applications that explain features to the user when they first use it or bring new features to their attention after an upgrade. This kind of documentation appears directly within the app and in the midst of the user's flow, e.g. by laying a speech bubble over the UI which points to the button or any other element. Usually it appears once and never again.
Unfortunately I don't know how to call this approach, which makes it hard to even google about it. It seems to be a quite modern UX approach.
I am wondering what architectural or design patterns are used or whether there are any notable libraries to implement that. The issue I am trying to address is that this is a cross-cutting thing which creeps into any place and any time in the work flows - and yet you want to keep this whole concern out of the "actual" functionality.
For example, the user might request a page in an MVC webapp. The controller fetches data, executes actions and serves a view. On that view is a new tab. The user has not ever seen this and you want to display a friendly message "click here to...". This means that in some place, probably in the controller, you must detect that this feature has not been explained to the user yet - you load a message from a bundle and send it to the view. The view renders a speech bubble in addition to the tab. This logic has nothing to do with the actual functionality. Ideally you can keep it out of the controller as well as the view.
I was thinking whether an Aspect-Oriented-Programming approach could help.
Is there any blog, library, established patterns?
Please note: I am not asking how to render a speech bubble. My concern is that I don't want the logic - to decide when to display it ("has the user ever seen the message? Have they picked "don't show again?"), what to display, and where to display it - to be spread across the whole application source code. Ideally it could be packed into its own package or project.
Similar considerations can apply for collecting feature usage statistics or for adding a user feedback channel in various places.
Update: I finally got an answer point to exactly what I was looking for. Since finding a term for it was the main issue, I am adding some of the keywords found in Shahrokh's answer so as to help future readers find this Q&A: This thing can be called an introduction, step-by-step guide, page guide, or a guided website tour for first-time users; the answer features intro.js, aSimpleTourPlugin, pageguide.js, joyride, Codrops, Bootstro.js, jQuery SiteTour, jQuery Tourbus, Trip.js, and Crumble.
List of Web Page User Guide or Website Tour for your web page is here.

Showing power to every user harms Usability of a Requirement Management software? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 8 years ago.
Improve this question
I am working on a Requirement Management software which is truly powerful in features. But now its cluttered with usability issues & I have never seen such complex user xperience like this one. What I found, all features/powers are accessible to every users whoever uses this product.Whether its super Admin or end user. Also found every user base uses some specific features, not all features.
My thought is, can I off/hide secondary user controls which are not that much navigated? Should I provide configurable user controls to different users? Please let me know your thoughts.
Thanks-
Yes you can, and this is exactly what many apps do:
It is common to have a set of easily reached, commonly used gui elements (think the tool palette in Photoshop, or the ribbon in Office) meanwhile less often accessed commands are hidden behind the application menus (File, Edit, View etc) and usually duplicate the commands in the palette / ribbon.
Configurable or not is difficult to give an answer to that is more useful than 'it depends'.
This is really super-power user territory, and I'd suggest that you do some research with your target users.
Don't ask them if they configure menus, just ask them to show you how they use a common set of applications (which have configurable menus) and observe whether they have or have not changed anything outside of the default.
The reasons you shouldn't ask direct are that:
1) People might not know what you're on about
2) They might just tell you what they think you want to hear (this is very common)
3) People will oftewn say 'yes' when you ask them if they want something, whether it's useful or not (it's probably to do with loss aversion)

How to ensure project management questions get answered [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 9 years ago.
Improve this question
Background: On a new project I've found myself 3 levels removed from my actual source of information. I report to my PM, who reports to our contractor, who reports to the actual client. Getting answers to questions has become something of a problem and I'm curious to know what people recommend.
Needs: I'm trying to find a technology or disciplined strategy that will assist me in ensuring that the questions I'm asking are getting answered:
Correctly without much modification of the original question
Quickly so the original context isn't lost
Completely so that if a question is deferred I don't forget about it.
Does anyone know of a software suite that assists in this matter or do you have any personal discipline strategies that worked for you?
Thank you for the guidance
One strategy might be to cut out the middleman. Go directly to the client and ask what s/he wants.
On a slightly less bold note, request that you, your PM, the contractor, and the client all meet at the same time rather than on relying on an email chain or technology (which will undoubtedly not serve everyone's needs) to relay information. This strategy works particularly well in my experience, as long as you have a manager willing to let you tag along.
Best technology I can suggest is the telephone. You've got to open up direct lines of communication. But I guess you know that and are finding it difficult, someone along the line is not helping. So now you have to tackle that person, find out why not, what their reservations are and how you might allay their fears.
As for software, I recommend that you DO NOT look for a software solution to this sort of problem. Suppose you implement a new trouble-ticketing system for capturing client questions and comments and to feed back your questions and comments to your client. Next time you tackle your management about the issue one of 2 things will happen:
-- The response will be 'But you told us installing system TT would fix this !'
OR
-- There must be something wrong with system TT, we'll divert our energy to fixing the software.
Oh, and do write things down, so email might be even better than the telephone.
Regards
Mark
I'm sorry, but this doesn't sound like a technological issue. Good project managers ensure communication and should allow you to work directly with the client where necessary. This is a communicaiton/management problem.
PRINCE2 (the project management methodology) would define your questions as project issues (essentially an issue is anything which needs attention so a question is no different to a software defect).
Based on this I'd recommend tracking them the same way you track any other issue.
In your defect tracking system (you do have one right?) set up a category / classification / whatever "Question" and log them and assign them to either the client (ideally they should be given direct access) or to the Project Manager (who now has a way of tracking them and recording the answers).
As with all issues you should make sure you put in plenty of information and context to ensure you get a good answer (obligatory Jeff / Joel reference: in this case to Jeff's belief that you only get out of a question what you put into it). This will also obviously help if you're not the person actually asking it, though as many people have said do everything you can to get closer to the client.
The key point to remember is that people are lazy.
If you formulate questions through e-mail clearly and in format your contact likes, most likely he'll forward them to the next chain of command unchanged and so on.
Some quick tips on how to structure such an e-mail:
Numerate all your questions. Essential, otherwise all too often only the latest question will been answered
Be very specific in what the actual question you need input on is
If there is a fixed set of alternatives or if you have a clear recommendation, make sure this is clearly stated
Avoid mixing FYI messages with the questions. Instead, send separate e-mails
Carefully read your e-mail before you send and look for content that may be misunderstood
Good luck

Important UI Features That Are Often Left Out [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I really want to know if I'm missing anything obvious in the software I'm developing.
What User Interface features that you consider important are often missing in most software?
Undo is bitchy to code, but very useful to the end users.
Save the location and size of all/any windows, so they are restored whenever the program is restarted.
Read this article on Undo from a usability expert (Aza Raskin): Never Use a Warning When you Mean Undo. Coding undo is not all that hard: examples [1], [1.5], [2].
These are some of the UI features that I often find are done badly, or are even missing:
Restoring window state properly.
Conforming to the average (non-beginner, non-expert) user's mental model.
Restricting the number of choices that the user has to make.
Restricting the amount that users have to read while using the app.
Strong consistency with other apps of the same genre running on the same platform.
A well-done Undo / Restore facility.
As somebody else remarked, context-sensitive help.
Allowing an app to be navigated without the aid of a mouse.
Good multi-monitor support.
keyboard Shortcuts
What's usually left out in UI's? Nothing! (literally. empty space). The question is better asked "What can be taken out?". When you have to think of what else your UI needs, you have already gone too far. Leaving out empty space is something UI programmers need to work on. Nobody likes feature creeping.
Remember the KISS rule.
A help menu with more than About...
Context sensitive help
Tool tips
An API and a scripting language so I can bypass the UI.
Seriously. Nothing is more tedious (and error-prone) than having to point-and-click through some repetitive process.
Right click context menu on things like tree views and grids.
We have an record management application here at work that I have to use now and then and they don't have right click on any of the documents in the treeview so you have to keep going to the bottom of the screen to mark a task as completed grrr, and no keyboard shortcuts too grrr
Consistency in your design... There are too many apps that "look" like a programmer wrote them. I can't stress enough!
Automation... Office has it, I wish more apps did.
CLI... As mentioned above, especially if it's a repetitive-wizard-type process
Templates/Presets... like Handbrake... make life easier, not to mention handy in the training process
Error/Confirm messages which don't get in the way... Unless the user needs to take immediate action, don't display a dialog. If the error is obvious, fix it for me and then tell me why
Scalable UI. With WPF this is getting easier, but it is annoying if I'm on a large monitor and I have to squint to see anything. Not to mention my click accuracy isn't that great.
UI Consistency.
I know I've been guilty of leaving out printing support in the past. I would never use it, but some of my users do.
drag and drop
clipboard
Good design.
Leave room in your dialogs so if you internationalize it, you have room for longer words (think Italian) and bigger fonts (think Chinese).
I'll add a few myself that have't been mentioned yet:
Non-modal forms that can remain open while other work is done.
Ability to view multi-windows at once (instead of tabs which show only one at a time)
Ability to have multiple views of a single window at once, i.e. split mode, or panes, or actual multiple windows into the same object.
Clean and intuitive.
Clean icons. Good icons. Meaningful icons.
I am very disappointed with a lot of icons inside applications — especially on Windows ;-)
actual consideration for the user seems to be left out quite frequently:
using terminology that makes sense to the programmer, but not the user
organizing the application's workflow for the convenience of the programmer, but not the user
not considering the user's work processes in the first place, and finding ways to help him/her eliminate steps and simplify things
Being able to use drag and drop to customise the toolbar and to be able to remove/hide unwanted toolbars without leaving an unused button whose only purpose is restore/unhide them.
Freezing the application when it's doing something that takes more than a second.
Not showing users what's happening, and not indicating how long it's going to take.
IMO, user name and password login options need work. I understand there are security concerns with each of these options. The risk-trade off is different for each application and needs to be assessed on an app by app basis.
Often forgotten or poorly implemented features include:
Remember Me
Forgot password
If you have a restrictive password policy, give me a hint as to what it is!
Range for # of characters, no special characters, required numbers or capitol letters, etc
Forgot username
If my username is not my email address, give me a hint to your username policy
Kind of too general a question. It would depend on what does the application do. One thing I see often missing from gui applications is an easy way undo mistakes and not only in the object you're manipulating but also on program UI elements. Closing some floating options panel or toolbar by mistake and then having no idea where is the thing enabled frustrates me to no end. Is it under Windows? Or under View? Was it this one? no that one is for something else entirely. Gah! what's it called?
Cycling through links and fields using the tab button.
Left click drag to highlight, right click for context menu with option to copy highlighted text. Found missing from some applications coded in Java.
Windows that snap to other windows and screenboarders. KDE and Winamp do this, and are the ones most famous for it. Why don't a whole host of other applications and DEs do this?

Are there any tools for privately showing a customer progress on their work, and having discussions with the developers? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
My boss tasked me with finding a sort of system for a customer to be able to log into a website and view their website as a work in progress (so employees would obviously have to be able to upload their work). All communication would be handled through this website.
It sounds like a forum, but customers would not be able to see each others' projects. It's private and the only people who could see all customer projects are employees.
I'm sure I could implement it using a forum and some visibility options, but I was just wondering if anyone knew of any systems similar to this.
Something like Basecamp would work - set up a Basecamp project for each customer/project and only give customers access to the appropriate projects, while your employees could have access to all.
Sharepoint is always on option if you are on the Windows platform. Also might want to look into Mingle. I haven't used it in a couple version, but it showed real promise.
Most of the people I see that sub out a website don't get to view the actual website themselves live on the Internet - because just simply its to easy to copy down the underlying HTML (unless of course much of it is server side scripts, but that's another store). Most of the time they just get screen shots (and perhaps user testing on the developers machine) until most of the money has changed hands.
Why not put up a bulletin board (like phpBB, but not necessarily phpBB) and segregate what each client can see. Then you can post screen shots in each customer's area and let them comment and discuss?
We have a Forum-style section at the bottom of the page (on our DEV sites) where people can add a Comment. The ideas is that a Tester, finding an issue, will check the Comments at the bottom of the page before adding a new (possibly duplicate) Comment.
We allow Assignment of the issues, internally, and then Assigning it back to the Author for Approval, once it is fixed.
Additionally testers mark the page as "Operational" or "Broken". We have a report of pages not-yet--reviewed - so testers can make sure they have achieved 100% coverage.
We have routines that will reset all pages to "Test required" (ready for another round of testing), optionally leaving pages marked as "Broken" at that status, or resetting everything to "Testing required".
We tend to use sub domains for this - so TEST.MyDomain.COM - and have the ROBOTS.TXT set to disallow all search engine spidering - so only those in the-know will find the site. (I suppose you could be more paranoid, and require password-access, but our clients are about to launch the site and not paranoid about outsiders seeing it - indeed, they often ask Customers etc. to have-a-look)
Having said that we do have a "Known user login" which proffers no specific admin powers, but does log any Comments to that specific user - always useful if we can't work out what the heck their Comment actually meant!

Resources