Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm currently working on my own project for an Android app, but then as time goes it feels like my app is concentrating more on another feature than what I had in mind when I first design the app.

So I want to ask how we should know when our application is too complicated (for the user)? What should we do with it? Especially when we strongly think this new feature is important.


migration rejected from Aug 30 '13 at 23:01

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as too broad by gnat, Yusubov, Corbin March, MichaelT, svick Aug 30 '13 at 23:01

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

A: When they can't keep all of the features of your app in their head? (or haven't found all the useful ones yet) – Spoike Oct 13 '11 at 9:20
The test goes like this: do you think it's complete? if your answer is yes, it probably is. :) – keppla Oct 13 '11 at 12:09

Less is more, particularly on mobile apps.

Put it in front of a few people from your target audience and ask them. I bet if you think it's a little to complex, it's way too complex... My experience is most "features" put in by software developer should be in the "For Geeks Only" menu option.

which means I need to put a lot of fixed parameter and save it for "geek mode"? – GAO-tsukai Oct 13 '11 at 5:19

The only way to find out if it is too complicated for the user is to do some form of usability testing

...a technique used in user-centered interaction design to evaluate a product by testing it on users. This can be seen as an irreplaceable usability practice, since it gives direct input on how real users use the system. This is in contrast with usability inspection methods where experts use different methods to evaluate a user interface without involving users.

Usability testing focuses on measuring a human-made product's capacity to meet its intended purpose. Examples of products that commonly benefit from usability testing are foods, consumer products, web sites or web applications, computer interfaces, documents, and devices. Usability testing measures the usability, or ease of use, of a specific object or set of objects, whereas general human-computer interaction studies attempt to formulate universal principles...

I came here to say exactly this. The only way to know is to have someone who isn't a developer or engineer actively testing. – EricBoersma Oct 13 '11 at 12:41

If you spend time up front in analysis and design, you would easily know if the application is complex or not. For example, you could determine the number of classes, tables, business rules, windows/screens, data exchange requirements, etc. You could also measure your progress against a list of functions completed and monitor the rate of change of that. If you are very good, you could even plan your features and produce versions on known intervals. However, if you build your application using the discovery approach (no clear requirements up-front, add features as you go, etc.) it becomes a guess game at best (I have nothing against methodologies advising you to do just that! This is only my opinion).

actually I want to do it just like you suggest me, but yeah...I'm still no good at it, and leave one problem, which I still don't completely understand behind to ask others who know more about it. and after learn more about that part...yeah it's bigger than I thought. – GAO-tsukai Oct 13 '11 at 5:15
If you add learning to the mix, reporting status becomes more puzzling. – NoChance Oct 13 '11 at 9:14

Your application is complicated, if there is an easier way for the user to accomplish their tasks than you present them.

So, unless you have a concrete suggestion of improvement, you can only guess that there is a better way and therefore a possible less complicated version of your Application. Because of this uncertainty, it is often good just to assume "it is too complex" to stay open to improvement.

Complicated is Different from Complex

Your application may be justifiedly complex if the Problem it solves is complex. A command line tool like this putpixel [filename] [x] [y] [color] is not complex, but it is complicated.

Photoshop, with all it's filters, layers, effects, channels, paths, canvases, etc is complex, but, assuming the problem is non-trival Image Manipulation, is not complicated

Maybe also noteworthy: thinking the question, what the 'real' problem is, may often change the perception of what would be an easier way. – keppla Oct 13 '11 at 12:20

Not the answer you're looking for? Browse other questions tagged or ask your own question.