Features of a robust WinForm application - winforms

[Based on the strong comment below (dated April 7 and 8, 2010) from when I originally posted this question, I took a hard look at what I wrote and asked myself "Huh? What am I really after here?" I decided drastic action was called for: discard the original text, make the question simpler and cleaner, and focus on what I really want to get out of it. So here is the new, May 3, 2010 version of the question]
Everybody "knows" what constitutes a clean, robust, easy-to-use WinForm application. But what, exactly? Here is my starter list. You may not agree with all of these (some folks, for example, really dislike a tip of the day), which is fine, but it gives you the general idea.
"About" dialog
Tooltips
Splash screen
Tip of the day
Checking for updates
Persisting settings across invocations
Progress indicator for long operations
What else would you include?

Usability is far more than what you talk about above.
For example, a component set in .NET for WebForm may be usable to a particular type of user and not another based on any number of human factors influencing user performance.
Usability is about understanding your user and their context of use to optimise your system's design to maximise your users' performance.
The above is very narrow in scope from a usability perspective. Maybe if you tell us something about the type of user the above works for it would be more relevant. Also, you best be able to back up your points above as usability is measurable and you don't want to be advocating guidelines for the developer community to implement that are not valid.
But it is good you are interested in usability. So please keep exploring this area

Related

Develop an classic UI or be bold with a newer design?

Forgive me if this is the wrong place but I am curious as to how other programmers feel about this topic:
I am currently working on my portfolio site, it is being designed and built in silverlight 4. I initially started off with a typical stylised e-folio theme much like a standard website in terms of layout and flow.
As I work more in the concept stages something has struck me. Am I trying to shoe-horn yesterday into today? What I am talking about is UI expectations. I'm all for clean user interfaces but that does not mean they should not take advantage of new concepts in presentation right?
If you where to develop a site in silverlight as your own portfolio piece would you stick to the tried and tested "website" feel or would you try to come up with a UI that is intuitive and complements the technology?
I feel that UI discussions are all the more important now that all forms of web development are allowing better methods to engage the user.
One of the most important things in UI design is to avoid being "clever". Understand the cultural, psychological and experiential expectations of your users and meet those expectations, don't challenge them. If a user has to learn your UI concept, or an unusual mental model of information organization, you have failed.
Read The Design of Everyday Things and Designing Visual Interfaces to dig into these ideas more deeply.
There is (very nearly) no such thing as a new UI scheme - simply new arrangements of the basic concepts of user interaction - see the iPod click wheel, for example. Almost without fail, anyone who thinks they have come up with some great new interface concept has actually just come up with crap that doesn't follow any of the rules of UI design - and it's bound to frustrate users, make them feel stupid, or make them think the designer is stupid.
If you understand these basic pieces, you can use new technologies like Silverlight to put them together in better ways than ever before. Again, the key is understanding them and what drives them, and how they align with the user's conscious and unconscious needs.
There's two answers to this: macro and micro.
On micro level, the usual UI design idea is to NOT violate the users' expectations.
If they expect a certain type of widget/flow/look to do "X", don't make your site do "Y". It confuses or even frustrates the users.
However, you can always come up with new widgets/paradigms! (an example would be expandable panes upon introduction of JavaScript)
On a macro level, if you can come up with a new work/view/data flow or feel due to new technologies used (Silverlight), most certainly try it!
However, as usual, follow the Nielsen mantra... Hallway test!
Come up with an idea, prototype, and try it out on 5 people you know (coworkers, friends, family) to gauge usability "in real life".
I would avoid making a Silverlight application that is the same as a web page. But were I to make a portfolio, I wouldn't put all my eggs in the Silverlight basket either. (Well unless I had the money to wait for a Silverlight job.)
I would look to embed a couple small applications made in Silverlight. Depending on what you want to emphasize, it could even be something as simple as a calculator with cool effects on the keys. Another idea is some kind of feed reader.

Is there a XAML/WPF/Silverlight style guide?

