PDA

View Full Version : Software "engineering" & software "science" is total fiction



youbuntu
December 21st, 2010, 04:39 AM
As an electronic engineer, what I get absolutely sick of hearing ALL the time, is "software engineering" this, and "software science" that; what complete and utter nonsense!

Software never has been, isn't and I doubt EVER will be "science" or "engineering", because science and engineering are professions based upon known values, laws and properties in the real, physical world - somthing that software is not, nor ever could even hope to be.

Googling brings a LOT of results from people who get this:

http://www.cs.usfca.edu/~parrt/doc/software-not-engineering.html (http://www.cs.usfca.edu/%7Eparrt/doc/software-not-engineering.html)

Please, call yourselves whatever else you so desire - I am not mocking your professions; call yourselves "code poets" - FAR more apt, but spare me the laughable title of "software engineer" or "software scientist", because these are made-up titles, conceived to impress stupid people who don't know the difference.

:) thanks

Cuddles McKitten
December 21st, 2010, 04:53 AM
I guess you don't approve of "sanitation engineers" who mop up spills in hallways?

Anyhow, you could accept that words change their meanings. "Hacker" in the 30's meant someone who would write a lot of stories hacking away at a typewriter. In the late 70's, it meant someone who would play with computers. Now, it means someone who subverts computer code and protocols to make them (maliciously) act in ways that were unintended. "Engineering" may now include things virtual as well.

Also, please prove that this existence is the real, physical world and not a computer simulation. :)

RiceMonster
December 21st, 2010, 04:58 AM
code poets? Programming is not even remotely similar to poetry. It's based far more around logic and problem solving than artistic expression.

jbrown96
December 21st, 2010, 05:13 AM
So because software engineering is more difficult than other types of engineering, it's not engineering? Software depends on the exact same rules that other engineering fields do: physics and mathematics. For most projects, language design and libraries also create real situations with concrete rules. strcmp() always returns an int.
Sure software engineering has far fewer constraints, but only in a traditional sense. It's really about mathematical constraints, rather than physicals constraints. If I'm designing a building, I'm bound by phsyics, which is just a tangible form of mathematical laws. In software, that tangible layer (largely) doesn't exist.
Clients have a more difficult time specifying their requirements, which leads to rewrites and budget and time overruns.

I agree that software engineering is a very different beast, but I wouldn't categorize it differently.
I can't tell whether the "code poets" comment was serious. Poetry, and writing in general, are so fundamentally different than programming that there isn't much worth comparing. In writing, imprecise statements are not always bad. They can help convey emotion in certain circumstances. However, in programming, imprecise statements are always incorrect. There is no situation where an imprecise statement, which leads to an indeterminate automaton, is beneficial.

B.S. Computer Science

drawkcab
December 21st, 2010, 05:20 AM
As an electronic engineer[...]

...who is completely oblivious to the irony inherent in seeking to de-legitimize the professional status of software coders through the very medium that they've engineered.

Npl
December 21st, 2010, 05:22 AM
If you refer to strict code-monkeys then yes, there is little science there.

But you should really look at algorithmic design, there are alot fields that are more science than anything based on your "physical world" - its just the small computer theoretical world which is alot easier to describe perfectly unlike the "physical world" whose laws noone ever will fully understand.
eg. there is tons of research in search-algorithms, cryptography, numerics and graphs, interesting studies just using pure maths.

engineering is then smartly applying the results of those studies.

youbuntu
December 21st, 2010, 05:26 AM
Nonsense. no matter what is said, it is not science OR engineering.](*,)

JDShu
December 21st, 2010, 05:45 AM
As I always seem to be repeating on these forums, a linguistics course might open your mind :)

Kalimol
December 21st, 2010, 05:56 AM
Great reply there, Glossy. Nice job of addressing all of those very relevant points made. Now, I'll admit to start here that I'm more poet than designer myself, so I'm as happy to disown the lot as you are, but I think I have more grounds to do so.

The best term is software design. It encompasses the whole gamut from enduser experience (the very slightly artsy part, in the sense that graphic design is artistic) to, yes, software engineering. But there are rules in the designed environment of an operating system that do act very much like physical constants, as noted above, and more importantly, psychology and behavioral science are used in enduser design, math is used in deep coding, and the kinds of problems that software designers are presented with aren't of an entirely different nature from those presented to hardware designers - engineering problems.

