Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I see many apps written by programmers who obviously don't use the program like the end customers in a production environment. This results in features that don't really make sense in practice, inferior ways of doing things, half-baked functionality, bad workflow, many tools doing similar things, etc.

But on the other hand, in rare cases you see the same end customers making similar apps in an effort to overcome these shortcomings, and they might not be as sophisticated code-wise as the ones written by programmers but they work much better and feel like it's written by someone who uses the program professionally just like the end customers.

So is software better designed and developed by people who will use it, people who have intrinsic knowledge of the domain the program will serve in?

share|improve this question
i was gonna answer but too many answers shot down – Michael Durrant Mar 10 '12 at 1:06

migrated from stackoverflow.com Mar 22 '11 at 6:52

4 Answers

up vote 7 down vote accepted

You need both, people who will use the software informing the developers how well what the developer created works. It needs to be a collaboration between people with business knowledge and people with software development knowledge.

share|improve this answer
I see what you mean but the problem in that case IMO is this person who helps shape the software can't stay ahead of the game, just by doing this, but not doing what he's supposed to do professionally. Kind of like teachers who teach film when they don't do anything anymore (if at all they have ever done). – Joan Venge Mar 21 '11 at 17:18
@Joan: You don't want super users to design the user interface for the same reason you don't want programmers designing the user interface. Being a bit behind state of the art isn't a liability in user interface design. – Gilbert Le Blanc Mar 21 '11 at 18:54
Yes but I wasn't just thinking of the UI but everything from workflow to functionality, etc. – Joan Venge Mar 21 '11 at 19:40
that's going to happen in any field- you're going to spend part of your time doing your job, part of your time collaborating with others needing to understand your job, and part of your time 'keeping up' in your field – Beth Mar 21 '11 at 19:42
@Beth: True but I was thinking mainly as someone who needs to do his job using the available tools can come up with better tools if he has the technical knowledge but not switch his efforts to another job like trying to shape up an application. I think this would still be better, so I agree, but IMO it would be better if this person can develop the app and then do the same beta test like feedback from other industry pros and update his app. I guess it's a tricky line to draw. – Joan Venge Mar 21 '11 at 20:47
show 1 more comment

Generally speaking this is the role of Business Analyst.

http://en.wikipedia.org/wiki/Business_analyst

share|improve this answer
Thanks but how is the BA gonna keep up with his actual industry (say film, or games or some other niche market) if he doesn't do it anymore? – Joan Venge Mar 21 '11 at 17:19
1  
Thats the conundrum of advancement into these sort of specialised areas: "We the unwilling, led by the incompetent, dictated to by the clueless"... etc etc. The be in a leadership position and stay technically relevant is very hard. I did it for over 15 years, usually by spending 40%-60% of my time actually doing real down-n-dirty work. And fighting off my managers who thought I should leave that to others. – quickly_now Mar 22 '11 at 6:58
I think ideally the BA keeps his finger on the pulse however he can, but it should also be noted, that he really only needs to understand the users problems and requests and translate them to actionable items for the development team. He doesn't necessarily have to be an innovator in the industry to be effective. – Matthew Vines Mar 31 '11 at 15:47

You can iron out a lot of issues using Hallway Usability Testing.

Also, if you have a good product management team, they should be doing some alpha and beta testing with actual real-life clients. That can provide a lot of good feedback from the field before features and GUI flow are set in stone.

In short: Yes. It's good if the development team are experts in the domain that a product is being written for. But you can use the above to mitigate these problems very well.

share|improve this answer
Thanks but I think it's not enough. Because #1 companies try to appeal to new users not existing ones so even though I am also in some betas of the apps I use, they rarely listen. You say something and other beta testers love it, and agree with this change to be made, even though it can be a 1 min work, they don't do it. You tell them change this to that, and 100 people say do it :O But they still ignore it and say "we know what we are doing", etc. But if it was my app, and I hear a feedback like that, I would be like "great idea, let's change that", and be happy that my app got better. – Joan Venge Mar 23 '11 at 17:33

Would you ask a cabinet maker to make his own saws? More generally: would you ask a tool-user to make their own tools?

Yes, you would end up with a tool that works exactly as that tool-user and possibly many of his/her colleagues like(s). However, questions can be raised:

  • Is making a saw, hammer or chisel the best way for a cabinet maker to spend her time? What is the value added here? I would think that a cabinet maker's time is best (most effectively and profitably) spend making cabinets.

  • Is the quality of the tool up to the level of use it will be subjected to or will it break after a short period? Making a hammer is something completely different from using a hammer to craft a bench and requires a different set of skills and mindset.

With software you get the added complexity of changing wishes/requirements over time. While making his "ideally suited" piece of software, someone untrained in and unburdened by what is required to make it maintainable and extensible, will generally create something that will detoriate even faster than software created by people whose specific job it is to create, maintain and extend software.

So, by all means, involve the users in the design, but keep them away from turning that design into code.

share|improve this answer
Thanks but it's not the same thing IMO. I don't know about cabinet makers but in some fields certain people already use programming in their daily jobs even though they aren't programmers per se. Think of shader technical directors in the film industry. They write code all the time too even though they are artists, but the tools they use is rarely ideal. But if they could make their own, I am sure, and also have seen some examples that would be much more successful. Although not saying it's gonna be 100% better. The person also needs general programming knowledge, etc. – Joan Venge Mar 23 '11 at 17:30
-1: Would you prefer a cabinet maker who made cabinets for his own kitchen? Of course you would. Case closed. – Jim G. Mar 23 '11 at 17:59
@Jim G. You didn't get the point. Of course a cabinet maker can make cabinets for his own kitchen. I don't want him making the chisel and the hammer to make the cabinets in his own kitchen. Nor do I want a chef to make his own kitchen. I may want him to design his own kitchen but let a cabinet / stove maker make it. – Marjan Venema Mar 24 '11 at 6:50
@Joan. Yes I do know some people have programming as part of their "normal" job. And those people may be very qualified to develop their own stuff. I still question their ability to make something that could easily be used by others as often it is way too specific to their needs, and I still question their ability to make something that would be up-to-par in many non-functional requirements aspects, simply because that isn't their focus. – Marjan Venema Mar 24 '11 at 6:56

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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