Live data from Hacker News

Why do web sites and software take so long to build? And why is it so hard?

scottporad.com

151–159 of 159 posts

Re: Why do web sites and software take so long to build? And why is it so hard?

#151

brilliant comment in the original post, just in case anybody missed it "When I had my bathroom remodelled, at first I thought it was organized amazingly well and why couldn’t software be like that? There was a designer from Expo, a primary contractor and subcontractors for tiling, painting, etc. a project workbook containing all the documents, including the design, and a logbook for every contractor to record their v…

There's a big difference between a construction project and a software project, though. With no formal plumbing experience, a layman can walk into a newly installed bathroom and can tell, for example, whether it has any large holes in the walls; whether the materials used in the construction seem solid; whether, when the toilet is flushed, the waste actually appears to go away into the sewage system; whether the contractor got carried away and installed an industrial air extraction unit when all that was needed was a small vent fan.

When you go in to inspect a software system someone has constructed for you, though, you just don't know. It could have a gaping security hole; it may be dreadfully underpowered for your needs - or ridiculously overpowered. And you just can't tell.

And while, if you need repairs on your bathroom, you can get in any plumber and, even though he may criticise the original installer's technique, he can pretty reliably open things up and expect to find things he understands - pipes, for example, rather than, say a system of motorized buckets. But if you get in someone to look at software you've had built then who knows what the original developer will have constructed.

And as a customer of a bathroom installer, you can (hopefully) understand why you can't just have the showerhead suspended in midair with no pipes to feed it; that you can't have an electrical outlet installed actually in the bathtub; that the bathroom is only 8 by 12 so there isn't room to include a hottub. But no such immediate understanding is available to someone commissioning software.

The physicality of real things renders them much more readily comprehended by the user, which means they have a chance to grasp what goes into creating them. But software's complete lack of physical existence means that it is virtually impossible for anyone except its creators to fully comprehend.

Re: Why do web sites and software take so long to build? And why is it so hard?

#152

Earlier quoted context omitted.

Pair programming [1] and collective code ownership [2] are great ways of getting everyone on the same page and keeping them up to date. My experience is that only a fraction of developers are interested in keeping things clean and meticulous. The rest are more interested in cranking out features. Both are needed. In my experience, a ratio of 1 "meticulous" to 6 "git-r-done" programmers works fine if you're using coll…

This is fine, as far as it goes. However, when I do this, I feel like I'm being yanked around from one area of the code to another. What I really want is the opportunity to take a few steps back and spend some effort getting things back in shape. If, as you say, both types are needed, I think it would help if an organization valued both types and allowed them to do the type of work they find fulfilling. If I get a ne…

Well, just as it's a fine line between "git-r-done" and "cowboy coder," it's a fine line between "meticulous" and "architecture astronaut." (See early Java vs. later Java, for example.) I think both camps win when they're tempered by the other.

I follow the boy scout rule: the code isn't done until it's at least a tiny bit cleaner than we left it. I'll generally spend about one hour out of every four on cleanup (and not budget for it separately). I also focus my cleanup efforts on what I'm directly working on, and what's causing me the most grief today. This allows me to keep my code clean and make the parts of the system that I use the most gradually improve.

Re: Why do web sites and software take so long to build? And why is it so hard?

#153
post #150

Earlier quoted context omitted.

Use Agile for R&D, user Waterfall for D only. E.g. use Agile and smart guys with good knowledge of application domain for first version, then drop it and rewrite from scratch using Waterfall and outsource professionals.

It is ok if you don't change anything (or nothing significant) between version 1 and 2. But then, why would you rewrite from scratch ? In any case, if you use a different team to rewrite your application, you just lost the biggest value of the previous team: experience solving that problem the first time. No amount of documentation can really make up for the difference . The source (with doc) of a software is a compi…

> But then, why would you rewrite from scratch?

Why not? Professionals knowns their tools much better, so they will made better choices in every aspect of project. If you place restrictions on their tools, they will work less efficient, unless you are already professional developer.

> The source (with doc) of a software is a compiled version of business/technical knowledge of the team that developed it and not really that good as a guide to the next team.

Of course. They will ask questions, so somebody from first team should respond to them.

Re: Why do web sites and software take so long to build? And why is it so hard?

#154
post #61

Earlier quoted context omitted.