Still, the word "engineering" has far broader application than you are implying here. Check out the Wikipedia article (http://en.wikipedia.org/wiki/Engineering). Here's their definition:

"Engineering is the discipline, art and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge to design and build structures, machines, devices, systems, materials and processes that safely realize solutions to the needs of society."

No part of that doesn't apply to software design. Engineering is, first and foremost, about application, not pure science, not necessarily even applied science beyond the scientific approach to solving a problem. Civil engineering, mentioned in the article, is a fair comparison.

smellyman
December 21st, 2010, 06:05 AM
What about someone who drives a train?

chessnerd
December 21st, 2010, 06:14 AM
According to Wikipedia, engineering is the discipline, art and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge to design and build structures, machines, devices, systems, materials and processes that safely realize solutions to the needs of society.

I see nothing in there that excludes software engineering. Scientific and mathematical concerns constantly exist, because software, while it is within a virtual environment, cannot violate mathematical and scientific laws of nature. You can't sort random data faster than O(n log n) time, because mathematical principles don't allow it. Economic, social, and practical knowledge are essential for anyone that wants to write software with real-world applications. And the whole purpose of writing software is to find solutions to the problems of society.



As an electronic engineer......who is completely oblivious to the irony inherent in seeking to de-legitimize the professional status of software coders through the very medium that they've engineered.
Absolute...Win... :D

youbuntu
December 21st, 2010, 06:19 AM
Software is VIRTUAL, theoretical objects that don't actually exist - merely binary states that represent imagined "objects". Engineering is based upon real, PHYSICAL entities, no matter how small or large. Telling me that a certain string is always returned for a certain command, implying that it is indisputable, as if it were a law of nature, is just laughable, sorry.

Light travels at the same speed as electricity:
299 792 458 metres per second


Resistance is not a code - 8 ohms will ALWAYS be 8 ohms, and can be measured AND RELIED UPON, without dispute. Code can be changed, and parameters modified and re-designed at the whim of a coder's keyboard - THESE ARE NOT physical states, they are merely imagined absolutes, which is a total mistake and mis-perception.

Call it what you like, I am not here to argue - I am here to make a statement of what my belief is, and I couldn't care less whether or not you agree, in your little internet bubbles witn your clever comments and witty replies - this is what I believe, and it is not ABOUT debate, it is inescapble fact, if you just sat down and thought about it a little.

Next you'll tell me that 8 men standing in a row, four with red flags, four with blue flags, held up in a sequence to represent a binary code, have created a software "object" which can be probed and measured, like an electrical signal...

:D :lol:

undecim
December 21st, 2010, 06:22 AM
Software never has been, isn't and I doubt EVER will be "science" or "engineering", because science and engineering are professions based upon known values, laws and properties in the real, physical world - somthing that software is not, nor ever could even hope to be.

Unless I'm mistaken, computers a physical machine and therefor are bound by physical properties. The interactions that happen on the small scale of a processor are part of computer science.

And as far as computational theory is concerned, this is only one example, but have you ever heard of the halting problem?

Basically, it states that there exists no algorithm that can determine if another algorithm will eventually terminate.

This is not the result of the limitations of a computer as a machine, but rather a mathematical limitation. This is a LAW and PROPERTY of the universe, not just x86 processors or some abstract thought.

Kalimol
December 21st, 2010, 06:24 AM
@ Glossy: We're here to educate now, friend. Words mean things - as I said, my training is in the language arts - and the definition of a word is not a matter of personal belief. You're here to pick a fight, and it's really not going to work, because your complaint is based on a very specific and simple misunderstanding, and there is, yes, a rather absolute right and wrong answer to the question.

Software engineering is not an engineering field. You don't say that you're in engineering if you work as a software designer. No one is going to make that argument with you.

However, the broader term engineering does mean a specific thing, too, and it's broader than you're trying to argue. Again, see civil engineering.

Edit: @ undecim: Quite. Conversely, the rules of an engineering problem can also change with the goals of the construction or the capabilities of manufacture. That the limitations on the way a string of code can behave are artificial is true, but so are the limitations on the materials used in a resistor or the construction methods available to an airplane wing.

RiceMonster
December 21st, 2010, 06:29 AM
I am here to make a statement of what my belief is, and I couldn't care less whether or not you agree

You sure have typed a lot and been really pushy for someone who doesn't care.

chessnerd
December 21st, 2010, 06:35 AM
Software is VIRTUAL, theoretical objects that don't actually exist - merely binary states that represent imagined "objects". Engineering is based upon real, PHYSICAL entities, no matter how small or large. Telling me that a certain string is always returned for a certain command, implying that it is indisputable, as if it were a law of nature, is just laughable, sorry.
So, bits are imaginary? Good to know. I'll file them away along with MC Escher pictures.

When you write software, you are flipping bits. That is all you are doing. No really, someone with magnetized needle and a hard drive could actually write software. The order you are flipping bits in is very important. One bit out of place and an entire program can be unusable and crash.


Light travels at the same speed as electricity:
299 792 458 metres per second

:shocked: An electrical engineer, are you sure? Electricity is a hard term to define, but it moves very slowly. Far more slowly than the speed of light. Read this: http://www.radioelectronicschool.net/files/downloads/howfast.pdf

Maybe you meant electrons? IF so, yes, they basically move at the speed of light.


Resistance is not a code - 8 ohms will ALWAYS be 8 ohms, and can be measured AND RELIED UPON, without dispute. Code can be changed, and parameters modified and re-designed at the whim of a coder's keyboard - THESE ARE NOT physical states, they are merely imagined absolutes, which is a total mistake and mis-perception.
They are physical states. 01001000 01100101 01101100 01101100 01101111 will always be 01001000 01100101 01101100 01101100 01101111, we just told ourselves that it means "Hello" in 32-bit computing. You are right to believe that it is arbitrary, but there is no such thing as an "Ohm" either, people just made that up. It, too, is an arbitrary value.


Call it what you like, I am not here to argue - I am here to make a statement of what my belief is, and I couldn't care less whether or not you agree, in your little internet bubbles witn your clever comments and witty replies - this is what I believe, and it is not ABOUT debate, it is inescapble fact, if you just sat down and thought about it a little.
Then why should we care about your opinion if you don't value ours? Also, the more I think about it, the more I see software development as an engineering exercise.

youbuntu
December 21st, 2010, 06:37 AM
PS: Don't quote wikipedia at me - it isn't law, and any fool can go in and write whatever they like there; doesn't make it fact. What I am saying is not fact, but it is what I believe, but I'm also half asleep @ 05:33am, so my reasoning powers have faltered since the opening post, so I'll abandon this anarchic downward spiral of a mess of a topic, in hope that someone will try and better explain what I am attempting (badly) to.

I mean no ill feeling, I just don't think the word "engineer" or "scientist" have ANY place with people who deal with software. Hardware, YES - silicon and diodes etc, but software is, by definition, SOFT, hence can be changed at a whim, and has no constants or universal scientfically known rules against which to measure it.

Good night :)

