Quote:Original post by Driv3MeFar
Quote:Original post by Muse
Quote:Original post by Oluseyi Source code is an intermediate product, not an end result, so comparing source code to buildings is wrong. Correcting that analytical error, it becomes clear that the parallels between software development and other engineering disciplines are very strong. So I'm going to have to stand by my original statement: software development is a young and primitive discipline. |
I continue to disagree. Source code is the final product of the software engineer. There is no need to extend this discussion to the trivial final step of converting that source code into machine instructions; that is not a human job, and we are discussing humans here. |
I don't think so. Code is a means to and end; ultimately, the goal is an application which can be used by your customers. They don't care what your code looks like, and in most cases you're not selling code, you're selling the final application built from that code. |
Not only that, but the quality of source code is not directly proportional to the quality of the resulting software artifact. Thousands of software developers write ugly, hard to read/maintain code that yields efficient, pleasurable use to customers. Plus, a software developer's job is not done until the source code produced has been proven to translate into object/machine code and software artifacts/behaviors in desired fashion. If the result of a "mere translation step" is the arbiter of the quality/completion of your work, then that result
is your product.
Quote:Original post by Muse
Quote:Original post by Oluseyi Blueprint -> building : immense amount of labor UML diagram -> software artifact : immense amount of labor |
You've juxtaposed the work necessary to transmute a blueprint into a bridge to that necessary to transmute a UML diagram into a complete software project, implying that they're the same sort of thing. But are they? |
You've arbitrarily selected the large task of converting a blueprint into a bridge, as opposed to the proportionally smaller yet semantically and conceptually identical task of, say, converting a blueprint into a table for mass production at IKEA. I see right through that, so, to answer your question, yes, they're the same sort of thing.
Quote:Another way of reiterating my argument: If you wrote a software project design sufficiently precisely (to use your own term), that no more design decisions needed to be made, then the blueprint you wrote would be the software. This is why I can't stomach the argument that programmers are fungible: for them to do useful work they need a certain creativity and a certain perspicacity, which needless to say differentiates them. |
The blueprint would be the software prior to a translation step requiring no creative input. If the form of that blueprint is machine comprehensible, then, yes, it's the software - compile away. But it typically isn't, which is why we need "coders".
For the record, I never said programmers were fungible. I said
coders were. (Go back and re-read my post.)
Quote:Original post by Jerax
Quote:Original post by Oluseyi Don't blame me because you have an arbitrarily abstract notion of what constitutes a "design." The fact remains that if you provide sufficiently precise instructions, a team of interns can write Halo 4 (or whatever passes for a superlative example for you). |
I disagree. If the McFood example teaches us anything it's that if you give precise instructions to a bunch of monkeys you get mediocre product. |
This "insight" is predicated on the assumption that the only variable in final quality is the quality of the instructions, not the quality of the ingredients or any intermediate steps such as flash freezing and reconstitution.
Given your lack (and, honestly, it's not your fault; I'd be asking the impossible) of control for these other variable factors, I have to view your disagreement as irrelevant to the analysis of the consistent procedural outcomes under investigation.
Quote:There's also significant evidence that small teams are a lot better than large (go read The Mythical Man Month if you're in doubt). Small teams mean each member has to do more which means you need a team made of the best people, not a huge farm of monkeys. |
That's just bad reasoning. First of all, nothing states that you need many monkeys. If you have one or two designers who can provide sufficiently precise instructions in an efficient manner, you may only need as many monkeys - or even fewer - to follow the instructions and yield the output artifact. Frankly, we're in the realm of pure speculation here.
Quote:Also, I think Muse makes a valid point - software is a lot more complex than making a burger or building a house. |
I call total and utter bullshit.
Simple software is no more complex than a simple burger, and probably less complex than a simple house. Monumentally sophisticated software is probably still not as complex as a skyscraper (consider every aspect of a full functional skyscraper - HVAC, security, communications, electricity, structural integrity, service access, etc, etc, etc). In other words, your contention is merely software developer ego - particularly common with game developers, who like to tell themselves that games are the most complex type of software. Who cares, really?
Again, you've only substantiated my contention that software development is a young and primitive discipline: other disciplines have learned to specify rigidly abided interfaces that enable specialization and knowledge/component reuse. Have you ever thought about the complexity of a house down to the level of the screws and mounting brackets inside your wall switch? Architects don't specify to that level; at some point they hand responsibility over to electricians and plumbers and HVAC engineers, etc. Software, primitive discipline that it is, too often requires that the entire infrastructure be essentially "hand fabricated" - including, in some instances, the tools for component fabrication.
Take a critical look at what you actually do.