Right, I've worked on many projects where it wasn't really possible to gather all requirements up front. This is hugely frustrating to everyone involved but the fact remains that until you have at the very least a working prototype you will often not be able to generate a final requirements document. On the other hand when requirements are nailed from the very start, the development proccess has been swift, well exec…

Agreed. My experience is that there is way too much emphasis on languages, libraries, and frameworks. Nobody really talks about the methodologies of building software. For any given day on HN, how many articles are about how such-and-such extension for this-and-that language is the best thing since the great pyramids and how many are about how code review can help reduce bugs? Or how to more effectively gather requir…

I think that's largely because languages, libraries, and frameworks are advancing, and methodologies are not. Better methodologies are becoming more widespread, but there's very little that's being invented that's actually new.

Re: Why do web sites and software take so long to build? And why is it so hard?

#155

Earlier quoted context omitted.

> I think in my ~20year career, I've had only 3 projects that were specified well enough up front that we just "built it according to the plans" and had a satisfied customer at the end. Overwhelmingy, some (or most) of the design gets "made up as we go along". Even on projects with several small forests worth of up-front documentation, there's almost always large areas of vagueness or outright contradictory requireme…

Use Agile for R&D, user Waterfall for D only. E.g. use Agile and smart guys with good knowledge of application domain for first version, then drop it and rewrite from scratch using Waterfall and outsource professionals.

Use agile for R&D, apt-get install for D only.

Re: Why do web sites and software take so long to build? And why is it so hard?

#156

To date, software engineering has failed to deliver on one critical goal, which is why we are in this mess. The world of software development needs to be divided in two -- the component creators, and the component assemblers. To stick with the given analogy, component creators are the people inventing new kinds of plumbing: easier ways of connecting pipes, taps that don't ever drip. Component assemblers are the peopl…

Programming has delivered spectacularly on that critical goal, although software engineering did indeed fail, which is why the "software crisis" ended decades ago.

The division you propose already exists.

The "component creators" are called "programmers".

The "component assemblers" are called "users".

That's why you can use, say, Google Docs Forms to slap together a signup form in ten minutes that would have taken you a couple of hours in PHP with MySQL in 2000.

Re: Why do web sites and software take so long to build? And why is it so hard?

#157
post #69

The important question that needs to be distinguished is: How much R&D is involved in your project? It doesn't matter if it is a software project or a physical project. If the percentage of unknown terrain is high, the project will become complex. When a very progressive and innovative bridge/house needs to be build with new materials and a unknown construction etc., the project will be complex and you can't design i…

It does matter if it's a software project, because any work you're doing on a software project that isn't R&D is wasted time that you should figure out how to automate. That's not the case if you're building a bridge or a house.

Yet. Robots will get a lot better this decade.

Re: Why do web sites and software take so long to build? And why is it so hard?

#158
post #64
post #63

"How often do you think two plumbers argue over the right way to plumb a bathroom? Almost never!" I don't think this guy has ever been to a construction site. The people who work for me argue about stuff like this all the goddamn time . About the most minute details like making a connection from a wall point to the drain going first straight then left, or first left then straight, and a million other things that are…

>> the best ones are the ones who don't come up with different solutions every single time, but who just get stuff done, good enough, in time and within spec. Just like software. This looks like some who uses Dynamic/scripting languages to get the job done, like Perl. Especially 'get stuff done', 'different solutions every single time'(TIMTOWDI), 'Good enough' seem to perfectly match that definition.

Eh, no, exactly the opposite - what I meant was, the people I prefer are the ones who don't decide on tech first, then fit the solution to the actual problem withing the constraints of that tech. People who get the job done don't care all that much about one type of pipe vs the other or what have you (I don't know anything about plumbing really), or if they should use Perl of C++. They use what fits the problem, and don't fret endlessly about the tools, they just use those tools to get results.

Re: Why do web sites and software take so long to build? And why is it so hard?

#159
All this discussion -- and no reference to Fred Brooks?!

A classic opinion piece on why building software will always be hard is Fred Brooks’ “No Silver Bullet – Essence and Accident in Software Engineering” — there’s a version of this available at:

http://people.eecs.ku.edu/~saiedian/Teaching/Sp08/816/Papers...

And if you don’t agree, one of its rebuttals, “What if there’s a Silver Bullet … and the Competition Gets it First?”, by Brad Cox — with a version available at:

http://www.virtualschool.edu/cox/pub/92ByteWhatIfSilverBulle...

…even gets into the idea of an “industrial revolution” for software.

Good classic reading… 8-)

Post reply on HN