From .NET Rocks! Show #488:
Richard Campbell: "In the GDI world we
got a document from Microsoft that
said you will build your apps in
battleship gray and here's now they
should look: File goes here and Help
goes here, and we all got that as
developers. There's no book like that
for WPF. There was this idea I've got
to find the guy in a black turtleneck
and here is his piece of software and
you guys go play nice now."
I think Microsoft now wants every Windows application to look like the ugly, difficult-to-use, hardware-bundled crapware we all hate!
Is there no such best-practices document?
There is a Windows User Experience Interaction Guidelines document that Microsoft makes available. It might be along the lines of what you are looking for, but it isn't specifically a WPF or Silverlight best practices guide.
Nobody has paid much attention to MS ui guidelines in a very, very long time (including MS). It is a big part of the reason why every app on windows looks and behaves different from every other app.
Depends on the guidance you're looking for. The primary reason everything was battleship grey in Winforms was less because the Microsoft guide said it should be (it didn't) and more because that was the default and it was a pain to write it differently. Even now, I would imagine that the bulk of the LOB apps written with Silverlight or WPF will use default colors and styles for exactly the same reasons.
But a lot of the other UI guidelines can still apply. If you want something the looks and feels familiar, there's no reason that you can't make a standard menu bar with File, Edit, View, Help, etc. You can still use the same hotkeys, same commands, same layout for buttons and controls.
Keep in mind though that these guidelines were written with assumptions about software and computers in general that are no longer true. The dominant paradigm has changed and people are far more used to websites with different UI layouts and richer visuals. As a result, visual style is a lot more diverse and people are less likely to be confused by some non-standard layouts and controls. Which doesn't mean that anything goes, just that we should feel less contrained to keeping things in the exact same order and position, lest our customers freak out because they can't find the save button.
In short, the style guide was there because there wasn't enough for a real designer to do but still enough that we developers could make things ugly. Now it's even easier to make really ugly stuff, but there's a lot that a real designer can do to make it nice. So hire one. It's worth it.

Where can I find one of these "devigners" or "developer designers"?

