Finding the right format for users to edit and view your Eclipse plugin’s data can be tricky. Eclipse provides many different types of editors for modification of its resources. Some examples of these are the Java, Text, JSP, XML, Ant editor etc. It also provides tabbed editors like the Plug In Manifest Editor which can have multiple sub editors as tabs in one editor. A simple example template to extend the tabbed editor when creating a new plug-in, is provided in Eclipse by default. For our project we needed to add a compare editor and a GEF editor as sub editors. This post should help you become more familiar with creating custom tabbed editors in Eclipse.
One of the nice things about being Software Developers, is that it’s really nice to spend our time working on cool ideas: building out systems that help in situations where no solution currently exists. The problem is that often these cool ideas fail. Yes, using an Agile approach helps significantly, especially when customers/users request features. But often customers don’t realize what problems they need solved or what developers are capable of. Skilled engineers have the opportunity to really push the envelope with new and innovative ideas. The challenge then becomes making sure that these new ideas actually meet a need.
Recently I was testing a form for uploading a diagram to a server. Entering a name and description was easy enough but choosing a group to add it to caused some frustration. I had forgotten to add a new group for my diagram! The only solution available to me was to cancel the dialog and open a different one to create the group; a frustrating procedure. Imagine how much time is wasted every day by minor frustrations like this.
Forcing a user to make decisions (uploading a diagram) before all the necessary information is available (created groups) is the problem of the Cognitive Dimension Premature Commitment. If you have ever taken an online survey you have probably encountered this problem. Many surveys consist of multiple pages; users are often unaware of the type and number of questions that will be asked. Showing the user the number of total pages and their corresponding headers will allow users to confidently add or modify content during the current phase without having to backtrack. Premature commitment causes problems with all types of actions performed by users; whether it is the creation, modification, or exploration of content. It should be avoided at all costs.
read more »
Imagine having to use MS Notepad instead of your favorite IDE for the next week. That twisting pain in your gut is partially due to Notepad’s high Viscosity Cognitive Dimension. Removing Viscosity from your software will increase its usability dramatically. A Viscous application is resistant to change and small modifications are often difficult for the user to execute. There are two main types of Viscosity: Repetition viscosity and Knock-on viscosity. Repetition viscosity occurs when one task requires many individual actions in the software. Knock-on viscosity occurs when making one small change requires many additional changes in order to restore consistency.
Eclipse effectively reduces viscosity with its many helpful features. AutoComplete and Refactoring/Renaming actions reduce the need for changing/adding the same field or method name multiple times. Adding features is a common solution to Viscosity problems but it often adds additional abstractions that can increase your software’s learning curve.
Viscosity can be very high when using MSPaint or any other simple graphics editor to create UML diagrams. Moving a single element requires you to redraw all connecting relationships. This is the main problem point that UML diagramming tools address. Some types of scheduling software also have viscosity issues. Changing the time of one meeting can mean changing all subsequent meetings.
As a developer it can be easy to ignore viscosity. Many times common repetitive tasks are ignored in favor of implementing interesting and novel features that do nothing to help alleviate the underlying problem. The best solution is for developers themselves to constantly use the product they are developing; in addition to listening closely to customer feedback. Remember, according to David Platt “your users are not you!”.
One of the most interesting recent developments in the software industry is the change in focus from processes and tools to users and usability. One solution is to follow the advice of David Platt and other prominent thought leaders on the subject. But there is more to the story; results from Cognitive Science help us understand the inner workings of the mind better as such allowing us to create superior user interfaces.
We are constantly being inundated with all kinds of important data: software performance tests, website statistics, usability studies, and more. Transforming this information into usable user interfaces can be a challenge.
Recently Microsoft NERD hosted a talk by David Platt, and according to David, users think that today’s software sucks. He says it is overcomplicated, too hard to use, and simply doesn’t get its job done. It is true that software is a top consumer complaint. David cites statistics from the Better Business Bureau regarding most complaints received per industry, and software industries appeared three times in the top 7 in 2006 and three times in the top 5 in 2007.
But before you slit your throat, I say consider when viewing these statistics how ubiquitous technology and software services are today. Even if a much smaller industry sucked a lot more, software industries would still rank higher in a list of the number of received complaints simply because the number of consumers in the small industry is far less than the number of software users. Really what I’d like to know is the number of complaints our industry receives compared to the number of possible complainers (our users). Of course, regardless of whether these statistics are the best gauge of user satisfaction, it would be foolish to not make an effort to determine what the complaints against your software are or to ignore major design flaws.