Slashdot Mirror


Software Development's Evolution towards Product Design

An anonymous reader writes: "The Lost Garden site has an excellent post on software development's evolution into product design. He starts with the first attempts at software design (for yourself or a colleague), and brings the conversation forward to modern design settings." From the article: "At the dawn of software history, programmers wrote software for other programmers. This was a golden era. Life was so simple. The programmers understood their own technical needs quite intimately and were able to produce software that served those needs. The act of software development was a closed circuit. A programmer could sit in a corner and write code that he wanted. By default it also happened to apply to other programmers."

165 comments

  1. Software design by nizo · · Score: 5, Funny

    Randomly throwing elements into software from the ground up rarely works well; everyone knows that early design is important for the software to be easy to use. In fact, intelligent design saves people from thinking about the software creation process at all, since the intelligent designer keeps the underlying processes of the software hidden from the user. Put your faith in a good intelligent designer and you can simply use the software and remain blissfully ignorant of how the software actually works.

    1. Re:Software design by imstanny · · Score: 2, Funny
      Put your faith in a good intelligent designer and you can simply use the software and remain blissfully ignorant of how the software actually works.

      I think you copied/pasted this from a religious thread.

    2. Re:Software design by adinu79 · · Score: 1

      hmmm ... inteligent design seems to creep into software development as well. Time to change my field of work.

    3. Re:Software design by $RANDOMLUSER · · Score: 2, Funny

      Actually, I put in some features to decieve you - to test your faith in the software.

      --
      No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    4. Re:Software design by Anonymous Coward · · Score: 0

      The catholic church called, they want their propaganda back.

    5. Re:Software design by ketsugi · · Score: 1

      Does this necessarily mean that software design and product design, like intelligent design, are in no way "science"?

    6. Re:Software design by jinzumkei · · Score: 1

      In fact, intelligent design saves people from thinking...

      Funny, I thought the same thing about ID.

    7. Re:Software design by Fr05t · · Score: 1

      Oh hey there Mr. Thompson! I always wondered where you got all your great ideas from.

    8. Re:Software design by ceoyoyo · · Score: 1

      Yes, yes it does. There's not a whole lot of rigorous scientific method applied to either of those disciplines. Much more "the book said so."

    9. Re:Software design by Heembo · · Score: 3, Insightful

      Something I hear few say, is that a LONG design process can be very dangerous to a projects success.

      For example, if you have a one year design process, you capture the ebbs and flows of the business over that period of time, more likely you have captured a fluid structure. Your chance of success drops dramatically.

      But, if you drop in, do a rapid design with elite analysts, whip out solid, secure code with an elite team in short period of time, you gain a great often undocumented benefit: You capture the business at a discrete moment in time. You codify what is exactly happening with the company at that moment. Often, the company rallies around that codified process.

      I love design - but the moral of the story is, solid, detailed design alone will not give you good software or a sucessful project.

      --
      Horns are really just a broken halo.
    10. Re:Software design by Bloke+down+the+pub · · Score: 0

      No design is science. Art or engineering, I'd say.

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    11. Re:Software design by Anonymous Coward · · Score: 0

      Hahaah, mod parent up!! Please :)

    12. Re:Software design by stonecypher · · Score: 1

      This sounds like a call for the Flying Spaghetti Architect. More companies that focus on the abstract goals of "software design" and "human computer interface" have failed in my experience than those following traditional development models. I like Joel, but I'd really like to know where he gets his numbers; they are in stark contrast to RAND's numbers, which suggest that nearly 80% of all market entrants fail.

      It's all well and good to draw a guy in a green hat on a chart. Real product design requires an understanding of the product domain, something which isn't even addressed here.

      --
      StoneCypher is Full of BS
    13. Re:Software design by Bloke+down+the+pub · · Score: 1

      You might be right. An alternative explanation is, in the vernacular, "WHOOOSH!!!".

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
  2. Software Evolution? by n6kuy · · Score: 4, Funny

    Momma told me software was created by Flying Spaghetti Monster...

    --
    If you disagree with me on social issues, then it's pretty clear that you are a narrow-minded bigot.
    1. Re:Software Evolution? by Spy+der+Mann · · Score: 4, Funny

      Momma told me software was created by Flying Spaghetti Monster...

      Eeeew spaguetti code! >_<

    2. Re:Software Evolution? by Anonymous Coward · · Score: 0

      So it is you, who writes all that spaghetti code!

  3. Walk a mile in their shoes... by Quintios · · Score: 5, Interesting
    That's one of the things I've found most interesting in my n00bie programming travels. As a chemical engineer, I find that the programming I do (mostly scripting for automating Office and text manipulation to get stuff into Excel, or Word, etc.) serves me and my buddies quite well, but the solutions developed by central IT are usually complicated, buggy, and just plain awful. They seem to have little idea of what *our* (the engineers) workflow/work process is.

    Understanding the actual needs of the enduser, I think, is one of the biggest challenges for programmers. What do they really need? Will they understand it? Will new "gee-whiz" features really be welcomed? And for that matter, do the programmers really undersand my job?

    To sum up, it's easier to program for yourself than for others, it seems. You know your job better than anyone else. Otherwise, you have to do a lot of interviewing and discussing before you code a single line. You'll end up with a *much* better product if you listen to your endusers well.

    --
    Anonymous Cowards are at -6...
    1. Re:Walk a mile in their shoes... by TubeSteak · · Score: 4, Interesting

      You sound like every engineer I've ever talked to.

      Engineers always say that if the suits just asked, the engineers would help make everything better. The suits, in the meantime, are busy doing everything but listening to the engineers.

      Why is there such a fundamental disconnect between the engineers and *everyone* else in a business environment?

      --
      [Fuck Beta]
      o0t!
    2. Re:Walk a mile in their shoes... by Duncan3 · · Score: 3, Interesting

      Why is there such a fundamental disconnect between the engineers and *everyone* else in a business environment?

      Because it's the only way to get any work done.

      Every group usually has one person that does all the work, the rest just have meetings all day and pretend to be useful. If you're smart about it, you can sacrifice a member of the group, and they go do all the meeting stuff, and the other n-1 can actually do something. Those are the companies that win.

      --
      - Adam L. Beberg - The Cosm Project - http://www.mithral.com/
    3. Re:Walk a mile in their shoes... by Quintios · · Score: 2, Insightful
      Why is there such a fundamental disconnect between the engineers and *everyone* else in a business environment?

      This is sort of off topic, but I'm answering TubeSteak's question. I would opine that it's because the suits don't want the engineers doing stuff that doesn't directly make themselves money. I've gotten into "trouble" before because of my penchant and ability with computers. Doggone it if I can take 2 hours and develop a tool that will save me 15 minutes a day for the next 5 years, or longer, why shouldn't I?

      Cause it's not my job. :(

      I think also that perhaps the suits look down on us in some ways for being overly excited about equations, calculations, and being just really really anal and annoying at times when things aren't *exactly* right. In my line of work if you're not careful people get killed. I *have* to be this way, but in the end I enjoy it. :)

      In the same respect, there's a lot of engineers out there that don't care about the nifty tools I develop. Probably because they're not really that nifty, but in the end a few of them have gotten distributed. Some people are very "toe-the-line" and if it's not an official company-sponsored work process or tool, or they didn't get training on it, they won't touch it. A lot of engineers have blinders on when it comes to their work, which is bad because what if a better widget comes out? You have to stay abreast of current and future technology.

      I could continue to ramble, but in the end I think we're all paid to do different things. The suits run the business deals and make sure the engineers are working towards making those deals successful, and the engineers are always looking to improve things. Anything. Everything. Whatever they can touch. Well, at least, that's *me* doing that. :)

      --
      Anonymous Cowards are at -6...
    4. Re:Walk a mile in their shoes... by DesiGuy421 · · Score: 1

      You've just described the entire goal of Software Engineering and its process.

    5. Re:Walk a mile in their shoes... by cwgmpls · · Score: 3, Insightful
      It's not just engineers. It is the worker bees in any organization.

      I happen to work for a school district. Our main (only?) job is supposed to be teaching students. Yet our administration spends almost no time asking teachers what they need to be more productive. They come out with these great initiatives that they've heard or read about somewhere and the teachers are supposed to fall in line.

      Then they wonder why teachers aren't more "productive". Its quite simple to figure out. The teachers spend half of the time jumping through hoops that the administration has set up, rather than the administration providing what the teachers need to do their job.

      Teachers know how to teach, engineers know how to engineer, what the suits are supposed to do is listen to what those people need and provide it for them.

      Instead, and especially with IT, the administration thinks they know it all and can tell the teachers what to do. It should be the other way around!

    6. Re:Walk a mile in their shoes... by jaweekes · · Score: 1

      I think that another problem is that the marketing people and the software programmers do not agree about whom the target audience is, or what their needs are.
      Marketing wants to cover as many people as possible with the program, but the programmers want it to specialize, so you end up with MS Word which people only use 10% of its features, and those are hard to get to.

    7. Re:Walk a mile in their shoes... by Anonymous Coward · · Score: 0

      To sum up, it's easier to program for yourself than for others, it seems. You know your job better than anyone else. Otherwise, you have to do a lot of interviewing and discussing before you code a single line. You'll end up with a *much* better product if you listen to your endusers well.

      While I agree with this general idea, I have found that *a lot* of the time people find their own code better that others because, well it's theirs. If I had a dollar for everytime someone told me, "I wrote this great software! All you do is copy and paste this key word from my personal notes into this unlabled text box in this un-named window which is automagically lauched when you plug in a flash drive with the same serial number as mine! Then just hit ctrl-alt-shift-my-kids-birthday and it will populate the database for you! Well, as long the database is named in memory of my dead cat and..."

      Sure, he understands his requirements better than anybody, and his software works great for him... but it's not a "better product". It's a custom tool...

    8. Re:Walk a mile in their shoes... by ChilyWily · · Score: 2, Insightful

      In addition to many good points, the reality is that once a company achieves a certain reputation and a product (which is doing reasonably well.. even in appearance), then *everything* becomes a 'business case'. It is for that reason that so-called 'Leadership' comes from getting as much revenue as possible out of the said product... Engineering types are usually kept out of the loop - because typically they see through all this BS. Sad part is that most of them, especially the technically and intellectually capable Engineers ones don't engage themselves to the next level - so the business types implicitely take over control - then begins a long cycle of reaching SEI levels and process where as the real money, innovation and most of all, creativity, which fueled all the initial success is lost.

      bleh.

    9. Re:Walk a mile in their shoes... by Ruie · · Score: 1
      To sum up, it's easier to program for yourself than for others, it seems. You know your job better than anyone else. Otherwise, you have to do a lot of interviewing and discussing before you code a single line.

      The other advantage being that if you wrote the code yourself, you don't need to get used to it in order to be productive.

      I like to express this in terms of latency vs bandwidth - if you code yourself you save on latency, but if you have others to program you increase the bandwidth.

      Often, in software or science having smaller latency trumps bandwidth in a big way.

    10. Re:Walk a mile in their shoes... by StarvingSE · · Score: 1

      And sometimes the marketing people will go off and sell features that aren't feasible for the software people to include, or will take too long / be too expensive. In the end it makes the software team and quite possibly the company as a whole look pretty bad.

      --
      I got nothin'
    11. Re:Walk a mile in their shoes... by fossa · · Score: 1, Flamebait

      Why is capitalism (well, excluding public schools) so slow to punish idiocy? In every place I've worked, I've seen these inefficiencies from lack of communication, etc. I assumed, apparently incorrectly, that a company that behaved sanely would easily trounce such mismanaged competition. Is the mismanagement actually good management? Or is it simply impossible to have a company free of gross stupidity? The school system is a different and more depressing situation because there is little chance of competition. My mother and friends work in public schools and have many horror stories about administration mandating the latest and greatest "programs".

    12. Re:Walk a mile in their shoes... by maxume · · Score: 1

      Half of all people are below average...

      There is an interesting article or blurb(that I can't find) in Fast Company that makes the point that as organizations grow and begin to do more stuff on paper, they are infiltrated by people that are adept at pushing paper, but little else. Since they are good with paperwork, they navigate the organization well and advance/survive.

      This is one aspect of Gore that I find interesting, they completely eschew hierarchy.

      --
      Nerd rage is the funniest rage.
    13. Re:Walk a mile in their shoes... by Quintios · · Score: 2, Informative
      We're slow to punish people for several reasons, I think:

      1. Lawyers
      2. Invested capital
      3. Circumstances

      I think we try to be an understaing society, forced by lawyers suing companies for wrongful termination. Then, when you bring someone into an organization, there's a certain amount of time that has to pass while you try to make money off the person. If you pay for relocation, training, and a few months of "getting used to the company" time, you've got a lot of money invested in that person. You sometimes have to wait to see if it pays off. And then we also try to take into account the circumstances of the individual, or at least I hope we do. If that person is going through some personal trauma, we try to take that into account if they are going through an unproductive period. Of course, if #2 and #3 happen at the same time there's not much of a future for you at the company. :(

      Now, if it's been verified that you are indeed an *idiot* and management knows it, you won't be around long...

      --
      Anonymous Cowards are at -6...
    14. Re:Walk a mile in their shoes... by DingerX · · Score: 1

      I'm always fascinated by the different uses people put to software, and perpetually annoyed by the assumptions some designers have in how I'm going to use stuff as well.

      There's a sound reason why you don't want the engineers directly talking to the customers, at least outside of highly specific cases. Engineers are valuable assets, and the time spent talking to customers is the least of the worries. More bothersome is what happens if the engineer actually hears what s/he thinks is a good idea. I dunno about you guys, but for me, a "good idea" coding-wise is one that involves an interesting solution, or does something really cool, or otherwise sierra hotel. Heck, I might run off and spend two weeks on it. So someone -- a producer, say -- has to act as a filter and determine what is worth doing, and what isn't.

      Of course, this also means that the boss in charge doesn't always have a clear notion of what's important to anybody. In fact, they usually don't.

      But back to the point: designs often make bad assumptions about their demographics, often because A) They misconstrue their target demographic and B) they overrely on focus groups.

      Take Microsoft Office: has anyone ever looked in detail at the crap that's in there? There's all kinds of junk for "generic business settings". Guess what? Most of Microsoft Office usage doesn't occur in Generic Business Settings, and when it does, the business users are neither sufficiently educated nor interested to use all those features. Themes? Who writes a word document with themes? But, well, the target demographic of businessfolk says "we want to be able to do all these business-things", and so now you have a good two dozen themes for Microsoft Word, along with auto-bulleting, numbering, and every other way to add meaning to the structureless drivel that pollutes our businessspace.

      It's not that hard:
      A) Figure out what people want, technically and emotionally.
      B) Make it simple
      C) Make it pretty.

      But A) seems a mystery to most software designers. Then again, so does the opposite sex.

    15. Re:Walk a mile in their shoes... by mattkime · · Score: 4, Insightful

      bah, success ALLOWS for idiocy within a company. success isn't being as streamlined as possible. success is selling a product.

      i don't understand why you bring school systems into it. i don't know where you live, but there are extremely excellent public school systems in this country. the school system tends to be as good as the community demands.

      --
      Know what I like about atheists? I've yet to meet one that believes God is on their side.
    16. Re:Walk a mile in their shoes... by JohnnyBigodes · · Score: 1

      Simply because "they" themselves do not know what they're looking for. The latest buzzword or what is going around or where the "market" is heading is the only objective, the means don't matter at all. What they have is a concept of a "product", and a "market". The market needs carrots, so they tell you to make carrots (who cares if they themselves don't know what a carrot is?). Even if said carrots are off-coloured, rotten on the inside, and with little insects crawling out of them.

      They never care about "insignificant details" because that would take away focus from the next big product, and if people start understanding that those carrots are awful, they spend all their time making them LOOK better instead of actually improving them.

      Bottom line, after this little rant... too much abstraction is the management/marketer/whatever's problem. It's the old adage of "get it done, and don't give me bullshit. I don't care HOW it's done, just do it!". They know the company should have something done, and they find out what's the name of that "something", and that's it.

      The businesses that are actually successful are the ones that can keep the fine balance between "the product" as an abstract concept, and "the product" as a practical application.

    17. Re:Walk a mile in their shoes... by computational+super · · Score: 5, Insightful
      They seem to have little idea of what *our* (the engineers) workflow/work process is.

      This would work well if the programmer just sat down with the user, with no fixed delivery date, and they started working towards a common goal. This is similar to what you're doing with Excel and Word - you have no project manager, no "budgeted hours", no "chief architect", no "technical lead", and no "requirements design meetings". Just a problem to be solved as efficiently as it can be solved.

      Unfortunately, for the programmer, you're not allowed to talk to the users (or, at least, I never have been). Talking to the end-users (actually, there are no users - they're "stakeholders". You'll never meet them.) is for the Birkenstock-wearing, ponytailed, hybrid-driving "usability engineers" the author is so slobberingly excited about. Programmers just get 1500-page "requirements documents", all written in Microsoft Word over a six-month period of review meetings. The less actual information, the better. From those specifications, the programmers are expected to fill out an Excel spreadsheet listing the "tasks" they must complete to fulfill "requirements" with such descriptions as "6.G.9.d.z. The freemulator frooble must goblify the cooblestocken whenever the user selects the remulize option". No asking the "stakeholders" what that actually means - they're far too busy to talk to you. The programmer must then randomly compile a list of "tasks" and a completely wild guess as to how long each task might take. You can estimate any amount of time for any given task and add as many tasks as you like, as long as the total time you estimate adds up to the target date that the stakeholders made up out of the air without consulting you. Once the task list is complete, the whole list is handed over to a project manager who "manages" each task. He does so using sophisticated project management techniques he learned in a one-hour training seminar such as: requiring all programmers to attend a weekly two-hour status meeting where he solemnly reads the list of tasks, one by one, and says, "what percent complete are you on this task?", and "you're falling behind on these tasks. Can we offload some of these to somebody else?". Tasks can never be added or deleted once they project manager "finalizes" his Excel spreadsheet.

      At the same time, the stakeholders will change their minds daily. They'll randomly remove one of the 20,000 requirements (the one you spent the last three months coding for) from the requirements list and announce that they've "flexed the scope" to meet a new "compressed delivery date" (which is next Friday).

      Slowly but surely, in spite of all the obstacles that have been placed in your way in the name of improving "Product Design" efficiency, you (the programmer) will finally start to understand what it is the users might actually want and what this thing actually does. Unfortunately, about the time you see exactly what needs to be done and the best, most flexible way to do it, the "two months past code complete" date will be hit. Then you will enter "crunch time". The weekly two-hour meetings will change to daily three-hour meetings. One of the agenda items on each meeting will be to discuss how to improve programmer productivity. To make up for the lost time spent in these meetings, you'll be required to work on the weekends. Fifty new programmers will be added to the effort to "help". You'll spend 10 hours of your 16 hour day getting them up to speed. At this point, you do whatever the hell it takes to get this monkey off your back.

      Then, at the end of the year, after months and months of 80+ hour work weeks, a failing liver from your increased alcohol consumption (it's the only way you can actually manage to fall asleep) and a divorce since your wife and kids can't remember your first name or what you look like, the users complain about the stinking pile of poo that you finally were able to produce in spite of the "efficiency experts" driving the process. You see, you nee

      --
      Proud neuron in the Slashdot hivemind since 2002.
    18. Re:Walk a mile in their shoes... by ceoyoyo · · Score: 1

      Capitalism depends on people who hold capital (money). So if you're smart and you have an idea, you need some of that money, which means you need some of the capitalists. Capitalists like to think they're smart (they have lots of money, right?). Since they're so smart, they should tell you what to do. Guide you. Manage you. So they do.

      What they don't realize is that they're smart at playing certain made up games. If they would stick to those made up games and defer to people who are smart in other fields, everything would be fine. But they don't. Nobody wants to admit they're not smart at everything.

    19. Re:Walk a mile in their shoes... by Ruie · · Score: 1
      Why is there such a fundamental disconnect between the engineers and *everyone* else in a business environment?

      The engineer knows in his heart that good product means getting all the pieces done right and that any argument about what is best can be resolved by careful measurement.

      The others know in their suits that correct product image will replace in the minds of unsophisticated users what the project actually does with what the image suggests it does.

      To see what I mean just go through a toy store and then through Best Buy.

      And, just to be precise, by "unsophisticated user" I mean one that does not go to the specs and does not try to characterize the product in a somewhat rigorous fashion.

    20. Re:Walk a mile in their shoes... by Radres · · Score: 1

      Maybe because the idiot, abusive bosses are also the best at being abusive towards customers in order to make more money? In the school example, maybe those administrators are more adept at raising taxes and getting money from the city in which they work.

    21. Re:Walk a mile in their shoes... by Anonymous Coward · · Score: 0

      Understanding the actual needs of the enduser, I think, is one of the biggest challenges for programmers.

      No, that's the systems analyst's job. It sounds very much like you've worked at corner-cutting places where the programmers are expected to do two jobs at once; the programming and the systems analysis. For anything but the most trivial tasks, this usually ends up with exactly the crappy kinds of software you describe. You can get away with letting the programmers do the analysis and then the programming, but usually the bad management that doesn't understand the difference forces them to do both at the same time anyway.

      I don't see what's so difficult to understand, the difference between the two jobs is very clear. One involves talking to people and figuring out what needs to be done, and one involves talking to a computer and figuring out how to do it. If you don't understand the difference, you jump in and build something without finding out what it is that needs to be built first. That's generally a recipe for bad software.

    22. Re:Walk a mile in their shoes... by sorak · · Score: 1

      That's one of the things I've found most interesting in my n00bie programming travels. As a chemical engineer, I find that the programming I do (mostly scripting for automating Office and text manipulation to get stuff into Excel, or Word, etc.) serves me and my buddies quite well, but the solutions developed by central IT are usually complicated, buggy, and just plain awful. They seem to have little idea of what *our* (the engineers) workflow/work process is.

      Understanding the actual needs of the enduser, I think, is one of the biggest challenges for programmers. What do they really need? Will they understand it? Will new "gee-whiz" features really be welcomed? And for that matter, do the programmers really undersand my job?

      To sum up, it's easier to program for yourself than for others, it seems. You know your job better than anyone else. Otherwise, you have to do a lot of interviewing and discussing before you code a single line. You'll end up with a *much* better product if you listen to your endusers well.


      Do you think this has something to do with the fact that software (and, by extension, the programmer's job performance) is often judged, not by the complexity of its core requirement, but by the number of bells and whistles in the user interface?

      Microsoft is finally starting to get it. Their newest innovation is a command-line interface that isn't severly nerfed. They could call it "my Bash" or "shell.net", but I think they're trying to pass it off as an original idea. It took them twenty years to realize that point and click isn't the best possible interface for all purposes.

      But, I may be getting off subject...just a thought...
    23. Re:Walk a mile in their shoes... by srelnino · · Score: 1

      The solution: back to phase one. More software, of course. Programmers create software to help "business guys" define their requirements more accurately

      http://www.n8systems.com/company/index.shtml

      too easy? time will tell.

    24. Re:Walk a mile in their shoes... by happyemoticon · · Score: 1, Insightful
      I would opine that it's because the suits don't want the engineers doing stuff that doesn't directly make themselves money. I've gotten into "trouble" before because of my penchant and ability with computers. Doggone it if I can take 2 hours and develop a tool that will save me 15 minutes a day for the next 5 years, or longer, why shouldn't I?

      I've seen it before myself. A lot of bosses are afraid of your tools and scripts and ideas and time-saving, with good reason:

      Manager is employed to hire 5 people to do stupid, repetitive work. You start getting too smart and automating stuff. Now, as long as there's a steady supply of work, the department won't go away per se. But if you can do the work of your 4 colleagues, then there's no reason to have them around. In that case, your boss is managing one person, which means they're superfluous. This means that if you went over your boss's head, you could pull a coup d'etat and replace your boss.

      This is where it gets ugly. The boss can't openly criticize you for being more efficient, because you would immediately go over their head and say, "Dude, my manager's reprimanding me for making our clients more money." That's when they start cowing, backstabbing, and generally playing manager games. And it's risky for you, too, because even though the higher ups might be clued in to the fact that the job can be performed by one person, you might get branded as "not a team player" and axed too.

      My advice is if you're like me and you positively, biologically can't do a job without making the job itself more efficient to perform, A) Start looking for another job, and B) In the mean time, keep quiet about your scripts and do 8 hours of work in 2.

    25. Re:Walk a mile in their shoes... by jdb8167 · · Score: 1

      wow! rant of the year and me with no mod points. virtual +1 insightful

    26. Re:Walk a mile in their shoes... by Anonymous Coward · · Score: 0

      You need better management. Developing a product is easy if you have (or are) an experienced manager who knows how to manage time with dependencies in mind. And knowing how to say "No," or "Sure, but that will cost extra" is a good thing.

    27. Re:Walk a mile in their shoes... by Blakey+Rat · · Score: 1

      A little off-topic, but take a look at:

      http://blogs.msdn.com/jensenh/archive/2006/02/17/5 34099.aspx

      It's a blog from one of the UI guys working on the new Office 12. It sounds like they're addressing all your concerns in the next version, and I'm pretty excited about it myself.

    28. Re:Walk a mile in their shoes... by computational+super · · Score: 2, Funny

      And then an anonymous coward says, "Well, you should have said no", so you hunt him down, tie his hands behind his back like Kevin Spacey did to that fat guy he made eat the spaghetti sauce in "Seven", and force him to implement a fully SOAP and BPEL compliant Web Service-based SOA solution. In Lisp. Using Notepad. On Windows 3.1. In a shared cubicle.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    29. Re:Walk a mile in their shoes... by Quintios · · Score: 1

      I wish I had some mod points to give you. Excellent comment.

      --
      Anonymous Cowards are at -6...
    30. Re:Walk a mile in their shoes... by not-enough-info · · Score: 1
      Engineers always say that if the suits just asked, the engineers would help make everything better. The suits, in the meantime, are busy doing everything but listening to the engineers.

      Okay, so you say... but did you write it down? Type it up? Ignoring what people say is easy. A written document can't be ignored. Write a proposal, CC it to their boss. Even if it gets shot down, you are still creating a basis on which you can build future arguments/suggestions on. When your boss tries to stick it to you, you stick your memo or proposal to them. If you find that your technical suggestions are being ignored, change your approach. Speak with their wallet. All you have to do is show what it saves (the bottom line) and you will see action.
      --
      ---k--
      </stupid>
    31. Re:Walk a mile in their shoes... by bensch128 · · Score: 1

      Yes, yes...

      A beautiful tale of the horrible isolation placed between the programmer and his users told in exactly detail....
      Mod up +infinity.

      Did anyone else notice that the article writer works on M$ expression. Perhapes this is a PR piece for M$ expression?

      Cheers,
      Ben

    32. Re:Walk a mile in their shoes... by typidemon · · Score: 1

      Why is there such a fundamental disconnect between the engineers and *everyone* else in a business environment?

      If management and marketing don't communicate you get some pretty woeful marketing campaigns. The difference being is that marketing and management are related fields. In fact they are incestuous by nature, which puts them in a field called business. I mean, a manager probably can make a good estimate on how many man-hours marketing would need to put into a new ad campaign before he went downstairs and asked them too.

      [

      However, when dealing with engineers, managers don't intrinsically understand the complexities of what they ask, and engineers frequently don't know how to define that complexity. In fact, this problem exists when dealing with engineers, designers and artists, they each perceive the world differently than business does.

      Hence, for business to truly understand these disciplines and for these disciplines to make themselves understood, they need to communicate with each other in detail.

      If you simply looked at the way any pure business discipline is trained, and then compared it to the way anybody in engineer, design or art is trained, it becomes obvious that there are massive differences. Well, at least when I was living with an engineer and a business student at University it was pretty obvious ;p

    33. Re:Walk a mile in their shoes... by Anonymous Coward · · Score: 0

      Half of all people are below average...

      Wrong. Here's a free clue for you: understand what words like "average" mean before you try to use them and prove yourself an idiot.

    34. Re:Walk a mile in their shoes... by tharkunarutha · · Score: 1

      Yeah sure, everyone else is at fault and the engineers are always right :) Mod parent +5 Funny.

    35. Re:Walk a mile in their shoes... by Anonymous Coward · · Score: 0

      All of the other things make that sound scary... but add LISP and it can be done in one line (a (really (long (line...)))

    36. Re:Walk a mile in their shoes... by ipfwadm · · Score: 1

      A written document can't be ignored.

      Yes it can. I've had it happen. And after a while of getting shot down, you begin to not want to bother spending the time to write up a formal, yet ultimately worthless, document.

      Write a proposal, CC it to their boss.

      I don't know about your situation, but a lot of folks don't appreciate it when people go over their heads.

    37. Re:Walk a mile in their shoes... by Rank+Outsider · · Score: 1

      It seems very unfashionable to say this, but one of Douglas Engelbart's prophetic warnings back around 1968 (the time of his famous demo of the ARPA prototype, use of a mouse, hyperlinked graphics, etc) was that the user should always remain more intelligent than the machine. The contrary would be a disaster for civilisation and human evolution.
      "Ease of use" seems to translate for most current design needs into: "don't need to understand". And this is allowed to run riot by the duty of software companies to make profits for their shareholders.
      Dangerous stuff!

    38. Re:Walk a mile in their shoes... by voidphoenix · · Score: 1
      >> Half of all people are below average...

      >Wrong. Here's a free clue for you: understand what words like "average" mean
      >before you try to use them and prove yourself an idiot.

      GP's usage of the word average is correct. Average is a synonym for central tendency, and is measured in different ways. The three most common ones are mean (the meaning you seem to be using), median (closer to what GP meant) and mode.

      The most general definition, central tendency, works well with the GP's generalization. Besides, the statement Half of all people are below average is usually used in a humorous fashion.

    39. Re:Walk a mile in their shoes... by MrResistor · · Score: 1

      Indeed, it only took me a year or so in the corporate world to figure out that corporations survive dispite management, not because of it.

      Then again, I already had opinions about people who study business from tutoring math in college...

      --
      Under capitalism man exploits man. Under communism it's the other way around.
    40. Re:Walk a mile in their shoes... by TubeSteak · · Score: 1
      Write a proposal, CC it to their boss.

      I don't know about your situation, but a lot of folks don't appreciate it when people go over their heads.
      BCC it to their boss?
      --
      [Fuck Beta]
      o0t!
  4. Extreme Programming by StarvingSE · · Score: 5, Insightful

    This is why I think certain elements of extreme programming should become prominent in the software industry, particularly user stories and incremental releases.

    The non-technical customer can provide the programming team with "stories" about how they would like their software to function, and rate these stories based on priority. It is up to the programming team to figure out how to do the technical work in the software to accomplish make the story (or use case) a functional part of the software.

    Then, the team can incrementally add these user stories and show the customer a working prototype, so that if the design isn't exactly what they expect, it is easier to change and hopefully to maintain.

    --
    I got nothin'
    1. Re:Extreme Programming by $RANDOMLUSER · · Score: 1

      I think that extreme programming calls for "extreme user interviews" first. Maybe rubber hoses.

      --
      No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    2. Re:Extreme Programming by TastesLikeChicken · · Score: 1

      XP allows the code to be of higher quality, and it ensures that the UI will not be horrible. XP won't help create an innovative-intuitive UI that users will enjoy using.
      Developers are really good at something most people can't do at all, writing software(writing instructions for a non human that only understands explicit-logical- written instructions). Developers are not designers.
      By the time an XP team has a first version of thier UI together they've already begun locking themselves into a way of doing things. There is a resistance to change existing UI code (last time I checked UI was pretty hard to refactor).
      When users write thier stories for an XP team they don't include tacit information. A 'good' designer is skilled at turning tacit information into explicit information. A 'good' designer will also go through UI sketches with users (paper prototyping, iterative development) to find out what they want before anything is commited to code (commiting things to code is expensive).

      --
      Until our children are no longer molded into castrated sheep democracy remains a fake and a danger. -A. S. Neill
    3. Re:Extreme Programming by anomalous+cohort · · Score: 1

      Scrum is another development process that attempts to address the "silo's of expertice" problem.

    4. Re:Extreme Programming by EXMSFT · · Score: 1

      User stories - done in a vacuum (as they often are, and were in a division of my former employer (ahem) are more than worthless. They are dangerous. Developer: "We're writing what the customer wants. See? It's right here in the User Story!" Product Manager/Program Manager: "That's great, has a customer actually seen the User Story?" Developer: "No, but we're pretty sure it reflects what they want." Product Manager/Program Manager: (sigh) The critical aspect is showing a use case to a customer. If it doesn't stand on it's own, reasses the need overall.

    5. Re:Extreme Programming by GlassHeart · · Score: 1
      The non-technical customer can provide the programming team with "stories" about how they would like their software to function, and rate these stories based on priority. It is up to the programming team to figure out how to do the technical work in the software to accomplish make the story (or use case) a functional part of the software.

      Nice theory.

      The non-technical user, by definition, does not know what is practical for the software to accomplish, and will likely overestimate or underestimate what it can do. They are also frequently unsure of their feature requirements, nevermind relative priorities. What you almost always need is somebody who can understand what the user needs (even if they can't articulate it) as well as technical limitations: a designer.

      Old story: lots of users say they want software to help them manage personal finances, yet few actually buy the software when written, and even fewer actually use it. It's a lot more tedious than they imagine, for a lot less real benefit than they imagine. Users "lie" like this all the time.

    6. Re:Extreme Programming by StarvingSE · · Score: 1

      The users/customers/whatever you want to call them are the ones who write the user stories, so of course they see them. Thats the whole point of doing it; get the users and developers to interact during development. I think you are thinking about commercial off-the-shelf software, and this practice wouldn't apply to that sort of product.

      What I'm talking about is when a company contracts a software developer to create some in-house software for them, where the user base is a great deal smaller and can more easily work directly with the programmers. In this way the customer gets to see each incremental version of their product and comment on it, providing valuable feedback.

      --
      I got nothin'
    7. Re:Extreme Programming by Hognoxious · · Score: 1

      What belongs to a silo? And what is expertice?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    8. Re:Extreme Programming by Bloke+down+the+pub · · Score: 0
      What you almost always need is somebody who can understand what the user needs (even if they can't articulate it) as well as technical limitations: a designer.
      Unfortunately, many people who call themselves 'designers' are basically artists and are over concerned with aesthetics.

      That aside, the bridging role you described is normally referred to as an analyst, who ideally should know the technical and the functional side; in practice, they usually know neither.

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    9. Re:Extreme Programming by EXMSFT · · Score: 1

      Don't know where you've worked - but in my experience (working with Fortune 500 enterprise customers around Windows) but they don't do your work for you.

      In an ideal world you get feedback from customers. In a really ideal world, it reflects what OTHER customers want, not just that customer.

      In a perfect world, they're smart enough to tell you what they, AND your other customers REALLY need - not swag some BS wishlist, you're smart enough to understand what they REALLY are asking for (not deliver poo), and it all works.

      But rarely (never?) have I met a customer who would sit down and to any depth write scenarios/use cases/user stories, etc for me. But they WILL look at yours, and if well written enough (if not, they won't read them to any significant level) they'll call bullshit, or tell you they love you.

    10. Re:Extreme Programming by anomalous+cohort · · Score: 1

      You got me on the spelling error. To answer your first question, you should just RTFA.

    11. Re:Extreme Programming by typidemon · · Score: 1

      Developers are not designers.

      Nice generalisation you got there. Some designers are in fact developers. Just because you're not, doesn't include everybody. Note, I also like the fact that you lump designers into the "all designers are visual designers", another great generalisation.

      By the time an XP team has a first version of thier UI together they've already begun locking themselves into a way of doing things. There is a resistance to change existing UI code (last time I checked UI was pretty hard to refactor).

      Whoa, right there. I don't know what you are preaching, but it sure isn't XP. The users drive XP development and if they want you to re-develop your UI because it looks shit, then surprise, surprise you have to re-develop your UI! You seem to be preaching, "XP doesn't work, because I don't really follow XP principles" , maybe you need to man up and do your job.

      I don't even understand your *tear* about refactoring GUI code. Refactoring GUI code happens all the time, in fact I've never written a UI that hasn't been refactored. If you have engineered your application right the first time, you shouldn't find it too hard to slap on an entirely new UI. If for some reason you can't slap on a new UI, then your application really needs refactoring.

    12. Re:Extreme Programming by Anonymous Coward · · Score: 0

      Yeah, 'cause code that is easy to change is oh so easy to maintain. Oh, wait, no it's not.

      In order to allow maximum flexibility you pretty much have to have code that is so decoupled that it has almost no cohesion. This code has been refactored so much that every single ounce of usefull work is its own class. Then, when you want to fix a bug that draws a black box in the top right corner of a particular table on a particular page when viewed in a specific browser .. well, my boy, be prepared to spend a better part of your morning stepping through the debugger to try and figure out what one of a million different stylesheets is being used to generate that table. And once you make the change and commit the changes, it turns out that it was not a bug, but a feature used in seven different ways by fourteen separate pages. Now you're stuck in dependecy hell worce than whey trying to install Wine on your favorite Linux distro.

      Not that I'm bitter or anything ...

    13. Re:Extreme Programming by TastesLikeChicken · · Score: 1

      Ok, I've never met a developer that is a designer. While that doesn't mean that they don't exist, my evidence suggests they are at least very rare. You could make an argument that everyone is a designer (a la Victor Papanek), just as you could that anyone that can string together a sentence is a writer, but I don't agree with that. Are you working somewhere where you regularly see a plurality of these developer-designers.

      As for lumping "all designers are visual designers" They're not? I'm sure I'm missing textual and audio designers (and all the excellent UI design they do), but interaction designers, fashion designers, interior designers, industrial designers, graphic designers, and architects are all visual designers in that what they're producing is usually conceptualized first in a sketch and it's initial impact is visual.

      "slap on a new UI"...for a dialog ... sure. Slap on a new UI for a designer, or for your core UI ... resistance. Any interesting, non trivial UI involves custom code (that's where you have the most potential to make real gains for most users). Anything that's standard fare (anything you could find a component for in a UI designer) can certainly be refactored without too much trouble, but when you start working on custom designer\selection components refactoring involves changing some basic assumptions that were made at the beginging of earlier sprints.

      It's not about a UI "looking like shit", those things are relatively easy to fix (totally standard and acceptable within the scope of XP). It's assumptions about "this should have a menu and toolbar". With users finding the menu's difficult too remember (from what I've read the important parts of UI are learnability, efficiency, memorability, error prevention, and asthetics) because they've grown too large over the last couple releases (which I would hope a good designer would spot ahead of time and suggest a more scalable solution).

      --
      Until our children are no longer molded into castrated sheep democracy remains a fake and a danger. -A. S. Neill
    14. Re:Extreme Programming by Hognoxious · · Score: 1

      Wrong. It does not explain what belongs to a silo. I see the word silos - nominative or accusative plural, but no posessive singular.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    15. Re:Extreme Programming by anomalous+cohort · · Score: 1
      Wrong. It does not explain what belongs to a silo. I see the word silos - nominative or accusative plural, but no posessive singular.

      Ah, you're not technical. That explains the spelling correction. Here is the relevant excerpt.

      The companies that survived the influx of designers and marketing folks often relegated the survivors to their own separate silos. Marketing people got one org tree, developers got another. Artists and usability folks in most cases were shoved in random back corners to rot in black despair. Many groups were so busy protecting their domain that it was surprising that software got released at all. Release dates slipped by multiple years as the development talent stagnated is a cesspool of misplaced process.

      Permit me to translate for you. Marketing is in one silo. Development is in another silo. Artists and usability folks are in their own silo. The marketing and development silos each have more political power than the artists/usability silo. The word silo here is not to be taken too literally. On a farm, you would put grain in one silo and hay in another. You wouldn't mix them up. The reference here indicates that members of these professions don't communicate well. Misunderstandings ensue and feelings get hurt. The response to that is they stop trying to communicate at all. The isolation of these professions causes a lack of communication that results in inefficiency and missed deadlines.

      You're welcome.

    16. Re:Extreme Programming by Hognoxious · · Score: 1

      And among that pile of obvious mumbo-jumbo you explained what belongs to a silo, just where, exactly? Ah, I see that you didn't.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  5. "It's a feature, not a bug." by GillBates0 · · Score: 1
    or in present-day parlance:

    "It's an artifact of intelligent design, not an evolutionary anomaly."

    --
    An Indian-American Hindu committed to non-violent thought/speech/action alarmed by the global explosion of radical Islam
    1. Re:"It's a feature, not a bug." by dc29A · · Score: 1

      "It's an artifact of intelligent design, not an evolutionary anomaly."

      Are you sure Windows was intelligently designed? :)

    2. Re:"It's a feature, not a bug." by MajinBlayze · · Score: 1

      Are you sure Windows was intelligently designed? :) It certainly doesn't follow "Survival of the Fittest" rules

      --
      "Hate is baggage. Life's too short to be pissed off all the time." Danny Vinyard -American History X
  6. User Centric Design! by jma05 · · Score: 3, Interesting

    That's the official name for it. Universities have been offering courses in it as part of HCI (Human Computer Interactions) for a while now.

  7. The author has no clue... by xxxJonBoyxxx · · Score: 5, Insightful

    "At the dawn of software history, programmers wrote software for other programmers."

    I thought the first programmers wrote software to figure out ballistic missle trajectories, crack ciphers, count census figures and perform other useful work. What exactly is our clueless author whining about?

    1. Re:The author has no clue... by Vellmont · · Score: 2, Insightful

      You're right, for the most part programmers were writing software for other engineers, not other programmers. The author is using a shortcut though to describe "other people like themselves". The software programmers need is tools to create software.

      --
      AccountKiller
    2. Re:The author has no clue... by Chirs · · Score: 1


      The idea is that the early computer *users* were generally also *programmers*. There were no non-technical computer users in the early days.

      The vast majority of the history of unix is people writing software for other programmers.

    3. Re:The author has no clue... by Vellmont · · Score: 1


      The idea is that the early computer *users* were generally also *programmers*. There were no non-technical computer users in the early days.


      Yes I gathered that from the article. I just disagree with this idea. As the original post said, computers were also used for calculating missile trajectories, count census figured, etc. Not everyone using and interacting with the computers was a programmer.

      --
      AccountKiller
  8. MDA by Anonymous Coward · · Score: 0, Offtopic
    Executable UML


    Executable UML is a major innovation in the field of software development. It is designed to produce a comprehensive and understandable model of a solution independent of the organization of the software implementation. It is a highly abstract thinking tool that aids in the formalization of knowledge, and is also a way of describing the concepts that make up abstract solutions to software development problems.

    This timely new book, Executable UML: A Foundation for Model-Driven Architecture, thoroughly introduces, documents, and explains this important new technology. The authors show how UML can formalize requirements and use cases into a rich set of verifiable diagrams, how it can be used to produce executable and testable models, and how these models can be translated directly into code. In addition, the book explains how individual system domains are woven together by an executable UML model compiler.

    The book is full of tips and techniques to help you:

            * Partition a system into subject matters based on individual aspects
            * Pick the right level for use case modeling to speed subject matter comprehension
            * Model classes and focus on relationships to capture subject matter semantics precisely
            * Express behavior using the newly adopted UML action semantics and action languages
            * Specify constraints using tags specified in OCL (Object Constraint Language)

    In addition, this book tackles topics of particular importance in execution, such as how to:

            * Synchronize objects by building lifecycles using statechart diagrams
            * Model relationships and contention safely
            * Distribute dynamics to avoid unmaintainable controller objects
            * Verify the models by executing test cases against the statechart diagrams and constraints

    A large-scale, fully developed case study runs throughout the book to illustrate concepts and techniques.
    1. Re:MDA by discontinuity · · Score: 2, Insightful

      So, anyone else thinking that the AC poster of the parent just might be one of the authors of the linked-to book? ;)

    2. Re:MDA by CardiganKiller · · Score: 1

      Yeah, this was cut/pasted from the book description with a little bit of editing. Referring to it as a major innovation is kind of a sham. MIT's Alloy Analyzer does the exact same things, and it's been around since 1997. The only real convenience is that it sticks to the UML standard. And who uses UML anyways? ;)

    3. Re:MDA by EMB+Numbers · · Score: 1

      Ha ha. Nice one!
      Executable UML... I'm still giggling. Is it subtitled "how to write 10,000 lines of code with 1 million pages of paper that nobody will ever read" ?

    4. Re:MDA by EXMSFT · · Score: 1

      UML, shmooml...

      Unless you have direct customer feedback driving every aspect of product development, you may as well describe any modelling, specification, or design phase as GIGO.

  9. Oh THAT kind of Product Design by Saeger · · Score: 2, Interesting

    I was thinking of the other kind of actual Product Design that we're also evolving towards. :)

    --
    Power to the Peaceful
  10. You believe in the user? by Tackhead · · Score: 2, Funny
    > Randomly throwing elements into software from the ground up rarely works well; everyone knows that early design is important for the software to be easy to use. In fact, intelligent design saves people from thinking about the software creation process at all, since the intelligent designer keeps the underlying processes of the software hidden from the user.

    RAM: "You believe in the user?"
    Crom: "Sure I do! If I didn't have a User, than who wrote me?"
    RAM: "That's what you're doing down here. Master Control Program's been snapping up all us programs who believe..."

    1. Re:You believe in the user? by skoaldipper · · Score: 1

      May the Tron gods who read this bestow upon you a multitude of mod points in their almighty musings...

      --
      I hope, when they die, cartoon characters have to answer for their sins.
    2. Re:You believe in the user? by Anonymous Coward · · Score: 0

      Crom: "Sure I do! If I didn't have a User, than who wrote me?"

      Than != then. Pay fucking attention.

    3. Re:You believe in the user? by PitaBred · · Score: 2, Informative

      Than != then. Pay fucking attention.
      I think that you may have meant "Fucking pay attention" or "Pay the fuck attention." Spelling's all well and good, but it doesn't do anything without somewhat correct grammar, especially when cursing. Otherwise, you just sound like an inbred Tourette's kid.

    4. Re:You believe in the user? by heinousjay · · Score: 1

      Pay the fuck attention.

      LOL, what?

      The OP's phrase was clunky, but this one reads like an ESL* student's first hissy fit.

      (* English as a Second Language)

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    5. Re:You believe in the user? by PitaBred · · Score: 1

      "Pay fucking attention" and "Pay the fuck attention" got nearly the same results in google (pay the fuck attention got more). "Fucking pay attention" got near double either of those.
      I stand by my statement. Perhaps you need more fucking schooling in the usage of the word fuck?

    6. Re:You believe in the user? by heinousjay · · Score: 1

      I don't care what returned more results in Google. I'm a damn good cusser, and "Pay the fuck attention" is clunky as all hell. The stressed syllables have no rhythm. Cussing is all about the rhythm and flow.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    7. Re:You believe in the user? by poopdeville · · Score: 1

      "Pay the fuck attention" is clearly synonymous with "Pay attention to the fuck." Meaningful, but different from "Pay fucking attention" or "Fucking pay attention", both of which use 'fucking' as an intensifier.

      And "rhythm and flow" is called 'cadence,' fuck wad. ;-)

      --
      After all, I am strangely colored.
    8. Re:You believe in the user? by Anonymous Coward · · Score: 0

      "Pay the fuck attention" is clearly synonymous with "Pay attention to the fuck."

      Yeah, which nobody ever says. I suppose you go around with your annoying kid brother and tell people to "pay the fuck the attention he deserves"? Nah, you don't. And besides, you never call someone a "fuck". It's always "dumb fuck", "little fuck", "you fucking fuckface" etc. Get with it sunshine.

  11. Can it really be engineering right now? by MikeRT · · Score: 5, Insightful

    People often treat code like a paper. You want something added, you type it in and flesh out the paper. I think that this is why software often ends up working so badly. If people would treat their programs more like engineered pieces of hardware than written works in progress, things would be better. It just seems to me that people all too often forget that software development requires real planning and that it's not as simple as "I want feature X" in many cases. Maybe the solution is extreme extensibility. Cars can be modded in pretty complex ways. Perhaps the solution for software development is building a consistent core that just works and then plugging new modules into it, sort of like Eclipse.

    1. Re:Can it really be engineering right now? by Chirs · · Score: 1

      "If people would treat their programs more like engineered pieces of hardware than written works in progress, things would be better."

      There's some pretty bad hardware out there. Uncomfortable chairs, sofas that cause back problems, counters at the wrong height, non-intuitive controls, etc.

    2. Re:Can it really be engineering right now? by Vellmont · · Score: 4, Insightful


      If people would treat their programs more like engineered pieces of hardware than written works in progress, things would be better. It just seems to me that people all too often forget that software development requires real planning and that it's not as simple as "I want feature X" in many cases.


      I think there's a lot of truth to this. Design requirements changing in the middle of development, or being extremely vague is a killer. It's like someone making a building and saying "I want this building to have between 1 and 3000 bathrooms"). Clearly that's insane.

      --
      AccountKiller
    3. Re:Can it really be engineering right now? by espressojim · · Score: 1

      What if your software design is a work in progress?

      Let's say you're writing analysis software. Every time you do analysis, your results inform you as to what you have learned, what you haven't, and what you can do in addition to take the next step?

      This is the world of scientific computing, and it is always in flux. Analysis changes, because you're designing new methods as you go. You may add completely different sets of data as you go. Your needs may change dramatically over the course of the work.

      How can I treat this sort of design as hardware? None of it's set in stone, or anything even close. All I can provide are: flexible 'plug in' solutions, use smart design for the more obvious parts (databases, ORM frameworks, numerical frameworks, etc), and try to write each part to be as reusable and flexible as possible.

      Not everyone has to write petstore over and over. Sometimes, the only way to find out where you're going is to take a step forward.

    4. Re:Can it really be engineering right now? by renehollan · · Score: 1
      Perhaps the solution for software development is building a consistent core that just works and then plugging new modules into it...

      Yes, but that takes time, and time spent is market window closing.

      It's a fine approach when developing for one's self because the "market window" does not close (except if what you need suddenly becomes available elsewhere, in which case, you-the-customer doesn't care that you-the-developer was too late).

      One would think that it is also fine when developing for a customer who's specific needs you know you don't quite know. After all, if you get the gist of what the customer wants, you can design a system that is tunable to the specifics as you determine what they are. The problem is that the further away from the specific scenarios you get for lack of effective communication, the more you have to generalize, and the longer it takes. One can build a wonderful framework, only to find no time to finish the "plugins".

      So, there's a push to get the specs "perfect" up front, so such generalization isn't necessary.

      Welllll now, that's a fool's errand, isn't it?

      Perfect?

      The more time you strive for perfection in specification (which you will never achieve, except in toy applications and fairy tails), the less time you have to generalize to provide wiggle room for imperfections, and you'll be right back to square one.

      What really angers me about the neat little diagram is the "pipeline" approach with the programmer at the end: clearly, with all the "up front" effort, the programmer can't help but "get it right", and if not, it's the programmer's fault if the customer is unhappy. After all, we put all this "effort" up front.

      Effort does not equal results.

      The right approach is to engage the customer in the process, and not just some specification phase of an outdated waterfall model. Given the customer's stated requirements ("this way", "that way", and the most important, "I don't know yet") and the technical feedback ("easy", "hard", "impossible", "inconsistent", "yeah, we can make that easy to change"), one can incrementally refine what one is doing, and chose the right mix of generalization and "setting in stone" to get the job done.

      But, this requires ongoing translation between customers and engineers, not just some up-front "understanding" and "getting paid" by "artists" who then are absolved of all responsibility. For that to work would require technical staff to know all the questions they need answered in advance, and, even for us gods of tech, this is impossible.

      In summary, if you ask us "What is the answer to life, the universe, and everything?" (because, after great effort, you find that "life", "the universe", and "everything" matter most to your customer) don't be surprised if we say "42" (and we can answer only because we heard the question from a previous customer).

      And, you know, this "over"generalization does pay off, in the end. It's called GNU/Hurd. It'll just take another ten million years to finish. Interim work does look promising, though.

      --
      You could've hired me.
  12. He needs a new diagram at the end by egarland · · Score: 2, Funny

    There needs to be a new little diagram called 'The Open Source Era'. It would start with the programmer throwing the 'Biz Guy' out the window. Then he'd put up a wall labled 'Skinning' between him and the 'Designer' and the 'Interaction Dude' and going back to work.

    --
    set softtabstop=4 shiftwidth=4 expandtab nocp worlddomination
  13. Article text (diagram captions) by Spy+der+Mann · · Score: 1

    I. Golden age: The technocrat era
    "We make stuff for ourselves, whee!"

    Programmer has a technical need.
    Programmer creates product that fulfills the need. The other programmer is happy!

    II. The early business era.
    "Holy crap, we can make money!"

    Biz guy ($) notices that a customer has a non-technical need.
    A team of programmers is assembled to create a product.
    They produce a pile of poo* for the Customer.
    * the product is technically correct, but doesn't address non-technical issues.

    III. The late business era.

    "I guess we need some of that touchy feeling junk. Should be easy."
    A team of programmers and artists* come together to solve a customer need.
    * Folks who understand the emotional needs of the customer. These may be designers, subject matter experts, etc.

    Pain! Artists are insane and programmers suck.
    Progress! Together they produce a better pile of poo* for the customer.
    * The product addresses some technical and some emotional needs. But it tends to be mangled in translation.

    IV. The product design era.
    "The 'touchy-feeling junk' is the main reason why people are buying our swag!"
    A team of WISE programmers and artists (biz guy, designer, interaction dude, programmer) comes together to solve a customer need.
    1: Adopt DESIGN TOOLS for software development.
    2: Create a PRODUCTION PIPELINE for the whole team.
    3: Work as a cross functional team to create an amazing* product.
    * The product addresses technical, economic and emotional needs. Wow!

  14. Informatics by Anonymous Coward · · Score: 0

    Just chipping in as an Informatics major at the University of Washington. It's all about understanding that while users may be dumb^H^H^H^H^H^H^H have different priorities, programmers can't afford to ignore them and spout things like "They adapted to that, they'll adapt to this. And it's cool!"

    1. Re:Informatics by jma05 · · Score: 1

      As an Informatics PhD candidate myself with a HCI focus, I don't think users are ever dumb. They are just better at other things by their past experiences and have different world views from system designers. It's just the dumb programmers who dismiss what they don't understand about human cognition that find them dumb. It's a cop out by saying it's not their fault for not creating a usable system.

          As a physician myself, I see brilliant experts in their respective fields make what can be regarded as silly mistakes with computers if I put my geek hat on. But when you carefully interview and observe why they took that decision path, the results always make sense.

          It is really hard to put yourself in the user's mindset without all the assumptions that come with experience with developing systems.

  15. Huh. by Z0mb1eman · · Score: 5, Insightful
    I read this blog entry with a growing sense of unease, until I got to this point:


    The benefits of a product design process are well documented. New products that deliver superior, unique benefits to the customer have a commercial success rate of 98% compared to 18.4% for undifferentiated products. These products reach an outstanding 53.5% market share.


    As much as I wanted to finish reading the article, I just couldn't get past that. It is well documented that 83.8% of Slashdotters who share my interests and read the RTFA reacted the same way.

    Cute illustrations, impressive list of references... but I haven't been able to extract any useful information from the article. Yes, writing software that people want to use is hard. Yes, listening to customers is very important, but also a lot trickier than "listen to your customers". Yes, to write successful software you need a mix of many different skills, not just programming, and yes, it is often difficult to even know what those skills are, let alone to find people who have them and to get them to work together productively.

    Is any of this theory really that groundbreaking? I like to think that all these concepts are self-obvious to anyone involved in the software industry - the difficult part is actually translating them into reality.
    --
    ClutterMe.com - easiest site creation on the Net. Just click and type.
    1. Re:Huh. by Spy+der+Mann · · Score: 1

      Is any of this theory really that groundbreaking? I like to think that all these concepts are self-obvious to anyone involved in the software industry

      They may be self-obvious to anyone involved the software INDUSTRY, but what about those involved in Open Source development?

      User: Why don't you make software X more user friendly?
      Programmer: If you want to change it, change it yourself!
      User: But I don't know Mega-ASPython#...
      Programmer: That's YOUR problem.
      User: :-(

    2. Re:Huh. by hawkeesk8 · · Score: 2, Insightful

      The reason that it is so hard to "listen to your customers" is that far, far too often, customers don't know what they want - they just know that what they currently have is no good. I believe the comment below this advocating finding customer pains will lead to more success than trying to get any sort of reasonable story of what a customer wants.

      I don't believe any customer went to Apple and said, "I want a digital music player that uses a really groovey touch sensitive circle as the user interface." There is a real lack of "designers" in the software industry that are akin to physical product designers. Yes, you have to listen to customer's desires but if you ask developers to code to some spec that was solely created from customer "requirements" you will end up with shit software. You need a designer interjected into that process that has vision and can recognize where customers are feeling pain.

    3. Re:Huh. by kisrael · · Score: 1

      They way I've put it is "Customers don't know what they want 'til you build and show them what they don't."

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    4. Re:Huh. by ceoyoyo · · Score: 1

      How about:

      User: Why don't you make software X more user friendly?

      Programmer: Because it serves my needs perfectly well. You're welcome to change it yourself. I might be willing to help you, or do it for you, but I do have to eat.

      User: What, you mean you won't put in hours of work for free just because I whined at you?

    5. Re:Huh. by Anonymous Coward · · Score: 0

      Sadly, it's actually more like:

      User: Why don't you make software X more user-friendly?

      Programmer: Software X is already perfect, because we designed it in accordance with rigorously-researched human interface guidelines. Forget everything you know about how computers behave and learn to do things our way, which is much simpler and more efficient.

      User: But your interface is basically the same as everyone else's, except you've (split it up into more windows|swapped the buttons over)! Why can't you just be the same as everyone else, so I can use your cool software and all these other programs without getting constantly confused?

      Programmer: Because we're right and they're wrong.

      User: Fuck this, I'm going back to Windows.

    6. Re:Huh. by ceoyoyo · · Score: 1

      Maybe when you're talking about the Gimp. That's only one aspect of Open Source though.

  16. Is it fair to say... by skoaldipper · · Score: 2, Interesting

    ...that linux is in "The Early Business Era" (stage 2)? When some distros like Ubuntu actually pay for and sponsor usability studies, I'd say Shuttleworth has this distro uniquely placed in "The Late Business Era" (stage 3). So, just grab yourself a middle man (for example) who scours linux forums for window migration user problems, relaying them back to the devs and artists, and that polish will become apparent in "The Product Design Era" (stage 4).

    --
    I hope, when they die, cartoon characters have to answer for their sins.
    1. Re:Is it fair to say... by Anonymous Coward · · Score: 0

      As long as Linux uses an X based window manager, it will always be in the Technocrat era.

  17. Sorry to disappoint you... by Spy+der+Mann · · Score: 1

    but most open source software *cough* GIMP *cough* is still in the "technocrat" era. They just don't care for the end user, they worship the product in itself.

    Sad to say it, but successful open source products (OpenOffice, Firefox) are the exception, not the rule. And yes, I know what is being an open source developer.

    1. Re:Sorry to disappoint you... by Anonymous Coward · · Score: 0

      pft...

      GIMP is a great (and useful!) tool.

      I find the quality of usefulness of open source software to be top knotch.

    2. Re:Sorry to disappoint you... by EXMSFT · · Score: 1

      It may be - but it's not notchy enough that most customers will replace commercial software which was developed by a team of individuals dedicated to designing the software that they (the paying customers) actually wanted... See the Novell survey for proof.

    3. Re:Sorry to disappoint you... by ooze · · Score: 1

      Well, most in-company products are failures too.
      The difference is, in bigger companies, there are always people who learned how to label utter failures to success, for the sake of their career, leading to generations of users and programmers having to deal with it making their lifes worse.
      In smaller companies, an utter failure leads to closing down (and that happens a lot!) and severley hitting/damaging/destroying the lifes of those involved in the company.
      In open projects an utter failure leads to a "So what, it sucks. Lets move on."

      --
      Just because I can imagine doing a hippopotamus, doesn't mean I'd like to do it.
  18. Walk a mile in their shoes...shoe store. by Anonymous Coward · · Score: 1, Informative

    "Why is there such a fundamental disconnect between the engineers and *everyone* else in a business environment?"

    The Human Side of Managing Technological Innovation : A Collection of Readings (Paperback) answers that question.

  19. Hmm by ENOENT · · Score: 2, Funny

    So why is it that all these engineers wrote all of their ancient programs in COBOL?

    Hmm???

    --
    That's "Mr. Soulless Automaton" to you, Bub.
    1. Re:Hmm by Vellmont · · Score: 2, Insightful

      That would fit into the second era of software design, where the guys with money thought that they (or other managers) could understand code, so they naturally wanted a language that was as much like english as possible. Thus COBOL became terribly (in more than one sense) popular.

      --
      AccountKiller
  20. Diagrams? Software Design by Evo Recap by Anonymous Coward · · Score: 0

    A new diagram at the end? How about three dozen AI diagrams?

    AI Algorithms Steps are the latest in software design for open-source artificial intelligence (AI).

    AI Theory of Mind opens the doorway for programmers to cash in and launch life-long careers in the burgeoning field of artificial intelligence.

    Diagrams of Artificial Intelligence teach the theory behind the design of artificially intelligent software.

  21. Identifying user pain by c0d3h4x0r · · Score: 5, Insightful

    I'm a developer on a product team at a huge software company. I've worked on 6 shipped releases of the same product, and I've worked within the same core feature areas for about 3 of those releases. More than half my time each release cycle is spent helping the feature team to identify user scenarios and optimize ways to solve them.

    One of these core feature areas had frustratingly low usage and user-satisfaction ratings for years, until we got serious about feeling users' pain. It took lots of usability testing, using the right tests and asking the right questions, to finally expose a number of thematic problems users were having. It took even more usability testing on many iterations of designs to find approaches that really solved those problems well for most users.

    The most educational lesson in all of this was that the things the product team suspected were user pain points were often not so, and the things the product team thought were fine were often problematic. In other words, the product team's very educated guesses were frequently wrong. These were people who had worked on the same product, on the same feature areas, for years, often looking into bugs and suggestions sent in by real end-users. If anyone was qualified to make an educated guess, it was these people, and yet they were often wrong.

    We didn't make huge technical changes under the hood or introduce loads of new power-user functionality. We didn't just try to pile hacky bug fixes on top of the existing user experience. We didn't just try to optimize the performance or speed of the existing feature. We listened to what real users were telling us, and we squarely addressed their frustrations and confusions.

    In the latest round of usability testing, the feature scored more than double the old user-satisfaction numbers, and there will be even more improvements made to address more user feedback gathered from that testing. We anticipate that when the next release ships, this feature area will have dramatically improved user-satisfaction and significantly reduced abandonment.

    Now, I think about my Kubuntu installation on my PC at home, and about the variety of open-source applications that I use on it, and I skeptically wonder: is the same kind of feedback loop and concern for non-technical users applied in the open-source world? It seems like most developers of open-source software spend more time developing what they think is cool, or what other geeks might want, than trying to identify and eliminate the pain experienced by non-technical users. Even when some open-source projects (say, GNOME, KDE, or Firefox) are genuinely trying to make things easier for non-technical folk, they are often just flying blind, copying the UI of commercial software or taking wild personal guesses at what they think non-technical users want. Their guesses, although well-intentioned, are often completely wrong.

    The moral of my story: you have to approach identifying user needs in a scientific way, or you'll almost never get it right. You have to perform your own research and perform it frequently as the design evolves/iterates. And no matter how crazy the results of that research seem to you, the software designer/developer, you should still trust in them.

    --
    Moderator hint: a comment is neither "Flamebait" nor "Troll" if it is true.
    1. Re:Identifying user pain by RatBastard · · Score: 1
      In other words, the product team's very educated guesses were frequently wrong. These were people who had worked on the same product, on the same feature areas, for years, often looking into bugs and suggestions sent in by real end-users.

      Of course they were wrong. They're too close to the code. They know the weak spots and work around them. They don't know that's what they are doing. It's like when you've hurt your ankle - you learn to walk in a way that reduces the stress on the injured part. Most often you never know you've adjusted your gait until you go to the doctor.

      I've worked on a number of small software projects and I never trust myself to make it as usable as posible without direct end-user feedback because I know that I have the habit of avoiding the less-than-perfect areas of the program. We all do it at some level.

      --
      Boobies never hurt anyone. - Sherry Glaser.
    2. Re:Identifying user pain by Anonymous Coward · · Score: 0

      so, did the dev team parety after figuring out that that users wanted a single page to enter first name and last name, instead of a page for first name and a page for last name?

      i'm just kidding, but sometimes i wonder... this isn't rocket science. you make 3 clicks, two clicks. you make two clicks, one click. you only present the user with meaningful data - and no more.

      you design your program to limit usder confusion... in my app, i only list assemblies with product notes and/or instruction pdfs when th euser is, uh, searching for product notes or instructions pdfs.

      sure, some schmoe might've listed all the assembly numbers (even those w/o any information), but i sure didn't need a usability study to figure this out. i was just a schmoe for not thinking ahead and, when i used the result and realized it didn't make sense, i changed it.

      a schmoe is a schmoe, though, and sometimes we all do schmoe things, but it *really* shouldn't take much to unschmoe our work.

      i also use linked selects for my apps...

      i've also done a decade in production, too, and i'm disgusted by the morons who run around using management speak without being able to get the job done b/c they spent all their time getting as far away fromwork as they could instead of valuing work.

      yes, i produced. i took two shifts from 7th out of 8th in smt wrong loading to 1st place - both shifts loaded a single wrong part in about 80,000 part loads.

      six sigma that, you moron wannabes - and you ought to know who you are.

      oh, and i worked the night shift - 5 PM to 5 AM.

      both shifts led the company in productivity, too. over a six month run, my shift held production records on every single line about have the time. when we didn't, we held all but one line. no other shift did either of those things during that six month period - nadda. when i left for another shift (with a couple workers, too), within two weeks we took that shift from 7th in productivity to 1st place, although my old shift was good enough that we could never hold every single production record on every line at the end of our weekly shift - and i'm darn proud my old shift continued to excel without me. then again, my old shift never held every single production record, either.

      yes, i was successful precisely b/c it wasn't all about me. i went out on the floor and emptied the trash for my workers so they could, uh, work. a lot. i monitored the lines and knew what was going on to address issues right away. i transported boards from line to line when there wasn't any buffer. i always found the gate machine in the line and was on engineering to do some work to even out the machines to increase output.

      we had a second division in our company and i had to cover for a supervisor over there. within the first hour of work, i figured out that every machine on the line was timed at about 30 seconds, except one was running over 45 seconds.

      all their managers, all their supervisor, all their technicians, all their engineers had months and months to investigate. their solution? spend $2.5 million on another set of lines.

      i could've increased their production by over 50% by spending $150k on a second gate machine! half the benefit for 5% of the cost...

      oh, and the lines, once installed, never ran at full capacity.

      i was let go (i hated the place, so it was no big deal to me) but the following two people stayed until the end:

      person 1. read "how to win friends and influence others" while i was out with my crew mopping up his shift in every single metric imaginable. told me, "some people would say that your a bad supervisor because you have to help you crew do their work."

      no comment required here. the putrid smell of his character should suffice.

      person 2: "do you want productivity or quality, pick one."

      funny, my shifts (both of them) beat this guy's shift in productivity (they were good, though, 2nd or 3rd) and spanked the crap out of him in quality - even th

    3. Re:Identifying user pain by Anonymous Coward · · Score: 0

      this is all true, but the solution isn't usually to spend months figuring out what a customer wants. "i want fewer click" or "i don't want unusable data displayed to me" or "can this button be made blue?" or 'this data can't be accessed" or "this data can't be accessed in this way" can be communicated in minutes, not months.

      i'll admit i'm not winning any awards for beauty right now, but my app looks professional, nonetheless. if my customers want soemthing, they tell me and i implement it. that is, if i haven't already asked them what they want.

      if users don't have access to programmers or a programmer lead, fire management. i know they like to put the riff raff inbetween the two... even if they do, have the customer put in writing and sign what they want to communicate and then have riff or raff hand it over to the programmer. or, hey, how about using email or, better yet, a web form from a customer "portal?" ta da!

      the verbal crap went out of style before anyone had ever coded an if statement.

      is this that hard?

  22. Product "Designers" by wrook · · Score: 4, Interesting

    Hrmph...

    Seems to be yet another self-agrandizing Product Designer/Manager whose thinks that they "understand" the software development process. What's crazy about this article is that I haven't worked in a company that *doesn't* work like this. And yes, we have generally produced large quantities of user-useless poo.

    The problem is largely due to the attitude of these guys. It's just another "throw it over the wall" to the programmers illusion. "If we just work out all the details before we write any code, we'll get it right the first time!"

    The difference between most consumer goods and most computer software, is that computer software is a great deal more interactive than other things. It's therefore orders of magnitude more difficult to understand the subtleties of human interaction problems.

    Usually, what I find is that these "product designers" have only a vaugue understanding of what they want, because they are not techinical (well, pedantic is a better word) enough to understand the difference. They figure out 10% of the problem and "throw it over the wall" to the programmers, saying "implement this, and I don't want any backtalk, you unwashed heathens".

    So the programmers do what they do best -- solve problems. Only since they've never even seen a customer let alone talked to one, they get it all bass ackwards. The product "designers" then say, "Oh, well I told him what I wanted, but he insisted on doing his own thing -- it's not my fault".

    Production pipeline indeed. It's some kind of pipe, but I'm not going to smoke it.

    1. Re:Product "Designers" by AaronBrethorst · · Score: 2, Interesting

      There are solutions to the (very real) issue you describe. For example, at Microsoft, the role I'm in as a Program Manager is meant to bridge gaps just like this one. I act as something of a technical liaison between my division's User Experience team (usability engineers, product designers, and interaction designers) and developers and PMs.

      Once you have someone in a role where their entire job focuses in on ensuring that necessary conversations and information transfer occur it becomes much easier to make headway and avoid confusion between the Ux and Dev camps.

      --
      No, but I used to work for Microsoft.
    2. Re:Product "Designers" by EXMSFT · · Score: 1

      Yup. I think the original poster actually defined the answer themselves, yet may not have noticed it (or likely can't do anything about it). There is a critical technical gap in their team. Either they need to let developers get out and breathe the same air as customers once in a while, or hire more technically agile product design resources.

  23. Think inside your user by Opportunist · · Score: 4, Insightful

    One of the first things my "guru" told me. Your user is the one who will use your tool. It can be the best tool ever, if its interface sucks, nobody will use it.

    Now, I don't enjoy UI design. I hate GUI design. I HATE flashy button design. But that's what makes your user happy. And I am happy when my programs are being used. Does it make sense that my new interface requires DirectX 9.0 (for a "normal" office application, mind you)? No. But it looks good, gives the user a fuzzy nice feel and he's feeling important and very smart that he can actually handle a tool that looks so terribly important and cool.

    Yes, it's Fluffware. But that's what the customer wants.

    Personally, I enjoy the CLI. Easy, fast, reliable, uses little to no resources, perfect. But then, I wrote that thing. I'm used to CLI. I grew up on CLI. I'm a 400 keys per minute typist. And most of all, I know what I want to do. I read manuals...

    People today don't read manuals. They want to explore their software like children explore their toys. "Gee, what does this button do?" must not be from the famous last words collection when it comes to software, it's the way a lot of your users want to find out how their software works. It's appealing to the explorer in them.

    So I give them stuff to explore. Make the tutorial a game. It sounds silly, allright. I know. But it sells...

    It's a sad world we're living in.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:Think inside your user by platos_beard · · Score: 1

      Please, please, please, do not confuse what makes your user happy with what sells.

      Fluff sells. Usability (go figure) makes your users happy.

      --
      What's a sig?
    2. Re:Think inside your user by Opportunist · · Score: 1

      Nope.

      Who buys the software? Techs or Marketeergoons?

      What do said people want? Fluff or usability?
      (Note that Marketeers don't have to use the crap they buy)

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    3. Re:Think inside your user by PitaBred · · Score: 1

      I don't like reading manuals, because it's sometimes really hard to find what I want. Gotta filter through a lot, and sometimes I'm not sure how to exactly describe what I want in terms that the help manual writer was using. What I have found is an invaluable thing, and something I wish I saw more of, is context-sensitive help. Getting a tooltip on a mouseover, or hitting F1 on a certain screen gets you help about what's going on in that one place.

    4. Re:Think inside your user by ceoyoyo · · Score: 1

      Isn't that what the GP said? Fluff sells, usability makes the user happy.

      Pretty shiny stuff is great, for the product demo. When I'm using it for the thousandth time and I haven't had my coffee yet, I want usability, whether I'm a tech or a secretary. Usability doesn't mean power (CLI) necessarily either. Most of the time it means simplicity. I design stuff for doctors. I definitely don't use a CLI, but I try my very best not to use buttons either. Buttons confuse them.

    5. Re:Think inside your user by Anonymous Coward · · Score: 0

      Are you on crack? Really: have you just been snorting a couple lines?

      Now, I don't enjoy UI design. I hate GUI design. I HATE flashy button design.

      What does GUI design have to do with "flashy buttons"?

      Personally, I enjoy the CLI. Easy, fast, reliable, uses little to no resources, perfect.

      Easy? WTF?

      Here's the CLI for a program I used back in the Bad Old Days:

      |

      (That's the cursor.) Try it out. Tell me what you think. What's that? You have no fucking clue what the program is or does or how to use it? Aaaah!

      People today don't read manuals. They want to explore their software like children explore their toys.

      Children? Toys? Being condescending to your users doesn't help -- that's the sort of attitude that creates Microsoft Bob. (Which was the King of flashy, BTW, and yet users hated it. That should tell you that users don't simply like "Fluffware".)

      People want to explore things to learn about them, the same way they've explored and played with things to learn about them for, oh, the past few million years of evolution. "Here's a product that doesn't look at all like what it does (a CLI!) -- instead of learning-by-doing, like anything else, you have to read this dense book before you can do anything". Riiight. Well, that's a purely 20th-century invention, and it would have done well to die in that century, as well (though it looks like it's surviving into the 21st, unfortunately).

      It's a sad world we're living in.

      Yes, when programmers who think GUIs are merely "flashy buttons", who hate doing design work, who think CLIs are "perfect", and who think that an interface that "uses little to no [hardware] resources" is actually a design goal -- when such programmers are allowed anywhere near GUI design, there's something very wrong.

  24. Ummm, you mean just like a paper? by sterno · · Score: 1

    Aren't we all taught that when we are writing a paper we're supposed to sit down and plan it out first? That we're supposed to create an outline?

    In the end, the structure and design that preceeds coding correlates to the nature of the task, just like it does with writing a paper. Writing an e-mail, or posting on a blog is not an intensive literary endeavor, so no need to come up with a thesis, outline, etc. Writing a quick script to move some files around, etc, also doesn't require use cases, and state charts. To apply that amount of order would make the whole thing take a lot longer with not substantial benefit.

    But if you're writing a doctoral thesis, yeah you'd better sit down and get yourself organized. What's your thesis? What's going to be the order in which you make your arguments? It's important and large so you need to spend some time designing it. If you're doing mission critical enterprise software, you do need to sit down and plan things out in detail, especially if you're dealing with a group of developers.

    Now, as for the comparison to the way cars are built, I think this tendancy to relate software development to physical world engineering is a mistake. The main reason being that an item in the physical world can't be recompiled, or patched, or in any way modified once it's put together. Software is malleable, everybody knows it, and so pretending otherwise is just creating misery for one's self.

    This is one of the reasons I like the Extreme Programming methodology. It seems to account for the malleability of everything decently well. You're always dealing with discrete chunks of functionality in short time intervals. It assumes that refactoring is going to happen and should happen frequently. Try refactoring a car... actually don't, you'll void the warranty for sure. You can try to design a complex system to deal with every little last possible requirement but it will take you forever to do this and in the end you'll have to change it anyhow.

    In a perfect programming world, all of the requirements for a product would be known up front and never change. Design could be quite solid and implementation would be a breeze. I've NEVER seen that in the real world. In the real world, you are given a rough idea of how it should work and then it's changed several times while it's being written.

    --
    This sig has been temporarily disconnected or is no longer in service
  25. HCI by kevin_conaway · · Score: 4, Insightful

    HCI (Human Computer Interaction) principles are, in my opinion, THE toughest thing to learn properly in Computer Science. It is easily the thing I struggle most with in my coding.

    You can't blame programmers for being programmers. Programmers are focused on programming principles like good architecture design, good algorithms etc. But making it look good? Thats tough. It requires that the programmer not think like a programmer, but a regular old end-user who has no concept of the internals of a program.

    Building programs that are usable to other developers is a joy. Building programs that are usuable for developers and regular users is an outstanding feat.

  26. Where the problem is by Anonymous Coward · · Score: 2, Insightful

    Phase one, the developers worked with the users (hell, they WERE the users). Every phase since then, there is someone bewteen the programmers and the users, claiming that they know what the users want. Perhaps we should get rid of those guys, and let the programmers and users work together again?

  27. StarvingSE? by roach2002 · · Score: 1

    I'd rather take advice from someone with the username "WellFedSE" ;)

  28. For most, yes, like a paper by MikeRT · · Score: 1

    Most people never really get exposed to serious writing. I admit that I have little, very high-level experience in that area. Most of the work that I was assigned in college on writing, I could do the whole thing in one sitting, including successfully arguing my thesis. Really well-researched writing is hard to do, and something that most people don't get meaningful exposure to, so I think my analogy stands.

    In all of my real writing classes in college, I got As without even trying. Once you learn how to express yourself consistently and build up a base of good spelling and a functional knowledge of proper grammar, it's not hard.

    The root of the problem is that the average person can get by easily without having to go through the planning stages. Once you reach a level of proficiency, you can skip them, but most people never develop that. I developed enough of one with software design that I could do semester projects in a very organized way for classes without much prior planning. That comes from a few years of experience. The solution, as I see it, is to force people to really get their hands dirty with planning and structure. That might make people have at least a modicum of appreciation for software development.

  29. Seeya in a Couple Years by Bob9113 · · Score: 2, Interesting

    Robert G. Cooper, a well known researcher on new product development, states that there are several core factors (listed in order of importance) for any successful new product design process:

          1. A unique, superior and differentiated product with good value-for-money for the customer.
          2. A strong market orientation - voice of the customer is built in
          3. Sharp, early, fact-based product definition before product development begins
          4. Solid up-front homework - doing front end activities like market analysis well
          5. True cross functional teams: empowered, resourced, accountable, dedicated leader
          6. Leverage - Where the project builds on business's technology and marketing competencies
          7. Market attractiveness - size, growth, margins
          8. Quality of the launch effort: well planned, properly resourced
          9. Technological competencies and quality of execution of technology activities.

    Many companies in the Late Business era already emphasize a few of these factors. However, there are some differences. Notice how technical competencies are important, but last on the list. Notice also, how that creating a solution to customer needs is first on the list.


    I look forward to seeing the resulting products in a couple years. Five years ago I started on a project that was initially focused on technical proficiency. Then a shift occurred. For the last three years the only thing that was allowed to guide work was customer feedback (I switched projects about two years ago). Technical profiency of the developers for the past three years has been considered nice, but not critical. Technical CRs were explicitly disallowed by the project management. It is a multimillion dollar application suite pushing two million lines, which is the primary application of about 8,000 people - roughly half our labor force. It is currently under review and may be scrapped.

    Why? Because the code is dying. The features are there, and it looks good, but it is extraordinarily expensive to maintain, is overly tolerant of corrupt data, and every time someone looks at it funny it breaks. Adding new features has become an exercise in chasing an induced bug through dozens of classes.

    The initial approach of technical isolation was wrong - we needed closer contact with the customers and it would have made the product much better earlier in the lifecycle. Now, however, it is precisely the lack of technical proficiency that is killing it. Relegating the user experience or the infrastructure to the back seat is a road to ruin. There is no point in creating software that doesn't solve the customer's problem. But there is also no point in creating software that is more costly than the problem the customer is trying to solve. Discounting technical proficiency is a direct path to cost-ineffective solutions.

  30. CS Curricula by sterno · · Score: 1

    I think the big problem is that CS, as it's been taught is far more about the the theory of writing code and less about the real world design of software. In CS I learned about bubble sort. You know how often I use bubble sort? Never. Why? Because either my data is sorted when it comes out of the database or it's sorted using methods built into the language I'm using.

    The vast majority of software that is written is done at a very high level right next to where business process and decisions are being made. Resource allocation, requirements gathering, and design, are what's critical to these projects succeeding, not the quality of the sorting algorithm used. It is important as a programmer to have an understanding of general algorithms and why some ways of doing something are better than others. But by and large, most of the serious problems I've seen in software development are rooted in the higher level issues of design.

    --
    This sig has been temporarily disconnected or is no longer in service
    1. Re:CS Curricula by ceoyoyo · · Score: 1

      Real CS should be learning things like bubblesort. What you want is software engineering, which DOES focus on design and reports and stuff. I find it all terminally boring, which is why I'm not a software engineer. Admittedly, the two were sort of confused for a long time.

      CS - computer SCIENCE. Does or applies science. Software ENGINEER - builds software. Fortunately they're getting that sorted out now.

  31. CS 101 by sterno · · Score: 1

    I was just thinking that what would be interesting to see is change to what CS 101 classes typically are. My CS 101 was a pascal class (yeah, old skool). It was a class that many non-CS people would take to fulfill a computer requirement in another department. CS people usually found it painfully easy and non-CS people often struggled. Not many people go into CS without that basic knowledge of programming picked up somewhere else along the way.

    So what I'm thinking is that these classes should be changed from raw programming to more of a design class. Like what if you spent a semester teaching people how to do analysis and documentation instead of teaching them how to write a for loop? The majority of people in this world don't need to know how a for loop works. But giving them some insight into how a business need can be broken down into specific concrete requirements would be hugely beneficial even beyond CS.

    --
    This sig has been temporarily disconnected or is no longer in service
  32. Heheh, programmers get all the poo... by maillemaker · · Score: 1

    Heh, take a look at the guy's final diagram. Programmers are at the end of the chain. The poo hasn't disappeared from the process, it's just that now all the poo is upstream of the programmer and it's up to him to juggle it until it doesn't look like poo anymore.

    Steve

    --
    A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
    1. Re:Heheh, programmers get all the poo... by EXMSFT · · Score: 1

      Not juggle. Design. Customers give you poo (vague wishes of what they wish the product could do). It's up to developers, working with technically competent product managers/program managers (what's with this "artist" crap in the article's diagram?) to figure out how to actually find gold in that poo. Sounds more gross than it actually is. Done right it can be phenomenal for everyone involved.

  33. I've found... by Belial6 · · Score: 1

    I've found that when developing a new application, 90% of the meetings and design time are taken up with the task of getting the end user to understand what it is that they do. It is very common for companies to run with a process of each person just doing their own thing. They often having no real idea as to what the end product needs to be, or what supporting data they need to get their. When working with groups that know their job, and are not just winging it every day, the software comes out much better.

    Of course when the end user does not understand what they need, AND the developer doesn't listen anyway, you are really in trouble.

  34. You just described phase 1. by EXMSFT · · Score: 1
    The secret to any software product's success is appealling to the masses. Which masses? These ones:
    1. The masses who bought or used the last version of the product
    2. The masses who will buy or use a product if it has n critical changes for the next version
    3. The masses who use a competitor's product but will gleefully throw it out if yours does it cheaper, faster, easier, better, or any combination thereof

    Hint - the programmers throwing the baby out with the bathwater rarely results in a successful product - the other reply to yours about the GIMP does indeed apply quite nicely here. Why exactly did Photoshop top the Novell list of "I wish I had it on Linux"? Oh yeah. Because it does what the Adobe "Biz Guy's" (multiple levels of them, surely) discovered customers actually wanted. Otherwise you end up playing a game of telephone (surely you remember that from your childhood) as software development. Which doesn't bode well for any product's success (software or otherwise).
  35. Sound Design Principles Go A Long Way by wozbk · · Score: 1

    Programmers and Designers have a vested interest in being fairly familiar with the others discipline. I don't believe there is generally enough emphasis on design in computer science or for that matter programming principles in designer's curriculum.

    That being said I think that what is often over looked is that bringing organization and hierarchy to today's stateless AJAX apps is imperative and that in consideration of this organization is also very helpful for the programmer to be cognizant the type of design wanted and personally have a solid grasp of layout. Even when putting together something as simple as a registration form, logical placement of the elements out of the gate can't help but give an app a leg up.

    From a design perspective, because consumers are so inundated with software tools to potentially use, apps that do not offer a low barrier to entry, enabling quick pick up of the most important features, are also-rans.

    Making software work easily makes it useful that is why it makes business sense. Making software look good makes software easy to use.

    The CRAP Principle (applying them improves any design):
    C - Contrast
    R - Repetition
    A - Alignment
    P - Proximity

    Use it - don't abuse it.

  36. Anyone notice the blurb at the end? by Anonymous Coward · · Score: 0

    If you'll notice from the text near the end of the article, it's nothing more than a viral marketing piece pushing Microsoft's upcoming "Expressions" suite of products, which aim to make the Web even more proprietary in nature.

    Microsoft has been getting its employees out there, pushing their version of Jonestown Kool-Aid, masqueraiding honest-to-goodness bloggers. It's just marketing and you all got suckered in.

  37. Next year, FIVE GUYS! Or, back to nirvana? by argent · · Score: 1

    So, adding a user interface designer to the picture is going to keep the customer from getting poo? I don't believe it for a second. Next year, they're going to add an application specialist because the problem is that none of the people in the chain know what the customer actually wants.

    So instead of getting pretty poo, he'll get pretty *square* poo. At least it's easier to stack.

    The real problem is that back in the "Golden Age", the customer was involved in the software development. In all the rest of the pictures, the customer is this unhappy blue guy off to the side... all the happy guys are on the LEFT side of the picture: if you're only on the right side, you know you're going to get poo.

    So, take that blue guy, and stick him on the right.

    That way, at least if he gets poo it's his own damn fault.

  38. Re:Did you know by Anonymous Coward · · Score: 0

    83% of statistics are made up...

  39. A building is granite. A program? Clay by I+Like+Pudding · · Score: 1

    use const NUM_BATHROOMS => 3000;
    #use const NUM_BATHROOMS => 1;

    ...

    map {$_->flush} @bathrooms; #-- this code: clearly insane

  40. HCI for Artificial Intelligence by Anonymous Coward · · Score: 0

    Algorithms for Artificial Intelligence include the Human-Computer Interaction (HCI) mind module.

    The Human-Computer Interaction module is a two-way street between the AI Mind and the human user.

    Mentifex AI Theory explains how the HCI module fits into a Theory of Cognitivity for artificial intelligence.

    The Theory of Cognitivity is the theoretical basis for the Human-Computer Interaction (HCI) mind-module.

  41. WTF? by Hurricane78 · · Score: 1

    > At the dawn of software history, programmers wrote software for other programmers. This was a golden era. Life was so simple.

    And nowadays they set stupid^H^H^H^H^H^Huneducated poeple use computers... tz tz...
    You don't let uneducated poeple operate on you or fly your plane, do you?

    And we all know a computer is the second most complex machine on planet earth (right after the animal [expecially the human]).
    I guess this will change in the next decades*...

    * hint: NOT because computers become smarter

    --
    Any sufficiently advanced intelligence is indistinguishable from stupidity.
  42. if it only were so simple by penguin-collective · · Score: 1

    Bringing marketing and product designers into the software creation process doesn't change anything: those people aren't any more concerned with solving the user's problems than programmers, they're concerned with selling stuff. And that's assuming that they are any good, which most marketing and designer types aren't.

    Creating a great product requires the right kind of people, the right kind of management, and a great deal of luck. Anybody who thinks he can reduce it to cookie-cutter organization structures is a complete fool.