click4851
December 21st, 2010, 06:43 AM
well in light of glossywhite's clarification that he/she only posted here to make statements, I have my own....I disagree. There, this thread has the only response possible, and it can now die with dignity....:)

wojox
December 21st, 2010, 06:50 AM
You mean knowing coding Linux doesn't make you a Rocket Scientist?

Dam, chicks dig Rocket Scientists.

GabrielYYZ
December 21st, 2010, 06:56 AM
#include <iostream> will always include iostream, the only possible way of that not including iostream is if you don't have iostream available in your environment. in the same way a capacitor will always work, unless it's damaged...

then again, why does "engineering" means what it means? we could've assigned the definition for it to another word and it would still be correct, since it's not a constant. my best guess, without actually researching, is that, since the root of "engineering" is "engine", it originally meant "working on engines" or "building engines" and the term was reworked to have a broader definition.

Kalimol
December 21st, 2010, 06:58 AM
I've been resisting the urge to bring up trains and engines myself. Yes, originates from the term used for people who designed steam-powered industrial engines.

@ Glossy: I don't think ... you get the basic point here.

First, the definition from Wikipedia is paraphrased from the one used by the American Engineers' Council for Professional Development. Wikipedia can be wrong, but most of it is written by professionals and academics who know what they're talking about, and those people cite their sources.

