Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming IT Technology

If Bad Software Developers Built Houses... 578

Richo99 writes "The editor at UI Hall of Shame takes us for a walk through a house designed by bad software developers. It appears Ed is getting a bit tired of really bad software designs in popular shareware titles. It is interesting because how much of a crime these apps perpetrate isn't obvious until you apply the same logic to everyday things, like the design of a house. I especially love the access to the garden. "
This discussion has been archived. No new comments can be posted.

If Bad Software Developers Built Houses...

Comments Filter:
  • by EnronHaliburton2004 ( 815366 ) * on Thursday June 09, 2005 @02:28PM (#12771854) Homepage Journal
    Oh the irony.

    Perhaps this gentleman should present us with a GOOD DESIGN isntead of just complaining about BAD DESIGN.

    His blog is poorly designed.

    I had a nice eloquent post all written. I hit the "Say It!" button (There is no 'Preview'), and I get to the next page. The next page complains that I forgot to add my email address, so I click 'back', and I'm presented with a BLANK FORM. Everything I wrote was lost, probably because of some wacky Javascript used in his blog form.

    I feel like I entered a bathroom that's 5 feet wide and 100 feet long with a TV at the end.

    I love his design!
  • by jellomizer ( 103300 ) * on Thursday June 09, 2005 @02:30PM (#12771885)
    While moderated funny. I think I see the real point. A lot of the time of software failure is basicly management going to the development team and tells them to cut corners to get it done. So you could be the best interface developer on the planet. But if they tell you that it needs to be done now. when you are halfway threw. You end up breaking rules because it is quiker to program .
  • ISO 9002 (Score:2, Insightful)

    by Diakoneo ( 853127 ) on Thursday June 09, 2005 @02:31PM (#12771902)
    But if all the quirks are well documented and distributed to all members of the team, well by gosh this is quality work!!! And better yet, if you can trace all the requirements through to the test cases, we can even slap a CMM Level 5 on it!!!
  • Availability? (Score:3, Insightful)

    by scovetta ( 632629 ) on Thursday June 09, 2005 @02:32PM (#12771910) Homepage
    Perhaps part of a good user interface would be availability?

    If the owners of this site built a house, it would only allow one person in at a time. The door would remain locked until they left.
  • by Timesprout ( 579035 ) on Thursday June 09, 2005 @02:33PM (#12771931)
    the way programmers wrote programs, the first woodpecker to come along would destroy civilization.

    Well thats the problem with a lot of programmers, they write instead of building software. Lashing code into an editor is not substitute for a little though and a solid development process.
  • by Anonymous Coward on Thursday June 09, 2005 @02:37PM (#12771970)
    Building software is NOT like designing a house.

    The problem of designing a house is, by and large, a solved problem. Sure, there are requirements like soil structures, energy efficiency, and building codes, but by and large a given house has few if any "new" problems, and the combination of problems to solve isn't huge.

    Designing software is much more complex and a software designer or team is likely to have at least one, if not many, problems that have never been solved before.

    A better comparison would be designing a city, or perhaps a high-rise office building or manufacturing plant, and even that only compares with modest-sized software projects.

    After all, most houses have only one architect for the overall design and a handful of specialists designing subsystems like the electrical layout. Most modern good-sized software projects have a lot more people contributing to the overall design.
  • by beforewisdom ( 729725 ) on Thursday June 09, 2005 @02:38PM (#12772006)
    The problem in a nutshell, going with the analogy is that programmers are not architects.

    They are brick layers and the guys who put in the pipes.

    Imagine a house, built without a design as brick layers and guys who lay piples making it up as they go along.
  • Yeah, but... (Score:5, Insightful)

    by DavidNWelton ( 142216 ) on Thursday June 09, 2005 @02:43PM (#12772065) Homepage
    ... people have been doing houses for several thousand years. We've got the basic idea down pretty well. We've been doing graphical computer systems for how long? 30 years, maybe? And computers, how long have we had those?

    Not to excuse poor design, but sometime's it's easier to piss on stuff than figure out how to fix it.
  • I agree. It's easy to bitch about poor design than it is to make a good design yourself. I feel this guy's pain though. I've had my fair share of having to deal with poorly designed/documented software before. A few weeks ago I had to compile this benchmark suite where there was no makefile, no documentation, the only comments in the code were "/********/" to seperate sections of code, and to top it all off, the file extensions were ".cp". So I was like great, is this C code or C++ code? I wasn't able to tell from browsing two files so I said to myself "well, if it's C++ there has to be a class in there somewhere, right?". So I did a `cat *.cp | grep class` and came up empty handed, so I used the c compiler. It was only after the compilation failed with a strange error that I looked up and discovered that the code was trying to referencing something in the c++ library.

    Anyway, due to experiences like that where someone's lack of intelligible design cost me time that it shouldn't have (for god's sake, write your own makefiles!!!) that I become so.....irate when I have to deal with someone else's poorly designed code. I take those painful experiences in mind when I design my own code now though.
  • by BoomerSooner ( 308737 ) on Thursday June 09, 2005 @02:51PM (#12772166) Homepage Journal
    I have a bit of knowledge in this area.

    Building houses: Very detailed specifications with standards that have been honed over 30-40 years (family business).
    Software dev: Requirements that are never actually pinned down.

    Building houses: Sub-contractors that get paid based on the job, if they fuck up they fix it for free (or lose a valuable account).
    Software dev: If it's broke/bug ridden fees are still paid to develop fixes (unless support built into contract which means you're paying more up front in case there are mistakes).

    Building houses: Customers understand that if they change their mind when the home is in development the cost gets exponentially bigger as the house nears completion. We get bids for change orders and they sign ammendments to their contract approving changes and paying in advance for said changes.
    Software dev: Frequently missed requirements necessitate changes in whole sections of code or UI design.

    If software development weren't so fluid/dynamic it would probably be much like building houses. However a house hasn't changed that much since the 1950's for the most part where computers & software development were happy to be using punch cards. Plus I wouldn't wish city inspectors on anyone in the software industry. Those who can do, those who can't work for the city and are pissed off about it. I love watching city implemented projects with these so called "experienced engineers" who fuck up and have cost overruns on every project they do. It's a good thing city engineers don't have to make a profit or they'd be out on their asses.
  • by lucabrasi999 ( 585141 ) on Thursday June 09, 2005 @02:55PM (#12772217) Journal
    I want my articles written good.

    In that case, maybe you shouldn't be reading articles that are posted on the internet. Go back to the print media, where they have editors.

  • by jnik ( 1733 ) on Thursday June 09, 2005 @02:56PM (#12772225)
    GUIs are supposed to be intuitive

    Easy to say. The only truly intuitive interface is the nipple.

    Convention leads to consistency leads to familiarity, which is not not the same thing as intuitiveness. Apple understood this--that's really why the platform works, not because it taps some Jungian archetype of computerness.

    It also leads to stagnation, inertia, inefficiencies writ in stone, and claims of mindless copying.

    There are more intuitive and less intuitive interfaces. There are ways to design so as to stay out of the way of the user, or hinder it. But nothing is flat-out, absolute, nonrelative, intuitive.

  • by Anonymous Coward on Thursday June 09, 2005 @03:02PM (#12772297)
    Maybe I just went to a bad school (I wouldn't be too surprised), but it seems like Universities, Colleges, and technical schools seem far more interested in teaching the syntax of good code but never focus on the semantics of good code. I seriously think that most bad programs in the world are actually caused because, in school, their is a greater focus on the solution to the problem you're given rather than the method to get to the solution.

  • Re:Yeah, but... (Score:4, Insightful)

    by CosmeticLobotamy ( 155360 ) on Thursday June 09, 2005 @03:04PM (#12772337)
    It's not so bad that the article guy pissed on stuff, the problem is he pissed on stuff without being even remotely funny.
  • by crovira ( 10242 ) on Thursday June 09, 2005 @03:08PM (#12772409) Homepage
    that we rarely design anything.

    What's cobbled together rarely does the job except it can usualy be faked into something that looks adequate, right until a changed requirement when the whole thing gets tossed into the trash (it was collapsing into it anyway.)

    I find most (hell, almost all,) 'soit-disant' design is missing the basics of software construction principles.

    That we seem unable to do any better, regardless of how often we get burnt, is just WRONG!

    What ever happened to post-implementation reviews? No wonder we seem to be unable to learn anything.
  • Re:Yeah, but... (Score:5, Insightful)

    by wheany ( 460585 ) <wheany+sd@iki.fi> on Thursday June 09, 2005 @03:08PM (#12772410) Homepage Journal
    The teacher of our software testing course said that because software engineering is such a young business, people expect the impossible.

    If you were building a house, no-one would come and say that you need to add one more floor that is twice as wide between floors 2 and 3 when you are already making the roof. Oh and it's done in two weeks, right?
  • by DavidYaw ( 447706 ) on Thursday June 09, 2005 @03:09PM (#12772416) Homepage
    The problem in a nutshell, going with the analogy is that programmers are not architects.

    They are brick layers and the guys who put in the pipes.

    Imagine a house, built without a design as brick layers and guys who lay piples making it up as they go along.


    A friend of mine just built a new house, and he compared his old & new... His old house was nothing special, it looked just like the house right next to it, but the architecture made sense: Perfect example: everything that used water (toilets, kitchen, laundry) were located horizontally near each other, so that the plumbing would be nice and simple. In the new house, nothing was near each other, there's probably 100 feet of plumbing (in each direction) in there. I asked "what if this room were flipped the other way around?", and he shrugged, he didn't care either way. With the floorplan he had, simply switching it around so that the toilet is on the left side of the room instead of on the right, would have saved something like 20 feet of plumbing, and wouldn't have changed the rest of the floorplan.

    Additionally, there were other things that weren't "quite right" with the construction: One wall didn't have enough support and it wobbles, a column doesn't line up exactly with the thing it is supporting, stuff like that. So what did the people who lay bricks and pipes do? Probably the same thing we do when a project manager gives us requirements that don't make a lot of sense: Grumble about the idiot that design this thing, it'd be a lot better if you simplified it this way, and then do it anyway, because the decision's been made, the higher-ups have spoken!

    If houses were designed by the same people who design the requirements for software, you'd end up with.... exactly the same thing: Something that looks nice, but would be better designed & better built if they let people who know how to build these things have some say in the design.
  • by miketo ( 461816 ) <miketo@nRABBITwlink.com minus herbivore> on Thursday June 09, 2005 @03:13PM (#12772472)
    You are right in several respects: non-development management has screwed over more projects than it's ever helped. I've seen it and had my projects fscked many a time. One classic was the VP who wanted the acronym "API" removed from the help files for a developer kit. Reason? "We make solutions, not programming software."

    But I *will* point fingers at developers for bad design, too. In the same company I have worked with developers who code up something that neither does what it should, is usable by anyone but them, or can be gracefully fit into the existing programming model. Too often they were called a "temporary fix" for the current release, to be fixed in a future release. It never was, it just became more encrusted with shims, helper libraries, and other complexification / bogger-downers.

    Same goes for UI designed by developers. *UNLESS* you have spent time with the end users seeing what it is they are trying to do, you are not going to hit the mark by coding UI in your cubicle on the mistaken assumption that you know the best way to do something.

    I have seen this happen so many times. I take a developer to a customer site to help diagnose a problem. After only ten minutes, the light comes on in the developer's head and a new solution is created that works, works well, and does what the customer wants and expects. Yet most development happens in reverse: cook up an idea, code it, then see if anyone likes it.

    There's a lot of bad software project management out there, and there is enough blame to go around.
  • by quinto2000 ( 211211 ) on Thursday June 09, 2005 @03:16PM (#12772504) Homepage Journal
    He forgot to add the price that they paid for this imaginary house: $2,000 with all of the appliances included. You can't complain about commmodity software development not being up to the standards of house building. You need to go to 5 years of school + an internship and then be licensed to build a house, you're paid hundreds of dollars an hour, and you generally are expected to go over budget and over schedule.
  • Apples and oranges (Score:4, Insightful)

    by Pedrito ( 94783 ) on Thursday June 09, 2005 @03:31PM (#12772743)
    First of all, I'll be the first to say, UI design in a lot of software, free, shareware, or otherwise, is atrocious. But, comparing it to building a house... That's just stupid.

    Who builds shareware houses? You want to compare, at least compare commercial software, and in that case, commercial software that's not cheap. Otherwise, think about shanty towns for your homes and then start doing the comparison.

    You get stuff cheap, you should expect to get what you pay for.

    On top of which, Software Engineering is a misnomer. It's not engineering. It's not even a science. It's more an art at this point with some aspects of engineering and science.

    Once we have automated tools that can verify a program as bug free (doubt that'll happen in my lifetime), then maybe it can become an engineering discipline.

    With the assumption that your materials are within tolerances (and this can be determined for many), most engineering disciplines have very verifiable results. You can verify with mathematics that a bridge or building won't collapse, assuming your materials are verifiable. You can't do the equivalent with software.

    The same goes for most other engineering disciplines. So the comparisons are invalid for a few reasons. But hey, I'm behind him on what he wants: Better UI design all around.

    My manager was telling me yesterday about an resume he received from a UI designer. The resume was in 7pt type and my manager could barely read it.
  • by Jeff DeMaagd ( 2015 ) on Thursday June 09, 2005 @03:32PM (#12772746) Homepage Journal
    Worse yet, his site is showing a page that says "403 Forbidden". Yeah, that's a great user interface.
  • Re:Yeah, but... (Score:5, Insightful)

    by jc42 ( 318812 ) on Thursday June 09, 2005 @03:37PM (#12772810) Homepage Journal
    it actually took friggin long for them to come up with the idea for a chimney.

    Here in Boston, one of the fun bits of history is that in 1631, what may have been the first fire ordinance was passed. Among other things, it outlawed wooden chimneys.

    Think about it. There was a reason that they decided to ban wooden chimneys. It wasn't done out of silliness.

    Sometimes I think of this when I see an especially goofy mis-design in some software. I'm also reminded of it by a lot of the anti-regulation rhetoric in this and other forums.

  • Re:Yeah, but... (Score:4, Insightful)

    by pete6677 ( 681676 ) on Thursday June 09, 2005 @03:38PM (#12772815)
    Most houses are not some completely new design that has never been tried before. Sure, there may be different combinations of features, but chances are it's not something incredibly unique. If it is unique, the house will likely be slow and expensive to build with many problems discovered later.

    Software on the other hand, is much more likely to be unique. Nobody requests a word processor to be made for them, they just go out and buy (or "borrow") a copy of Word. Most software development is largely unique, so there are naturally going to be more problems, delays and cost overruns. This is just one reason why software projects tend to be much harder to manage than other projects such as buildings.
  • by Lendrick ( 314723 ) on Thursday June 09, 2005 @03:41PM (#12772836) Homepage Journal
    When someone builds a house, they're given a blueprint, which lists the exact specifications for building said house.

    If houses were built like programs are written, it would be a bit more like this...

    Client: Build me a house.

    Developer: What kind of house do you want?

    Client: Oh, the usual. Bedroom, bathroom, kitchen, living room, that sort of thing.

    Developer: Can you be a bit more specific than that?

    Client: More specific? I gave you all the information you need.

    Developer: *shrug* Okay, we'll see what we can do.

    Some months later, a small, nondescript, sturdy house is built. It has a kitchen, a bedroom, a bathroom, and a living room. It lacks certain conveniences like air conditioning and a laundry chute, but the client didn't ask for them and didn't pay for them.

    Client: Looks okay so far, but where's the laundry chute?

    Developer: You didn't ask for one, and we assumed you wanted to keep things simple so you could save money.

    Client: You should have anticipated our needs and put one in anyway. Either way, we need you to add one. Oh, and we'd like you to put on a second story. Some more bedrooms, another bathroom, the usual.

    Developer: A second floor? The foundation wasn't built to handle that. We may have to change the layout a bit so we can add some addition support to the house. Oh, and there's nowhere to put the laundry chute, so we'll have to maybe bring it down through a closet or something. It'll waste some space, but that's the only way we can do it.

    Client: That's fine.

    A couple months pass. A second floor is added onto the house, and support beams are put up all over the place, making the place kind of difficult to navigate. A laundry chute is run down through the front closet, using up about half the space inside it and rendering it basically useless.

    Client: Well... it's okay so far, but now that we think about it, we'd like to *live* in the basement and do our laundry upstairs. Can you possibly make it so the laundry chute will suck the clothes up through it into the upstairs laundry room? Oh, we'd also like you to put another bedroom on the second floor!

    Developer: But there's nothing underneath where the bedroom would go! We'd have to--

    Client: Do it! Why wasn't this done months ago? Also, this whole place looks horrible, and I can't even walk around downstairs without running into a support beam. And what kind of idiot assumes [yada yada yada etc]

    So, whiny clients, if you can't give us *exact specifications*, then you have to learn to deal with messy software, or be understanding when things have to be restarted from scratch. We can build you the house you want, but that's no help unless we know what it is you want.
  • Re:Yeah, but... (Score:2, Insightful)

    by Anonymous Coward on Thursday June 09, 2005 @04:12PM (#12773229)
    If you don't build a wall properly, it will fall down. It's constrained by reality, as I like to say.
    I'm guessing that you have never worked in home construction. Reality is not very constraining. There is a margin for error in home building, and if the margin is exceeded then problems develop later on. Usually these are somewhat minor. People usually don't have walls of there home simply fall down, instead they have nails start to pop out, they notice things aren't square, cracks develop, tiles fall off or buckle, etc. In other words, homes tend to be buggy, just like computer programs. Once you get it to the customer it is their problem to deal with. See, software has learned something from home building.
  • by drunken dash ( 804404 ) on Thursday June 09, 2005 @04:15PM (#12773261) Homepage

    So, whiny clients, if you can't give us *exact specifications*, then you have to learn to deal with messy software, or be understanding when things have to be restarted from scratch. We can build you the house you want, but that's no help unless we know what it is you want.

    More specifically, they should know what they want.

  • by lux55 ( 532736 ) on Thursday June 09, 2005 @04:38PM (#12773547) Homepage Journal
    What about cases like shareware or self-made products then, where you're the one who determines what the specification is? It seems to me that most shareware is just as bad as most contracted software, so while I agree with you about contracted software, we also need to be aware that when we're our own customer of sorts (or when we'll be selling something as a product to -- hopefully -- many customers down the road) we need to know how to create specs ourselves too.

    Reason we don't do this is because it's no the fun part. It takes the cowboy out of coding.
  • by hey! ( 33014 ) on Thursday June 09, 2005 @04:42PM (#12773600) Homepage Journal
    The problem in a nutshell, going with the analogy is that programmers are not architects.

    They are brick layers and the guys who put in the pipes.


    This site has been around for years, and I have to say I've never found it very useful or insightful.

    If you want to know why, just consider the name. When has listening to somebody who sets themselves up to deal in shame and mockery ever been worthwhile?

    It's not that there isn't a problem with user interfaces. There is. And its not that many of the examples they have aren't egregious. They are (although they're off the mark in their analyses in several cases).

    I've done a lot of user intefaces over the years; some bad, some, I think pretty good, none of them perfect. I've learned a few things about them. The first is that almost any product is going to have flaws, some of them serious, most of which can be lived with. But serious or superficial, they're always easy to spot. What is hard is overcoming organizational inertia to get them fixed. Usually, there is no money to be made fixing it, which is pretty much the final word. You can get money to snazz things up with fancy graphics, but you can't get money to make them actually work better.

    So, these hall of shame guys don't get any kudos from me, because what they're doing in my view is too easy. They aren't creating new methologies that quantifiably user performance. They aren't creating organizational strategies that improve products. They aren't creating a user constituency for better interface among users or manmagers. They arent even using these examples as case studies for how a user interface can be improved.

    They're settting themselves up as pontificators and dealers of shame and mockery to people who don't measure up to their standards, without lifting a finger to help them. If I wanted that, I'd join a church.

  • by xs650 ( 741277 ) on Thursday June 09, 2005 @04:44PM (#12773615)
    His punctuataion errors have nothing to do with the software problems he has pointed out. His punctuation errors neither increase nor reduce the seriousness of problems with crap software. Crap software is still crap software.
  • by Ricdude ( 4163 ) on Thursday June 09, 2005 @05:50PM (#12774266) Homepage
    This is why building codes state unambiguously how thick joist must be, and how far you are allowed between them, how thick posts must be to hold up a deck of size WxD, how to anchor posts to foundation, what to use for foundation, how deep cement anchors must be embedded in the ground, etc.

    "Standards", as far as software construction, are non-existent. Well, there are some style guides out there, but most of them conflict with most others. "Style" guides usually focus on inane issues like indentation and variable naming, instead of including insightful issues like, "C library functions that operate on strings without checking lengths should not be used: (list of functions to avoid)." Classifications of error conditions and how to recover or adequately respond to them are also usually lacking (what's a warning? what's an error?)

    When issues like this are developed for software, and people actually follow them, you'll see greater consistency in software.
  • by Hognoxious ( 631665 ) on Thursday June 09, 2005 @06:42PM (#12774749) Homepage Journal
    let the developers work out the design; then have a UI team build an interface to the given design.
    Right. Because UI design is just about pretty colours and stuff. It has nothing to do, say, with the underlying mental model and the actions the user might do to what he perceives as the objects in the system. Still, if those don't match what the developers did, we'll hack a middle layer into place. Sigh.
  • by e2d2 ( 115622 ) on Thursday June 09, 2005 @06:43PM (#12774760)
    Also, most of the other professions cited have about 1000 years of history leading up to their current state. Engineering and Architecture didn't just arrive in the 1950s.

    But I will add one thing - when will software developers start building better software? When the customer pays for it that's when. Most customers don't accept the schedule or budget for such an endeavor unless they are NASA or similiar organization that demands such high quality. Building such software takes resources, the customer has to be willing to give those resources (time, money, etc). Until that day comes where the customer is ready to give those resources we will not see much change.

  • by Xyrus ( 755017 ) on Thursday June 09, 2005 @09:36PM (#12776203) Journal
    But let's turn the tables here. Let's give the home builders the usual specs that a software developer is given.

    You estimate it will take you 18 months to build the house. The "owner" comes back and says you have eight.

    You say you need specific pieces of wood and nails to build the house with, however the owner tells you to use new unproven materials that don't even have effective methods of working with.

    You say you need specific types of hammers, saws, cement mixers, etc. The owner says you can only use a rusty hammer with a broken claw, a dull saw, and you'll have to mix the cement by hand in a bucket to pur the foundation.

    Your allowed to look at the location your going to build at, but you are not given the resources or time research the ground stability.

    After you have rushed together a blue print, you're told to start. Halfway through, the owner changes the building materials, tells you that the utilities won't be there for another year, and change the complete layout of the house in the process.

    In the last two weeks of frantic work, the town code person changes all the building codes.

    So what kind of house do you get after this?

    You don't.

    And that's how a lot of software comes out.

    ~X~

UNIX is hot. It's more than hot. It's steaming. It's quicksilver lightning with a laserbeam kicker. -- Michael Jay Tucker

Working...