Slashdot Mirror


How Software Engineering Differs From Computer Science

cconnell sends in a piece he wrote for Dr. Dobb's which "argues that software development will never be a fully formal, rigorous discipline, and the reason is that software engineering involves humans as central to the process." Quoting: "Software maintainability, for example, is the ability of people to understand, find, and repair defects in a software system. The maintainability of software may be influenced by some formal notions of computer science — perhaps the cyclomatic complexity of the software's control graph. But maintainability crucially involves humans, and their ability to grasp the meaning and intention of source code. The question of whether a particular software system is highly maintainable cannot be answered just by mechanically examining the software. The same is true for safety. Researchers have used some formal methods to learn about a software system's impact on people's health and property. But no discussion of software safety is complete without appeal to the human component of the system under examination."

306 comments

  1. First! by Anonymous Coward · · Score: 0

    Wouldn't it still be as much a science as say... human psychology?

    1. Re:First! by RDW · · Score: 1

      'Wouldn't it still be as much a science as say... human psychology?'

      Pretty much:

      '...and this area is maddeningly slippery. No concept is precisely defined. Results are qualified with "usually" or "in general". Today's research may, or may not, help tomorrow's work. New approaches often overturn earlier methods, with the new approaches burning brightly for a while and then falling out of fashion as their limitations emerge.'

    2. Re:First! by mcvos · · Score: 1

      The article (unlike the summary) considers software engineering a part of computer science. But software engineering is quite a bit different from other kinds of engineering, and computer science isn't quite the same as physics either.

    3. Re:First! by Tablizer · · Score: 1

      Wouldn't it still be as much a science as say... human psychology?

      Perhaps. Psychology is also a "squishy" science to a large degree. Software engineering is a combination of psychology and economics. It's about psychology because humans have to maintain the code and how they relate to the code is largely about how they think about the code (and schemas). It's also a taste of economics because it involves maximizing use of limited resources, such as time, labor, and equipment.

      Economics is in a similar boat to the computer field: there are models that can be mathematically tested, but a lot of the variables are about human behavior, which takes us right back to psychology. For example, how will people react to bank closures? Will they buy a lot less or a little less? And should the models optimize total wealth or also try to smooth income (reduce bubbles)? These are questions pure math and science cannot answer.

      Economics generally failed to predict the mortgage meltdown. And we've had a long time since the Great Depression to improve economics. (To it's credit, things could have been a lot worse this time, but this is perhaps learning by real trial-and-error, not lab trials. It's not fun being giant guinie pigs)

      Another problem is that each human brain is different. Even if you find a way to model an average or aggregate, you still have to deal with individuals in software engineering and with regard to who runs a big company (economics).
                 

    4. Re:First! by stewbacca · · Score: 1

      And when you say "limited resources" what you really mean are uptight, greedy program managers under pressure to hit an insane and unrealistic profit margin. This is why most software sucks, pure-and-simply. Sure there are never enough talented developers, and customer time-lines are always unrealistic, but let's face it, our greed to make huge profits is the ONE factor that limits our resources the most.

  2. Perspective? by dov_0 · · Score: 3, Insightful

    How about a rigorous, ever changing, ever intriguing discipline? It already is and will be more so.

    --
    sudo mount --milk --sugar /cup/tea /mouth /etc/init.d/relax start
    1. Re:Perspective? by Anonymous Coward · · Score: 2, Insightful

      Software Engineering is trying to become a rigorous engineering discipline. It's not quite there yet. I am not convinced that it ever will be. Writing software is a creative process, arguably even an artistic one. Well understood rules can be followed, provably correct algorithms applied, formal design methods used, but it is still a human creative process, and as such, I suspect inherently non-rigorous.
      Computer Science compared to Software Engineering?
      Think aeronautics. The science of aeronautics ponders the laws of aerodynamics and the laws of flight.
      Engineering aeronautics is all about building the damn aircraft.

    2. Re:Perspective? by ThePhilips · · Score: 5, Insightful

      Computer Science compared to Software Engineering?
      Think aeronautics. The science of aeronautics ponders the laws of aerodynamics and the laws of flight.
      Engineering aeronautics is all about building the damn aircraft.

      That's pretty much how I think myself.

      Engineering would stop being engineering if it becomes a science.

      Engineering is in deep real world, with human nature and business requirements intervening all the time. Science (like religion) is in some sort of ideal world, vacuum, where all is simple and described by a formula. They are both trying to understand a problem - but from different angles. So different - or better say orthogonal - that they are guaranteed to cross only rarely.

      Writing software is a creative process, arguably even an artistic one.

      Same with science. I'd say that in the respect there is not much difference.

      The difference is as I try to put it above is that in engineering "it must work," while in science it doesn't even have to compile. It only has to work in some ideal world with unlimited resources and non-existent foreign factors.

      --
      All hope abandon ye who enter here.
    3. Re:Perspective? by pallmall1 · · Score: 1

      Software Engineering is trying to become a rigorous engineering discipline. It's not quite there yet. I am not convinced that it ever will be.

      After watching the ISO debacle approving microsoft's OOXML, I must agree with you.

      --
      3 things about computers: they're alive, they're self-aware, and they hate your guts.
    4. Re:Perspective? by Dantu · · Score: 1

      Engineering is in deep real world, with human nature and business requirements intervening all the time. Science (like religion) is in some sort of ideal world, vacuum, where all is simple and described by a formula.

      Definitely on side here. I agree with all of your points but think you missed just two

      In engineering you think not only about getting something to work, but (usually) how to keep it working. That same pragmatism that says "it needs to work" also says "the developers will make mistakes" - which means you need to study how to avoid mistakes, how to catch mistakes, and how to deal with mistakes. There's definitely a science component, but again the human component is also critical.

      The other major component is that a Software Engineer, like any other Engineer, needs enough fundamental understanding of all other branches of Engineering to work with his counterparts. A Computer Scientist may not need to know anything about Physics, Chemistry, Electronics, Politics, or the environment, but a Software Engineer needs a little of each, so that he can work with his counterparts in those fields. Note that I'm not saying those things aren't good to have in a Comp. Sci. they just aren't really part of the 'baseline'.

    5. Re:Perspective? by jc42 · · Score: 5, Interesting

      Science (like religion) is in some sort of ideal world, vacuum, where all is simple and described by a formula.

      I think you're confusing (or conflating) science with mathematics. But don't feel bad; people do this all the time. Part of the reason is that science routinely uses mathematics as a tool, and the two fields are deeply intertwined. Scientists use math to help understand and explain what they're working on, while mathematicians routinely use scientific work as inspiration for new ideas to pursue.

      But the "science" part is usually very much about the real world. It's the mathematicians who carefully avoid dealing with the real world, since that's not their job. The interesting part is how often the abstract, theoretical stuff that the mathematicians work on turn out to be very applicable to figuring out what's going on in the real world.

      One of the problems with our terminology is that "computer science" is generally used for the abstract, theoretical part of software. This is misleading, because the subject really is a mathematical field, not scientific. If it were scientific, the computer scientists would be performing experiments and developing hypotheses to explain how software works. But that's not what they do; it's the "software engineers" trying to debug software that do things like that.

      And this leads to the problem that "software engineering" generally involves doing things that in other fields would be called "science". In engineering, you are generally working with tools and materials whose behavior is well understood, so you can concentrate on design. With software development, this isn't generally true. An engineer designing a bridge or house or airplane can expect to work with detailed specs for all the available components. With software, the equivalent information is usually proprietary and intentionally hidden from the people building the code. Even in "open source" systems, the concept of "information hiding" is popular, and all too often this does mean that needed information is intentionally hidden from the person writing the code. So the software engineer is working with poorly-documented material, and must develop using processes that test and discover the properties of the underlying stuff.

      Of course, there are some software engineers who don't do any debugging. But we know how well this works. Civil engineers might be able to develop this way, since they have access to full specs for their material. Software engineers can't, because they are kept ignorant of the details of lower-level stuff. As long as this is true, software engineering must have a large scientific component, to study and test the software as it's developed. They must constantly develop and test hypotheses about their code, in order to get it to function as desired in an environment that is mostly hidden.

      Anyway, there's little chance of getting the terminology straight any time soon. There's no chance of software people getting access to detailed specs for the underlying systems. We even have laws in place that block the access to full information. So software engineering can't really be true engineering, and software developers will continue to spend large parts of their time acting as experimental scientists in order to debug their software. And they won't get much help from the computer scientists, who are spending most of their time working with the mathematics of the subject, while disparaging the real-world portion of their discipline as being "mere engineering".

      Now if we could only get the computer field to adopt the same definitions that other fields of engineering, science and mat use. But that isn't going to happen any time soon.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    6. Re:Perspective? by BigZaphod · · Score: 1

      I wish I could mod this all the way to the front page. Excellent comment.

    7. Re:Perspective? by jbengt · · Score: 2, Insightful
      TFA is terribly confused. Although it was ostensibly about the obvious fact that software engineering is not the same thing as computer science, it instead spent a lot of time talking about whether or not software engineering is really an engineering discipline. Then it asks questions with false premises, like:

      Why can't software engineering have more rigorous results, like the other parts of computer science?

      (hint, engineering!=science, if you can't see the obvious, read your own article headline)

      When it says things like:

      No concept is precisely defined. . . . We believed that structured programming was the answer. Then we put faith in fourth-generation languages, then object-oriented methods, then extreme programming, and now maybe open source.

      then you know it is even more confused, using debates about improvements in languages, language paradigms, work/management methods, and licensing types to try to show that software engineering is not rigorous science. That is like comparing varieties of apples, oranges, bananas, and pears in order to make the point that plants are not safety-tested automobiles.

    8. Re:Perspective? by commodore64_love · · Score: 2, Insightful

      Let's rewrite your words and the original article's words a little bit:

      [Electrical] Engineering is trying to become a rigorous engineering discipline. It's not quite there yet. Writing [circuit card VHDL] is a creative process, arguably even an artistic one...... But maintainability crucially involves humans, and their ability to grasp the meaning and intention of [schematics].

      [Automotive] Engineering is trying to become a rigorous engineering discipline. It's not quite there yet. [Designing steering wheels and consoles] is a creative process, arguably even an artistic one...... But maintainability crucially involves humans, and their ability to grasp the meaning and intention of [mechanical drawings].

      [Civil] Engineering is trying to become a rigorous engineering discipline. It's not quite there yet. [Designing roads and bridges] is a creative process, arguably even an artistic one...... But maintainability crucially involves humans, and their ability to grasp the meaning and intention of [surveys].

      .
      I call bullshit. ALL engineering disciplines involve creativity, require humans to maintain the design, and an ability to preplan how customers will interact with the finished product. It sounds to me like this professor/programmer/whatever is trying to make excuses for why software is not as reliable as other engineered products.

      --
      "I disapprove of what you say, but I will defend to the death your right to say it." - historian Evelyn Beatrice Hall
    9. Re:Perspective? by ThePhilips · · Score: 1

      Science (like religion) is in some sort of ideal world, vacuum, where all is simple and described by a formula.

      I think you're confusing (or conflating) science with mathematics. But don't feel bad; people do this all the time.

      Actually that one was a stone at physics ;)

      Math is abstract by definition (hey, I'm in some part a mathematician too, applied one). Math doesn't deal with real world. With no world at all. Math *allows* one to create their own world - and that's how physicists routinely abuse math all the time.

      And in fact that what makes science the way it is: scientific method to work, subject has to be understood by a human. And inner working of human understanding relies on several "lies": generalization and interpretation among others. In other words science can have rules and methods - because those are treats of human behavior and cognition. Thus scientists often sees its subject as they want to see it. Because they can. (*)

      Engineering's "it has to work" is pretty unnatural to our brain. It inhibits engineers from seeing the reality the way their brains try to see it.

      (*) My classical example is research of "time travel": any 5yo kid understands that "time" is only part of how we observe the world around us, it is part of our cognitive process - not part of the world. Yet, since math models allow to actually put t (time) at left side of equation, some start interpreting it as (variable) part of the world.

      In engineering, you are generally working with tools and materials whose behavior is well understood, so you can concentrate on design. With software development, this isn't generally true.

      I wanted to object to that, but then I read it again, seen the keyword "understood" and accepted what you way.

      Because harsh reality is that many engineers are "working with materials whose behavior is well understood", yet the behavior is not well "known". Software engineers on other side, work with materials which are "known" (hey, it all can be modeled to the bits), yet they are poorly "understood" because of our limited brain capacity.

      Now if we could only get the computer field to adopt the same definitions that other fields of engineering, science and mat use. But that isn't going to happen any time soon.

      Software engineering is very very young. It freaked me out when in my versity times one prof said that applied algebra is very young, youngest of all mathematics - only *hundred* years old.

      As software engineering would be evolving, the many application fields would be branching off. We can safely say that Web programming is going its own separate way. Decade before, finance programming went its own way too. Probably some other unknown to me fields too. The branching is happening precisely because some rules in the fields start to crystallize, making them distinct from general software engineering.

      --
      All hope abandon ye who enter here.
    10. Re:Perspective? by glitch23 · · Score: 0

      Engineering is in deep real world, with human nature and business requirements intervening all the time. Science (like religion) is in some sort of ideal world, vacuum, where all is simple and described by a formula. They are both trying to understand a problem - but from different angles. So different - or better say orthogonal - that they are guaranteed to cross only rarely.

      Why does science have to be mutually exclusive with religion? Religion is the faith that someone possesses about reality. Science simply tries to achieve the same understanding that faith already provides someone and it does indeed occur from a different angle. But both science and religion have the same end in sight; they just reach the end through different means. In my mind, that doesn't make them mutually exclusively but instead members of both should cooperate to arrive at a final understanding of reality. The problem is that people of faith can't trust scientists (but they can trust science if the scientists could be trusted) and the scientists don't want to trust the people of faith because they are viewed as 2nd-tier humans due to their "crazy" faith. If scientists weren't so elitist they might just change their perspective from which they interpret evidence and also actually work with religion, instead of against it, in order to find the proof behind the truth. The truth is already known from the perspective of religion; science just has to catch up.

      --
      this nation, under God, shall have a new birth of freedom. -- Lincoln, Gettysburg Address
    11. Re:Perspective? by Tony+Hoyle · · Score: 1

      Interesting perspective.. If I'm reading that right you're saying that as software engineering gets 'older' the creative/trial and error will get less prominent as everything will be discovered and documented (and available in easily available libraries).

      To an extent I can see that happening already - nobody writes sort algorithms any more for example, or floating point multiplication routines.. it's all in the libraries (in the case of FP, it's migrated to the chips). There are even a class of programmers that just bolt predefined bits together and are more designers than programmers (much web programming is like this).

      I'm not sure I'd find a 'mature' software engineering particularly interesting. Working out how to do something from first principles (especially when your result ends up faster/better than the 'traditional' solution) is half of the fun. I hate not understanding how a block of code works.. generaly because that's the time it fails and you end up having to rewrite the damned thing anyway.

      When I went to college the terms Software Engineering and Computer Science were interchangeable, to the extent my course had both titles depending on who you asked.. it wasn't until years later I discovered there was a real theoretical science (math, if you like) behind it. Although it sounds interesting, I'm really not into pages of greek math symbols so every attempt to look at it has lasted about 15 minutes - I can still see the value of knowing a bunch of predefined algorithms rather than reinventing them as needed though.. maybe one day when I'm bored.. :p

    12. Re:Perspective? by Tony+Hoyle · · Score: 2, Insightful

      Science and Religion really don't interact at all. Science makes an attempt to explain the world as observed through our own eyes (or instruments). Religion offers an explanation and where that differs from observed reality, assumes reality is wrong!

      You can take the view that as we'll never know the truth about the universe that both are valid perspectives - but you can't say they're complementary in any way. Scientists don't need to 'work with religion' - they work with reality - and if reality coincides with religion they have no argument.. where it conflicts, there's no point in discussion, because neither side is going to change their opinion.

      Now it's true that lots of scientists are elitist jerks - mostly they're elitist jerks towards other scientists.. it's not an issue with religion, it's a problem with what happens when people spend a lot of their time in one discipline and have too much ego invested in it. Lots of programmers are elitist jerks too. I bet somewhere there's a group of elitist jerk balloonists too.

    13. Re:Perspective? by frogzilla · · Score: 1

      "while in science it doesn't even have to compile. It only has to work in some ideal world with unlimited resources and non-existent foreign factors."

      -
      -

      This is so terribly wrong.

    14. Re:Perspective? by heironymous · · Score: 1

      Sorry, but you are mis-characterizing religion. You obviously know a lot about science, but perhaps not quite as much about religion. In reality, science informs religion. Now, there certainly are religious people that cover their ears when, say, evolution comes up. But you can't blame all of religion for the illogical ideas of some people. (I'm speaking of Hellenized religions here, where reason is important. Not all religions in the world have been heavily influenced by, say, Aristotle, but I'm afraid I know little about those that haven't.)

    15. Re:Perspective? by rghosh · · Score: 1

      See also "Computer Software Cannot Be Engineered" by Norman Young which argues that the concept of "Software Engineering," as an engineering discipline, is unfounded, and that "Computer Science" is not science, but mathematics. "Computer software cannot be engineered because there is no science of computer programs. Science is essential to engineering. The application of scientific models through engineering judgment defines the essence of engineering. Computer programs, as mathematical objects, are not subject to scientific laws. Consequently, by definition, computer software cannot be engineered. ..." http://tech.slashdot.org/comments.pl?sid=1258979&cid=28236833

    16. Re:Perspective? by Anonymous Coward · · Score: 0

      The only deity who is informed by religion is the God of the Gaps. Religion, by its very nature, is defined by unquestioning faith. A structure of beliefs that adapts to new scientific discoveries is probably more of a philosophy than a religion.

    17. Re:Perspective? by Anonymous Coward · · Score: 0

      While very insightful in general I believe most of the posts in here quite miss the point. After more than 30 years in computers I have come to the conclusion that we cannot yet tell the difference between the tool and the application. We continue to discuss computer's and programming as if that was the focus of the endeavor when it is only part of the time.

      The problem is likely that the tool itself requires continuous development. It's like a hammer that's incomplete so the carpenter has to spend as much time developing the hammer as he does using it to frame the house. I have so often, in my career, run into programmers who spend all their time on the tool and still don't know how to apply it to a real world problem.

      The other issue is that any development project involves both elements of the application and elements of the tool. To continue the hammer analogy, it would be like having to worry about the comfort of the grip while figuring out how to apply it to drive a nail. No other discipline requires this intimate mixture of tool and application to accomplish it's goals. The application programmer must know both the physics/engineering of the problem against which the computer is applied and the "science" of the computer as well then throw in a little human factors engineering on the side and you begin to understand why one cannot distinguish the computer science from the computer engineering.

  3. You're not Engineers. Get over it. by Anonymous Coward · · Score: 0, Flamebait

    Look, there is nothing wrong with being a programmer. Just as a good tech gets pissed off when he sees a 'nail technician', real engineers laugh at the IT crowd.

    No engineering degree = no engineer.

    1. Re:You're not Engineers. Get over it. by calmofthestorm · · Score: 1

      The usage varies by country. In America an engineer or technician refers to a profession, in some parts of Europe it refers to a degree.

      But then I'm not an engineer by any definition.

      --
      93rd rule of Slashdot: No matter how obvious my sarcasm is, my comment will be taken seriously by someone.
    2. Re:You're not Engineers. Get over it. by realnrh · · Score: 1

      So how about a degree that says "Master of Science in Engineering" for Computer Science? Does that count as an engineering degree?

      --
      Long? What do you mean the signature at the bottom of every comment I post on Slashdot is too lo
    3. Re:You're not Engineers. Get over it. by tempest69 · · Score: 1

      So how about a degree that says "Master of Science in Engineering" for Computer Science? Does that count as an engineering degree?

      Nope... nice degree, but the degree must say engineering too..
      and Engineers still dont consider software engineering to be engineering.
      And this from someone who nearly has that exact plaque on my wall.
      Storm

    4. Re:You're not Engineers. Get over it. by ufoolme · · Score: 1

      Master of Engineering (Magister in Ingeniaria), often abbreviated M.Eng. http://en.wikipedia.org/wiki/Master_of_Engineering

    5. Re:You're not Engineers. Get over it. by ruckc · · Score: 1

      Hmm, I always thought you needed to be a state certified engineer to call yourself an engineer. If not, well then damn, i'm labeling myself a solve-interesting-IT-problems-that-no-one-else-can-engineer.

    6. Re:You're not Engineers. Get over it. by calmofthestorm · · Score: 1

      Quite possible, but I know in some countries you are granted an Engineer's Degree instead of a Ph. D. for analogous work in an engineering discipline.

      Then again, my US school (Caltech) mentions that some date is the "last day to defend your dissertation [for this year] for the degress of Doctor of Science and Engineer". So maybe it's here as well, I don't actually know.

      Semantics, semantics

      --
      93rd rule of Slashdot: No matter how obvious my sarcasm is, my comment will be taken seriously by someone.
    7. Re:You're not Engineers. Get over it. by ishobo · · Score: 1

      Professional Engineer (PE) needs a license. The rules vary from state to state, with all requiring you to pass the NCEES Principles and Practice Exam for your chosen field.

      http://www.ncees.org/exams/professional

      --
      Slashdot - The great and glorious cluster fuck of Internet wisdom.
    8. Re:You're not Engineers. Get over it. by Dragonslicer · · Score: 1

      Look, there is nothing wrong with being a programmer. Just as a good tech gets pissed off when he sees a 'nail technician', real engineers laugh at the IT crowd.

      No engineering degree = no engineer.

      There's a difference between a programmer and a software engineer. Just like being able to nail pieces of wood together doesn't make you an architect, being able to write out a piece of code that does what someone else told you it has to do does not magically grant you the ability to design large or complex software systems.

    9. Re:You're not Engineers. Get over it. by Anonymous Coward · · Score: 0

      That's funny, as a software engineer that works at a classic engineering firm I can't say I've ever been laughed at. On the contrary, the fact I have to learn their trade as well as mine to be able to implement systems to help automate solving of some of the problems they face I've managed to gain quite a lot of respect.

      It's not like engineering is an inherently harder discipline or anything so I've no idea why engineers would ever laugh at them anymore than a physicist would laugh at an engineer or a mathematician would laugh at a physicist.

      I've been able to modernise many of the methods the engineers at our firm use to solve problems in fact because they've been doing things the way they've always done things and yet there are better ways of doing them using math and computing. The problem with the way they've always done it is there are margins of error and when those margins of error can cost us contracts over our competitors who in some cases manage to offer a solution with a smaller margin of error my solutions have won the company millions in contracts we'd have otherwise lost.

      Perhaps some better advice for you would be that engineers aren't anything special, get over it.

    10. Re:You're not Engineers. Get over it. by russotto · · Score: 3, Insightful

      Look, there is nothing wrong with being a programmer. Just as a good tech gets pissed off when he sees a 'nail technician', real engineers laugh at the IT crowd.

      If you're going to insist on rigorous naming, you ought to be consistent about it. Programming != "the IT crowd". There's some overlap, but there's a lot more programmers not in "the IT crowd" and a lot more to be done than programming within the "IT crowd".

      Furthermore, I don't care how many bridges, buildings, or aircraft you can design, if you can't drive a steam locomotive (with attached train), you ain't no engineer.

    11. Re:You're not Engineers. Get over it. by InsertCleverUsername · · Score: 1

      > No engineering degree = no engineer

      Look... I don't really care if I'm qualified to drive a train or not.

      I create complex things that live inside the computer, using the constraints and software parts available, much like an engineer in the physical world works with constraints and existing parts to make something useful. Unless you want to narrowly define engineering as designing physical things, I don't see your point. Truth be told, I don't spend a lot of time worrying about semantics and titles --I earn too much money to care.

      --
      Ask me about my sig!
    12. Re:You're not Engineers. Get over it. by Anonymous Coward · · Score: 0

      "No engineering degree = no engineer."

      You are Spanish, ain't you?

    13. Re:You're not Engineers. Get over it. by ClosedSource · · Score: 3, Insightful

      Nothing magically grants you "the ability to design large or complex software systems", no matter what degree or title you have.

      All this discussion about Computer Science vs. Software Engineering vs. Programming is really about ego and will not lead to any improvement in any discipline.

    14. Re:You're not Engineers. Get over it. by Hognoxious · · Score: 1

      I always thought you needed to be a state certified engineer to call yourself an engineer.

      I always thought there were a lot of countries in the world, and that they mostly have their own different laws.

      i'm labeling myself a solve-interesting-IT-problems-that-no-one-else-can-engineer.

      Think I'll call myself a not-American.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    15. Re:You're not Engineers. Get over it. by HornWumpus · · Score: 1

      Some CS programs are taught out of Engineering schools.

      Inferior ones are taught out of Arts & Science (usually out of math).

      Still more inferior ones are taught out of the Business School (spit).

      If someone want the engineer title they should major in EE or CompE. Granted its generally a harder program then CS.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    16. Re:You're not Engineers. Get over it. by Tony+Hoyle · · Score: 1

      In the UK Engineer is not a protected term - for example the ladder monkeys that fit satellite dishes are called 'engineers' and get very tetchy when you try to deny them that title - even though their only qualification is about 15 minutes of ladder training.

      If the bin man wants to call himself a 'Refuse Engineer' that's perfectly fine and nobody would care. The term has no functional meaning in this country.

    17. Re:You're not Engineers. Get over it. by Tony+Hoyle · · Score: 1

      True enough... I sometimes call myself a programer, sometimes an engineer, and sometimes my job title 'software development manager'. Depends on who I'm talking to and what I'm trying to achieve.

      It's not what you're called that makes you what you are - it's what you do. I've met graduates that I wouldn't hire to serve in a supermarket, let alone let near critical code.

  4. Experience by symbolset · · Score: 1

    You need more of it.

    --
    Help stamp out iliturcy.
    1. Re:Experience by dov_0 · · Score: 1

      You need more of it.

      Haha. Probably...

      --
      sudo mount --milk --sugar /cup/tea /mouth /etc/init.d/relax start
    2. Re:Experience by symbolset · · Score: 4, Insightful

      Don't we all need more experience?

      The basics are pretty simple. And by the basics, I mean where Niklaus Wirth got his ideas for the mathematical basis for algorithms, Alan Turing.

      Then we learn about functional programming from the guys who invented it: Kernighan and Ritchie. Grok lex and yacc and we're halfway there. After we've written three or four languages we realize their purpose is to formalize our interaction with libraries of prewritten code. Along the way we learn about the importance of portable compilers and the interdependence of portable compilers and portable operating systems and libraries of prewritten code, and the importance of all of those to the persistence of data.

      Then we study the evolution of C++ and figure out by ourselves why its inventor Bjarne Stroustroup is a brilliant idiot. (Hint: it has to do with interface hiding).

      We join the ACM and read and understand their Communications up until 1990 (anything after that is encumbered by patents). This takes a very long time.

      And then we invent some stuff and every fool that just got his AOL account feels qualified to call us an idiot because we didn't do things the way he expected.

      How about a rigorous, ever changing, ever intriguing discipline? It already is and will be more so.

      It is. You were right.

      --
      Help stamp out iliturcy.
    3. Re:Experience by siloko · · Score: 1

      Me? I just started writing games on my Vic 20,

    4. Re:Experience by beelsebob · · Score: 5, Informative

      If you think K&R invented functional programming, you're sorely mistaken, Go look up people like Peter Landin and Haskell Curry. Secondly, if you think that the C language book has anything to do with Functional programming, you *badly* need to get an education with regard to what FP is.

    5. Re:Experience by solferino · · Score: 1

      Mod parent up. Exactly what I wanted to say. K&R as the founding text of functional programming is just a bizarre idea.

    6. Re:Experience by symbolset · · Score: 1

      You know sometimes to put some information into a format that fits in a slashdot post, you have to take some shortcuts - especially if the baby wants the keyboard.

      I'm sorry if you think I've taken excessive liberties with the truth. That was not my intent.

      --
      Help stamp out iliturcy.
    7. Re:Experience by smallfries · · Score: 2, Informative

      It's an interesting point, and because I can see a fair littering of good comments by you all though this discussion I'm intrigued - what did you mean?

      K&R derived C from BCPL which was the non-hard-to-compile parts of CPL. The hard parts went on to become the basis of several functional languages.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    8. Re:Experience by CptPicard · · Score: 2, Insightful

      The problem is that that was not a shortcut.. it was a humongously wrong statement that shows you probably do not understand the concept you're mentioning.

      --
      I want to play Free Market with a drowning Libertarian.
    9. Re:Experience by elnyka · · Score: 1

      Do you have an idea what "functional programming" really means?

    10. Re:Experience by xZgf6xHx2uhoAj9D · · Score: 1

      I just assume he/she meant "procedural" and not "functional". I'm sure it was an honest mistake. That said, C was johnny come lately to the programming language scene; there were lots of procedural languages before C.

    11. Re:Experience by ukyoCE · · Score: 1, Informative

      You're talking about Carpentry, not Planning. Architecture is made up of both - you have to be able to make a building that stands and has doors and doesn't fall apart. It's an entirely different human-centric side of the discipline to put the doors [i]where people want them to be[/i]. That's what TFA is talking about.

      Software Engineering and Computer Science are not the same thing.

      Computer scientists tend to make for really crappy software engineers. They tend to make overarchitected apps that don't meet the business need, aren't maintainable, and take years longer than planned.

      What the stakeholder actually needed was a Visual Basic app that would have taken 3 months, been easy to maintain, and actually filled their business need. The app would probably have changed direction 1 month in, but thats OK - thats why you make mockups and lightweight proof-of-concept code to help steer them.

      This is not a problem that K&R, Bjarne, or Turing addressed. This is software engineering. Read TFA.

    12. Re:Experience by david_thornley · · Score: 1

      I think Algol was the first procedural language to get any popularity, and it's almost as old as I am. Its descendant Pascal was tremendously popular before C was really widely used. C was really a System Implementation Language that caught on, largely due to being associated with Unix. There were plenty of SILs at the time that didn't happen to catch on, probably because they weren't multiplatform. (Cybol, for example, only worked on large CDC computers.)

      C is not a functional language. C was not anywhere near being the first procedural language. Bjarne Stroustrup is not any sort of an idiot.

      However, there are Slashdot contributors and moderators who are.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    13. Re:Experience by scamper_22 · · Score: 4, Insightful

      I think the real issue is there is no 'routine' aspect to software.

      Most other domains of Engineering have a very defined field and set rules. There are also very standard way of doing things. Simulators have been built...
      I would argue that anytime some *new* device in another field of engineering is done, it suffers from the same 'flaws' as software. I can't speak for too many other fields, but I can speak for electrical engineering. Any new kind of hardware follows the same kind of iterative, simulate, debug... aspect as software. Fortunately, for hardware it needs to accomplish its set goal and people recognize the costs involved... and it somehow managed to escape the anyone can code mentality.

      Now software, we must understand is be definition new. ANY repetitive work is done by the tools (compiler, linker...). In Civil Engineering, you still need the civil engineer to oversee the building of the structure. To make sure the workers do things correctly... this is all very routine work. Often there are standard blue prints already done and the civil engineer just makes some small tweaks and then has to oversee the project. Just follow the damn process. In software, we are so fortunate, that our builders (compiler, linker...) work amazingly well. They never make a mistake and can repeat their work as often as possible.

      Once built, software can be deployed a million times over without fail. Not so for civil engineers who must pursue the same rigor each time a building is built.
      Heck in software, we like to make one deployment so flexible by these amazing things called 'options'. everything is a bloody option and configurable. Again, unlike many other forms of engineering where the regularity and standard process dictates how things are done.

      We must understand this key difference. Because of the nature of software, *some* people have made the mistake of trying to superimpose other disciplines onto software.
      There are those who would say that software is design and implementation.

      First you design it, like the civil engineer designs the building.
      Then you implement it, like the workers build the building.

      I cringe whenever I hear a similar analogy. Yes, there is some 'abstract' notion of design away from a specific language, but expressing that design in a particular language is still design.
      The civil engineer who uses autocad or whatever to design their building is expressing his design in that format.
      The software engineer is just expressing his design in C++/Java...
      THERE IS NO IMPLEMENTATION WORK IN SOFTWARE.
      Everything is design. Just high level design and low level design.

      Sadly, some people continue to try and draw parallels with factory or civil engineering work. They claim there is some design that can be done, and then a bunch of code monkeys (construction workers) assemble and build the software. It's so wrong on so many levels, I'll repeat it again. The compiler and linker assemble and build the software. Every code monkey is doing design.

      For sure, I think we will get *some* formalization of the process as certain practices become more standard. Our tools will most certainly become better and better (issue trackers, source control...). Yet at the end, the code still needs to be designed. There is no escaping the need for good software engineers.

      Just like there is no escaping the need for good civil engineers if you every try and do something out of the ordinary.

      I could write more about formal testing and the like, but I'll leave this point as is.

    14. Re:Experience by symbolset · · Score: 1

      I didn't mean to say "functional programming" at all. While I believe in the idea of functional programming, I have to say that, like Scientology, it is a rabid cult best left unmentioned. It would take over the world except that any time two more more members meet they immediately foam at the mouth and fight to the death, which self-limits the contagion. But hell, there are so many symbolic mines in this field it's a tough walk and I'm lucky to have gotten this far without being modded to oblivion.

      C was designed by K&R to be useful to them. To be useful to them it needed to be portable from one machine to another and bring its operating system too because platforms were changing quite frequently and every vendor had their own special tools and ways of doing things and if K&R wanted to keep their data they had to bring not just their language to the new platform, but the OS too. So the word I was looking for is more like "useful". Or is that one taken by some cult too?

      --
      Help stamp out iliturcy.
    15. Re:Experience by e2d2 · · Score: 1

      Those don't count, the Vic 20 came with a book of Basic programs and you copied those. Admit it! ;-) My first graphical program was on the Vic 20, copied from the book that came with it. It made a wing ding fly across the screen. I miss those days, when it really didn't matter. These days I'm a pro and more concerned about things outside of actual programming like SDLC processes. It's work now.

    16. Re:Experience by bfrpsw · · Score: 1

      Here's a good place to start: http://portal.acm.org/citation.cfm?id=1283933 John Backus' 1977 Turing Award talk.

    17. Re:Experience by Hognoxious · · Score: 1

      Bjarne Stroustrup is not any sort of an idiot.

      You mean he intended C++ to be like that? The rotten bastard!

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    18. Re:Experience by weakpawns · · Score: 1

      I didn't mean to say "functional programming" at all. While I believe in the idea of functional programming, I have to say that, like Scientology, it is a rabid cult best left unmentioned.

      What do you mean by the "idea" of functional programming? Functional programming is not a "paradigm" or whim to be believed or disbelieved in - it IS what programming is. What are you going to program with if not functions? Functions and relations (morphisms) are what the nature has given us. That said, I feel that the comparison of functional programming with imperative programming is unwarranted. Imperative programming is just a particular way to implement a "function" where the programmer wants to manipulate state explicitly. One can very well program imperatively in a "functional programming language" like ML. So imperative programming is just a paradigm, or a style of programming. The important distinction (apart from the type system) is that 'functional' programming languages allow one to work with higher-order functions, whereas imperative languages like C do not facilitate it. One should nevertheless be able to write higher-order functions in C using a painful encoding, just as one would write down the description of a Turing machine on the input tape of a universal Turing machine.

      C was designed by K&R to be useful to them. To be useful to them it needed to be portable from one machine to another and bring its operating system too because platforms were changing quite frequently and every vendor had their own special tools and ways of doing things and if K&R wanted to keep their data they had to bring not just their language to the new platform, but the OS too. So the word I was looking for is more like "useful". Or is that one taken by some cult too?

      In my opinion, C seems to be the result of a desire to get a high-level programming language mixed with low-level access to the memory, in order to be able to write an operating system. It just seems to be a bad design to mix different levels of abstraction in the same language. This mixing of abstraction levels actually makes matters worse for C - things start becoming OS dependent. Because of the low-level access to memory available, one can write C code that would do one thing on one architecture, and a completely different thing on another. This just blows away your argument of C being designed to be 'portable'.

    19. Re:Experience by Workaphobia · · Score: 1

      I did a double take when I read the attribution of functional programming to K&R in your previous post. C, as an imperative language, is at the opposite end of the spectrum. Did you mean functional as in operational and practical, i.e., fit for a purpose?

      --
      Evidently, the key to understanding recursion is to begin by understanding recursion. The rest is easy.
    20. Re:Experience by Glonoinha · · Score: 3, Interesting

      Actually I wonder if the code written on the Vic 20 is exactly the code that matters. Even if it was just copying right from Byte magazine.

      Here's what it says to me:

      This is a software developer that was doing computer stuff when he was young because he enjoyed it. Not IM, not games, not first person shooters or flight sims. Software development in its basest form. For free. Because he could.

      It also says he has been doing it for a very long time. If he is still doing it, he does it because he enjoys it - not because of how much it pays or how glamorous it is or how 'easy' it is compared to other jobs.

      There were plenty of kids with the opportunity to spend all day every day on the Vic 20, but very few did so because in all honesty from an 'entertainment' perspective it sucked.

      Give me someone who grew up hacking on a Vic 20 any day over a coder who knows the Java API set inside out (but started coding it three years ago, and doesn't know anything else.)

      --
      Glonoinha the MebiByte Slayer
    21. Re:Experience by Glonoinha · · Score: 1

      Excellent reference.
      Can you cite any concrete current examples of implementation?

      Understand that I'm genuinely curious from a software engineering perspective, and not 'calling you out' per se.

      --
      Glonoinha the MebiByte Slayer
    22. Re:Experience by bfrpsw · · Score: 1

      I'm not really up on CS theory (it was my interest as a grad student back around '80). But I think you'll see things like the map() function in Perl (or the array_map() function in PHP) as being related to this.

    23. Re:Experience by symbolset · · Score: 1

      Bjarne Stroustrup is not any sort of an idiot.

      Agreed. He's not.

      And then we invent some stuff and every fool that just got his AOL account feels qualified to call us an idiot because we didn't do things the way he expected.

      Sometimes I like to include circular reasoning that when unlooped points out that I know I'm being a fool. Foolishness is fun sometimes, don't you think?

      Was it too subtle?

      --
      Help stamp out iliturcy.
    24. Re:Experience by sjames · · Score: 1

      Meanwhile, I can just imagine a civil engineer trying to meet the same specs as practically ALL software.

      Engineer: Where is the building site?

      Customer: All over, we'll use the same blueprints in the desert, the arctic tundra, some swamps, and perhaps one in orbit. Some will be downtown, others will be built on abandoned farmland.

      Engineer: [TILT!]

    25. Re:Experience by beelsebob · · Score: 1

      Interesting, we've moved on from ignoring to ridiculing... Now all we need to get through is you fighting FP, and it winning.

    26. Re:Experience by doti · · Score: 2, Informative

      "Functional programming" has NOTHING to do with the existence of functions in your program.

      That would be "strucutred programming", what K&R was doing.

      Functional programming is A LOT more high-level.
      C just a much easier way (than assembly) to organize your code in functions and data structures, plus a library to access basics of the system (libc).

      --
      factor 966971: 966971
    27. Re:Experience by Anonymous Coward · · Score: 0

      ++whoosh

    28. Re:Experience by Anonymous Coward · · Score: 0

      Pascal and C are procedural languages

    29. Re:Experience by Anonymous Coward · · Score: 0

      > THERE IS NO IMPLEMENTATION WORK IN SOFTWARE. Everything is design.
      That depends on your definition of "design". If you accept the definition used in systems engineering then "software design" is the plan to fulfill all functional requirements, "architecture" is the plan to fulfill non-functional requirements, and "implementation" is the execution of those plans.

      > It's so wrong on so many levels, I'll repeat it again ... Every code monkey is doing design.
      Not with any rigor or formality. That is what separates real engineers from hackers.

      Systems engineering is a super-set of software engineering. Systems engineering works - it has a proven history of successful projects (especially huge multi-billion$ projects), while most software projects fail. Google "systems engineering" to see how to complete software projects properly. Here is an introduction:
      http://www.sstc-online.org/Proceedings/2005/PDFFiles/JOC846.pdf

    30. Re:Experience by happyhamster · · Score: 1

      beelsebob is correct that C has nothing to do with functional programming languages such as Lisp or Haskell. You may be mistaking it for procedural programming language, which C is.
      [http://en.wikipedia.org/wiki/Procedural_programming]
      These are very different concepts. What IS interesting is that your posts got +4 and +3 mod points. I guess it shows the level of computer science education among slashdotters.

    31. Re:Experience by smallfries · · Score: 1

      Have you replied to the right post?

      I'm well aware that procedural languages have nothing to do with functional languages. Hence my comment about the separation that occurred with CPL. And I only had one post in this discussion...

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    32. Re:Experience by MadKeithV · · Score: 1

      I've done a serious remodelling of a house. Due to my experiences I now think that building software is EXACTLY like building a house. People just have a much, much too positive idea about the crap that goes on when you try to get people to build the house you want.

  5. Is software "engineering" really engineering? by KnowThePath · · Score: 4, Insightful

    Going by the wikipedia definition decisions made in typical software development cycles don't seem to rely on a justification based mathematical or physical analysis. Admittedly I might be generalising, but is it more of a soft-skill then? ie something that you acquire on your own rather than something that can be formally taught or imparted as training? Makes you wince when you see all those job adverts asking for programmers to work in their "engineering departments"... Disc: I'm a coder myself, working in a structural engineering environment, so watching people design buildings around me feels more like "real" engineering... Go on, mod me down now.

    1. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 2, Informative

      You'd be surprised how little "real" engineering involves "mathematical or physical analysis" sometimes. Most of the time it's more a matter of "do what we did that worked last time". Those people designing buildings are using a lot more intuition and estimation than you realize.

    2. Re:Is software "engineering" really engineering? by highways · · Score: 1

      From Wikipedia:

      "Engineering is the discipline and profession of applying technical, scientific and mathematical knowledge in order to use natural laws and physical resources to help design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective."

      When was the last time you saw your structural engineers do their work from first principles taught at uni, as opposed to spreadsheet design or computer simulation?

      The next question is, why should they?

      I am a "software engineer" by profession, but my basic training is electronics engineering.

      Without formal rigour, is software engineering a trade/vocation or a profession? My supervising senior engineer does a lot less maths and formal design than I do (which is mostly for sensor processing, which requires it), yet he solves most software implementation problems more efficiently and cleanly than I do. Does that make him any less of an engineer than me? I think not.

      Sometimes I think "software engineer" is a bit of a catch-all title given by HR to those that are required to write software as part of their jobs (and is the main tangible output of their job), when in reality the design that they do could be any number of fields, software or otherwise.

    3. Re:Is software "engineering" really engineering? by KnowThePath · · Score: 4, Interesting

      I'm not sure if I want to reply to AC's, but I forgot to mention I'm a structural engineer myself by education... Most structures of respectable size fall back on Finite Element Analysis to gauge the response to a variety of loads. [The estimation of loads is a research topic in itself, where the factors of safety comes from a rigorous stochastic-based reliability analysis]. Once analysis has been performed, design is a bit of intuition, but certainly not estimation - it's more of heuristics... so you say, "this worked last time, let me try this option and analyse if it'll work this time too."

    4. Re:Is software "engineering" really engineering? by Idiot+with+a+gun · · Score: 5, Insightful

      In this case, "Physical analysis" would be running tests, deployment, crash analysis, etc. If we're comparing software engineering to "real" engineering, I feel it would be disingenuous to knock down software engineering because it works with code instead of physical items. The complexity is still there.

      For me, what delineates "engineer" is much better defined in my mind by "engineering type." While a software engineers, civil engineers, and mathematicians may vary quite a bit in average disposition, they are more similar than dissimilar compared to the rest of the population. I genuinely believe that there is a major difference between the engineering mind (or in my case, CS), and everyone else. Similar to how painters, composers, and photographers all may vary in general, yet they're more similar to each other than the rest of the population.

    5. Re:Is software "engineering" really engineering? by dov_0 · · Score: 4, Interesting

      Soft skill? Depends how well it's done. Lets use car repairs as an example. There are many times I've known or heard tell of where well trained city mechanics throw up their hands in defeat before the car is taken to either a 'mate who knows something about cars' or a 'bush mechanic' and fixed in 15 minutes. Ie. Sometimes the ability to observe, sort information well and problem solve is worth a lot more than a piece of paper with 'engineer' written on it.

      Another example. I run a computer repair business with a 'no fix, no fee' policy. Even though I've never had a single day of formal training in the field, I have never, ever had to bring that policy into action. Meanwhile it's surprising how often my mates who have done IT or computer science ask me for help on something because they just don't know how to THINK.

      --
      sudo mount --milk --sugar /cup/tea /mouth /etc/init.d/relax start
    6. Re:Is software "engineering" really engineering? by physburn · · Score: 2

      How much of software writing is software engineering. To deserve the name engineering take a problem that has to deeply analysised calculating a method of solution, programming is sometimes like that. But often i find i can start programming the solution straight away with just a bit of thinking about the class/object structure of the eventual program. When its like that is more like authoring a book, then engineering a machine.

    7. Re:Is software "engineering" really engineering? by crispytwo · · Score: 1

      After working with engineers from other disciplines that create software, one begins to realize how different it is for those of us who create software for a living, especially stuff that a human can use. Engineers from other disciplines tend (and I'm generalizing) to be more derivative, when creating software.

      Good software engineers, programmers, hackers, or whatever you want to call us think about problems differently. When we do our best work, it is because we see a problem that is new to us, and we see a solution or a potential solution. The result is software that the artistic, creative poets put together to function in a way that solves a problem. Sometimes it's elegant; other times it's horrendous. I'm sure you can think of many examples of each. But every time, it is something personal.

      I agree that the idea of controlling development in some formulaic way is next to ludicrous. All you can really hope for is that the development is contained enough from getting unmanageable. Scope-creep, enhancements, limitations and their respective removals, all play havoc with rigour. I think you can easily see when software is getting to the unmanageable level; that's when you throw out and recreate. I've heard the cursing of other developers for decades and yet, no one escapes those curses. And it can go both ways... eg. Bob: Why TF did Joe do X?... and often enough... Joe: What TF was Bob thinking? X is now really broken!

      Software is Art as much as it is anything else.

    8. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      I absolutely agree: "real" engineering involves people and unpredictable/artistic/intuitive decision making processes as well (the difference is that designing code is almost ENTIRELY unpredictable). Perhaps other trained engineers in the software industry share my frustration with the general reluctance to apply ANY formal rigour to the process, using arguments like the one in this article as the general excuse?

    9. Re:Is software "engineering" really engineering? by mcrbids · · Score: 5, Interesting

      Going by the wikipedia definition, decisions made in typical software development cycles don't seem to rely on a justification based mathematical or physical analysis. Admittedly I might be generalising, but is it more of a soft-skill then?

      That's just horsepucky.

      The only reason it seems the way you mention is that software processing cycles are so ridiculously cheap compared to, say, 3" C-Channel girders. But just today, I was doing some engineering to develop a distributed, self-healing clustering file system. Specifically, I was doing performance analysis of different approach, doing a base unit of 1,000 simple file reads. That is most *definitely* a physical analysis - performance tuning always is. But do I care about each individual line? Not really. Do I do extensive analysis of each individual element? Not by a long shot, simply because the actual, real, overall cost of the software is so low.

      We host highly complex, vertical-market database solutions. We have a pretty decent hardware cluster comprising some $25,000 in whitebox rackmount equipment. A nice half-rack of stuff. And another $10k or so for a failover DR scenario. But compared to the number of customers we service, and the size of my company, that's an insignificant investment, yet we are overbuilt at least 400%!

      If 3" C-Channel cost $0.05 per linear foot, how much checking would you do beyond "good enough"?

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    10. Re:Is software "engineering" really engineering? by TapeCutter · · Score: 1

      IAACS but my career has been in software development. Knuth captures your sentiement in the title of his legendary computer science text - "The art of computer programming".

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    11. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 1, Insightful

      You're obviously a coder, not a programmer

    12. Re:Is software "engineering" really engineering? by tibman · · Score: 1

      I'm being honest here, what's the difference?

      --
      http://soylentnews.org/~tibman
    13. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      People who are good in the field can arrive at a well designed solution iteratively. Because you can't doesn't mean he can't. That's where great programmers/coders/developers/engineers and you differ.

    14. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 1, Interesting

      Architecture (at least when done PROPERLY) is a bit like that. It combines an artistic aesthetic along with a rigorous utilitarian ideal.

      Pure utilitarianism in architecture wont win any awards, but gets the job done. (Example-- concrete houses.)

      Likewise, pure art structures tend to have serious functionality issues. (Bad use of floor space, leaky roofs, plumbing problems, poor airflow from poor window location choice, etc.)

      The pinnacle is reached when both of these come together harmoniously. Considering the utilities at work at the time, I find old 19th century "Victorian" houses to be exceptional at this. These houses were very beautiful to look at, incorporating many artistic, yet functional edifices, and were designed to give maximal floor space economy for the furnishings of the era, along with good natural ventilation through hall, room, and window placement. There are other such "Beauty meets function" designs found elsewhere as well, but the point still stands.

      In the software world, you have the same basic warring principles;

      The CLI application is utilitarian, effective, and no-nonsense.

      They "eye-candy bloated UI" application may severely lack in true functionality, but boy it sure is "purdy."

      The pinnacle comes when the balance is struck harmoniously between usefulness, utility, and ease of use (aesthetics).

      If I were to put that label on a piece of buyware, I'd be tempted to cite NT4. It was lean, efficient, stable as a mountainside, and reasonably pain-free to use. It knew it was just an OS, and that the user merely wanted to use it to get work done. Granted, it's features are horribly dated by today's requirements. It's a bit like the previously mentioned Victorian houses.

      [today's incarnations of windows remind me of an old victorian house that has had holes cut in the walls, and had 'amenities' forcibly installed in such copious and wild abandon that it ends up looking like PeeWee's playhouse instead. (watch for full effect, and tell me you don't agree.)]

      So, at least in my opinion, Software Engineering is quite a bit like Architectural engineering, except using virtual components and aesthetics, instead of physical ones.

    15. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      Go through a few law suits, specs become more rigid and standardized, maybe impose a few regulations, it'd be like any other engineering field. But then it won't be so "soft" - it would also become an oxymoron. Such is life.

    16. Re:Is software "engineering" really engineering? by Bearhouse · · Score: 3, Insightful

      Meanwhile it's surprising how often my mates who have done IT or computer science ask me for help on something because they just don't know how to THINK.

      Interesting post - I believe there are different kinds of thinking. I've had the benefit of learning how to fix cars by tinkering with them alongside my father since I was 10, and also a decent post-grad level education. I'm pretty good at fixing things, both cars and complex systems. I'm not special - there are plenty of people like me, including you, it would appear.

      OK, some missed out on the practical stuff, and have thus never developed this 'practical' side. This does not make them incapable of thought IMHO.
      For example, my wife is a lawyer - I'm amazed at her ability to spend hours 'thinking' about a complex case and then having that 'Eureka' moment when she finds the angle that she'll use for constructing a defense or attack. She's not worried about not knowing how to fix her PC or her car - she has a husband for that ;-)

    17. Re:Is software "engineering" really engineering? by johannesg · · Score: 4, Insightful

      I'm not sure if I want to reply to AC's, but I forgot to mention I'm a structural engineer myself by education... Most structures of respectable size fall back on Finite Element Analysis to gauge the response to a variety of loads. [The estimation of loads is a research topic in itself, where the factors of safety comes from a rigorous stochastic-based reliability analysis].

      Once analysis has been performed, design is a bit of intuition, but certainly not estimation - it's more of heuristics... so you say, "this worked last time, let me try this option and analyse if it'll work this time too."

      So... A "real" engineer uses heuristics, common sense, estimation, and best of all, a complete unreliable piece of _software_ that was written by a programmer (who we just established can never be an engineer since they cannot be rigorous) to rigorously analyse his work? Looks to me like you are building your bridge on rather shaky grounds there, if you'll forgive the metaphore...

      In the meantime, I found myself wondering how maintenance works for real structures. Apparently you _can_ rule out the human factor there completely, making "real" engineering thereby far more rigorous? Don't forget that "maintenance" means something very different for software than it does for real structures: you don't have to paint your software once every two years... What we call maintenance really is "changing the structure that is already there to become something else". I'd like to see someone add a lane or two to an existing bridge without involving humans at some point as a fundamental factor.

    18. Re:Is software "engineering" really engineering? by tyrione · · Score: 2, Insightful

      Sorry, but Software Engineering houses most of its complexity in the actual complexity of the chosen language and Art of Design that has nothing to do with Traditional Engineering. I'll put it this way: Becoming proficient in C/C++/ObjC/Java is a matter of exposure to the language and various APIs with well-tested design patterns others have tested and shown to be useful, on a domain specific problem set.

      Learning these languages is not remotely the same as learning Heat Transfer, Non-linear Dynamics, Quantum Mechanics, Fluid Dynamics, Machine Design, Fatigue analysis, etc.

      In fact, 99.9% of all Software Engineers never touch actual traditional Engineering domain sets and thus require degrees in those fields to be able to apply their Programming Language, Frameworks/Libraries and more necessary to model, test and produce an Engineering Product for say Ballistic Missiles, Hydroelectric Power Systems, Nuclear Reactors, so on and so forth.

      There is a reason you don't get looked at for a traditional Engineering position with a Software Engineering degree on your resume, versus having a traditional Engineering degree with a programming background.

      How much of the commercial/open source software for consumers or enterprise clients requires the software to actually require factors of safety standards set by ABET/ASME/ASCE, etc., to actually adhere to Electromagnetic Theory, actual Mechanics and expect to be highly precise so as to be useful in modeling the Boeing 787 for FAA certification before its even run a test flight?

      There is a huge difference between an actual true Engineering Discipline and Computer Science. There is a reason Bill Joy wants Computer Science to one day be on par with Mechanical Engineering. You don't see 50 differing versions of basic Calculus. You see 50 different programming languages with various pros/cons to justify their existence. This isn't acceptable in Engineering Fields that use applied Physics to make products which must guarantee Human Safety as a premium.

      The biggest draws for clever programmers is the Web and Smartphones. You're not going to see Differential Equations [ODE/PDE] and Vector Analysis on their backgrounds unless they've switched careers from traditional Engineering to Programming--the money being the biggest lure.

      Web Development ten years ago was mocked by traditional Software Engineers as not programming but writing scripts. How ironic that today the bulk of all "software engineers" are writing dynamic web sites/web services from the consumer to the enterprise and are fighting over getting their applications the most sales via smartphones. Cash talks bs walks in the world of the Internet. Traditional Engineering isn't a product of the Internet whereas today's drive for a lot of future chip design is to make sure the hungry mass consumers have those advanced features to see their precious content streamed to them in HD from their homes, to their phones all to keep them entertained and brain dead.

      Traditional Engineering benefits from all of this progress but it's not driving these any more than email drove people to use Computers who normally would just write letter or call their friends back when a land line was the solution for all. You won't see blogs with tens of thousands of comments on a new advancement in Wind/Solar Technology specifics. You see 10,000 bemoaning posts tangentially spiraling into oblivion about how politically this or that new advancement may or may not ever be implemented and how this or that corporation blocks said advances to keep old technology in charge.

      Software Engineering has evolved into keeping the masses glued to their computers where people can rant and rave by the millions. Its evolved into applying game physics to entertain kids as they continue to evolve into obese young adults incapable of being physically active. Its evolved into allowing traditionally inept large clusters of people from being more than a servant into being capable of driving a BMW, a Decati, a Porsche but still b

    19. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      Quite so. Creating good software is an art as well as a science. All the engineering training in the world won't take you through the complexity to find the underlying simplicity. I'm suspect it's a sampling artifact, but all the self-identified "engineers" I have encountered have been worse at both design and implementation than the self-trained programmers I have known.

    20. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      That's great, finite element analysis. Whoo. Believe me, I know that structural engineering is a relatively mathematically-intensive field of engineering. And it sounds like you're pretty proud of yourself for being able to divide up physical objects into slightly smaller pieces and simulate their properties, with software. But you think that's what makes you an engineer?

      Because, when I think of "mathematical or physical analysis", I thought you might be talking about simulating structures from the atomic level, at least. As a software engineer, I have to account for the effects of cosmic rays when designing systems. Do you?

      In order to do a thorough "engineering" job, I have to understand software in terms of electrons (or perhaps photons), with all their inherent limitations.

      In addition to hardware, a typical software program is built upon three to five separate layers of abstraction. None of those add any performance benefits. They don't usually make the software more reliable or easier to debug. They just exist to make the software *possible* to build in an economically justifiable timeframe. I have to understand the benefits and limitations of up to a dozen alternatives at each layer, how they interact with each other and with external systems.

      One or more of those layers may very well be a black box that I just have to trust works as the supplier claims, for both legal and practical reasons.

      Furthermore, the software equivalent of the analysis you describe is usually a complete waste of time for a software engineer. Though it does occur, there's usually little reason to use mathematical analysis and software to simulate software. It's faster, cheaper and easier just to write the software, analyze it directly, and modify the parts that don't perform as intended.

      So, with software being a non-physical abstraction that can be infinitely modified at very little cost, it should be obvious that the concept of "engineering" software may be somewhat different from that of "engineering" physical materials that haven't significantly changed in over fifty years.

      Personally, I feel that software engineering is more difficult than most. But to each his own.

    21. Re:Is software "engineering" really engineering? by pallmall1 · · Score: 1

      As a software engineer, I have to account for the effects of cosmic rays when designing systems.

      Ah. So that's how Steve Jobs projects his reality distortion field!

      --
      3 things about computers: they're alive, they're self-aware, and they hate your guts.
    22. Re:Is software "engineering" really engineering? by TheLink · · Score: 2, Interesting

      > "complete unreliable piece of _software_"

      I doubt real engineers would use a completely unreliable piece of software.

      Real engineers are practical enough to use software works well enough. They're not mathematicians who keep looking for complete proofs, or 100% - they are well aware of the real world.

      And in the real world, it will be exceedingly unlikely that the finite element analysis software will work fine for lots of different cases, but fail dangerously for your case even though it is not really very different to other common cases.

      If the case is something really new and "far out", I bet a proper engineer would do more checks and perhaps add higher safety margins.

      The other thing is, an experienced engineer will often know whether something is dangerous. It's just like you looking at a branch and guessing whether it will hold your weight or not. If a branch is way too weak it's easy to guess that.

      Similarly if the software gives a result that's ridiculous an experienced engineer should notice it.

      So the software has to give a result that's not ridiculous, but still dangerous despite the margins of errors etc.

      It's more likely that the contractor botches up the job (or cheats) and doesn't build according to the required quality and spec - e.g. use more sand in the concrete to save cost, use less concrete, etc.

      --
    23. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 2, Informative

      "But Software Engineering houses most of its complexity in the actual complexity of the chosen language"

      That's probably the reason why all my SE courses featured no code samples.

      You really need to look up the difference between programming and software engineering before you throw up again.

    24. Re:Is software "engineering" really engineering? by KnowThePath · · Score: 1
      Whilst your argument is valid, cost is not the only governing factor when it comes to designing a structure - even if a Channel girder costs peanuts you still need to check your structure for safety and other parameters like say, environmental sustainability. (More material != Better design, irrespective of cost of structure).

      I'm not really talking of the rigour of analysis or whether developing a file system is more "complex" than analysing/designing a 3 storied building. But the fact that decision making is supported using calculations that have been arrived at by experimentation, simulation or prototyping makes it a lot more empirical than programming.

    25. Re:Is software "engineering" really engineering? by johannesg · · Score: 3, Interesting

      "completely unreliable piece of _software_"

      I doubt real engineers would use a completely unreliable piece of software.

      The point of this article was that software engineers are not real engineers because they lack rigorous frameworks and rely too much on human factors. Seen from that point of view, you really only have two classes of software: those that are rigorously engineered to be reliable (and the article already claimed those don't exist), and those that are not. The last group must therefore comprise all software that's out there.

      Real engineers are practical enough to use software works well enough. They're not mathematicians who keep looking for complete proofs, or 100% - they are well aware of the real world.

      Fine, no problems with that. But "real engineers" should then also accept software engineers as real engineers. Software engineers are also practical enough to make software that works well enough - even though software engineers are not mathematicians who keep looking for complete proofs.

      And in the real world, it will be exceedingly unlikely that the finite element analysis software will work fine for lots of different cases, but fail dangerously for your case even though it is not really very different to other common cases.

      "We tried walking across it a few times and it stayed up, so it is probably fine" - Yeah, that sounds pretty rigorous to me...

      If the case is something really new and "far out", I bet a proper engineer would do more checks and perhaps add higher safety margins.

      Again, where is that rigorousness of which the article speaks? What you are proposing is just a matter of intuition, without any grounding mathematical framework.

      The other thing is, an experienced engineer will often know whether something is dangerous. It's just like you looking at a branch and guessing whether it will hold your weight or not. If a branch is way too weak it's easy to guess that.

      And an experienced software engineer won't know?

      Similarly if the software gives a result that's ridiculous an experienced engineer should notice it.

      And an experienced software engineer won't notice?

      It's more likely that the contractor botches up the job (or cheats) and doesn't build according to the required quality and spec - e.g. use more sand in the concrete to save cost, use less concrete, etc.

      ...and we're back to human factors. Thank you for disproving the article entirely on your own.

    26. Re:Is software "engineering" really engineering? by TheLink · · Score: 1

      > Thank you for disproving the article entirely on your own.

      You're welcome. You mean there was an article? I didn't bother reading it.

      Did I miss much? :)

      --
    27. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      Yes, software "engineering" exists, but the sad truth is that most softwares are not "engineered" but build by mere analogy to what is considered as "working", without questioning the resulting design, responses to new induced constraints, etc.
      There are some domains where the resulting quality level is incredebly low, most of the time they are domains of incredible mediocrity regarding the quality of service rendered to the final user.

    28. Re:Is software "engineering" really engineering? by maxume · · Score: 1

      Isn't it obvious? A coder writes code and a programmer writes programs.

      --
      Nerd rage is the funniest rage.
    29. Re:Is software "engineering" really engineering? by Naerymdan · · Score: 0
      On of the reason I love Quebec (in Canada):

      Engineer is a reserved title, which makes it illegal for people not part of the "Ordre des ingenieurs du Quebec" to call themselves engineers.

      You should have seen a couple years ago with the MCSE (Microsoft Certified Systems Engineer) certification... Hahahaha!

      Here:
      http://www.microsoft.com/canada/learning/QuebecMCSE/default.mspx

      ps.: To be part of the Order in Quebec, you need a 4-year (would be 5-years in USA) university degree in engineering.

      --
      Bah.
    30. Re:Is software "engineering" really engineering? by johannesg · · Score: 1

      > Thank you for disproving the article entirely on your own.

      You're welcome. You mean there was an article? I didn't bother reading it.

      Did I miss much? :)

      Not really. Reading back, I see my posting reads a bit like a personal attack on you, but that really wasn't the intention and I apologize if it was perceived that way. I just get riled up at the whole "software engineers are not real engineers" thing; structural engineers are not infallible either.

      Software projects do fail, at a rate that is too high, but in my opinion that is not caused by lacking engineering discipline but rather by ridiculously low deadlines and cowboy operators (even if they are wearing three piece suits). What we can learn from other engineering disciplines is that we need to get ourselves certified and get that certification protected by governments - not for the skill or rigorousness it demonstrates, but simply because it allows us to wield power against managers ("no, I will _not_ sign off on that; it is not ready").

    31. Re:Is software "engineering" really engineering? by MobyDisk · · Score: 1

      I hope I don't go into a building you have designed. The engineers I work with use the mathematics of materials sciences, measurements, and statistics to determine what designs meet the company needs. Granted, there is a lot of "do what we did that worked last time" but those things were based on mathematics. If it is changed, they go through the analysis again.

    32. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      If 3" C-Channel cost $0.05 per linear foot, how much checking would you do beyond "good enough"?

      Unlike "Software Engineering", a "real" engineer might just actually consider whether the material could stand up under the expected strain. Plus at least 10%. No just "good enough".

    33. Re:Is software "engineering" really engineering? by Zoxed · · Score: 1

      > Meanwhile it's surprising how often my mates who have done IT or computer science ask me for help on something because they just don't know how to THINK.

      Apples and Oranges: your mates are trained to design and write software etc, not debug hardware and OS config problems.

    34. Re:Is software "engineering" really engineering? by pnewhook · · Score: 1

      The point of this article was that software engineers are not real engineers because they lack rigorous frameworks and rely too much on human factors.

      I would argue that the conclusions of the article are completely wrong. Engineering, regardless of discipline will always have a human component of creativity and skill. This does not mean engineering is not rigorous. In most peoples experience software has more problems generating consistent results than other forms of engineering because for some reason there are more arrogant assholes in software that assume they know everything, refuse to listen to other team members or the customer, make up requirements instead of following the real ones simply because they think they know better. No other discipline has these problems - mechanical, electrical, controls, structures, systems engineers all work as part of the team - then over in the corner refusing to talk to anyone is the psychotic software lead.

      "We tried walking across it a few times and it stayed up, so it is probably fine" - Yeah, that sounds pretty rigorous to me...

      If that's what you think a structured engineering approach is you are sadly mistaken.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    35. Re:Is software "engineering" really engineering? by pnewhook · · Score: 1

      Personally, I feel that software engineering is more difficult than most.

      Partially due to the fact that, based on the rest of your post, you don't have the first clue on how to design or test software.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    36. Re:Is software "engineering" really engineering? by pnewhook · · Score: 1

      When was the last time you saw your structural engineers do their work from first principles taught at uni, as opposed to spreadsheet design or computer simulation? The next question is, why should they?

      Basically every time that the computer simulation is used. An answer from an algorithm or simulation is only as good as the input to that algorithm or simulation. Doing a basic sanity check on that answer is a must for any good engineer.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    37. Re:Is software "engineering" really engineering? by russotto · · Score: 1

      Sorry, but Software Engineering houses most of its complexity in the actual complexity of the chosen language and Art of Design that has nothing to do with Traditional Engineering. I'll put it this way: Becoming proficient in C/C++/ObjC/Java is a matter of exposure to the language and various APIs with well-tested design patterns others have tested and shown to be useful, on a domain specific problem set.

      A lot of scientists try to write their own code based on that idea. Often it even works. It's unlikely to be efficient or scalable or easily adaptable to similar problems. You can learn the whole of a language but if you don't really understand it and just try to apply cookie cutter building blocks, you won't get good code, though you may get a workable prototype.

      How much of the commercial/open source software for consumers or enterprise clients requires the software to actually require factors of safety standards set by ABET/ASME/ASCE, etc., to actually adhere to Electromagnetic Theory, actual Mechanics and expect to be highly precise so as to be useful in modeling the Boeing 787 for FAA certification before its even run a test flight?

      Well, my initial thought is "Who cares? It's not engineering because life safety requirements are involved, and not 'not engineering' if they are not". And my second thought is "All the software used for modeling the Boeing 787, for starters".

      There is a reason you don't get looked at for a traditional Engineering position with a Software Engineering degree on your resume, versus having a traditional Engineering degree with a programming background.

      I doubt a Chemical Engineer would get looked at for a Mechanical Engineering position either, nor vice-versa. Which one isn't real engineering?

      You don't see 50 differing versions of basic Calculus. You see 50 different programming languages with various pros/cons to justify their existence. This isn't acceptable in Engineering Fields that use applied Physics to make products which must guarantee Human Safety as a premium.

      This only demonstrates your ignorance of mathematics. There's something called "The Calculus", but that just distinguishes it from all the other calculuses. And even within differential and integral calculus, there are multiple notations for the same thing, still in use.

      How ironic that today the bulk of all "software engineers" are writing dynamic web sites/web services from the consumer to the enterprise and are fighting over getting their applications the most sales via smartphones. Cash talks bs walks in the world of the Internet.

      How many engineers are designing molds for cheap plastic cases? A lot, that's for sure. The prevalence of scut work doesn't distinguish between engineering and non-engineering disciplines. As for the second statement, you went two words too long.

      Software Engineering has evolved into keeping the masses glued to their computers where people can rant and rave by the millions. Its evolved into applying game physics to entertain kids as they continue to evolve into obese young adults incapable of being physically active. Its evolved into allowing traditionally inept large clusters of people from being more than a servant into being capable of driving a BMW, a Decati, a Porsche but still being no cooler than if they never had one. It's evolved into creating a culture of physically inept clods who have a short term skill set the ability to make far more money than ever possible in a traditional engineering discipline, never ever having to be required to have the broad and deep knowledge a traditional engineering discipline requires.

      Oh, you're just trolling. Why didn't you say so in the first place. I suppose the Capital Letters of Pompousness should have tipped me off. Mea culpa.

    38. Re:Is software "engineering" really engineering? by dov_0 · · Score: 1

      Apples and Oranges: your mates are trained to design and write software etc, not debug hardware and OS config problems.

      I thought that's just what the IT guys were supposed to be accomplished in?

      --
      sudo mount --milk --sugar /cup/tea /mouth /etc/init.d/relax start
    39. Re:Is software "engineering" really engineering? by janwedekind · · Score: 1

      That's the difference between experience and knowledge. Knowledge can save you a lot of bad experience, but it only brings you this far.

    40. Re:Is software "engineering" really engineering? by dov_0 · · Score: 1

      That's the difference between experience and knowledge. Knowledge can save you a lot of bad experience, but it only brings you this far.

      Exactly. The whole learning and traditional learning methods balance each other.

      --
      sudo mount --milk --sugar /cup/tea /mouth /etc/init.d/relax start
    41. Re:Is software "engineering" really engineering? by SSCGWLB · · Score: 1

      "Sorry, but Software Engineering houses most of its complexity in the actual complexity of the chosen language and Art of Design that has nothing to do with Traditional Engineering. I'll put it this way: Becoming proficient in C/C++/ObjC/Java is a matter of exposure to the language and various APIs with well-tested design patterns others have tested and shown to be useful, on a domain specific problem set."

      I would hazard to guess that you have no idea what programming or 'Software Engineering' is. In the software world there are plenty of plain old hard problems. I am not talking about computation complexity, I mean hard because of problem complexity, requirements, size, scope, limitations inherent to computers, data set, communications, etc. This is independent of design and programming language of choice. Of course a arbitrary problem can be made more difficult through a choice of poor tools (programming language) and/or poor design.

      Extreme examples of this would be compilers, operating systems, and DBMS. Do you honestly think the the majority of the complexity of a compiler is due to design decisions and programming language it's written in?

      Sorry, but I didn't bother to read past that point. Its hard to take a comment about software engineering seriously when the first paragraph shows a basic lack of understanding of the software domain.

    42. Re:Is software "engineering" really engineering? by pnewhook · · Score: 0

      Your confused as to what engineering is.

      Engineers are the architects of the system. They design the structure, incorporating the needs of safety, complexity, target environment and customer needs. This has nothing to do with code or what language is used to implement the software.

      The relationship between computer engineer and CS is similar to the relationship between a mechanical engineer and the guy on the CNC machine making the part. Or the structural engineer of a building and the guy who mixes and pours the concrete.

      Basically designing the system and proving it is correct to all requirements is the software engineers domain, and implementing that architecture with code and algorithms is the CS domain.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    43. Re:Is software "engineering" really engineering? by turbidostato · · Score: 1

      "Unlike "Software Engineering", a "real" engineer might just actually consider whether the material could stand up under the expected strain. Plus at least 10%. No just "good enough"."

      If a "real engineer" doesn't understand what "good enough" means within context what you have is a "real..ly shitty engineer". Might be your case.

    44. Re:Is software "engineering" really engineering? by InsertCleverUsername · · Score: 1

      Music composition seems like a more apt metaphor than art (for all engineering, IMHO). Rules must be applied, there are a limited number of solutions that will work, most of any project is just reuse of what has worked before, and although amateurs can do it, what they create is typically crap.

      --
      Ask me about my sig!
    45. Re:Is software "engineering" really engineering? by ukyoCE · · Score: 1

      I think you're right in your GP post that software engineering isn't "really" engineering, by certain definitions.

      Software engineering is a lot more like house design than house construction. Architecture is where those two meet, and thats about as close as you come to what we call "Software Engineering".

      In Software Engineering you do have to actually build the thing. But it's more about building what the stakeholders (business) wants and can maintain, than it is about algorithms or science.

      A super-fast java website with a dozen layers and a dozen frameworks is still useless compared to a PHP app that takes 1/100th the time to create, but actually gets the job done.

    46. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      wow, you managed to be 100% incorrect about your definition of "CS"

    47. Re:Is software "engineering" really engineering? by pnewhook · · Score: 1

      No I'm not. Engineers are architects, CS are implementers. Not saying there isn't overlay if the team size is small or the skills are present.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    48. Re:Is software "engineering" really engineering? by Hognoxious · · Score: 1

      Just to clarify what you said: some quasi-masonic guild sets up a closed-shop and that makes Quebec teh awsome?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    49. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      You thought wrong, fucktard.

    50. Re:Is software "engineering" really engineering? by dov_0 · · Score: 1

      Oh no! I must be so wrong because an Anonymous Coward said so!

      --
      sudo mount --milk --sugar /cup/tea /mouth /etc/init.d/relax start
    51. Re:Is software "engineering" really engineering? by Tablizer · · Score: 1

      So... A "real" engineer uses heuristics, common sense, estimation, and best of all, a complete unreliable piece of _software_ that was written by a programmer (who we just established can never be an engineer since they cannot be rigorous)

      It's my understanding that the engineer is still held directly responsible if he/she relies on faulty software and there is property or human damage as a result. They cannot pass the buck to the software vendor (who probably has the Mother of all Disclaimers anyhow). Thus, an engineer better check their results by hand, at least make sure they are in the right ball-park.
           

    52. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      The advantage structural engineers have over software engineers is that the variables in their simulation are much more bounded. Nobody blames the structural engineer if they fail to anticipate a 2000 mile an hour wind or time suddenly stopping and then jumping forward (possibly for only one part of the structure). The latter LITERALLY happens to software sometimes! That's why getting threaded apps right can be hard.

      Of course, structural engineering isn't the most fair comparison to software in general. Nobody dies when a word processor segfaults and so management and customers simply aren't willing to spend as much on design to make sure it doesn't happen.

      Small consumer gadget design would be more fair, and that field is packed full of WTF moments (see Made by Monkeys).

    53. Re:Is software "engineering" really engineering? by TapeCutter · · Score: 1

      I agree, I see music as art. :)

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    54. Re:Is software "engineering" really engineering? by Anonymous Coward · · Score: 0

      So what you're saying is that real engineering is more "trial-and-error" and "gut-feeling" designing than science

    55. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      Part of the problem is that software engineering is a really broad field with widely varying qualifications required. Web developers need only know a couple scripting languages and HTML to succeed. Nobody dies if the webalyzer9000 fails.

      People DO die if the software running the medical irradiation machine (google Therac-25) fails. People DO die if the engine control or autopilot software on a jumbo jet fails.

      As for mathematics, pick up any decent textbook on DSP (Digital Signal Processing) and you will see that at least a subset of Software Engineers certainly do require differential equasions, calculus, and complex numbers. Often enough in DSP, one starts with an analog circuit and through a Laplace transform and then a Z transform, designs an IIR (Infinite Impulse Response) filter to approximate it in software. In spite of the IIR necessarily being an approximation, it may be closer than a mass manufactured circuit once componant tolerance is considered. Incidentally, the DSP specialist will also need to decide if the IIR will do or if it's worthwhile (and practical) to spend the CPU cycles on a FIR (Finite Impulse Response) filter that can accomplish things no analog circuit ever can (sharper cutoffs, no ripple, perfectly flat response in the passband, etc)

      In the embedded world, the Software Engineers must make sure that the device can NEVER for any reason get stuck in an undefined state even if the firmware may be updated remotely using an unreliable connection or the power to the CPU may be unreliable. Even if someone somewhere is actively attempting to cause the device to enter an illegal state. Even the web programmer has to deal with the latter problem though it's unlikely that people will die if they fail.

      All of that without any legal protections allowing them to withhold signoff until they're 100% satisfied that the system is just so.

      It's all a matter of which part of the profession you care to look at. The field of engineering also includes the "Engineers" who slap together the crappy made by monkeys designs for cheap consumer goods, some of which could be done better by advanced elementary school kids. What genius came up with the "master key system" where anybody with a single key can replicate a master key in at most 36 unobtrusive tries using only a blank and a triangular file? Why doesn't Intel include a proper JTAG debugging port on their CPUs like everyone else in the world does? Why does every IR remote insist on speaking it's own incompatible language? Why do any of them have an on/off toggle signal rather than a distinct on and off signal so other devices can have somewhat positive control? Who came up with cheesy nylon gears for an otherwise all metal washing machine? What id10t of an engineer placed the number 8 spark plug on the Corvette such that you have to unbolt and jack up the engine to replace it? Surely that person should be taken out back and shot. What total goof of an EE designed the "power brick" on the C64 that I (and thousands of others) the 14 year old future Software Engineer had to fix by chiseling part of the case off and soldering in a $1 voltage regulator from Radio Shack? I guess he failed the semester on heat transfer!

      As for the "complexity hidden in the libraries and the language", who do you suppose wrote the libraries and created the languages? That would be Software Engineers.

      Short summary, you're comparing Engineers designing in situations where mistakes cause death against Software Engineers doing work where failures have minimal consequences. You're ignoring entire fields of Software Engineering in the process. The comparison comes out differently when you line things up apples to apples.

    56. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      A lot of scientists try to write their own code based on that idea. Often it even works. It's unlikely to be efficient or scalable or easily adaptable to similar problems. You can learn the whole of a language but if you don't really understand it and just try to apply cookie cutter building blocks, you won't get good code, though you may get a workable prototype.

      That's why there is so much scientific code that's still in FORTRAN 77 where even obvious bugs are untouched for over a decade because they're petrified that even the slightest change will bring the whole thing crashing down (or worse, introduce a subtle error that could invalidate years of results).

      This only demonstrates your ignorance of mathematics. There's something called "The Calculus", but that just distinguishes it from all the other calculuses. And even within differential and integral calculus, there are multiple notations for the same thing, still in use.

      For a fundamental example, mathematicians use i to represent the square root of -1 while engineers use j. The calculus used by engineers is loaded with funny little quirks that drive some mathematicians up the wall.

    57. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      In what universe?

      Physicist is to Mechanical Engineer as CS is to Software Engineer.

      It's unfortunate that so many schools get that wrong. Often they don't actually HAVE a Software Engineering program so they just cram it into CS. Or worse, their CS program is just programming.

      The guy who mixes the concrete corresponds to a coder.

      Things are a bit confused in terminology. Analyst is an older term for Software engineer. Since they often write some code they were called Programmer/Analyst and unfortunately abbreviated as Programmer.

    58. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      Agreed. The ability to look at a broken something and see how it SHOULD be is a specialized sort of thinking (and hard to teach). The further ability to then manipulate that thing to fix it efficiently is a talent that some develop from practical experience and really cannot be taught in an academic setting.

    59. Re:Is software "engineering" really engineering? by pnewhook · · Score: 1

      Well when I hire someone to code, since there is no such thing as a degree in coding, I'll hire a CS grad. If I want someone to architect a system I'll hire a software engineer.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    60. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      It's your life, but you'll either pay through the nose or get someone whose desperate for a reason. Would you hire a materials scientist to pour your patio because there's no degree in pouring concrete?

    61. Re:Is software "engineering" really engineering? by pnewhook · · Score: 1

      I dont need to hire someone with a degree to pour concrete, but I wouldn't risk a mission critical system by hiring a 'coder' with no training and no credentials. Sorry but thats the way the world works. If you really know how to code, then spending the time to get a degree shouldn't be a problem.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    62. Re:Is software "engineering" really engineering? by tyrione · · Score: 1

      Wrong. I was citing the fact that Calculus I, II and III however you slice it is still freakin' Calculus that was presented by Newton, Leibniz, Euler and more.

      Advanced fields of Calculus that extend beyond that base is still unique to their respective discipline.

      Programming in C/C++/ObjC/Python/, etc., are solving the same problems but different pros/cons to their language design. The Laws of Mechanics can have 50 different programming languages thrown at it to solve them, but they don't change. They aren't solving the problem by becoming an Engineering discipline. The field of Heat Transfer has a specific set of applied physics and mathematics to solve myriad types of black body problems. You have immutable laws you work within to solve these problems.

      Software Art Programming is all it will ever be because instead of 50 branches of Calculus [evolved over the advancements of Science and Mathematics] we have 50 Programming languages being applied to 50 branches of Calculus not because its sound, but because new languages are created by developers who would rather start a new language to compensate for the deficiency of another language(s) than to work in large groups of committees to make previously existing languages more complete.

      We don't just like C and we don't just like Smalltalk so we get C++, ObjC. We don't like those so we get D, but we also get Python, Perl, Ruby, PHP, Java, etc, etc.

      As someone pointed out, Fortran is far more precise than even C for Numerical Analysis, but I doubt you'll find students today screaming to learn it.

      Software Engineering is Software Programming.

      It's foundation is driven by Commerce and the Internet far more than anyone ever anticipated. It's created nothing but a long list of skill lists that must be had now or your avenues for work are quickly pinched off. Becoming an Engineer you won't be starting off on Games with real Physics, Flight Simulators, etc. You'll be a grunt. Yet, as a grunt you know your education is grounded in hundreds of years of proven Science. In programming, you are constantly seeing new fads in languages and marketing driving where your skills need to evolve. It's not an Engineering Discipline. It's a life where you make money Consulting and having to reinvent the wheel quite often.

    63. Re:Is software "engineering" really engineering? by tyrione · · Score: 1

      Engineers use i as well to represent the imaginary part of a constant. Then when it comes to Vectors they use i, j and k when dealing with Forces that have both a scalar and vector component to them.

    64. Re:Is software "engineering" really engineering? by tyrione · · Score: 1

      Electrical Engineers don't take Heat Transfer. They would have taken Analog Circuits, Power Systems and more, but not Heat Transfer. Heat Transfer is reserved for Mechanical & Material Science Engineering.

    65. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      I've seen a number of texts that consistently use j for imaginary numbers.

    66. Re:Is software "engineering" really engineering? by sjames · · Score: 1

      Considering that the things failed because the heat sink for the regulator was encased in plastic, I guess they should have consulted an engineer that did understand heat transfer.

      One of the dangers of over-specialization. Consider, Software Engineers are expected to educate themselves adequately in whatever problem domain the software is targeted to.

  6. Re:You're not Engineers. Got train? by Anonymous Coward · · Score: 0

    You need a choo choo train for that

  7. Thank you, Captain Obvious! by Anonymous Coward · · Score: 2, Insightful

    Humans are not maths.

  8. Software Engineering is trying by mad+zambian · · Score: 5, Insightful

    .. to become a rigorous engineering discipline. It's not quite there yet. I am not convinced that it ever will be. Writing software is a creative process, arguably even an artistic one. Well understood rules can be followed, provably correct algorithms applied, formal design methods used, but it is still a human creative process, and as such, I suspect inherently non-rigorous.
    Computer Science compared to Software Engineering?
    Think aeronautics. The science of aeronautics ponders the laws of aerodynamics and the laws of flight.
    Engineering aeronautics is all about building the damn aircraft.

    --
    Trying to associate Microsoft with "fun" is like trying to associate Satan with aromatherapy. -Tycho
    1. Re:Software Engineering is trying by jbacon · · Score: 4, Insightful

      .. to become a rigorous engineering discipline. It's not quite there yet. I am not convinced that it ever will be. Writing software is a creative process, arguably even an artistic one. Well understood rules can be followed, provably correct algorithms applied, formal design methods used, but it is still a human creative process, and as such, I suspect inherently non-rigorous.
      Computer Science compared to Software Engineering?
      Think aeronautics. The science of aeronautics ponders the laws of aerodynamics and the laws of flight.
      Engineering aeronautics is all about building the damn aircraft.

      As a senior in a software engineering major, I tend to agree. While there are any number of methods, design tools/patterns, and whatnot to help me do my job, in the end it is my own ideas and styles that define the product. There's certainly an element of artistry to it - a small block of recursion that accomplishes something horribly complex is just... beautiful.

      Another thing that contributes to its non-rigor is the domain knowledge requirement. I can't effectively build a system unless I understand (at least at a high level) how it works. Each industry has its own specialties and levels of difficulty, and you can't teach all of that in school, so they teach us how to think and learn instead. They give us ways of understanding the problems we need to solve, and that's really what we do - solve problems.

    2. Re:Software Engineering is trying by Anonymous Coward · · Score: 0, Troll

      .. to become a rigorous engineering discipline. It's not quite there yet. I am not convinced that it ever will be. Writing software is a creative process, arguably even an artistic one. Well understood rules can be followed, provably correct algorithms applied, formal design methods used, but it is still a human creative process, and as such, I suspect inherently non-rigorous.
      Computer Science compared to Software Engineering?
      Think aeronautics. The science of aeronautics ponders the laws of aerodynamics and the laws of flight.
      Engineering aeronautics is all about building the damn aircraft.

      http://blog.soufun.com/blogweb/blog_manage/gratulate.aspx/userid=23799432
      http://my.home.news.cn/blog/control/home.do
      http://home.myspace.cn/index.cfm?fuseaction=user
      http://my.51.com/webim/index.php
      http://10553007.blog.hexun.com/32715836_d.html
      http://sys2.blogcn.com/control/article.do?method=list
      http://blog.chinamil.com.cn/user_index.asp
      http://blog.sanfo.com/user_index.asp
      http://blog.titan24.com/blog.php?uid=414198
      http://liulangqiuxie.blog.china.com/index.html
      http://blog.zjol.com.cn/spacecp.php?docp=me
      http://www.blogbus.com/user/?blogid=4969180&mm=Post&page=&sortid=
      http://www.mastv.cc/mastvblog/user_index.asp
      http://blog.sina.com.cn/u/1192639293
      http://blogs.albawaba.com/admin.php
      http://blog.ycool.com/index.php
      http://home.q.yesky.com/space-4194762.html
      http://blogs.66law.cn/users/liulangqiuxie/
      http://blog.aweb.com.cn/user/manage/articles.jsp

    3. Re:Software Engineering is trying by Tony-A · · Score: 1

      >.. to become a rigorous engineering discipline. It's not quite there yet. I am not convinced that it ever will be.
      "Real Engineering" has something called "Strength of Materials". You can build a bridge out of wood or out of steel, but the designs will be different because engineers are aware that different materials have different properties and have some ability to quantify those differences. Designing a bridge so that it will "scale" would never be attempted in any real engineering discipline. However, engineers will make designs which are valid over some range.
      Look real deep and I suspect that the creative processes are the more rigorous. "Just remove everything from the block of marble that isn't David" Just being different shouln't count as being creative.

    4. Re:Software Engineering is trying by AlXtreme · · Score: 2, Insightful

      There's certainly an element of artistry to it - a small block of recursion that accomplishes something horribly complex is just... beautiful.

      This reminds me of a fairly large OSS project where they were recursively doing SQL queries after certain actions to clean up. This worked, however they didn't take into account scalability.

      The project I was using this for was about a factor 10 larger than usual and it became terribly slow. The database was being pummeled recursively with SQL queries and the whole thing came to a screeching halt.

      The solution was simple: a single optimized SQL query that did exactly the same as that wonderfully complex recursive database-killing monstrosity. Yes, it's in the main branch now.

      I'm all for artistry, but you have to know the limitations of your tools. Recursion is lovely but not if it hampers the project. Sometimes, in software engineering, beauty is knowing when not to use a beautiful tool.

      --
      This sig is intentionally left blank
    5. Re:Software Engineering is trying by Anonymous Coward · · Score: 0

      "Software engineering is trying to become a rigorous engineering discipline. It's not quite there yet. I am not convinced that it ever will be."

      I'm certain that it is, the problem is not software developers, the problem is the complexity and cost of engineering. I'm sure given an infinite budget and the right people software development would become software engineering, the problem really is that:

      1) No one wants to pay the true cost
      2) Technology changes too fast and Ccrtain technologies go obsolete very quickly

      The real problem with most software development ("engineerng") is time and budget, not the fact that it's impossible to engineer great software, just that the costs to do a good job as project complexity increases, increases enormously.

    6. Re:Software Engineering is trying by cvd6262 · · Score: 1

      My first CS professor told me that there are nearly infinite ways to accomplish any single task on a computer. He felt this meant computer science and software engineering were arts...

      "But we don't call them art because we like paychecks."

      --

      I'd rather have someone respond than be modded up.

    7. Re:Software Engineering is trying by turbidostato · · Score: 1

      Sorry, but you don't know what you are talking about.

      "I'm certain that it is, the problem is not software developers, the problem is the complexity and cost of engineering."

      Can you really talk on a straight face about "engineering" without considering "complexity and cost"?

      "given an infinite budget"

      Given an infinite budget you are lightyears away from anything resembling "engineering" to start with.

      "and the right people"

      Again, if you need for your project to name your people by name and surname instead of qualifications you are lightyears away from anything resembling "engineering".

      "The real problem with most software development ("engineerng") is time and budget"

      As in building bridges the problem is *not* time and budget? Next time someone wants to build a mile-wide bridge I'll offer building it myself only... with a teaspoon -for a trillion.

      It's not only that most software so selfcalled "engineers" seem not to have been exposed to anything resembling "engineering" but that haven't been exposed to nothing remotely resembling "common sense" either.

    8. Re:Software Engineering is trying by lawpoop · · Score: 1

      This also sounds to me like the difference between engineering and architecture. In many instances, they are doing the same thing, but the architect role is the more visionary, creative, big-picture, forest role, while the engineering role is the more nuts-and-bolts, analyse, optimize, details, and trees roles.

      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    9. Re:Software Engineering is trying by jbacon · · Score: 1

      Well, I was kind of thinking fractals when I said that, but okay.

    10. Re:Software Engineering is trying by thoglette · · Score: 1

      I am not convinced that it ever will be. Writing software is a creative process,

      I call bullshit

      Engineering is a creative process, but a disciplined, analytic process.

      Without the discipline, the job is never finished or faulty (see "university" or "research")

      Without analysis it devolves to a trade (like programming, tech writing or machining).

      To quote Dilbert - if you don't understand the difference between an engineer and a tech writer, you're not qualified to be an engineer.

      --
      -- Butlerian Jihad NOW!
    11. Re:Software Engineering is trying by sjames · · Score: 1

      That exists in other disciplines as well. Wright and Hitler both designed buildings adequate to their task. Wright's are considered "beautiful" and are celebrated while Hitler's were called "brutal" and torn down. Wright was an artist while Hitler went through the motions with pretensions.

    12. Re:Software Engineering is trying by DigitalCrackPipe · · Score: 1

      I can't agree that software engineering is inherently non-rigorous. It's just still too new, and the rigor isn't enforced. We've been building bridges for thousands of years, but software for less than a century. Most management and consumers don't understand it.

      Good programming requires creative problems solving, but without discipline, even extremely talented "artists" will produce absolutely unusable and worthless code. While there is still some room for the lone cowboy coders to create a world-changing application, that's not the norm. Most software is part of a large and complex system. Without BOTH the creativity and the discipline, the results will be lackluster - and that's what you see in most organizations. Maybe that's just because society demands far more software than there are talented developers to produce it.

  9. Before we get all sweaty about terms by symbolset · · Score: 5, Funny

    If you're an X Certified Y Engineer, you're a technician.

    If you can be counted on to design a system that reliably works without killing people, you're an engineer.

    If you can observe phenomena, reliably document previously unobserved phenomena, and from that produce useful but not mathematically precise practices or products you're a scientist.

    If you can gather observed facts into a sheaf of postulates and a system of symbols that can predict unobserved phenomena, you're a mathematician.

    If you can't do any of the above, you can always check bags at LAX for $150K a year.

    If you can't get bags from the trunk to the belt, you might consider a position in middle management.

    --
    Help stamp out iliturcy.
    1. Re:Before we get all sweaty about terms by Anonymous Coward · · Score: 0

      #1 in your list is NOT a technician, it's an engineer: that's actually quite an insult to engineers. engineer is a protected title in many states and some parts of the rest of the world and it's extremely frustrating to hear people refer to themselves as (software) engineers when in fact they have no professional qualification whatsoever.

    2. Re:Before we get all sweaty about terms by symbolset · · Score: 1

      Y'know, since I'm an X certified Y engineer I'm qualified to tell you that you're full of stuff. Not once in the field has a question been multiple choice.

      The word engineer is well abused these days, and perhaps fairly so. Michelangelo was an engineer, and he didn't have any certs at all.

      --
      Help stamp out iliturcy.
    3. Re:Before we get all sweaty about terms by Anonymous Coward · · Score: 0

      So I failed to see your joke: no sweat. I rise so easily to the bait on the misuse of the word :) I care very deeply about engineering and software and the two live happily side-by-side in my mind: we need to embrace the shared ground and understand the differences.

    4. Re:Before we get all sweaty about terms by torako · · Score: 2, Informative

      ...

      If you can observe phenomena, reliably document previously unobserved phenomena, and from that produce useful but not mathematically precise practices or products you're a scientist.

      If you can gather observed facts into a sheaf of postulates and a system of symbols that can predict unobserved phenomena, you're a mathematician....

      Both describe a (natural) scientist. Mathematicians do entirely different things (they don't work with observed facts, they don't make postulates based on said facts, they definitely don't predict unobserved phenomena. That's all what science is for).

    5. Re:Before we get all sweaty about terms by Anonymous Coward · · Score: 0

      So I got all sweaty and rose to the bait, more fool me :) I am passionate about both engineering and software and they both live happily side-by-side in my mind: we can write better software if we embrace the common ground and properly understand the differences. True about Michelangelo: being too dogmatic about engineering isn't too useful...

    6. Re:Before we get all sweaty about terms by TheLink · · Score: 1

      It's not that hard to design a system that doesn't kill people. I can't recall the last time my DHCP server killed someone, even though I've killed it so many times.

      In fact I'd say it's hard to design an autonomous system that can keep killing people despite everyone else trying to stop it.

      Y'know like one of those killer robots from the future.

      --
    7. Re:Before we get all sweaty about terms by EdgeyEdgey · · Score: 1

      I agree. Mathematicians have provided the tools for science to use, but that's not what they are there for.

      --
      [Intentionally left blank]
    8. Re:Before we get all sweaty about terms by prefec2 · · Score: 1

      This is what the previous poster wanted to say.

      Technicians = {(X,Y) | \forall X \in Company \wedge \forall Y \in Company-Technology}

      However, a technician is a person who comprises a subset Technicians, were the subset is bigger then 10. The rest are bad paid personnels which is laid of at the first sign of trouble. I say that not out of disrespect for technicians, it is just the way how things are. You are not an engineer when you know certain technologies. An engineer needs to know the basic concepts behind all these technologies. And a X certified Y engineer is not an engineer. Engineers have an engineering degree like M Sc, M Eng (or similar degrees). Bachelors are mostly half engineers, but already more educated then X certified Y engineers. This still does not mean that I think low of them. This is just a statement about their educational level. A lower degree does not make you a less valuable person.

    9. Re:Before we get all sweaty about terms by russotto · · Score: 1

      If you can be counted on to design a system that reliably works without killing people, you're an engineer.

      That's only half of it. You need to design it so when used within specs it reliably works, but when used outside specs (by some margin X) it fails. As the saying goes, any fool can build a bridge that will stand, but it takes an engineer to build one which will just barely stand.

    10. Re:Before we get all sweaty about terms by Chees0rz · · Score: 1

      I accidentally mentioned my job title to my home owners insurance company. It contains the word 'engineer' (I graduated CS). I think I got a discount.

      Do you know if this is reserved for certified engineers? I didn't claim to be part of any society or professional org.

    11. Re:Before we get all sweaty about terms by turbidostato · · Score: 1

      "You need to design it so when used within specs it reliably works, but when used outside specs (by some margin X) it fails."

      That's only half of it. You need to design it so when used outside specs (by some margin X) it fails... without killing too much people (graceful failure). It takes an engineer to do that.

    12. Re:Before we get all sweaty about terms by aldo.gs · · Score: 1

      Maybe he doesn't mean that they do it with the intent of predicting phenomena, but that they establish the postulates (inspired by something real), then do some work and then produce something that can be used as a model. That does happen (quite often).

    13. Re:Before we get all sweaty about terms by symbolset · · Score: 1

      Maybe that's what I meant. If you can postulate, formulate and predict without ever having observed a fact, you don't exist.

      If you can postulate things that are contradictory to observed facts, you're a shaman?

      --
      Help stamp out iliturcy.
    14. Re:Before we get all sweaty about terms by symbolset · · Score: 1

      I believe the quote is "Any idiot can design a bridge that will stand for 30 years. It takes an engineer to design a bridge that stands for exactly 30 years".

      --
      Help stamp out iliturcy.
    15. Re:Before we get all sweaty about terms by Jaime2 · · Score: 3, Insightful

      More specifically, an Engineer is someone who can claim that a system won't kill people and can legally transfer the responsibility for the lives of the users from the construction company to himself. What we don't have in the software industry is the accountability that forces Engineers to be rigorous. Sure, we software developers can claim that we use rigorous processes, but every time something doesn't work, we shrug it off and get to work on the fix. If a real Engineer screws up big just once, he loses his license and/or goes to jail.

      What makes licensed Professional Engineers so mad about the computer industry's flippant use of the word engineer is that it dilutes the title that they worked hard to obtain and that gives them a very unique position of responsibility in certain aspects of life. Don't think of an Engineer as someone who is good at any specific thing, think about them as a gatekeeper of the use of technology in public places.

    16. Re:Before we get all sweaty about terms by aldo.gs · · Score: 1

      I'd say that if someone is able to postulate things that are contradictory to observed facts, it must be the case that he/she is a logician (just kidding... or not :-P)

    17. Re:Before we get all sweaty about terms by RabidTimmy · · Score: 1

      If you can be counted on to design a system that reliably works without killing people, you're an engineer.

      So are defense contractors automatically disqualified from the engineering fields?

    18. Re:Before we get all sweaty about terms by torako · · Score: 1
      Yes, you're right, of course, and he might just mean that.

      What he describes happens, just as physicists sometimes develop a model to describe some natural phenomenon and end up discovering new math that is then later adopted by mathematicians.

      But in both cases, I wouldn't describe that as the main purpose of the field. Physicists usually don't deal with pure math, mathematicians do. And mathematicians don't usually deal with observation, physicists do.

    19. Re:Before we get all sweaty about terms by Tony+Hoyle · · Score: 1

      Indeed there are lots of people working on systems used in such a way that loss of life is a possibility, that don't call themselves engineers, just programmers, electricians, etc. - I know a few of them. It just doesn't work as a criteria.

    20. Re:Before we get all sweaty about terms by Tony+Hoyle · · Score: 1

      You think if your software screws up and someone dies, you won't get prosecuted? Dream on.

      Few people are in that position, luckily, but those that are are fully aware that their ass is on the line.

    21. Re:Before we get all sweaty about terms by Jaime2 · · Score: 1

      These software developers killed six people with a series of software bugs and general poor software development practices:
      http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html
      No one was personally held accountable.

      http://www.channelinsider.com/c/a/Solution-Builder/We-Did-Nothing-Wrong-Why-Software-Quality-Matters/
      21 people died due to a software error. The doctors that administered the doses were indicted for murder (I don't know the outcome), the software vendor was sued, but the developers were not personally held accountable. This one is interesting, because if the software had been built by an engineering firm and they had an licensed Professional Engineer stamp the design, he would have been held accountable.

  10. Formal definition of a software engineer by OutputLogic · · Score: 4, Informative

    Here is a formal definition of a Computer Software Engineer occupation, according to the US Department Of Labor:
    "Research, design, develop, and test operating systems-level software, compilers, and network distribution software for medical, industrial, military, communications, aerospace, business, scientific, and general computing applications. Set operational specifications and formulate and analyze software requirements. Apply principles and techniques of computer science, engineering, and mathematical analysis."

    OutputLogic

  11. Chuck Connel does not understand Simon's work by tyrr · · Score: 3, Interesting

    The author of the article should study a Noble prize-winning work "Administrative Behavior".

    There is nothing secret about human cognition. The fact that software engineering relies on human resources and not on binary logic is in no way a limitation. Many modern algorithms rely on heavily on probability and work with uncertainty. Herbert A. Simon built a solid framework for understanding human decision making process. This framework is just as solid as mathematical formulas behind computer science.

    1. Re:Chuck Connel does not understand Simon's work by oenone.ablaze · · Score: 1

      I am going to agree with you for the most part—I feel that human-centricity doesn't necessarily imply a lack of rigor. Just because it requires dealing with the horribly complicated mess that humans are, one can still approach the problem at hand using rigorous, human-centric strategies. Learning how to work with human variation is not completely an intuitive affair, as there are a lot of frameworks, each with its own merits about how to understand humans and their behavior, and how to apply this understanding to disciplines like software engineering. Maybe this lacks "formality" in the sense that it's not formulaic in nature, but saying it's not rigorous is pejorative in a way that I'm not comfortable with.

      On the other hand, saying that Simon's description of human decisionmaking is as "solid as mathematical formulas behind computer science" seems a bit silly to me—at best, it's just a good lens through which to explain some facet of human behavior, but even if Simon's work were a perfect, unassailable analysis of the human decisionmaking process (which it is not—how can we prove that neurologically speaking Simon is correct? We can prove that algorithms work all the way from the number theoretic level), understanding just decisionmaking wouldn't be enough for our purposes.

    2. Re:Chuck Connel does not understand Simon's work by tyrr · · Score: 1

      I agree, Simon's description of human decision making is just a good lens through which to explain some facet of human behavior. But mathematics is too just a good lens through which to explain some facets of objects overall and computer science in particular!

      In no way is mathematics absolute - especially mathematics in computer science. In many ways, mathematics is just a continent way of thinking about things. Ocean waves do not really follow Fibonacci sequence. It is just convenient for us to think they do. Nature in general knows nothing about our mathematical tricks, so in a way mathematics exists only in our heads. Our brain attempts to recognize and match sequences often times fooling itself along the way. Take, for example, the sound a mechanical clock makes. Your brain makes you to believe that you are hearing ticks and tacks, even though the clock makes only one pitch sound.

      With the first assumption introduced, or with the first approximation made, the strict logic breaks in every mathematical line of reasoning. Yes, you can have a very nice and straightforward proof that the sum of angles in a triangle is pi, but you had to assume that the parallel lines never cross. The assumption you made, however, is not at all accurate. It is just too convenient to think that the parallel lines never cross. Some people believe that the parallel lines never cross, others believe in god. Both fool themselves. Remove the erroneous assumption about parallel lines and all mathematical proofs in Euclidean geometry people worked hard to create become a worthless illusion. The fact that this illusion was "good enough" to make common engineering tasks work does not mean that this illusion is true, much less absolute. Mathematics actually has a name for such illusions - models. Models are whatever your brain makes them be.

      Who can actually trust "mathematical" proofs used in computer science?! Every algorithm analysis has to be reduced to asymptotic approximations right away because it is way to hard and inconvenient to make precise calculations. Many algorithms have to be analyzed in terms of expectation (making a hidden assumption along the way that the probability distributions are normal). With so many assumptions and approximations how can anyone actually believe that the result obtained is absolute? In a basic case, you read an analysis that tells you that quicksort runs in NlogN order time. Is this analysis in any way absolute? Not really (quicksort may as well run in N^2 order time). Convenient? Maybe. This analysis is certainly trying to convince you to believe in something that may or may not be true.

      Just because algorithm analysis uses mathematical symbols does not mean it is more reliable that Simon's line of reasoning. Very recently, many financial institutions believed that sophisticated mathematical formulas are absolute. They were convinced that they had it all figured out. Look where it got them.

  12. Software Development is actually an art by bill_kress · · Score: 5, Insightful

    So, I'm sure, are a lot of things I don't recognize, like designing a sky-scraper or space shuttle.

    Programming is an art, Anyone can follow instructions and follow an existing style or try to paint a realistic scene, but to come up with a skilled interpretation that really conveys a meaning takes a better painter. To bring together 20 painters, outline a collaboration and manage the production of some giant, detailed interpretation takes a master--at this point natural talent starts to mean more than training, and no level of training can improve someone without talent.

    Anyone can write a small program. You can fit 20 generic programmers in a room and have them each write a small program. You might even be able to get them to join the programs somewhat-properly, but the whole thing will never go smoothly.

    One or two really good programmers will probably out-produce 20 people that "know how to program".

    How many amateur painters do you need to create something like the sistine chapel?

    Just because most people can't see the art that allows large programs to work doesn't mean it's not there. In fact, most people can't tell any type of good art from bad without some training.

    1. Re:Software Development is actually an art by DNS-and-BIND · · Score: 1

      How can software engineers call themselves engineers? If an engineer designs a car and it crashes due to easily-avoidable defects, he goes to jail. If an "engineer" designs software and it crashes due to easily-avoidable defects, it's considered unavoidable.

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    2. Re:Software Development is actually an art by julesh · · Score: 1

      If an engineer designs a car and it crashes due to easily-avoidable defects, he goes to jail.

      [citation needed]

    3. Re:Software Development is actually an art by BiggerIsBetter · · Score: 3, Insightful

      I agree with the sentiment, but in a business context, I think that means we're doing it wrong.

      Production software *should* be boring, and rigorous... and correct. Now, I know this has all been hashed out before, and it's one reason why we ended up with Agile methodologies, but very very very little of what we do needs to be clever, or innovative. Despite what we think, most of us aren't smart enough to build clever AND reliable software, so we end up crafting things rather than truly engineering them. Those of us who ARE smart enough probably aren't working on projects with enough budget to take the time to do so.

      --
      Forget thrust, drag, lift and weight. Airplanes fly because of money.
    4. Re:Software Development is actually an art by Enleth · · Score: 1

      No. If an engineer designs a car and it crashes due to easily-avoidable defects, his company is fined big bucks in court. If an engineer designs a program and it crashes due to easily-avoidable defects, his company tells the client "go read the EULA and fuck off, we're not responsible". So, the first engineer's company gives him the money, means and time required to avoid those defects. The first engineer's company doesn't bother, so the engineer doesn't find those defects, even if he'd like to, because he'd be fired for not meeting the deadline and wasting time on something that doesn't affect revenue.

      Well, in fact, there were cases of car companies figuring out that paying a few families some change money would be cheaper than acutally fixing those easily avoidable defects, but that's another matter.

      --
      This is Slashdot. Common sense is futile. You will be modded down.
    5. Re:Software Development is actually an art by rbrightwell · · Score: 1

      I agree. Here is a math example. It is like bad, ugly, non-artistic code but it works. It makes some people impressed with the creator due to apparent complexity. They must be a GENIUS!

      (4-1)/(SQRT(9)) + (28-(3^3))=2

      Good code can be beautifuly in its brevity and symetry. Makes the unintiated say, "duh!"

      1+1=2

    6. Re:Software Development is actually an art by lawpoop · · Score: 1

      As I said in another post, I think good programmers are more like architects than painters or other types of artists. Architecture is a really interesting field, because you have to know your math and be able to design something that will actually stay up, but as far as what the end product looks like, it's totally creativity and vision. And then, it also has the human user in mind, so there is also a shared element of UI and user experience.

      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    7. Re:Software Development is actually an art by this_is_art · · Score: 1

      I agree with the sentiment concerning non-exciting production coding. In precision analog semiconductor test engineering we write programs that run on ATE (automatic test equipment) systems to eliminate defective units and grade good units. The crux of the matter however is that these programs are run 24/7 by production operators, not engineers. The operators have suitable skills, but may or may not be interested, well-rested or motivated on any given work day. Like any other humans, they may be good-hearted or malicious. The best programs keep preventable operator mistakes at a minimum, while being maintainable for years by various staff members. This arena requires creative problem solving in the test engineers, but not really artistry. And never forget that "test escapes", bad parts testing good, can result in a product recall at best, and a system breakdown in the field at worst; think planes or automobiles. On the other hand good parts testing as bad cause reduced profitability. Either situation is bad for your career. I have colleagues who like employing rampant artistry in their test code, and their programs are difficult for others to maintain, and there usually isn't sufficient time or labor available to completely validate deliberately off beat coding. When I mentor test engineers I emphasize that test coding isn't meant to be exciting. When I want coding excitement I go home and work on coding something completely different than work. Cheers, Art

    8. Re:Software Development is actually an art by DoubleReed · · Score: 1

      The grass is always greener on the other side. Software developers marvel at the much higher reliability that other engineering disciplines have in their shipped products. Other engineers marvel at the incredible cheapness of software development.

      The practices commonly used in creating software reflect the most effective set of trade-offs given the realities of how the software is used. One of those realities is that software crashes don't kill people. In the case that a software crash can kill people, the development process is approached differently, and the software costs much more to produce.

      Also, it may be a false dichotomy to contrast car design with software engineering. Software is an important component in a modern car (computer controller traction and fuel injection for example.)

    9. Re:Software Development is actually an art by bill_kress · · Score: 1

      Of course it's true that it should be boring, rigorous and correct, but right now it can't be. The first few thousand years of bridge building, they REALLY DID just build it and have guys walk across it until it collapsed, then rebuild it.

      If you told someone to build a sky-scraper with only knowledge of the first 50 years of architecture to work on, it would be a really big FAIL.

      And computer software can be many times more complex than anything else humanity's ever accomplished. It's virtually impossible to get it ALL, so we build in layers. The analogy would be trying to build a bridge to Hawaii. You'd build out a little way, test, make sure stuff works, re-enforce it, then build on what's already been built. Nobody could do the entire trip, but between different techniques, building on each others work, and some very crafty, creative artistic thought--it just might be doable (I'm not saying I'd want to USE it).

      There are very few tasks in today's workplace that require as much thought as programming, and for most problems there is no "correct" solution. A guy building a high performance 3-d game can't use a library built to be readable over fast. I good server can't use a library built for speed, scalability and maintainability or more important.

      Software engineering can't even build on the other engineering disciplines--it's too different so we're starting over from scratch.

      So yeah, until we've been programming for a thousand years or so, I don't know if it's fair to expect to see the same kind of discipline.

    10. Re:Software Development is actually an art by Anonymous Coward · · Score: 0

      Software development seems to be no more of an art than graphic design, IMHO. A phone book is an example of graphic design, but so is the advertising poster of an artistic movie. The artistic influence in a certain project may vary, but the method itself is not art, and the end product isn't necessarily art, especially if the main reason to design it was to perform a non artistic function.

      If course, I guess we could spend all day arguing exactly what art is, so I'll try to stop now.

  13. Easy by Anonymous Coward · · Score: 1, Insightful

    A computer science graduate creates the perfect program, then a software engineer goes and breaks it by making usable.

  14. Old debate by jilles · · Score: 2, Interesting

    I think more specifically, Software Engineering is an empirical discipline. All successful approaches in this field (scientific and practical) are about empirically measuring and adjusting what is going on rather than using mathematical models to analyze or predict things. This puts Software Engineering more in the realm of social sciences than that of mathematics. As a consequence, the current practice of old fashioned mathematicians that became computer scientist teaching software engineering in universities produces mediocre results since they typically lack the background for using empirical approaches. In other words they are effectively amateurs lacking both relevant experience in actually practicing software engineering (at least I observed this when studying CS) on large software systems and the necessary scientific background for studying software engineering in a empirical way.

    Luckily this has been changing. Most of the better universities now have software engineering scientists that actually do have a clue when it comes to their topic. Also industrial practice is gradually progressing (although the number of cocky CS college dropouts ignoring 40 years of wisdom remains a problem). Methodologies like scrum and other agile approaches are solidly based on measuring what is going on and applying practices that have been demonstrated to actually work (as opposed to be predicted/assumed to work by some mathematician). Sadly most companies practicing these methodologies don't do so rigorously and only pay lip service to the whole notion. All the good software engineers I know combine excellent technical skills with good empirical and people skills. It's all about measuring what is going on rather than assuming or deducing from mathematical models. Good SEs use test suites, profilers and other means to find out how good/bad their code is.

    So, maintainability is a function of how messy the software is (easy to measure with all sort of metrics), how well the code is covered with tests (easy to measure), number of bugs per kloc (easy to measure), and indeed experience of the people maintaining the software (not that difficult either). A typical mismanaged project will have some junior software engineer messing with the code until it works (sort of), lots of reported bugs, poor test coverage, and a manager who doesn't act on any of the things he/she should be measuring.

    One of the interesting things about large open source projects is their Darwinist nature weeding out the bad ones. There's a lot to learn from how successful OSS projects operate. A lot of best practices find their origin in such projects. Things like version control, bug tracking, unit testing frameworks, etc are experimented with a lot in the OSS world. For example, Mozilla pioneered Bugzilla and was also quite early adopting continuous integration and automated tests. They developed a lot of technology and practices just to support knowing how they were doing. Most of that is now widely used across the industry. Ubuntu is doing similar things currently and projects like Eclipse maintain a very high pace of development with very consistent levels of quality in circumstances that most companies would be unable to handle.

    --

    Jilles
    1. Re:Old debate by Tablizer · · Score: 1

      Methodologies like scrum and other agile approaches are solidly based on measuring what is going on and applying practices that have been demonstrated to actually work (as opposed to be predicted/assumed to work by some mathematician). Sadly most companies practicing these methodologies don't do so rigorously and only pay lip service to the whole notion.

      That's because many of their practices are downright expensive. Yes, they often work fairly well, but often by throwing brute-force labor at the project. Pair programming and customer-on-site is damned expensive and unrealistic. If the customer had time to gab about their requirements all day, they wouldn't need software.

             

  15. Compare and contrast Comp Sci & Comp Eng by play_in_traffic · · Score: 2, Funny

    One is not engineering. The other is not science.

  16. Martin Fowlers - A New Methodology by Anonymous Coward · · Score: 0

    Reminds me of Martin Fowlers "A New Methodology" paper.

    http://martinfowler.com/articles/newMethodology.html

  17. Engineering != Science by Anonymous Coward · · Score: 3, Interesting

    Connell titles his article "Software Engineering != Computer Science." He later proposes Connell's Thesis, "Software engineering will never be a rigorous discipline with proven results, because it involves human activity."

    I would suggest that the article's title reveals why software engineering doesn't have "proven results" in the sense that Connell means. It's not due to human activity. Rather: engineering != science. "Proven results" (i.e., a set of results logically derived as part of an axiomatic system) are more characteristic of a scientific field than an engineering discipline.

    Engineering applies and relies on science, but is not science, per se. Mature engineering fields have standards and codes of practice, both science-based and empirically derived. When/if software engineering matures further, it is reasonable to expect such standards and codes to develop.

    1. Re:Engineering != Science by Anonymous Coward · · Score: 0

      You're right: standards and practices arise in other engineering disciplines through science and empirical knowledge (plus a bit of politics and a bit of legal action thrown in). I believe software engineering will one day mature, mainly through empiricism, but right now it's an angry teenager that's convinced no-one has ever felt like it does and that no-one could possibly understand.

  18. Overlapping disciplines by caywen · · Score: 1

    I think SE and CS are overlapping disciplines populated by people who tend to analyze the things that overlap and make (sometimes unnecessary) generalizations. Thus, it's natural that people in both disciplines make misguided attempts to define the relationship when in fact there is no stable relationship at all. It simply depends heavily on what you are doing. I could ask endless other similar questions, like: what's the difference between a musician and a composer? One can be the other, and one doesn't necessarily have to be the other, and one can be made better at one by learning about the other.

    1. Re:Overlapping disciplines by Anonymous Coward · · Score: 0

      I agree, at my place of study the difference between a bachelor of computer science and bachelor of software engineering is an extra year of maths and 'project' subjects.

  19. Like Architecture by msgmonkey · · Score: 2, Interesting

    I've always compared software development to architecture in that you can give a specification for a building (size, floors, x rooms, etc) and you can get multiple designs that fit the specification but a great architects design will always stand out.

    Sometimes I look at code and it just does n't "feel" right, sure it may work just fine but I may not like the design choices taken whilst sometimes I see code that is designed so well that the peices fit together seemlessly (not that often I'm affraid).

    1. Re:Like Architecture by ishobo · · Score: 2, Insightful

      Except architecture is a highly regulated and licensed profession, whereas any schmuck can write code.

      --
      Slashdot - The great and glorious cluster fuck of Internet wisdom.
    2. Re:Like Architecture by msgmonkey · · Score: 1

      Sure but that was n't my point, my point was multiple outcomes from the same specification.

      Any schmuck writing code is like me getting a copy of AutoCad and drawing up a floor plan. Besides, I've seen many badly designed buildings so being regulated and licensed does n't guarentee good building, it just limits (but does n't eliminate) the possibility of buildings collapsing.

    3. Re:Like Architecture by ishobo · · Score: 1

      I realize that was not your main point.

      When collaspes happen, if the architect or engineer (or firm) is responsible, there is a venue for a professional misconduct hearing, leading to the loss of license.

      --
      Slashdot - The great and glorious cluster fuck of Internet wisdom.
    4. Re:Like Architecture by InsertCleverUsername · · Score: 1

      Except architecture is a highly regulated and licensed profession, whereas any schmuck can write code.

      I see you haven't met my parents or wife.

      Most people can't get their VCR to stop flashing "12:00" or change the default ringtone on their cell.

      --
      Ask me about my sig!
    5. Re:Like Architecture by Waste55 · · Score: 1

      But not any schmuck (or team of schmucks) can folllow a proccess, get CMMI or SEI certified, follow rigorous code\design standards, create robust requirements and design models, etc. This is where real software engineering work is done.

      An example:
      http://www.fastcompany.com/node/28121/print

    6. Re:Like Architecture by starfishsystems · · Score: 1

      Except that the field and practice of architecture over the past few decades has lost a great deal of respect. Far from being a requirement for licensed architects have an undergraduate background in materials science or engineering, or any working experience in the construction industry or related trades, many architects hold themselves distinctly apart from these communities of expertise.

      Partly that's just due to the way our modern world encourages career specialization. Partly it seems to be the culture which is drawn to the fields of architecture and design and which treats them foremost as a forum for artistic expression and social artifact, only very secondarily as disciplines requiring technical rigor.

      So it's true that not every schmuck can operate as a licensed architect. Not every schmuck has the ability and drive to earn a degree in computer science or engineering either, especially not in a graduate program. That would be a fair equivalent for comparison in your example.

      The vast majority of people who write code professionally are more the equivalent of construction workers. Sure they're schmucks. So what. Nobody would confuse them with computer scientists or software engineers, or architects for that matter. If they've got a certificate from some technical college then they're more like skilled tradespeople, but again there should be no confusion between their ability to apply industry knowledge and what computer scientists, software engineers, and architects do, which is to advance that knowledge.

      And I'm no longer even so sure that architects do as much advancing of human knowledge as they used to. A further irony is that those construction workers have an experience of the field that most architects utterly lack. Even though "any schmuck" can nail a wall plate together, you don't often see architects getting their hands so dirty. A computer scientist or software engineer who writes code, on the other hand, is completely typical. So it may be a "schmuck" activity but I think it tends to make them more competent professionals.

      --
      Parity: What to do when the weekend comes.
    7. Re:Like Architecture by ishobo · · Score: 1

      Let me know when the NCEES starts setting guidelines and has PE exams for software engineering, and states sart issuing licenses.

      --
      Slashdot - The great and glorious cluster fuck of Internet wisdom.
    8. Re:Like Architecture by starfishsystems · · Score: 1

      I don't know what it's like in the States, but here in Canada nothing prevents you from earning a P.Eng if you meet the qualifications. Some employers require this if you are to perform software engineering. Other employers want to see a degree in Computer Science.

      So I kind of don't see your point. You want a particular professional organization to create a new accrediation and for some licensing body to recognize it? Well go ahead, talk to them. There's no point in coming to me about it, as I'm not part of that system. I have a hard enough time just convincing ordinary people that computer science is not the same as computer programming.

      --
      Parity: What to do when the weekend comes.
  20. The difference between Engineering and Development by Chris+Snook · · Score: 2, Insightful

    ...is about a 1000x difference in cost per line of code. There's a lot of pure software engineering going on out there, but the products are relatively few (and usually heavily re-used) because the cost of being reasonably certain no one will die is really quite astronomical. Most people who call themselves software engineers with a straight face are really doing something in between, which is why we have entire libraries full of books describing methods that trade off varying degrees of safety for economy.

    In one sense, software engineering can be considered a more formal discipline than other forms of engineering, because software engineering has studied in much greater depth the tradeoffs between formality and economy, since the spread between them is so much wider.

    --
    There's no failure quite as dissatisfying as a complete and total solution to the wrong problem.
  21. Elitist crap by petrus4 · · Score: 2, Insightful

    The TFA, and any other such articles, amount to nothing other than navel
    gazing. People who think they are a scientist/artist/whatever, thinking it
    makes them more leet if they are able to exclude others.

    The elitist attitude of contemporary science is something which I hold in
    extremely deep contempt, to be blunt. Programming might not be considered a
    pure science, if they want to try and claim that anything that
    human beings do is completely free of emotion. Nothing does, so by that
    definition, nothing is a pure science.

    If you focus on the purely mechanistic/mathematical aspects of programming,
    that can be considered science. If you focus on the emotion, or the level of
    inspiration which sentience is considered a prerequisite for, it's an art.
    Use whichever term for yourself that you want, or better yet, just be
    you.

    Remember Napoleon, people. The greatest Emperors crown themselves.

    1. Re:Elitist crap by Anonymous Coward · · Score: 0

      Call me an elitist but I will do whatever I can (live far from the city to avoid crowds of babbling idiots at the mall is an example) to exclude myself (physically and heuristically in general) from any sufficiently big group. Homogeneity occurs naturally in groups of as little as 3 people and kills individuality and genius. Systematization is good if it doesn't take away generality; when, on the other hand, you try to make IT processes accesible to interchangeable drones that take IT as a job to pay the bills and nothing else, you take away yje fun in it. I happens in any big technology company like Sun or IBM or MS; it's boring unless you are near the top, where you can think. I am aware that my profession is an art and try to enjoy IT (pun intended) everyday. The day troves of suits come crashing down on me babbling 'Process this! Document that! UML this! Prioritize!' so my work can be transferred to an average IT Joe, I will still like my job but will stop doing it for money. Good design needs an elite. You cannot make a baby in nine women working one month each.

  22. Repost, sorry. by symbolset · · Score: 2, Insightful

    There toward the end I meant to post this Zen summary:

    After all that you begin to realize that the more you know, the more aware you are of the vast expanse of things you don't know. And then I arrive at what you said in 16 simple words, by a long discussion. I guess you're smarter than me.

    --
    Help stamp out iliturcy.
    1. Re:Repost, sorry. by dov_0 · · Score: 1

      You were right also. I do need more learning and experience - and I intend to enjoy every bit of it! I like learning and don't mind admitting that I need it.

      An honest appreciation of ones abilities, when, and only when, coupled with an honest awareness of ones shortcomings puts one on the best road to overcoming them. In other words, 'Humility is the straightest path to Nobility.'

      --
      sudo mount --milk --sugar /cup/tea /mouth /etc/init.d/relax start
  23. well, duh by dirtyhippie · · Score: 2, Insightful

    Seriously. CS asks questions of the form will X accomplish Y? Software Engineering asks questions of the form "what is the best way X to accomplish y"?

    Nothing to see here, move along.

  24. The reason why we are doing it manualy by Anonymous Coward · · Score: 0

    ... is that the Halting Problem and (verification of) Semanic Correctness of a program are formaly indecidable.

  25. Not just software by Darinbob · · Score: 2, Insightful

    Some of these same old complaints exist with hardware too. It takes humans to detect the "bugs" in a circuit layout or to quantify how adaptable/modifiable it is (ie, maintainability). There's guesswork involved in figuring out how much to over-engineer something, finding the cheapest part that does what you need, crossing your fingers that a vendor doesn't discontinue a component. Hardware engineers may take a more rigorous approach than the typical software grunt, but it is still a human endeavor. Otherwise we couldn't have nearly so many board revisions and software wouldn't be used to mask over the hardware shortcomings.

    The biggest problem with software is that it is easily malleable. We'd have far fewer bugs if it were treated like hardware that couldn't just be tweaked in the field if something is wrong; we'd be given more time to finish the designs and implementation, the testing would be built in and mandatory, nothing would be declared finished until several eyeballs looked it over and even then that would just be the initial prototype, and we'd have outside testing companies verify the solution for compliance with regulations. When software is malleable it's really hard to tell the bosses "sorry, we can't make that change" or "we can't ship this week because we added a bug fix and have to retest." Actually the same pressures exist in hardware (and other engineering discliples) it's just a lot more common with software.

    1. Re:Not just software by sycorob · · Score: 1

      The biggest problem with software is that it is easily malleable. We'd have far fewer bugs if it were treated like hardware that couldn't just be tweaked in the field if something is wrong; we'd be given more time to finish the designs and implementation, the testing would be built in and mandatory, nothing would be declared finished until several eyeballs looked it over and even then that would just be the initial prototype, and we'd have outside testing companies verify the solution for compliance with regulations.

      Theoretically, there is nothing preventing you from treating software like it's hardware, and locking it down like you describe, but all of your competitors would eat your lunch. The malleability of software is sometimes its curse (just make it do this ... by tomorrow) but it is also its blessing. If software was as hard to change as hardware, we wouldn't have the incredible diversity of programs, websites, etc that we have.

      I think you're conflating two different issues. You can embrace software's ease of modification and still have good programing practices. A company can do new and innovative things with software, and still ship a stable, bug-free product. Just because some people do it wrong, doesn't mean we need to lock our software down, and enforce Nth degrees of software assurance like NASA does.

    2. Re:Not just software by CreateWindowEx · · Score: 1

      In the previous era of console games before they started supporting patches, games were treated much more like hardware in this sense because once you made the gold master and started printing copies, you couldn't change it. When you compare PC games of that era with console games, the rate of crashes and bugs was much higher on PC games. This was partly, of course because they had to run on a zillion configurations and depend on buggy device drivers, but also because the console makers had fairly rigorous submission testing requirements, and could hold up a game from shipping if it didn't meet these requirements (In the case of 1st party games, of course, there is an inherent conflict of interest there, but typically the approval process was fairly independent of the console makers' publishing arms). By contrast, PC games (like other PC software) have absolutely no oversight, so developers/publishers just do however much or little quality control that they feel they want to.
      The PC approach is to let the market reward or punish software companies for how buggy their products are. Unfortunately, so much software uses various means of lock-in to prevent users from switching, that it ends up being a situation where the focus is on getting users to pay for upgrades, sometimes merely to fix things which shouldn't have been broken in the first place, and even that incentive is being removed as more software packages try to force users to constantly upgrade (e.g., make different versions non-interoperable but not sell older versions, so if you add new seats to a company you may be forced to upgrade the whole office)
      For software used in high-risk situations (e.g., medical software, aeronautics, space flight), the penalty for failure is high enough that people are willing to pay (and wait) for extensive quality control. For most other software, this is not the case.

  26. Didn't carmack comment on this a few years back? by UnknownSoldier · · Score: 1

    Can't seem to find the blog/article, but thought Carmack posted about being a game developer was akin to wearing different types of hats:
    - architect (designing)
    - engineering (building the program)
    - scientist (diagnosing bugs)

    I know this topic has been discussed back in 2004...
    http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=182392

  27. Memory or IQ by Anonymous Coward · · Score: 0

    The old argument of knowledge vs inteligence !

    Knowledge = the ability to REMEMBER answers to standard questions to pass exams.

    Inteligence = the ability to understand and solve problems and be able to find answers ( e.g. IQ)

    The 2 have no direct link - I would rather a person has the latter than the former but that's rare with societys obsession with memory based qualifications

    1. Re:Memory or IQ by Cybah · · Score: 1

      On the contrary, Jeff Hawkins argues that memory and intelligence are very closely linked, in this TED talk. He says that intelligence is prediction, i.e. pattern recognition which needs knowledge to predict. Extending his insights, I guess we could look at the typical knowledge vs. intelligence debate as nurture (learned knowledge) and nature (innate knowledge through evolution, i.e. what we traditionally think of as intelligence).

      Those memory-based qualifications aren't useless. They don't provide as detailed knowledge as a degree, so the resulting prediction system isn't as intricate. Yet I argue that they still produce intelligent behaviour, but, of course, relative to more advanced education / training.

  28. Analogy? by siloko · · Score: 2, Funny

    Think aeronautics. The science of aeronautics ponders the laws of aerodynamics and the laws of flight.
    Engineering aeronautics is all about building the damn aircraft.

    I'm struggling to see how aeronautics and aircraft have anything to do with cars.

    1. Re:Analogy? by beelsebob · · Score: 2, Funny

      Look at the wings on any fast car, and you'll see.

  29. Multidisciplined by sesteel · · Score: 1

    I personally like the term software developer; though, my company formally calls me a software engineer. I am reading these comments about defining software engineering/development and it is obvious that it is difficult to quantify this discipline in terms of any other discipline. Software development is an inherently unique endeavor that requires I wide range of abilities and ways of thinking to solve difficult problems. Sometimes it requires rigor and a deep understanding of mathematical concepts. At other times it requires artistry and extreme creativity. And yet at other times it truly feels like working the line in a factory. It is beautiful in its exactness, many times revealing unexpected consequences. The latest US financial crisis has been contributed to unexpected consequences relating to software written in the 80's and 90's. At its core, however, is the goal of automation and thus freedom. We automate so we are free to perform other, hopefully, more desirable tasks. In order to accomplish this, software developers must learn about processes, machines, relationships between abstract concepts, communication, etc, etc, etc. Most importantly, however, we get to learn about people, learn about ourselves, and in the process learn about new things to automate

  30. Software Development is a CRAFT by Anonymous Coward · · Score: 1, Insightful

    Let's face it. Most (if not all) programs we write are "made-to-measure" software, not mass production programs. You need craftsmen for that. Artists are usually only interested in the looks.

    Software development is a skill that can only be trained. Trained to think like a hacker, to think like a newbie user, tothink like a client (client!=user), to know when to optimize and especially when NOT to optimize, trained to think in modules and their relations (I encountered far too many programmers who have difficulties with this). Trained to think in responsibilities. Trained to abstract. Trained to trust the unit tests. Trained to write them.

    A good programmer is a craftsman. Someone who can build the wish of a client not exactly as the client has sketched it, but as a robust and working structure that does what the client wants.

    An artist is someone who designs the famous "Z" chair and dares not sit on it.

    A craftsman is someone who takes the idea of the "Z" chair and dimensions it right so it becomes a chair instead of an idea.

  31. Fashion versus maths by hutchike · · Score: 2, Insightful

    Software Engineering = fashion
    Computer Science = maths

    Simple. Nuff said.

    --
    Zen tips: Pay attention. Don't take it personally. Believe nothing.
  32. Software Engineering is really Design by TheLink · · Score: 2, Insightful

    Yep to me Software Engineering is more like Design.

    The Architects design stuff, and the Builders build it.

    The Programmers design stuff, and the Compilers build it.

    The trouble is too many people don't get it and manage software projects the way they manage the Build phase of a civil engineering project. When they should be managing it the way they manage the Design phase.

    The build phase of a civil engineering project can involve scores of workers and heavy machinery.
    The build phase of a software engineering project involves the programmer typing "make all" and going to fetch a coffee.

    The big problem:
    Civil Engineering: build phase costs 10-100x design phase
    Software Engineering: design phase costs > 1000x more build phase

    And that's why Management ends up shipping the "plastic models/blueprints" as v1.0 since they compile and kinda work.

    How software engineering differs from computer science is similar to the way civil/mechanical engineering differs from math.

    Engineering does involve math, but a lot of times you don't really do a lot of math - something else does it for you :).
    Same for software engineering, 90% of the time you aren't doing the "pure CS" stuff- sorting algorithms, info theory etc.

    You're doing stuff like figuring out how to talk (and what to say) to some database or Active Directory, or whether the API for something is documented (correctly) or not. Or creating a brand new protocol that is not too inefficient and mere mortal programmers can use without screwing up.

    --
    1. Re:Software Engineering is really Design by LanMan04 · · Score: 1

      The Programmers design stuff, and the Compilers build it.

      Except in the real world, 99% of the time those two jobs are done by the same person/people.

      --
      With the first link, the chain is forged.
  33. The difference by eznihm · · Score: 1

    Writing source code is craft, making source code executable is engineering.

    --
    -- i drop mine in braille so you blind cats can read me
  34. Functionality & Meaning, or Engineering & by mishiltu · · Score: 1

    I agree with the author of the article, there are two levels in source code. On the one hand there is the formal side, the syntax level, if you will, which can be quite simply checked by tools. As programming language standards leave certain things undefined just because of the infinite amount of combinations in a language, so do compilers and linkers also. Static analysis tools, like lint, are much more nitpicking and try to uncover probable programmer mistakes for example through uncommon usage of certain structures.

    But there is also the higher semantic level present in the source code. How well does the source code express its intent and how well is it structured. That is only directly visible internally, but does most likely have larger than generally understood indirect effects externally. The problem with software engineers is that they listen much too much to what the customers, testers and managers have to say. And all of them focus only on functionality. Most engineers also like to see something working and sometimes they do anything to get something working. Clarity and meaning in the source code are secondary concerns.

    The results are clearly visible.

    Software systems are working, kind of, but they cannot be changed too readily. Software isn't soft at all, because its internal clarity, maintainability is compromised. Using only simple names for variables (tmp, i, cnt, ret_val, status) makes code not readable, as an example. How much bad naming hurts the understandability of a piece of code is not known but is probably underestimated.

    There are certainly rules that could be used to limit the chaos in source code without limiting the necessary creativity. There are issues that 1) are Missing from the source code, 2) Extraneous, 3) make Risky assumptions, or 4) cause Chaos. Some examples:
    1) Magic (hard-coded) numbers
    2) Comments that repeat what the code clearly says
    3) Not checking a pointer for NULL before dereferencing it
    4) Nesting too deeply

    The funny thing is that such things can be easily checked manually, locally within functions, on paper and massive amounts of findings can be made in almost any programming language. Ticking code (or marking rule violations) shows that almost all software developers are neglecting maintainability in their code. Tick-the-Code is one way of triggering refactoring, and improving the design of existing source code. For more information, check out www.tick-the-code.com.

  35. Involves humans, eh? by pedantic+bore · · Score: 1

    If having humans 'central to the process' is an issue, that rules out medicine, psychology, sociology, history...

    --
    Am I part of the core demographic for Swedish Fish?
  36. Why I prefer Computer Science by Ben1220 · · Score: 1

    This article could have been renamed to "Why I chose to major in Computer Science instead of software engineering" and it would also make sense.

  37. Ain't NO new thaing ... by Anonymous Coward · · Score: 0

    199307 Engineering Times - Will High Technology Bring Engineering Disaster? [unverified software applied by unqualified users]
    199409 Scientific American - Software's Chronic Crisis, W. Wayt Gibbs [software is being written but not by programmers]
    199409 IEEE Spectrum - Judgment's Subtle Presence [replacing the decisions made by people with pre-programmed ignorance]
    199703 IEEE Spectrum - Reflections on Complexity, Robert W. Lucky [just because you can does not mean you should]
    199707 WIRED - Digital Obesity, Nicholas Negroponte ["personal computers" have never been people friendly]
    199802 WIRED - Productivity Paradox [the numbers, folks, where are the numbers to back up the continued spending?]
    199707 IEEE Institute - Software Engineering [accreditation of educational programs for "professional" programmers]
    199800 Walking on Thin Ice by Peter de Jager [how the Y2K problem was created by the bureaucrats, not the programmers]
    200004 US NRC - Digital Instrumenation Research Plan [the emperor has no software quality assurance program]
    199907 US NRC- 464th ACRS - Commentary by Dr. Graham Wallis on RETRAN-3D [only "real professors" know what is correct way to "engineer"]
    200502 US NRC ACRS Sub-C on THP - Commentary by Dr. Graham Wallis on TRACE [user manuals generally suck - DUH! so do most textbooks]
    199907 No High Tech Training - The Financial Times by Rebecca Christie [a partial explanation of the productivity paradox]
    200503 How computers make kids dumb - Andrew Orlowski - San Francisco [the title says it all]

    1. Re:Ain't NO new thaing ... by 3seas · · Score: 1

      Maybe someday they will figure it out Abstradtion Physics But I suspect that it won't be untill they stop making money from doing it wrong.... intentionally....

  38. What's wrong with this picture? by garethharris · · Score: 1

    SE has little to do with software. It has become mainly software project management. Software projects are disaster areas because inexperienced people look for gimmicks instead of putting in the 10,000 to 20,000 hours to become proficient. Just look at the job ads looking for "Senior developer with 3 years experience." Software used to be built by some brilliant people before CS and IT degrees existed. Most had degrees in physics and math or sometimes oddly enough - music. A few had no degrees st all. As computing has become more of a mainstream industry, most recent programmers have little knowledge of CS issues relating to simplicity, languages, algorithms, race conditions, etc. they get "certifications" from vendors! They just chase fads, throw everything in a pot and hope OO will organize it. They also seem to have little knowledge of basic engineering such as minimizing part and technology counts, orthogonal structures, neatness in design, etc. Now, I often do projects where I beat teams of 20 or more by myself. What's wrong with this picture?

  39. Only if its the right experience Re:Experience by 3seas · · Score: 2, Interesting

    You can learn the roman numeral system inside out and be the worlds leading expert on it but you can never do with it what can be done far more easily with the Hindu-Arabic Decimal system. A common introductory algebra student can by far exceed the limitations of doing math with the abstract Roman Numeral set.

    The Decimal system allowed us to use "nothing" to hold value. The Zero place holder....something so simple, yet so enabling...
    Who'd thought "nothing" could be so power enabling?

    The same holds true of Computer Science and Software Engineering.

    And again we are at a point of needing to recognize a real value of something that seems so unreal or foolish sounding.

    Abstraction Physics, but how can the abstract be physical?

    Not only can abstractions have a physics to them, but without the physical, abstractions cannot exist at all. And it is the physical that enables the creation of abstractions, a physical reality that does move in the process of making and using abstractions.

    This is where abstractions and physical reality meet, where abstract ideas are converted to physical effect and hard reality.

    What you are reading right now is an example of abstract conversion to the physical. From my mind to my fingers on the keyboard to the computer and over the internet..... to your screen where its being input into you and your mind. And if it were instructions to do something and you did, like make a paper airplane ...... thats all physical...

    Just as there are definable atomic structures in the physical realm getting more and more refined, so it is with abstraction and genuine software engineering in dealing with abstractions and their unavoidable physical creation and use action constants.

    These constants are identified and defined and by nature are so inherent in our human functioning that we don't even think of them..... However, computers are not human and they don't, unless we program them to. And we haven't yet done so from a POV of Abstraction Physics such the understanding would be as common and applied as the Decimal system is today, instead of roman numeral based mathematics.

    Genuine Software Engineering should be making the task of programming easier for all of us. But it seems stuck, to use the analogy, thinking in terms of roman numeral mathematics. Physicist identify, define and refine our understanding of the physical, but abstractions, though we are the absolute creators of these, there is still the unavoidable and unchanging physical reality action constants of abstraction creation and use. And it is this that is the solid foundation upon which to build genuine software engineering.

    The proof of the action constants is simple: Try not using them.

  40. !(Science != Empirical) by jonaskoelker · · Score: 1

    Mature engineering fields have standards and codes of practice, both science-based and empirically derived.

    How is science-based != empirical?

    It's math (and the math-ish parts of CS) which stick out as the sore thumb, in that we think of them as science but their practitioners occupy themselves with proofs rather than experimental evidence.

    Math (and CS) are the oddballs, not the set {every other science}. Or do you think that math+CS got it right, and physics, chemistry, biology, astronomy, medicine, geology, (softening up) economy, archeology, anthropology, sociology, ethnography, history, psychology, ... got it almost right but still has that unfortunate aspect where they need to look at the real world to verify their ideas?

  41. an idealist view by ninjaallenz · · Score: 1

    I'm currently pursuing an accelerated masters in computer science, I may be naive but i feel my view is valid. Open source is the future, well commented and the most efficient code should be made open source. Why rewrite code that has already been written efficiently? Allowing access to well written and commented code to the masses will allow for much more competition between coders. I understand it is not the easiest of jobs, but wouldn't it make it easier if coders had some sort of universal code library where the best(efficient and stable) code is up for use to create great applications and is also up for optimization and improvement?

    --
    There is no other definition of socialism valid for us than that of the abolition of the exploitation of man by man. - E
  42. Software engineers can get jobs by petes_PoV · · Score: 2, Insightful

    Whereas computer scientists go into research or teaching - to produce more computer scientists.

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
  43. Wicked Problem by node159 · · Score: 1

    Oddly one one has raised the most simple of issues at the heart of all software development, the reality that the majority of software development is with the resolution of a wicked problem (http://en.wikipedia.org/wiki/Wicked_problem, problem where you can only get the input parameters by solving the problem first), this is in stark contrast of other engineering disciplines, with System Engineering being the only one that comes at all close.

    When you look at the various engineering disciplines, they problems they are trying to solve may be complex and difficulty, but fundamentally the input parameters and expected output are known. Not to be trite but there are only so many ways to build a bridge.

    --
    GPLv2: I want my rights, I want my phone call! DRM: What use is a phone call, if you are unable to speak?
    1. Re:Wicked Problem by turbidostato · · Score: 1

      "Not to be trite but there are only so many ways to build a bridge."

      In fact, there are only two: either the bridge stands under its real load or it falls.

  44. Computer Science != Coding by mrnick · · Score: 1

    I have my BS in Computer Science, am 1 course away from having my MS in Computer Science, as well as have 15 years experience in general IT with a focus on Network Security.

    My BS in Computer Science was nearly 100% coding languages and techniques. My MS has had some coding in it and I would say that any computer scientist should have a strong grasp of coding. But, when you look at Computer Science as a discipline it should be these new undergraduates with an IT degree that do the coding jobs. This distinction didn't exist when I was getting my undergraduate degree, there was no IT degrees.

    After going through my MS in Computer Science I have realized the discipline of Computer Science to be what it really is and that is applied mathematics. I am hoping that the IT industry will appreciate my vast knowledge of how computers work that I gained during my graduate studies, though I may not put that knowledge into whatever daily tasks I am responsible for. Looking at my background and education the best fit for me in the IT industry would be as a CIO or CTO. Though, I'm sure those jobs are a rare and of the type where you have to know someone.

    Computer Science is just that a science. Not only that a mathematical science. I always wondered why people got math degrees, being they don't have a direct career path for them, other than academics itself. Now, I look back and realize I'm about to have a Masters in Applied Mathematics (Computer Science). How will that affect my future? Only time will tell. Like I said I got 15 years experience with my BS in Computer Science (Programming) and thankfully programming has never been my primary role during my professional career.

    I'm at a crossroads, do I go back into the "real world" and see what I get for my upgrade to Masters in CS or do I stay in the academic world, get my Ph.D. and teach CS? Teaching pays a lot less but there is more job security.

    But, one thing is fore sure I won't write you a program for the same reasons I won't fix your computer. Not that I won't code something if doing so makes my job easier or my company more efficient but I am a Computer Scientist and not an IT guy. So, you'll have to find someone else to change the toner in the printer.

    There will always have to be people in the loop in all stages of program development but I think we have come far enough where the IT guys should be doing that and the Computer Scientists should be doing more advanced work. Let the secretary change the toner.

    The only way people will be taken out of the loop is if someday Computer Scientists learn enough knowledge to create sentient beings, with an intelligence of its own, through a combination of hardware and software. Notice I said intelligence. Artificial intelligence is generally used incorrectly. Computer Science is currently at a stage where we cannot even simulate intelligence accurately. But, if we ever do create intelligent computers there will be nothing artificial about it. Once that happens it's likely that we will no longer be the most intelligent beings, we know of, in the universe. By Definition if we can create something smarter than ourselves then that something would be smart enough to create something smarter then their selves. Though, I don't think this will lead to a Matrix like scenario. Why do most people always imagine the worse case scenario? Though IMHO we don't even have to worry about such an event, unless it somehow happens by accident, because Computer Scientists cannot even define intelligence to any degree, never mind understand it enough to write intelligent code.

    ANYWAYS, if people keep treating Computer Scientists like lowly IT guys we might just have to stick a 'pointer' into your eye.

    Plus being a computer scientist I get the advantage of random implied youthfulness. That's why I was born Jan, 1970 and am currently 27 years old. It's all due to applied mathematics. How many Java or .NOT programmers understand why?

    --

    Encryption: I may not agree with what you say, but I will defend your right to encrypt it...
    1. Re:Computer Science != Coding by kramulous · · Score: 1

      Clap, clap.

      Wow, you know everything. And not even finished yet.

      Do you realise how stupid you sound? I've been a practitioner of comp. science for 10 years and have never heard so much tripe before in my life.

      --
      .
  45. Software never fails, people decide it does by rfc1394 · · Score: 1, Interesting

    The statement that software engineering - which is a mislabel - cannot be a rigorous, formal system is so obvious that it might as well be one of those things we never think about until we have to and when we do think about it it's intuitively obvious.

    Consider what will happen when you die, there are only three possibilities: You exist after you die and you like the results; you exist after you die and you do not like the results; you do not exist after you die. All three possibilities are equally valid since we have no evidence of any of them. If as it turns out, that when you die you cease to exist, it is not something you need to worry about. Now, the thought probably terrifies you - it used to terrify me, too - until you realize something: if you cease to exist, you will know nothing. You'll never know that you don't exist.

    So consider the conditions of the existence of software. Software is always perfect and is always the same, it never changes. It does not rot, rust, age, get moldy, crumble, break, shatter or fail. It never needs maintenance, lubrication, cleaning, sharpening, polishing, repair or replacement. As long as the hardware that copies it makes identical copies, it is perfect and always will be perfect, except for the extremely rare and unusual case of deterioration of the storage media due to cosmic ray damage. Which can be detected by mathematical algorithm, in which case, if there is another source, another perfect copy can be made and it's right back where it was. Software is never defective and can never be defective other than the case I've given of the rare possibility of cosmic-ray damage to media or hardware failure in copying, and thus it never needs change, modification or updating.

    Every year, every country makes changes to its tax laws. Any software which must comply with those new changes has to be changed according to the decisions of tax accountants and lawyers as to what is needed to be in compliance. If you have a cellular network and want to add new features, you have to modify the software - in the switches, the handsets, the gateways, and/or all of these - to be able to enable them to offer new features. In both cases the software needs updating.

    Both statements are true, but you might ask how they can be when they appear to be conflicting. They're not, and I'll explain why.

    Any software package, from a 1-line APL function to a 20 million-line COBOL behemoth application suite that runs a trillion dollar bank, large insurance company or government agency, only requires maintenance or change because in someone's subjective opinion it needs a change. A bridge needs replacement when it collapses or when it is beyond its useful life; a building needs replacement under the same circumstances. A piece of metal furniture needs replacement when its structure rusts into dust, fails or is unable to support a load due to metal fatigue. These are objective facts, either the structure is usable or it isn't. An engineer can determine by experience and judgment that the structure is at its lifespan limit or can point to signs of physical rust, deterioration, or structure failure indicators that prove their opinion.

    Any declaration that a software package needs updating, change, or replacement is strictly based upon the subjective opinion of someone saying that it needs the work. All software change is the result of some person's opinion that the change needs to be made and have no basis in reality except their opinion. Their opinion is correct if you agree with them or if in your opinion you can't disagree with their opinion. They may be correct that because of errors in how the software performs its desired function, need for new function, or need for changes in existing function, the software needs change, replacement or updating, but they can only be "correct" because it is considered that in someone's opinion they agree with their opinion that the change is needed.

    But the claim by someone that a software package needs cha

    --
    The lessons of history teach us - if they teach us anything - that nobody learns the lessons that history teaches us.
    1. Re:Software never fails, people decide it does by Anonymous Coward · · Score: 0

      Just No...

      So if the 20 million-line COBOL behemoth application suite is suddenly responsible for all the money in your bank account disappearing, it would merely be your OPINION that the software needs to be updated?

      Just as bridges can have their requirements formally specified, so can software. When software fails to adequately fulfill the requirements, clearly the software requires updating. The existence of functionality bugs or security vulnerabilities is not subjective.

      Also, the original requirements of a bridge may have been formulated based upon traffic congestion 30years ago. In time, as traffic grows, the bridge may need to be updated in order to provide new lanes. Engineering and financial analysis allows us to decide whether we can expand/update the bridge, or build a new one completely in order to satisfy ever changing requirements. If your software fails to scale adequately with increasing load, this is not merely a subjective opinion. We can formulate desired response times for software and update the software as the need arises.

      If your saying the "desired response time" is a "because I say so", then how is this any different than civil engineers desiring to expand bridges to alleviate traffic congestion? Alleviate congestion -> improve traffic flow -> businesses grow -> increased income for the area. No city expands bridges and roads with careful analysis of the existing situation, and sufficient positive benefit to outweigh the costs.

    2. Re:Software never fails, people decide it does by Anonymous Coward · · Score: 0

      "Just as bridges can have their requirements formally specified, so can software. When software fails to adequately fulfill the requirements, clearly the software requires updating. The existence of functionality bugs or security vulnerabilities is not subjective."

      Requirements can be formally specified, but you can't determine if the requirements are met with 100% confidence. There is no way to test a program through all its possible paths. In practice, we say, "we believe it meets the requirements based on our limited testing."

      You might argue that in other engineering disciplines you can't meet the requirements with 100% confidence either, but that is largely due to measurement and manufacturing uncertainties - totally different beasts than uncertainty as to the possible paths through a program.

  46. Feedback loops accepted by tyroneking · · Score: 1

    I've always thought (and I think there are some Scrum related papers to back me up on this) that the instant malleability of software design has substituted for formal practices.

    There's nothing as malleable in the real world so we don't know how to formalise it.

    Instead, on most of the system I've worked on, management have tried to introduce formalities just so they feel happier - when there's no real point.

    Example: I'm trying to figure out how to strip UTC from a bunch of fields in a system - make them date only instead of time-zone aware date-time. The answer is easy (change the data type), the analysis is horrible (find all the other fields and operations that are touched by the field concerned), but the management overhead is outstanding - I've had to write two document, an hour long presentation, and a video-cap of a demonstration, a risk assessment probably too; and still people won't leave me alone to get on with it.

    1. Re:Feedback loops accepted by thethibs · · Score: 1

      Which date? Except for 1200 Zulu, when the whole world is on the same date, any particular UTC represents two dates. Not to make your life more difficult than it already is.

      As a related aside: a date without a TZ represents a span of 48 hours and two dates with different TZs can't be meaningfully compared. They are effectively different types.

      --
      I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
  47. Misleading Title by prefec2 · · Score: 1

    Software engineering is a part of computer science. Everyone who thinks computer science is only formal methods is totally wrong. Its like saying theoretical physics is physics but experimental physics is something else than physics. Computer science has a core based on formal methods. This core comprises logic, turing machines, grammars, L-systems, petri nets, my-recursion all the other thinky stuff. Most of that stuff was borrowed from other disciplines. Languages were borrowed from Noam Chomsky and the linguists, the Turing machine was developmed by A. turing a mathematician, L-Systems comes from biology, logic from philosophy.

    Around this nice set of formal methods, we computer scientists developed different ways to use them to solve real world problems. our job is to develop tools and methods to process data and information. We do this with formal methods. However, to find out what the information is and what we shall do with it, we have to ask the user. This is requirement engineering. therefore we make interviews, give out questionnaires and read literature of other disciplines. So interview techniques, questionnaires, and text analysis become part of our discipline's tool-set as well.

    And the development of software is a complex process. Therefore we thought it might be helpful to use the shoes we made for other for ourselves. This is also part of software engineering. And therefore it is part of computer science.

  48. Professional Engineer by nonregistered · · Score: 4, Insightful

    As a degreed engineer with 30 years of work in computer hardware and software, I firmly believe there will be no such thing as a "Software Engineer" until such engineer has a "PE" after his/her name. That's "Professional Engineer" (wiki it); a responsible party who can be put in jail if the software kills someone. There's nothing like the threat of punishment to put rigor in your processes.

    1. Re:Professional Engineer by arethuza · · Score: 1
      I tend to agree with this view, I have brother who is a Chartered Engineer (UK version of a PE) and a wife who is a lawyer and I never describe myself as a "professional" - I'm a guy with a CS degree who designs and implements computer systems.

      Of course, the vast majority of software does not need a "professional" to be involved in the same way that a lot of construction (me building a wall in my garden) doesn't need an engineer or every commercial transaction requires a laywer (I don't ask my wife to review the contract when I book a cinema ticket online).

      There are some types of domains (anything safety critical/related and perhaps some classes of financial systems) that should have to be signed off by a real software professional who takes professional responsibility for them. The difference between real professionals and the rest of us is that if they screw up badly enough they can get struck off and then they can't work in that field anymore.

    2. Re:Professional Engineer by dodobh · · Score: 1

      My software will work, with specific hardware, within certain hard tolerances. It will not work on a generic PC, or if you change anything, or do not follow instructions in the manual.

      --
      I can throw myself at the ground, and miss.
    3. Re:Professional Engineer by Anonymous Coward · · Score: 0

      In most states it's illegal to offer one's services to the public as a "software engineer" without a PE. (AFAIK, Texas is the only state that actually allows individuals to be specifically licensed as software engineers.) The last time I checked, there was disagreement between the IEEE and ACM about whether there should even be licensing of software engineers. (The IEEE was for licensing; the ACM against.) Personally, I think "software engineering" is not yet mature enough to claim to be an engineering discipline. (And I'm not even completely sure that engineering is the right model for software development.) I'd like to see the term "software engineer" discarded.

    4. Re:Professional Engineer by Lserevi · · Score: 1

      I'm inclined to agree that software engineering isn't sufficiently mature to be an engineering discipline. It's possible to analyze a bridge to determine under what conditions it might collapse. I can't do that for the software I create. The best I can do is to say that under these inputs and these conditions, it performed correctly.

    5. Re:Professional Engineer by tyrione · · Score: 1

      P.E. typically standards for Principle Engineer in ME, EE, CE, ChemE, MatSci, etc.

  49. programmers are not engineers by Anonymous Coward · · Score: 1

    I used to laugh when programmers started calling themselves "software engineers". It reminded me of the joke about "sanitation engineers". Now this kind of title inflation is the norm, but don't kid yourself, you are not a real engineer just because it says so on your cube entrance.

    1. Re:programmers are not engineers by WWE-TicK · · Score: 1

      #define REAL_ENGINEER

    2. Re:programmers are not engineers by B_SharpC · · Score: 0

      #ifdef REAL_ENGINEER
      PROGRAMMER = SOFTWARE_ENGINEER
      #else
      PROGRAMMER = ENGINEER_IN_NAME_ONLY // EINO

      --
      Score & Karma: SASA: Slashdot Approval Seekers Anonymous
  50. Not engineering, but it SHOULD be by mrnick · · Score: 1

    Most undergraduate students don't have enough time to learn the basics of computer programming, never mind software design.

    As I stated in a separate post in this same thread people with IT degrees should be doing the majority of programing. When I got my undergraduate there was no IT degree, if you wanted to work in IT you got a BS in CS.

    In a perfect world, Computer Scientists (like myself, MS in CS) would be doing research and developing new advancements in CS.

    Regardless, in graduate programing courses you learn things like how to mathematically analysis different algorithms to determine which are superior. How much of this goes into modern coding? Very little, if any.

    Cheaper, faster, easier is the motto of most programs written today. This increases with the more business management that gets thrown into the mix. That's how something like MS Windows Vista comes into existence. Give any real Computer Scientist the project along with the right to choose a developmental path and almost all of them would opt to scrap it and start over. But either extreme is bad in one we get crappy software and the other nothing is ever released. Currently we lean towards crappy software because hardware has developed so much faster than software. If some physical law, universal law, prevented computers from having over 1 GB RAM and 100 MHZ CPU, then the focus would have shifted and I would still have 8 programs running on my computer and would be experiencing the same computing experience I currently am because programmers would be writing better code.

    So is it engineering? In it's current incarnation, no. Could it ever be considered engineering? Sure, but it would take a massive shift in the software development life cycle.

    Personally I cannot wait until Moore's Law becomes Moore's Theory when it breaks because of some physical law stalls hardware development. Then maybe we will see some good code.

    Plus, isn't an idea supposed to be a theory until proven to be a law? I mean does anyone really think it will continue indefinitely? I bet Moore didn't even think so. It seems we started calling it a law and it will continue until proven to be a theory.

    --

    Encryption: I may not agree with what you say, but I will defend your right to encrypt it...
    1. Re:Not engineering, but it SHOULD be by russotto · · Score: 2, Insightful

      Most undergraduate students don't have enough time to learn the basics of computer programming, never mind software design.

      If a student can't learn the basics of computer programming as part of a four-year program (whether CS, CE, or SE), perhaps programming isn't the field for him.

      In a perfect world, Computer Scientists (like myself, MS in CS) would be doing research and developing new advancements in CS.

      Unfortunately in this imperfect world, there's few such research positions available. But they aren't nonexistent. (as far as I'm concerned, you can have them, I prefer to get my hands dirty with code :-) )

      Plus, isn't an idea supposed to be a theory until proven to be a law? I mean does anyone really think it will continue indefinitely? I bet Moore didn't even think so. It seems we started calling it a law and it will continue until proven to be a theory.

      Different kind of law. Moore's law is more like Murphy's than Newton's.

    2. Re:Not engineering, but it SHOULD be by turbidostato · · Score: 1

      Cheaper, faster, easier is the motto of most programs written today.

      It's the motto for bridges or highways too, so your point was, again?

    3. Re:Not engineering, but it SHOULD be by chthon · · Score: 1

      Yes, but for bridges and highways there is a lower limit based upon public safety and maintenance costs. For software (per se, not in the context of another engineering branch) this is not so, and this makes it possible to sell crappier and crappier software, where the bug fixes are sold as added value and extra modules.

    4. Re:Not engineering, but it SHOULD be by turbidostato · · Score: 1

      "Yes, but for bridges and highways there is a lower limit based upon public safety and maintenance costs."

      Regarding "maintenance costs", they are there within the "cheaper" part, since usually maintenance gets out the same pockets than forefront costs (if not, wait for cheaper bridges even with higher maintenance costs if possible).

      Regarding "public safety" there's not such a thing. There are "regulations in place I should adhere if I want to avoid really big problems". Bridges or highways still go to the lowest bidder.

      I think a lesson can be extracted from there.

  51. Why many software projects fail by TheLink · · Score: 3, Interesting

    The way I see it.

    Civil Engineering:
    Design Phase costs about 10% of Build Phase
    Build Phase involves tons of construction workers and heavy machinery.
    The blueprints and plastic models are way cheaper to make than the Real Thing.
    Management often doesn't mind spending a bit extra to get the design better, because the budget only allows for one big Build.

    Software Engineering:
    Design Phase costs more than 1000 times the Build Phase.
    Build Phase involves the programmer typing "make all" and going to read Slashdot or fetch a coffee.
    The plastic models cost as much to make as the Real Thing.
    Management often sells the blueprints/plastic models as v1.0 because they compile and "kinda run" and the budget only allows for one big Design... ... and the customers often buy it :).

    It should be no surprise then that the plastic models regularly fail.

    But maybe I'm seeing things wrong?

    BTW I suspect that a Civil Engineering Design phase is managed a bit differently from the Build phase. Still, I'm not an architect or civil engineer so what do I know.

    --
    1. Re:Why many software projects fail by Anonymous Coward · · Score: 0

      Note that your describing the Water fall approach and that Agile methodologies came about in large part to solve exactly these problems

    2. Re:Why many software projects fail by ion.simon.c · · Score: 1

      I subscribe to the JFDI method of development. ;)

    3. Re:Why many software projects fail by Tony+Hoyle · · Score: 1

      You forget that in Software Engineering it's a loop created by Management:

      Design Phase
      Build Phase
      Testing Phase (I presume bridges are tested too)
      Management wants to add some popups in a disgusting shade of pink, and thinks the design is pants even though it's technically correct --> Back to design phase.

      This would be the equivalent of:

      Design Phase
      Build Phase
      Testing Phase
      Management thinks the bridge should be 10 feet wider. And can we paint it a disgusting shade of pink? Oh and *flat* bridges are *so* 1990s. Can't we put a spike in the middle? -> Back to design phase.

      I suspect the region Civil Engineering doesn't suffer the above is that a manager who said that would be thrown head first of the bridge.

    4. Re:Why many software projects fail by TheLink · · Score: 1

      There are plenty of buildings with "decorative spikes" on them, so I wouldn't be surprised if a spike was put on a bridge for nontechnical reasons.

      There was a time when pink paint must have been cheap or popular around my area - since plenty of buildings were painted pink. Not hot pink but pink nonetheless.

      --
    5. Re:Why many software projects fail by fractoid · · Score: 1

      Sorta - rapid prototyping also kinda falls under the same description he used.

      In the GP's context:
      Agile Development:
      Design phase costs 20% of the Implementation phase.
      Implementation phase costs 500x the Build phase.
      Initial design phase produces specs detailing a plasticine model of the outside of the Real Thing.
      Subsequent design phases involve speccing plastic and/or metal sheets to attach to the original model, possibly replacing some of the plasticine.
      Subsequent implementation phases involve an awful lot of hot glue and duct tape.

      (On the other hand, I worked in an Agile shop for a year and it was probably the best run software house I've worked in, in terms of development practices etc. That said, I believe that's more to do with the quality of the technical leads than the methodology chosen.)

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
  52. ID10T DETECTED by mrnick · · Score: 1

    "A practitioner of comp. science for 10 years" eah? Well, if I count my total experience in CS then I have been at it for over 35 years, pretty good for someone 27 years old right? What degrees do you hold? When did you get them?

    Do you realize that you stated you have worked with computers for 10 years even after I told you I had 15 years of top level IT experience, not counting any time obtaining my advanced degrees in the subject. The only thing we know about you is you have a Slashdot account! Pathetic!

    When I do graduate with my MS in CS I will likely know more about Computer Science than the professors teaching me. This is the same for all the graduates, with a few exceptions because we have a more modern education in the field than they do. So, the newer a degree the more it should be respected.

    Plus you sound like a idiot programmer, who loves his .NOT programs, and makes less than my pool guy.

    As far as being finished, I hope to never finish learning. That's when your education starts to degrade.

    I assume since you are inciting flames that you have finished learning long ago and would have to pull your head out of your but to even be qualified to get me a cup of coffee (1 sugar, 2 cream please).

    I don't "know everything" and I thank God I don't! If I knew everything there was to know about CS then it would likely bore me.

    Though, I could do without people like you spouting off flames that don't even support any of their arguments with any evidence or alternative perspectives.

    Since you haven't identified what you do, if anything, I can only assume you are a programmer that got offended because you have not caught on that your job is the bottom rung of the IT world, and only a learning tool for actual computer science.

    In that case, I'll close with go fork(); yourself!

    --

    Encryption: I may not agree with what you say, but I will defend your right to encrypt it...
    1. Re:ID10T DETECTED by Anonymous Coward · · Score: 0

      you can be old and have degrees and still be a pompous idiot, as you have proven here

    2. Re:ID10T DETECTED by Anonymous Coward · · Score: 0

      "When I do graduate with my MS in CS I will likely know more about Computer Science than the professors teaching me. This is the same for all the graduates, with a few exceptions because we have a more modern education in the field than they do. So, the newer a degree the more it should be respected."

    3. Re:ID10T DETECTED by kramulous · · Score: 1

      Mathematics degree (computational mathematics - Numerical Analysis for the oldies)
      Computer Science
      Master of Science (Mathematics - Finite Volume Methods - that's nonlinear algebra for the thickies)

      Probably won't do a PhD for ten or so years. Too busy helping engineers, mathematicians, high energy physicists and other computer scientists get theirs.

      My codes have consumed over 60% of the total cpu time on 5 machines in the top500 (top200 specifically). No, I'm sure you as 'an IT professional of 15 years' who is in their last year of computer science knows everything there is to know.

      You are a buffoon. You sound like one of the low end IT degree people who come to me for help and then proceed to tell me that I'm doing it wrong. Shut up and learn. You don't know everything.

      --
      .
    4. Re:ID10T DETECTED by Anonymous Coward · · Score: 0

      At least he's not an asshole.

    5. Re:ID10T DETECTED by kramulous · · Score: 1

      Who are you kidding with the A. Coward post?

      The only person who doesn't think you're a dick is you. At least have the balls to put your name next to a troll.

      --
      .
  53. Pace/Cost of Change by S77IM · · Score: 1

    Engineering principles can be applied to software (even the wishy-washy stuff like requirements and usability) but nobody ever does it because of the deadline. The product needs to go out the door yesterday! To meet our contractual requirements or be first-to-market or patch the gaping vulnerability introduced during our last frenzied hack-fest.

    The difference between other engineering fields and software is that in, say, civil engineering or architecture, production is expensive and fixing errors post-production is ridiculously expensive. Nobody wants to put up half a skyscraper only to find that the foundation is wobbly or the main structural elements too weak or the design too top heavy. So it's sound business practice to do a lot of rigorous, mathematically-provable checking and double-checking during the design phase, well before anyone puts on a hard-hat let alone builds something that might fall down.

    With software, it's the reverse -- the design takes all the time, and the production is super cheap, and changing things after production isn't usually that bad. Even if you have a large and expensive deployment, it's still usually feasible to change the software long after it has been built. And in the typical case, the business use doesn't justify a rigorous up-front design. Sure, fixing a defect after the code is in use is always harder than fixing it beforehand -- but that has to be weighed against the business value of having "good enough" code, sooner.

    So, software engineering will never really become a rigorous field because there's no business reason for it (as opposed to fields that build physical objects, which have business pressure to be much more rigorous).

      -- 77IM

    --
    Student: Is it true that the foundation of the universe is paradox?
    Master: Well, yes and no.
  54. ABET like Software Engineering by WWE-TicK · · Score: 1

    ABET recognizes Software Engineering as a legitimate engineering field. Just sayin'...

  55. As Sheldon Cooper says... by Chees0rz · · Score: 1

    "Ah, engineers, the oompa loompas of science"!

  56. Flutist or Flautist? by nicholdraper · · Score: 1

    Programmer, Software Engineer, Computer Scientist, Software Architect. The title depends upon your level of insecurity. Same with Computer Science compared with Software Engineering. Was Michael Faraday not an inventor of electronics because he didn't use calculus? The truth is that there are good, bad and ugly practitionares of computer engineering science. The ugliest of all think they are good.

  57. PE certification for Software Engineering by WWE-TicK · · Score: 1

    I believe some places up in Canada are now doing PE certifications for Software Engineering as well. Last time I researched this, I believe Texas was going to do the same thing for some reason failed. But PE certs for SE will be coming in not too distant future. Will that finally shut up the "software engineers are not real engineers" crowd? Probably not. I find the kind of people who even make such complaints are usually "paper engineers" anyway and haven't done any actual real work "in the field" and their entire self esteem is built on having a degree that says "engineer" on it. IMHO, just because your degree says "engineer" on it doesn't make you a "real" engineer either. After working in the field for about 7 years, with many different kinds of engineers, I have to say I've met quite a few "paper engineers" during that time.

  58. The pain of software engineering by janwedekind · · Score: 1

    When I studied software engineering as part of my degree I found it quite painful. It seemed quite interesting and relevant but it eerily reminded me of the "soft" sciences I had to learn to pass school (foreign languages, biology, chemistry).

    For me the most frustrating thing in computer science is the many programming languages, each of them offering one compelling feature or another. But as Paul Graham said: Languages evolve slowly because they're not really technologies. Languages are notation.
    The problem is, that it is not enough to create a better programming language or integrate a missing feature into an existing one, because then you have made the problem worse by introducing an additional language. So what you really need to do (at the same time) is to persuade other developers to adopt your language by providing a notation which is "powerful" and looks "nifty". And that is where the human factor comes in.

  59. Science vs. Engineering in General by ponraul · · Score: 1

    Jeffery Fong, a NIST project manager, gave a talk at our school yesterday. (He's the one tasked with making FEM models of the twin-towers and modeling their collapse.) He summarized the differences between science and engineering as: engineering is science plus uncertainty and scalability.

    If you accept this as being generally true, the question then is, is software engineering computer science plus uncertainty and scalability?

    1. Re:Science vs. Engineering in General by vainvanevein · · Score: 1

      I'd say engineering is building something and science is determining how something works. Is that too simplistic?

  60. Just compute the J ratio by thebian · · Score: 1

    Take the proportion of your conversation that is mathematical jargon, divide by the proportion of your conversation that is computer business jargon, and add the product of alpha and the number of years you spent in graduate school, where 0 1, you're a scientist.

  61. Please mod parent funny by symbolset · · Score: 1

    Try and see the sarcasm here. It's very subtle.

    --
    Help stamp out iliturcy.
    1. Re:Please mod parent funny by CptPicard · · Score: 1

      You're pretty blub about functional programming, aren't you...

      --
      I want to play Free Market with a drowning Libertarian.
  62. Not my fault. by Anonymous Coward · · Score: 1, Funny

    It's not my fault the guy wandered into the thread at the precise moment I was pointing at the door warning "We're about to be invaded by rabid loons". If he wants to self-identify that way, that's funny.

    But it's a nice day. Rather than sit here and argue about it I think I'll put my dog in the boat and tease some fish for a while.

    /And yes, this is off topic. Thanks for noticing.

  63. I am a programmer... by FlyingGuy · · Score: 1

    I have written from the very lowest level ( microcode ) to the very highest level ( web scripting ) and everything in between.

    So lets talk titles here, because that is really all this is talking about, really.

    • I have written code that has then been realized in hard circuits, what is my title?
    • I have written code that has then been burned into a PROM, what is my title?
    • I have written code that has then been been used in hand held products, what is my title?
    • I have written code that has then been been used to process mortgages, what is my title?
    • I have written code that has then been used to process medical Claims, what is my title?
    • I have written code that has then been used to monitor patient vitals in a hospital, what is my title?
    • I have written code that has then been used to run nuclear power plants, what is my title?
    • I have written code that has then been used in military weapons, what is my title?

    In all of this I have drawn on experience, technical publications, Worth, K&R and many other sources, and I have published some of the methods I have used. Am I a scientest, engineer, dreamer, artist, designer or am I all of these things?

    --
    Hey KID! Yeah you, get the fuck off my lawn!
  64. Morons Pretending to Know by pipingguy · · Score: 1

    I'm always amused by self-appointed slashdot experts when it comes to technology. "We can configure computers, therefore we know everything".

  65. Computer Software Cannot Be Engineered by rghosh · · Score: 1

    Computer Software Cannot Be Engineered
    Norman Young

    Computer software cannot be engineered because there is no science of computer programs. Science is essential to engineering. The application of scientific models through engineering judgment defines the essence of engineering. Computer programs, as mathematical objects, are not subject to scientific laws. Consequently, by definition, computer software cannot be engineered.

    The application of scientific models through engineering judgement,defines the essence of engineering. Engineering itself involves the creation of useful artifacts. What distinguishes engineering from other creative professions is the use of scientific models in creating those artifacts. Engineering judgement chooses among a number of available models to use in solving a problem, balancing risk of failure with the effort of analysis. What characterizes engineering is the scientific underpinnings of at least some of the available models.

    Computer programs are mathematical objects. In particular, individual computer programs are specific values in a discretely parameterized model of the computer that executes them. ill The physical computers which execute computer programs have scientific meaning, but the programs themselves have no physical meaning apart from the meaning attributed to them by the computer. Consequently, computer programs are not subject to scientific laws.

    As purely mathematical objects, with no underlying science, computer programs and computer software cannot be engineered.

    Mathematics is important but in itself not sufficient to characterize engineering

    Mathematics is important to engineering but in itself not sufficient to distinguish engineering from other vocations [Davis. M.]. Engineering uses mathematics to express engineering problems, and to reason about the scientific models used in solving engineering problems. Specifically, all mathematical statements used in engineering have some physical interpretation, relating various quantitative aspects of a problem or its candidate solutions. The scientific basis of all mathematical statements found in engineering is part of what distinguishes engineering from other activities, not merely the use of mathematics itself.

    In contrast, other fields use mathematics, but not necessarily in stating scientific properties about the physical world. For example, the commercial activities of accounting and finance use mathematics, but the mathematical statements used in these fields are based on conventions about the value of goods and services. Accountants and economists derive models based on these conventions and use mathematics to express ideas and reason about problems represented in these models, but the models themselves have no physical scientific meaning. The models and related mathematical statements only have meaning within the commercial conventions on which they are based.

    Consequently, the use of mathematics is in itself not sufficient to characterize an activity as engineering. Permitting the use of mathematics as a sufficient basis to qualify an activity as engineering is the same as saying that whenever anyone is using mathematics then they are applying engineering. The statement must be further qualified. Whenever someone is using mathematics to reason about a scientific model in building a useful artifact, then they are applying engineering.

    Engineering without science is craftsmanship

    Like engineering, other professions use models and apply judgment to create useful artifacts. For example, many creative trades, from industrial design to pipe-fitting, use physical prototypes to analyse problems and evaluate alternative candidate solutions to those problems. These trades apply judgement in balancing the value and insight that the models provide with the effort of developing and analyzing them. Many professions also apply predefined models and conventional solutions manifest through the historical traditions of their respectiv

  66. Not news and not difficult to figure out by Anonymous Coward · · Score: 0

    On the question of engineering, I believe it was Knuth who was once said that programming is somewhere between an art and a science.

    That's about as accurate and precise an explanation as any, and he wrote it decades ago. Apparently, it took some people, like the author of TFA, this long to figure out what he meant.

  67. Squishy? by Tablizer · · Score: 1

    "The reason is that humans are squishy and frustrating and unpredictable."

    Well! You are not going to get any science if you make fun of our weight and call us names.
         

  68. Similar Article by Anonymous Coward · · Score: 0

    Here's a similar blog-article:

    http://www.geocities.com/tablizer/science.htm
         

  69. No formal methods indeed by Anonymous Coward · · Score: 0

    certainly explains Slashdot's screwy CSS layout

    -1 Truth too Painful

  70. Real vs Ideal by hicksw · · Score: 1

    Computer Scientists are reductionists - If a problem is too hard to solve, simplify it by throwing some of it away, until what is left CAN be solved. The result may still be of some use.

    Software engineers make systems for real world use - If a problem is too hard, throw another programmer on the fire.

    FOSS engineers can reduce the problem and call it version

  71. Depends on the school. by Anonymous Coward · · Score: 0

    The difference between "Computer Science" and "Software Engineering" depends on the school, and nothing else. There is no standardized curriculum for computer science nor for software engineering. My own experience has been quite different from that of the author. At my school, software engineering is about applying the theory which is computer science, and software engineers are required to take the same courses as computer scientists as well as additional lab courses in which they learn software engineering best practices; by contrast, those who sign up for purely computer science are exposed only to the theory and often end up writing code in which variable names are enigmatic and uninformative (e.g. "alpha", "beta", "theta") and which do not take advantage of good OOP design methodology.

  72. But of course... by tekshogun · · Score: 1

    Of course software engineering and computer science are different, but only in the sense that a square is a rectangle but not all rectangles are squares. Computer science goes FAR beyond software development/engineering and maintenance; and no I don't mean general information technology. For example, the hardest part of producing software comes before the development phase, solving the problem. Any engineer or team of engineers can take a solution and turn it into code but if they have no solution, it does not matter how much they know about .NET, JAVA, php, or whatever, they will sit around like every other person beating their heads about how to apply their discipline. There is no argument here. You have excellent computer scientist that can solve problems but aren't very code savvy (and don't really need to be) and you have software developers that can take a solution and bust out code as if they were acing some simple test. You then have people that can do both.

  73. Hate to inject some reality, but it needs doing... by valdis · · Score: 1

    "Economics generally failed to predict the mortgage meltdown."

    Um. No.

    There were a *lot* of economists that were saying a decade ago that nothing good could come from the deregulation craze, and the almost total lack of effective oversight over at the SEC.

    You want to hang somebody out to dry, go after the financial execs that did the stuff, and the government people that acted as facilitators.