Second, definitions are indeed soft and subjective, but they are not a matter of personal preference. There's nothing you can feel at a definition that somehow just changes it. It's already true by definition. = )

Now, you might think that there's some slippage here - again, software design is not an engineering field in the sense that we mean that phrase. It's safely in the realm of design. I can see how that could cause some confusion. You're pointing at a valid distinction here, and if you've seen it legitimately confused, I can see how that could be frustrating. I have a similar sentiment toward graphic design's relation to the visual arts. They only touch at the edges....

The problem is that you're exaggerating that distinction. Again, graphic design is artwork, and it's visual, but that doesn't mean it's a discipline that can really be categorized within the visual arts. It doesn't reduce the latter part of that statement to accept the first. Likewise, software design involves engineering-like problems, it puts these designers in collusion with hardware engineers, and it is a kind of engineering in the broad sense that that term really, actually does mean, but it isn't an engineering field in the sense that we ordinarily mean that.

Again, as stated previously by several people, the problem is one of semantics. So kindly get out of my field. = )

betrunkenaffe
December 21st, 2010, 07:59 AM
Having taken computer science and actually understanding the underlying mathematics and physical interactions that occur, I believe I am definitely capable of responding to this thread.


Mods: Please close the troll thread, he's clearly posted it to insult and degrade others. There is no discussion here, merely accusations and dismissals. Thank you in advance.

beew
December 21st, 2010, 08:11 AM
Software is VIRTUAL, theoretical objects that don't actually exist - merely binary states that represent imagined "objects". Engineering is based upon real, PHYSICAL entities, no matter how small or large. Telling me that a certain string is always returned for a certain command, implying that it is indisputable, as if it were a law of nature, is just laughable, sorry.

Light travels at the same speed as electricity:
299 792 458 metres per second


Resistance is not a code - 8 ohms will ALWAYS be 8 ohms, and can be measured AND RELIED UPON, without dispute. Code can be changed, and parameters modified and re-designed at the whim of a coder's keyboard - THESE ARE NOT physical states, they are merely imagined absolutes, which is a total mistake and mis-perception.

Call it what you like, I am not here to argue - I am here to make a statement of what my belief is, and I couldn't care less whether or not you agree, in your little internet bubbles witn your clever comments and witty replies - this is what I believe, and it is not ABOUT debate, it is inescapble fact, if you just sat down and thought about it a little.

Next you'll tell me that 8 men standing in a row, four with red flags, four with blue flags, held up in a sequence to represent a binary code, have created a software "object" which can be probed and measured, like an electrical signal...

:D :lol:

So is quantum computing a science?:)

Is information "real"? (Think second law of thermodynamics, entropy etc)

Is electromagentic field "real" or just a mathematical representation? How about wave functions and quantum fields? :)

Can you define what is "real"? One attempt is that a "real object" is something that exists in spacetime. But what about spacetime itself? By this definition it cannot be "real", can it? How about the Riemann curvature tensor of spacetime? Is it real or just a mathematical construction? If the RCT is just a mathematical fantasy why is gravity real? :)

Mr. Picklesworth
December 21st, 2010, 08:16 AM
I think the expressions are widely misused, but certainly not incorrect. Computing Science touches on hardware design and software that runs close to said hardware. At that level we definitely think about physics, hard mathematics and logic. And it isn't just about silicon. Computers are much more important than that. The fundamental principles here — combing simple logical primitives to establish incredibly sophisticated thinking machines — can be applied all over the place (http://xkcd.com/505/).


Software engineering has become sort of a catch-all, which is never great, but here's Wikipedia on engineers:
“Engineers work to develop economic and safe solutions to practical problems, by applying mathematics, scientific knowledge and ingenuity while considering technical constraints.”
Makes sense to me.