My company is doing a fair bit of WPF and Silverlight development recently and we are discovering that while we are darn good at slinging code, our UI design skills lack some "pizazz".
Where does one find a "devigner", as Microsoft calls them? Are there user groups (especially in the Dallas area) with these types of artists/usability experts?
I've had experience with web developers with these skill sets, but not so many with WPF/Silverlight experience and looking on the Internet for these people hasn't turned up much.
Edit: Made this a wiki so I can get a little more feedback without people thinking I'm fishing for points. So far the comments have been helpful.
In my experience, it's pretty tough to find these guys. Posting on job boards that are known to attract exceptional talent (such as 37signals and StackOverflow) is probably your best bet. You will probably end up finding someone who is a developer first and has a hobby-level passion for graphics design. These guys might not do the best work, but they will at least have both of the (mostly mutually exclusive) skills you are looking for.
A second option could be to hire a run-of-the-mill graphics designer and assign one of your developers to work with him and make all of the graphics stuff work in your application. This, of course, requires two people working on a project when you originally planned on having one but I think it's still a viable option.
EDIT: graphic design job postings/information
http://www.youthedesigner.com/graphic-design-jobs/
http://www.allgraphicdesign.com/jobs.html
http://www.coroflot.com/public/jobs_browse.asp
Even though it is getting easier to find these guys, it is still fairly hard as the skill sets are kind of mutually exclusive (as already noted) ... and because there is a training gap (most designers know only the Adobe suite of products (this is the part that is getting better).
I personally think you will find that you have to cultivate this blend of skills and that it may not be found in just one person.
One thing I would encourage you to watch is part 2 of the Hiking Mt. Avalon workshop. This part covers collaboration between the developer and the designer ... and also describes the developer/designer/integrator workflow ... which is a workflow that allows you to cultivate these types of people ... and to just deal with this difficult situation.
I personally think that it is easier to bring a developer closer to the designer world (in order to perform as your integrator/devigner ... because one of the main roles of this person is to understand the platform (i.e. WPF/Silverlight) and how to leverage it to make the designs into real live software ... without harming the design/artistic integrity.
In fact, I am an example of a developer with designer tendencies and often perform the role of integrator. I find myself spending a lot of time with our graphics artists/designers, trying to instill knowledge of the platform into them slowly but surely.
For example, showing them the slider isn't just a static graphic but a living, dynamic thing that can be restyled, retemplated, and have behavior. This is an example of trying to cultivate a designer so that he or she can perform more and more as an integrator/devigner ... and lessening the work the actual integrator has to do ... to the point where the role of the integrator may not even be needed anymore ... or looking at it another way ... having just cultivated a new integrator/devigner.
For the record, I can't stand the term 'devigner' either. I think integrator is a much better description of what the person finds themselves doing (i.e. crossing the chasm between development and design).
See these posts (1, 2, 3) for more info.
Hope that helps! You're not alone in your desire to find these types of people!
Why don't you ask on the MSDN WPF forum?
http://social.msdn.microsoft.com/Forums/en-US/wpf/threads/

Characteristics of a good UI designer

What are the characteristics of a good UI designer? How much does one have to have graphical design abilities these days as opposed to interaction design abilities. I see this of growing importance with the advent of WPF and Silverlight.
I personally consider myself good at interaction design, but would like to strengthen my skills in the graphical design area. Is it even possible to learn these skills or are you born with them? Can anybody recommend any good books or resources that would help?
Thanks,
Craig
Try the Non-designer's design book.
In my experience, interface design is a skill all in itself. Graphic designers are good at making wonderfully beautiful but completely confusing and unusable interfaces.
I have a few tricks I use but they mostly involve stealing design elements from well designed apps and websites.
In my experience, the hallmark of a good UI designer isn't necessarily a snazzy, do-it-all, isn't-that-cool solution, but generally one that's almost invisible because it just works with very little help from the user:
Controls and information are laid out logically, intuitively, and consistently.
The ease of accessing a feature is proportional to its frequency of use.
The user finds it almost impossible not to use the product correctly.
It breaks the "rules" when doing so increases its usability.
It's attractive in a "girl (or guy) next door" sort of way. Pleasant to look at, but not distracting.
I would look at any of the edward tufte books.
Jakob Nielson is a good author also.
Most people can look at user interfaces (like they look at anything graphical) and say "that looks good" or "that doesn't look good". What usually makes a graphics person able to produce good-looking material is a willingness to change and tweak things near-endlessly, and even throw out entire lines of effort, until something that looks good emerges. Most programmers do not have the patience for this kind of thing, so their user interfaces look like they were designed by someone who didn't much care what they looked like.
On a deeper level, the concept of "talent" or "innate ability" is most often used as an excuse not to even try something (e.g. "I'm not musically talented, so I'm not even going to try playing the piano"). If you want to become good at something, you have to practice it a lot - there is no alternative.
In my experience, it's a lot easier to find someone to make pretty pages, than someone who can do really amazing, subtle, non-obvious use cases. Use cases that aren't fundamentally table maintenance input forms.
If you're there already, I'd suggest you might think about finding a gui artist to pair-program with.
On the opposite side, if I find something laid out poorly, boxes that don't line up, awkward usage, poor grammar, I assume that the programmer is just as sloppy in their internal code. I expect more bugs in applications with a poor UI.
It's somewhat dated, but I enjoyed "The Design of Everyday Things". Good UI makes the user feel good without them ever noticing.
It is definitely possible to learn these skills.
What a lot of people get confused with is the difference between Art and Design. In many ways the difference between Art and Design is that Art has no understated functionality. It looks good...because it does. With Design there is usually a reason for something to exist. To be a good designer one must understand what good design is and how to efficiently break the boundaries of logic to create something that works with as little cognitive-load as possible. If a new UI design allows me to perform a task twice as fast as the old one then it is better. If I enjoy the experience of using the new one then it is better.
Of course, there is an artistic side to design, and by using flair and creativity a designer can make better designs.
If you want to become better at designing then there are two things you can do:
Read everything you possibly can about design. Find the best design Blog's and stick them in your RSS feed. Read through everything you possibly can about design.
Design something, then design it again, and again, then stop! Now, design something else...
Learn as much as you can about HCI. There are some great HCI books out there, even past the obvious choices. Read as many books as you can find.
Join a design community and monitor the work people produce. If you get the chance, collaborate with someone better than you and see how they tick.
I don't know enough about Art to say if you can learn how to become an artist. All I do know is that everyone is naturally creative; you just have to learn how to let it out in your work, that means learning how to use your tools effectively. Once you can do that then you can experiment.
I like to think that many of the standing HCI concepts we use today haven't just come from calculated thinking; more an artistic vision come to life.
it's all about the end-user's mental model - the abstract structure they form in their minds that leads them to just 'know' what to try as they explore your UI design. As a UI developer you need to clearly understand and then create that mental model for them - and a lotta times it will have nearly nothing to do with the composition of the underlying software system. So don't be surprised if some UIs are difficult to develop.
Once a user begins to visualize and embrace this mental model, they will start to explore and try things based on logically filling in the missing pieces. Good UI design will reward them with expected results, a bad UI will stymy and confuse and they'll wanna hunt you down.
Great UI means:
All the tools/data you see are actionable
That is, everything on the screen has meaning. If it doesn't have meaning or doesn't affect what you're going to do next, it shouldn't be there.
Understanding and using conventions
This is most of the time. Occasionally a great UI designer invents a new interface model (tags were invented to better handle photo-sharing).
Making everything frictionless
If you want to do something, you want to do it in as few steps as possible.
Making everything clean and understandable to the eye
You can't diminish the need for good UI design to at least be palatable to the eye. If you can't digest something visually in a very short amount of time, it might not be a good example of good UI.
About Face is a nice book too.
Subtlety is always something good to watch out. Harsh gradients and some color combinations are just a pain.
As a resource for designing user interfaces in Windows, I'd say that the Windows Vista User Experience Guidelines offers great tips and examples on designing user interfaces.
It provides both good and bad examples of user interfaces from actual Microsoft products, so I'd say it's actually quite objective and a valuable guide to use as a reference when learning about user interface design.
As it is designed as a guide for Windows Vista applications, it would fit in well with UI design for WPF, but the tips offered are general enough that they can also be applied to user interfaces that aren't Windows-based as well.
I'll add a pointer to a related question: Java User Interface Specification
Joel Spolsky's got a simple, elegant idea in the "Hallway Usability Test," as well as a series of posts on UI design.
I suppose the first book I'd suggest is 'the inmates are running the asylum". It takes a bit to get into, but it turns out to be a great book.
Online...
the w3's got some great ideas about how to design web pages.
The zen of palm coding should be required reading for gui design for pda designers.
This can be debated until the end of time, personally I believe that interaction design and graphical design are two quite separate things.
But both of them van be learnt, at least to a satisfactory level. You'll probably never be4come truly great at it unless you have a "talent" for it.
A book that I myself havn't read but I have heard many people recommend is "Don't make me think" by Steve Krug.
The sites I recommend for UI and design specifically are:
Alert Box, about web design, in particular. Good examples, use cases, and studies there.
Humanized, design principles. Check the blog too, specifically this and it's setup article.
Aza Raskin's Blog. He's part of Humanized (and now Mozilla), and his personal blog is a mine of insightful commentary on interface design.
The interesting thing about these sites is that they don't just give examples of UI "do's and don'ts", but back these examples up with specific metrics and methods that you can actually use to measure how "good" your UI is. Aza's blog is particularly interesting because he goes through his design iteration on several projects he's been part of, and talks about the "whys" for a lot of the UI decisions that were made.
Lots of links here to good guides, but the initial question remains: "What are the characteristics of a good UI designer?"
The ability to view a process, system or practice, and design an interface that makes the greatest improvement to it.
It's not about pretty interfaces, it's about what works best in that exact situation. And my advice for becoming a better user interface designer is to get better at putting yourself in the user position. We could all improve on that.
You can find a lot of designers who are able to draw pretty pictures, but the best have a working knowledge of interface design. Inherent in that is the ability to anticipate how a user will interact with an application without being prejudiced by the knowledge of how that application is supposed to work.
Regarding your second question - in my opinion, the programming model of WPF and Silverlight allows for a clearer separation between designer and coder (i.e. Microsoft Expression Design is for designers, .NET 3.5 is for coders, and Microsoft Epxression Blend is somewhere in the middle). That being said it is always better to have a UI designer who can handle both the design and the code.
And just to throw a book in there that I like - Luke Wroblewski's Web Form Design - you can get a PDF version of the book for under $20 bucks.

Business Application UI Design [closed]

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
Basically I'm going to go a bit broad here and ask a few questions to get a bit of a picture of how people are handling UI these days.
Lately I've found it pretty easy to do some fancy things with UI design and with WPF specifically we're finding new ways to do layouts that are better looking and more functional for the user, but in contrast one of the business focused guys at our local .NET User Group wouldn't even think of using WPF until it had a datagrid that he could use to make Excel like input forms.
So basically, have you rethought the design of your business apps as you move to Web/WPF/Silverlight designs, because for us at least - in winforms we kept things fairly functional and uniform, or are you trying to keep that "known" UI?
Would a dedicated design guy (for larger teams), or a dev with more design chops rank higher when looking at hiring these days? (Check out what a designer did for Scott Hanselman's BabySmash and Microsoft's Prism demo)
Are there any design hints/tips/guidelines you use for your UI - especially for WPF?
What sites would you recommend for design?
I recommend that you read Steve Krug's Don't Make Me Think first. The book has a great checklist of things that you have to take into consideration when designing your UIs. While it's focused on web usability, a lot of the lessons therein are valuable even to desktop application designers.
That being said, whether you use Windows forms or WPF or Flash or whatever new and shiny thing that comes around is, it is of utmost importance to hire either a) a real designer, or b) a development guy with a lot of UI design experience, either of which who can provide you a serious URL for their design portfolio. It will help a lot not only in improving the design of your application but also unburdening your developers from thinking about UI design, and allow them to focus on the back-end code.
As for "business focused" guys -- it would be really great if you would get the opinion of actual customers and stake holders, and have them do some usability testing for your application. It's their opinion that would matter most.
I think it would not be difficult to get a good designer up to speed on Microsoft Expression Blend to whip up some good XAML designs that your team could use to come up with a really good product.
Here's a great screen cast where Billy Hollis goes into many of these issues:
http://www.dnrtv.com/default.aspx?showNum=115
I think WPF can greatly improve user experience.
However there are not much business oriented controls out there which means you need to do a lot by yourself.
As for designers I think it's really hard to find WPF designer now days, it still would be a dedicated programmer rather then design-only guy.
I hope that this situation will change in nearest feature.
I think it's worth at least start experimenting with WPF to be able to compete with upcoming solutions.
The whole concept of re-thinking a UI of an existing application is dependent on the target audience. For a boring business application, like accounting or budgeting, it may even be counter-productive. For one, users of those kinds of apps may have used a similar looking and feeling UI for years and years, and second, looking too "cute" and colorful can even bring a perception of toy-ishness (is that a word?) with it.
We have done several new projects with the latest & greatest UI gadgets, and for the most part for new applications it seems to be a good chance to get some feedback from a live audience. Then it gets easier to translate that feedback into existing applications.
We also have some apps which are still actively developed (and used obviously), where the UI looks almost like in Windows 3.1. They're awful, gray, clunky, and our only real designer is always trying to get a permission to bring it to the current centrury - but the biggest customer actively refuses this. They say it's just fine, people know how to use it, and it works even in their oldest computers.
#aku "I think WPF can greatly improve user experience."
I believe that WPF has amazing potential as a tool to make UIs more creative and better suited to the actual data that is being displayed, BUT..............
Just the mere act of using WPF isn't going to make great UIs appear out of nowhere.
A great carpenter may use the best wood working tools, but that doesn't mean that if you picked up his tools you'd all of a sudden be popping out fine furniture.
Using WPF over HTML/Flash/WinForms/etc just increases your potential .
If that's potential for ugliness or potential for beauty is up to you.
#David H Aust That's part of the reason for asking the question - with these newer tools like WPF that lend themselves to providing newer, more intricate, and at the same time simpler for the user, interfaces that we might need to adapt to new ways of doing things.
And trying to find out who else is adapting/interested and what they are doing, and where they get some inspiration, knowledge or help :)
IE: This is me being proactive about change in possibly the slackest manner ever, short of actively googling :)
^ That was a joke, to make it clear, I'm actually pretty active about learning new stuff, I'm just finding some of the crowdsourcing stackoverflow vs googling pretty interesting :)
Microsoft is building a DataGrid for WPF. A CTP can be found here.
#Lars Truijens - Thanks, but I think for 99% of cases that's a horrible idea, and sure, there are uses - but I've found that with WPF there's typically a much better way to do it.
Plus you can use textboxes, and use an Enter as Tab override to move through them easily and swiftly.

Resources