Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×

Software Development's Evolution towards Product Design 165

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."
This discussion has been archived. No new comments can be posted.

Software Development's Evolution towards Product Design

Comments Filter:
  • by StarvingSE ( 875139 ) on Friday February 17, 2006 @01:32PM (#14743445)
    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.
  • by xxxJonBoyxxx ( 565205 ) on Friday February 17, 2006 @01:36PM (#14743483)

    "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?

  • Comment removed (Score:5, Insightful)

    by account_deleted ( 4530225 ) on Friday February 17, 2006 @01:39PM (#14743519)
    Comment removed based on user account deletion
  • by Vellmont ( 569020 ) on Friday February 17, 2006 @01:46PM (#14743585) Homepage
    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.
  • Huh. (Score:5, Insightful)

    by Z0mb1eman ( 629653 ) on Friday February 17, 2006 @01:47PM (#14743593) Homepage
    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.
  • by Quintios ( 594318 ) on Friday February 17, 2006 @01:47PM (#14743596) Journal
    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. :)

  • by cwgmpls ( 853876 ) on Friday February 17, 2006 @01:50PM (#14743616) Journal
    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!

  • by c0d3h4x0r ( 604141 ) on Friday February 17, 2006 @02:08PM (#14743757) Homepage Journal
    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.

  • Re:Hmm (Score:3, Insightful)

    by Vellmont ( 569020 ) on Friday February 17, 2006 @02:14PM (#14743796) Homepage
    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.
  • by Opportunist ( 166417 ) on Friday February 17, 2006 @02:22PM (#14743856)
    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.
  • HCI (Score:5, Insightful)

    by kevin_conaway ( 585204 ) on Friday February 17, 2006 @02:23PM (#14743858) Homepage
    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.
  • by ChilyWily ( 162187 ) on Friday February 17, 2006 @02:30PM (#14743906) Homepage
    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.
  • Re:MDA (Score:3, Insightful)

    by discontinuity ( 792010 ) on Friday February 17, 2006 @02:31PM (#14743910)

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

  • by Anonymous Coward on Friday February 17, 2006 @02:34PM (#14743934)
    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?
  • by Vellmont ( 569020 ) on Friday February 17, 2006 @02:40PM (#14743980) Homepage

    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.
  • Re:Huh. (Score:2, Insightful)

    by hawkeesk8 ( 682864 ) on Friday February 17, 2006 @02:44PM (#14744007) Homepage

    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.

  • Re:Software design (Score:4, Insightful)

    by Heembo ( 916647 ) on Friday February 17, 2006 @03:17PM (#14744240) Journal
    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.
  • by mattkime ( 8466 ) on Friday February 17, 2006 @03:17PM (#14744246)
    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.

  • by computational super ( 740265 ) on Friday February 17, 2006 @03:24PM (#14744311)
    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

  • by happyemoticon ( 543015 ) on Friday February 17, 2006 @05:00PM (#14745062) Homepage
    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.

It's a naive, domestic operating system without any breeding, but I think you'll be amused by its presumption.

Working...