Having said that, in my second or so year of university I have met a number of people who view software development as a mechanical kind of thing. They do everything by the books, which seems to cause them a lot of worry, doubt, and weird code. I still don't understand that, really.

ve4cib
December 21st, 2010, 08:24 AM
Software is VIRTUAL, theoretical objects that don't actually exist - merely binary states that represent imagined "objects". Engineering is based upon real, PHYSICAL entities, no matter how small or large. Telling me that a certain string is always returned for a certain command, implying that it is indisputable, as if it were a law of nature, is just laughable, sorry.

Theoretical physics isn't strictly-speaking based on any physical entities of any size; it's theoretical, but heavily based on mathematics and other areas of physics. But we accept theoretical physics as a domain of science, despite the absence of tangible entities beyond equations that apparently describe events in nature.

Computer science likewise does not represent any specific physical entities. But it is still a science to the same extent as mathematics and theoretical physics.

An algorithm *is* a law of nature in the same way as the Pythagorean Theorem, any formulae for calculating e, or the fact that the first-derivative of a polynomial function can be found by multiplying any relevant coefficients by the current exponent, and reducing the exponent by 1.

The fact that one can create an algorithm which, given any particular input, will always return the same output is no different than formulating a new equation to describe the motion of electrons, or describing the orbits of celestial bodies.

Science is also heavily based on the idea of experimentation. Computer science has that covered as well. We create an algorithm, analyze it theoretically, and test it against a range of inputs and measure its efficiency under real-world conditions. Human-computer interaction (where Fitts' law frequently comes into play) is all about experimentation: hypothesize that a new interface design is more efficient for a given task, perform an experiment where subjects use multiple interfaces to accomplish some goal, and evaluate the experimental results to determine the validity of the hypothesis. It can't get much more scientific than following the scientific method.



Resistance is not a code - 8 ohms will ALWAYS be 8 ohms, and can be measured AND RELIED UPON, without dispute. Code can be changed, and parameters modified and re-designed at the whim of a coder's keyboard - THESE ARE NOT physical states, they are merely imagined absolutes, which is a total mistake and mis-perception.

Changing code changes the algorithm, which changes everything. Code is no more mutable than the coefficients in an equation. Changing the coefficients changes the function. Changing the code changes the algorithm.

Just because anyone with the correct skills can download the source code to a program, edit it, recompile it, and execute it does not mean that an algorithm is mutable. One might jut as easily argue that the fact that anyone with a pencil and an eraser can change the values in E=MC^2 means that that equation is mutable.

Arguing that code being mutable means that computer science is not science is basically like me saying that we can change the value of the universal gravitational constant, and therefore gravity is mutable.

A piece of code, once written, compiled, and executed is no different than a mathematical function. Your input variables go in, the function is applied, and you get your output variables. Changing the code changes the function, meaning when the code is run again you're applying a different function to your input variables. It's like replacing sin(x) with cos(x) in an equation and then expecting the functions to be interchangeable; it's a stupid assumption to make, and only someone with no idea of what they're talking about would make that conclusion.



Call it what you like, I am not here to argue - I am here to make a statement of what my belief is, and I couldn't care less whether or not you agree, in your little internet bubbles witn your clever comments and witty replies - this is what I believe, and it is not ABOUT debate, it is inescapble fact, if you just sat down and thought about it a little.

So you would rather live in your own little internet bubble where you're allowed to talk down my degree, but I'm not allowed to point out that your entire argument is based on faulty suppositions, half-truths, and incorrect information?

Too bad. You've presented your hypothesis that "computer science" is not "science," and you've presented your "evidence" to that effect. I've illustrated that your evidence is lacking, and that computer science is science. So either admit you're wrong, or prove me wrong.



Next you'll tell me that 8 men standing in a row, four with red flags, four with blue flags, held up in a sequence to represent a binary code, have created a software "object" which can be probed and measured, like an electrical signal...

No, they haven't created a software object. Sofware -- as you have pointed out yourself -- is an abstract entity. But those men do form a system that can be modelled using mathematics. And those mathematical formulae and algorithms can then be transcribed into code, and executed on a computer if one were to be so inclined.

The mathmatical properties of what those 8 men are doing can be analyzed in the same way one might analyze an electrical signal, yes. But the same types of analyses can be applied to cellular mitosis, geometric growth patterns of bacteria in a petri dish, fractal motions of quantum particles, or the stress on a rigid member of a bridge. The system being analyzed is irrelevant; it's the analysis itself that matters.

Ultimately all a computer is is an electrical implementation of a Turing Machine. Code is simply the input to that Turing Machine. A Turing Machine is bound by the laws of mathematics in the same way as the laws of physics are.

Computer science therefore shares a very similar niche in the realm of science as theoretical physics; we work in the abstract, creating theoretical models (algorithms), and evaluating them in real-world scenarios (implementation & experimentation). Both are science.

Q.E.D.

akand074
December 21st, 2010, 08:51 AM
It's pointless arguing with him, his arguments are strongly based on emotion. I think your misinformed. Engineering does not have to be physical.

Science = Knowledge (Truth, on any subject really)
Engineering = Applying that science in a practical way

I'm sure this can be interpreted differently, and I'm sure you can make arguments pointing programming away from "science" or "engineering", but it is in no way "utter nonsense" or a "laughable title". Though I can assure you, the arguments strength definitely falls toward it having both science and engineering applications. Here is a quick example as it is late here as well.

Programming as a sense of research, where new algorithms and ways in which the languages can be advanced to be able to perform more efficient tasks with them would be considered an increase in knowledge. (Science)

Programming as a sense of creating new software and platforms that allow practical methods in which tasks can be carried out in society. (Engineering).

Though, you'll just read this, process it through with the emotional part of your brain rather than your rational part and just decide I'm wrong because you don't agree with it. It's pointless to discuss topics like this unless we are all calm and open to other people's thoughts and arguments.

wojox
December 21st, 2010, 09:08 AM
Software is VIRTUAL

We actually refer to it as abstract



8 ohms will ALWAYS be 8 ohms

We call those Constants.

You should take a class in OOP. It's real cool.

jdrsantos
December 21st, 2010, 11:51 AM
As an electronic engineer, what I get absolutely sick of hearing ALL the time, is "software engineering" this, and "software science" that; what complete and utter nonsense!


I must agree with you, glossywhite, there is no such thing as "software engineering" as there is no such thing as "electronic engineering".
"Software science" does'nt exist. Neither "electronic science", of course.

And as both of us agree, I don't explain my reasons for this assertive, like you don't have to explain yours. Indeed this is real "freedom of opinion" :D

Cheers, :popcorn:
jdrsantos

p.s.: btw, I expect you are better of your sickness

NCLI
December 21st, 2010, 02:07 PM
I must agree with you, glossywhite, there is no such thing as "software engineering" as there is no such thing as "electronic engineering".
"Software science" does'nt exist. Neither "electronic science", of course.

And as both of us agree, I don't explain my reasons for this assertive, like you don't have to explain yours. Indeed this is real "freedom of opinion" :D

Cheers, :popcorn:
jdrsantos

p.s.: btw, I expect you are better of your sickness

We do have freedom of opinion, but we also have facts. If your opinion doesn't align with the facts, you're wrong. You're free to be wrong, of course, but you should at least acknowledge this.

If science allowed "freedom of opinion," regardless of whether that opinion has been shown to be wrong, we'd still be living in caves.

Random_Dude
December 21st, 2010, 02:26 PM
Software never has been, isn't and I doubt EVER will be "science" or "engineering", because science and engineering are professions based upon known values, laws and properties in the real, physical world - somthing that software is not, nor ever could even hope to be.

Isn't Math a science?
It is based on logic, so is programming.

KdotJ
December 21st, 2010, 02:34 PM
It's pointless arguing with him, his arguments are strongly based on emotion.

This.
His mind is made up

youbuntu
December 21st, 2010, 02:57 PM
Wow guys! Some of you REALLY need to get out into the fresh air, and stop taking a random guy on the internet, me, SO seriously. If you disagree, then fine, but calling me a troll, and subtly insulting me between the lines, just because you disagree? Hah!

Time to get a grip? You may not agree, so exit the thread and get over it, as I am doing now.

Joeb454
December 21st, 2010, 03:02 PM
And with that - thread closed.