Slashdot Mirror


The Life of a Software Engineer

Jonathan Wise writes to share with us an interesting bit of prose describing life as a software engineer. "I am, in the States, known as a Software Engineer. In Canada we're not allowed to call ourselves engineers, although the discipline is no less rigorous than any other kind of engineering. But perhaps its for the best, because 'engineering' describes only a part of what I do. A software developer must be part writer and poet, part salesperson and public speaker, part artist and designer, and always equal parts logic and empathy."

70 of 519 comments (clear)

  1. Life of a software engineer? by Bob+McCown · · Score: 5, Funny

    Life? We don't have a life!

    1. Re:Life of a software engineer? by dvice_null · · Score: 4, Funny

      > We don't have a life!

      You got the specs, why aren't you programming?
      http://en.wikipedia.org/wiki/Conway's_Game_of_Life

    2. Re:Life of a software engineer? by Bob+McCown · · Score: 2, Insightful

      Specs? [pause] SPECS? [snicker] BWAHAHAHAHAHAHAHAHAHAAH

      Yea right. My latest specs went from "Spend some time with the latest version of the FooBar libraries we use and see whats changed" to "When will you have something we can look at and test?" in about 5 workdays.

      Specs my shiny metal ass.

  2. Re:I'm a software engineer. by orclevegam · · Score: 4, Informative

    It's a troll, and definitely NSFW.

    --
    Curiosity was framed, Ignorance killed the cat.
  3. WARNING: GNAA by SirBudgington · · Score: 3, Informative

    Parent post contains link to nasty shock site which screws with your browser.

    --
    this is my sig
  4. No less rigourous? by Chris_Jefferson · · Score: 5, Funny
    although the discipline is no less rigourous than any other kind of engineering

    Oh? Your wall has fallen down? That just seems to happens sometimes. Well, just push it up, go outside your house and come back in. Hopefully it won't happen again.

    --
    Combination - fun iPhone puzzling
    1. Re:No less rigourous? by Quasar1999 · · Score: 3, Interesting

      A damned 'Engineer' in all the title's glory developed my car, and yet half the time a warning light comes on, I'm told to turn the car off, wait a minute, turn it back on and hope it doesn't show up again. And the 'Engineer' that designed our local highway, forgot about this thing called 'grade' and why it's important to have water run off the road rather than pooling in the middle of it. Many millions of dollars later in court, it was verified that the Engineer f'ed up the plans and the construction crews were not at fault. So care to tell me about the 'rigours' of this so called Engineer?

      --

      ---
      Programming is like sex... Make one mistake and support it the rest of your life.
    2. Re:No less rigourous? by Bluesman · · Score: 2, Insightful

      Yeah, show me where the software engineer's signature is from the guy who guarantees that the software won't kill anyone.

      I guess it depends on what he means by rigorous, though. At least in most kinds of engineering the problems aren't unexplored, so you have some guidelines to work within that pretty much guarantee your building won't catch on fire.

      But there's a huge difference between guaranteeing something will work and making something that pretty much works most of the time, we think. Comparing the two is slightly ridiculous.

      --
      If moderation could change anything, it would be illegal.
    3. Re:No less rigourous? by kidgenius · · Score: 4, Insightful

      Interestingly enough, that first one sounds like something in the computer is messed up....hmm, software maybe?

    4. Re:No less rigourous? by nonsequitor · · Score: 5, Insightful

      Sure, make light of the industry. I've been writing safety critical software for the last 7 years. You can thank the software engineers that wrote the fuel injector firmware for the turboprop on your plane for properly engineering it to always work. And while you're at it the software engineers who wrote the code running the life support systems in the ICU also deserve some props.

      Not all of us work in a fault tolerant environment. Because we do our jobs well, you don't hear about the latest scandal on Slashdot. This would explain the lack of articles about software bugs causing airbags in Ford cars failing to deploy. I know you were just joking, but to some of us, software engineering is serious business.

    5. Re:No less rigourous? by dmatos · · Score: 4, Interesting

      And the Engineer who stamped the plans before construction began is now personally liable for all the damage caused. That is the difference (in Ontario) between someone who is an Engineer, and someone who just calls themselves one (illegally). That person has probably been stripped of their certification, and can never work as an Engineer again. There are responsibilities associated with being a Professional Engineer, and penalties should those responsibilities not be met.

      --

      It may look like I'm doing nothing, but I'm actively waiting for my problems to go away.
      --Scott Adams
    6. Re:No less rigourous? by mrchaotica · · Score: 4, Insightful

      Many millions of dollars later in court, it was verified that the Engineer f'ed up the plans and the construction crews were not at fault.

      You just proved his point! There was a huge court case, and it was verified as to which party was at fault. The Engineer might have lost his license over it, too, if the damages were that high. So yes, that's the difference: the Engineer was held accountable.

      But software is different, for some reason. For example, do you see that happen with Microsoft? Hell no! If Microsoft were held accountable for its software like Engineers are, the company would have been sued into oblivion and Bill Gates would be in jail for gross negligence. And so would the responsible parties of every other software company.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    7. Re:No less rigourous? by ceoyoyo · · Score: 2, Insightful

      And those are real engineers, either you or the person who signs off (literally) on your work, taking responsibility for its safety and performance.

      The programmer whose responsibility ends when he's done writing his code is not an engineer.

    8. Re:No less rigourous? by WGR · · Score: 4, Informative

      Dr. David Parnas actually succeeded in becoming a Professional Engineer (P.Eng) in Ontario as a "Software Engineer". He showed that there are rigorous ways of designing software so that the tenets of engineering safety can be upheld.

      So yes you can be a software engineer in Canada. But not by getting a cereal box certification from Microsoft. Perhaps graduating with a degree in Software Engineering from a University like Waterloo or Toronto, which do have software engineering courses.

    9. Re:No less rigourous? by Beardo+the+Bearded · · Score: 5, Informative

      That's what I came in here to say.

      You CAN be a Software Engineer in Canada. You just have to get a Bachelor's Degree in Engineering (or similar) with Software as your discipline. Then register with your appropriate body (APEG-BC in British Columbia) and there you go. The University of Victoria offers a B.Eng. in Software Engineering. For the first four years after graduation, you can call yourself an Engineer In Training. After that, you can get your seal and stamp as a Professional Software Engineer.

      In other words, yes, you can call yourself an Engineer. Just not after mailing in box-tops to MS.

      (I'm an EE. (in Training) )

      --

      ---
      ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
    10. Re:No less rigourous? by joggle · · Score: 2, Informative

      So care to tell me about the 'rigours' of this so called Engineer?

      Sure. I was trained in aerospace so can at least tell you about some of the requirements of engineering. In the military there are many 'Mil specs' that must be met for any aircraft design (although less so for autonomous, unmanned vehicles). Within any company there are standard guidelines for the standard tolerances for various design attributes (such as tolerance for flatness, angle accuracies, cylindrical attributes, etc.). For civilian aircraft design there are many similar, but sometimes different from the mil specs, guidelines that engineers must follow and must be certified step by step.

      For spacecraft you usually have tight tolerances, although less formal guidelines than in passenger or military aircraft design. On the other hand there are extreme guidelines for tracking the parts used to build a spacecraft, especially for NASA. They require that virtually every component must be tracked all the way to the lot and date on which it was manufactured (and only certain manufacturers are allowed). This is required even for small components like capacitors or resistors. Usually rockets and payloads that are intended for a low altitude (non-space) target have much less strict policies though.

      In either case the design process is well documented and any significant change is usually signed off by another engineer. Each step of the design is documented and a reason is given for each change. While there are CVS style comments in software, you usually don't need explicit, signed paper in order to check in each change into your source repository. I don't know if this is the policy at aircraft manufactures but it certainly was at the spacecraft design company I worked at in college.

      There are also rigorous, standard tests for aircraft and for spacecraft. Spacecraft must undergo many tests before a launch, including individual component tests, difficult systems-integration tests, and a shaking test that simulates the stresses of the launch vehicle. Any commercial jet must undergo months of tests after the first one is built. This is in addition to the countless simulations and physical tests they do for individual components during the design and prototype construction stages.

      While some software companies may implement rigorous software repository and design standards, it isn't required by law as it is for aerospace or for civil engineering for that matter. Software writers aren't required to take a standard, national test in order to start their profession (unlike civil or mechanical engineers). And they certainly aren't held to any national standards for software design (although there may be exceptions for some specific problem domains such as aircraft control software or stock trading software for all I know).

    11. Re:No less rigourous? by JaredOfEuropa · · Score: 2, Insightful

      But software is different, for some reason. For example, do you see that happen with Microsoft? Hell no! If Microsoft were held accountable for its software like Engineers are, the company would have been sued into oblivion and Bill Gates would be in jail for gross negligence. And so would the responsible parties of every other software company
      Software is different, in that small mistakes often have very large and far-reaching consequences. When designing software, you also have to deal with far, far more unforseeable circumstances. If we hold software developers to the same liability as we do building contractors and architects, no one would be able to profitably sell any.

      Get a guy to design you a home, and have a contractor build it. They are both liable to make small mistakes. You may be entitled to have it fixed but good luck getting them to do it. Then there's the miriad of small mistakes and oversights that you don't even notice because they do not affect you. If your building contractor used one 5" nail where he should have used a 6" one, the worst that is (un)likely to happen is that a bit of paneling falls of the wall when a truck rumbles by. In software, that one misplaced nail may cause an entire neighbourhood to collapse into matchsticks.

      Also, a lot of bugs are not that serious. Note how car manufacturers deal with liability: if there's a safety issue, it's an immediate recall. If it's an annoying blinky light, they'll fix it when you bring the car in for regular service. Don't most software companies usually (admittedly not always) deal with it like this?
      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    12. Re:No less rigourous? by grqb · · Score: 2, Interesting

      So care to tell me about the 'rigours' of this so called Engineer?

      Yeah, the engineer got sued. That's the difference. Engineers are made responsible.

    13. Re:No less rigourous? by mrchaotica · · Score: 3, Informative

      Software is different, in that small mistakes often have very large and far-reaching consequences.

      Ha! You want to talk about small mistakes? Here's a small mistake: a contractor didn't want to bother threading a few nuts up a really long rod, so he cut the rod into three pieces and attached them to the beams they were supporting separately. No big deal, right? I mean, I wouldn't want to have to spend hours spinning nuts on a rod either!

      Well, guess what: it killed 114 people! So don't go telling me that software is "different" because of small mistakes. Because it really damn well isn't!

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    14. Re:No less rigourous? by Maxo-Texas · · Score: 3, Informative

      And another thing-- my company decided that they wanted to go from 99% bug free to 99.999% bug free software rollouts (a bug costing us perhaps $1000 per minute of downtime).

      The result is that our software takes a minimum of 8 to 12 times longer to roll out than it did before. It is now so slow that our developers are starting to lose their skill set because there is so much downtime.

      Where before we could roll it out-- suffer the "$30k" loss, fix the bug (which takes weeks of testing but only a few minutes in production to flush out), and put in a fixed build in a total of 2x the time.

      And the real kicker is that we STILL get bugs in production after all that testing because the best test site in the world doesn't simulate 70,000 users hammering on the software. (and the company doesn't begin to pay for the "best" test site anyway).

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    15. Re:No less rigourous? by ebh · · Score: 2, Interesting

      Are you then liable for life for any bugs that may turn up in anything you ever put your name on?

    16. Re:No less rigourous? by Anonymous Coward · · Score: 2, Interesting

      This argument gets really old folks. For those of us that took Engineering 101 what were we taught engineering is? Answer: "the application of mathematics and science to produce useful artifacts"

      So applying the basic concept of what engineering is there is no reason why some software developers shouldn't be called software engineers.

      As for the PE argument, sure one should not call them self a Professional Engineer if they are have not past a standardized, peer reviewed, process. And in many states electrical engineers, civil engineers, and mechanical engineers can be called an engineer just not a Professional Engineer. I would be 99.9% of the EE's at Intel are NOT PEs yet they call themselves engineers.

      Only certain areas where safety and public interest are important are PEs required by law. Intel, AMD, TI, Dell, Apple, GE, etc, etc are not required by law to have PEs working on their consumer technology. But PEs are required for civil, structural, and aviation do to safety concerns.

      Today even the IEEE and ABET recognize software engineering as an engineering discipline. ABET has even started accrediting computer science programs and this was done in agreement with the IEEE. At least two states in the US have a SWE PE.

      While we are on rigor, I have a cousin that is a civil engineer with a PE. These guys are always looking things up in tables or running them through software. They rarely if ever think about calculations. He even admits its the least rigorous field of engineering. The technology is quite slow to change too. They hardly ever "invent" something new. They just apply fundamental rules of thumb and a minor bit of first term physics.

      From what I have seen only one group of engineers complain about software engineering. That being EEs. Civil engineers and mechanical engineers seem to be very open to it. All I can figure is that EEs must want to claim software as their domain also.

      Now we come to the question of what in the world of software development should be considered software engineering and what shouldn't be. Well I think the IEEE and ABET have a good start on this. I think a pragmatic way of looking at this is asking what is the difference between electricians, lab techs, electrical engineers, and PE EEs. Similar distinctions can be made in the software industry.

      For what it is worth I have one degree from a school of engineering and another from a school of science. I have seen both sides of the coin...something that it seems few others can say. I believe that the profession of software engineering is just as viable as any other engineering profession.

  5. Huh? by 4D6963 · · Score: 5, Interesting

    I'm obviously going to be modded down for this, but what does this blog post do on the front page of Slashdot? I mean ti's not news, it's just a guy with a job like another telling us his life. Surely that may be relevant to some, but that's just a blog entry about someone's life among others, so what the hell is it doing here? Is that guy pals with ScuttleMonkey?

    --
    You just got troll'd!
  6. Part artist and designer by mini+me · · Score: 2, Insightful

    Using a bridge-building analogy, in my opinion the software development phase is akin to designing the bridge. You've got to present what you want it to look like and how you want it to function in a visually appealing way but the exact details aren't your concern, that's up to the engineer to figure out. In the software world, the computer plays the role of the engineer. It's up to the computer to figure out how to implement what you've described. Therefore, Canada has it right. Software development isn't engineering at all.

    1. Re:Part artist and designer by CastrTroy · · Score: 2, Interesting

      Canada does have software engineers. The difference is that you can't just decide to call yourself a software engineer without having the proper credentials. Just like you can't call yourself a doctor if you aren't a doctor.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    2. Re:Part artist and designer by MCZapf · · Score: 3, Funny

      If they engineered bridges the way they "engineer" software, they would just take parts of existing bridges plus random scraps of custom metal and concrete, duct tape it all together, and test the result to see if it crashes.

  7. Summary by middlemen · · Score: 4, Funny

    "I want to be an engineer, sex can wait !" -- and this sums up the life of an engineer...

    1. Re:Summary by geekgirlandrea · · Score: 3, Insightful

      For some of us, sex was never really an option most of the time.

  8. Link timed out....but, this is /. .... by iknownuttin · · Score: 2, Interesting
    ... we're not allowed to call ourselves engineers...

    I've ran across EEs, MEs, CEs, you get the idea, here in the US that insisted that software coders, Computer scientists, or LAN engineers were not engineers. Basically, they said that their profession was based on physical laws - engineering is applied physical science - whereas CS is based on man made rules just like grammar and writing. And you don't see writers being called "language engineers". Snobbery? Maybe, but I kind of sympathize with them because looking at all of the different computer languages, computational methods, etc... I can see their point.

    --
    I prefer Flambe as apposed flamebait.
    1. Re:Link timed out....but, this is /. .... by gnick · · Score: 3, Interesting

      I've met software engineers that I'd be happy to refer to as "software engineers". I've also met code-monkeys that will happily claim "software engineer" status. Canada's upholding some standard for the term engineer is spot on. Get a degree and proper accreditation, and then you get your title. This may sound egotistical, but it's unfortunate that, here in the US, describing myself as an "electrical engineer" distinguishes me only slightly from the "sanitation engineer" that hauls off my recyclables once a week.

      --
      He's getting rather old, but he's a good mouse.
  9. Whoever tagged this by techpawn · · Score: 3, Insightful

    Who tagged this Pompous... Beat me to the punch. I write code, it's my job. No more, no less. To try to give it esoteric meaning beyond what it is reaches a level of loathing that even I am not going to try to comprehend. It's a job! We may want to make ourselves seem more important based on our position because of the tech around us and being able to tell people "no" but in the end we're just beating the next level of rocks together.

    --
    Ask not what you can do for your country. Ask what your country did to you
  10. Professionalism versus rigor by s20451 · · Score: 4, Interesting

    You are not allowed to call yourself a "software engineer" in Canada, not because the discipline lacks rigor, but because it lacks professionalism.

    A profession is formed for the public good, in order for experts in the field to supervise, regulate, and discipline one another. In Canada this is carried out through non-governmental professional associations, and there is one engineering association per province. It serves public safety well and is an excellent alternative to both "buyer beware" and governmental intervention. Doctors, nurses, lawyers, and teachers are similarly regulated.

    I'm personally sympathetic to the professionalization of software engineering. Basically this would mean that you would need a license to practice, all your code would be signed by its author, and the association would discipline any software author who wrote bad software, either maliciously or accidentally. Although it means hobbyists could no longer tinker, we are at the point where that hobbyist tinkering could have significant implications for the international system of computing infrastructure. Why should unlicensed software authors be any different from unlicensed doctors? Both can cause harm; in the former case, potentially more harm.

    --
    Toronto-area transit rider? Rate your ride.
    1. Re:Professionalism versus rigor by theAtomicFireball · · Score: 3, Insightful

      A profession is formed for the public good,
      Bullshit. Professions in the sense you speak are formed for the good of those people already in the profession. It allows them to control who can compete against them, both by giving them a say over who can join, and by getting the government to restrict what people who haven't joined can do.

      Although the "professionalism" and "public good" argument you make has been used ad nauseam, and it has a certain attractive logic to it and seems like it should be true. But, there is very little quantitative evidence available, and almost all that there is indicates that government sanctioning of professions has had absolutely no positive impact on the quality of the services rendered by those professions, and there is considerable evidence to suggest that it may have degraded it (although it's difficult to determine causality given the number of factors that go into something like that). In other words, they do absolutely nothing to protect the common good over, and they may harm it.

      Government sanctioning and licensing of professions is completely about control and prosperity of a particular group. That's now how they're justified and you won't find it in the charters or enabling legislation, but it's the reality of the situation. They are lobbying groups and industry associations all rolled up into one, with quasi-governmental powers to boot.

      Although it means hobbyists could no longer tinker, we are at the point where that hobbyist tinkering could have significant implications for the international system of computing infrastructure. Why should unlicensed software authors be any different from unlicensed doctors?
      Your statement shows a fundamental misunderstanding of the craft. Basically, every really incredible programmer/developer/software engineer got that way by tinkering. Not by taking 60 credit hours of programming classes. It's the countless hours of trying things out and figuring shit out that got them good. The classes, if they were even taken, provided a starting point. Anything that discourages tinkering prior to or in addition to formal training would have a dramatically negative impact on the "international system of computing infrastructure" because it would drastically reduce the ranks of those who actually make all the stuff work.

      While I actually have issues with licensing of Doctors, I'll point out one very serious and very obvious difference: You an code on your own computer -- tinker if you will -- and have absolutely no chance of hurting anyone else. You can't exactly practice surgery on your friend safely. You can study anatomy all day long, but without being able to work under a doctor while cutting into a patient or diagnosing a difficult case, you're likely to do far more harm than good no matter how much knowledge you have shoved into your head. They are not comparable cases; there is some basis for licensing of doctors, absolutely no rational one for licensing of software engineers unless you are completely ignorant about how good coders become that way.

      Now, if you want to talk about specific accreditations for programming in fields where there is a high risk of harm, such as coding for the FAA or NASA or military, I'm willing to be slightly more sympathetic to your argument, but am skeptical that it would guarantee or even improve the quality even in those fields.
  11. Re:Yes, you can call yourself an Engineer, if... by Fox_1 · · Score: 4, Insightful
    He's right. http://www.softeng.uwaterloo.ca/Current/grad_info.htm

    The inability for random people to call themselves software engineers in Canada is because the Real Engineers objected to the proliferation of people with MCSE's and the the like doing a discredit to the standards of the profession, both in terms of training and work results.

    So go to university for 4 or so years and you'll get the respect you crave. And the nifty IRON ring, much sexier then token ring any day.

    --
    The rock, the vulture, and the chain
  12. Engineering in Canada by RobinH · · Score: 4, Interesting

    To become an accredited engineering program in Canada, there has always been a strong requirement for a scientific background. This first created problems for computer engineering programs in Canada to become accredited, so they added courses on things like the physical properties of silicon, etc. to meet this requirement. Electrical engineering, of course, has thermodynamics, etc.

    Software engineering has this problem of needing to incorporate science courses into the curriculum. Also, the field of software engineering isn't considered to have matured *as much* as more traditional disciplines. I'm pretty sure that there are accredited programs and you can be a software engineer in some provinces now. These things don't happen overnight.

    I would like to have as much confidence in a piece of software as I do in a bridge, but we're not at that point yet. I do think we're getting closer. At this point, very little software is really "engineered" in the rigorous sense. Software that is tends to be much more expensive, and much more reliable. Go figure.

    Most software buyers don't want to pay the extra expense for the extra quality at this point. Of course, if you're purchasing a flight control system for an aircraft, you probably have deeper pockets and more stringent requirements.

    --
    "I have never let my schooling interfere with my education." - Mark Twain
    1. Re:Engineering in Canada by Dan+Posluns · · Score: 2, Insightful

      I would like to have as much confidence in a piece of software as I do in a bridge, but we're not at that point yet.

      Do you suppose such confidence is either unavailable or impractical when considering safety-critical systems like nuclear reactors, medical lasers, space shuttles, missile guidance systems, etc.?

      In not every software system is it permissible to keep releasing bug fixes and new updates. It either works correctly and according to the specification the first time, or people die. Just like a bridge.

      Dan.
  13. Re:A software engineer is a digital cook by Reverend528 · · Score: 2, Funny

    Would that mean java programmers are baristas?

  14. Re:A software engineer is a digital cook by XaXXon · · Score: 4, Funny

    No, the baristas didn't want their title being denigrated in such a demeaning fashion.

  15. Yeah, right! by mrchaotica · · Score: 2, Insightful

    I'm a student of both civil engineering and computer science, and I'll tell you this: most people who call themselves "software engineers" are wankers who have no idea what Engineering actually means. So they have some UML and unit tests? Well, that's wonderful -- at least they're not just randomly bashing on keyboards. But it ain't Engineering.

    So what is Engineering, you might ask? Well, here's a clue: being an Engineer means that when you screw up, people die. It means that the thing you're making has to conform to standards for safety and performance. And those standards are legally enforced, and you have to be able to prove that your work meets them. It means responsibility. Ask people what professions they think require high responsibility, and they might say something like "doctor." Well, doctors really don't have all that much: unlike Engineers, they can only kill their patients one at a time. Engineers kill people in big groups.

    Now, don't get me wrong: I'm not trying to disparage computer science, or programming. But us programmers shouldn't pretend that our craft is anything other than that: a craft. It's not Engineering, it's not even science unless you're doing theory, and compared to either of those things we're still bumbling around in the Dark Ages.

    If I were applying for a programming job, and the interviewer told me that my title was going to be "software engineer," you know what I'd do? I'd laugh at him, and then insist he change it to something else. There are exceptions to this, of course: people who are writing code to do things like controlling space ships, performing structural analysis, or regulating a nuclear power plant can likely legitimately call themselves Engineers. But the vast majority of programming jobs aren't like that.

    --

    "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    1. Re:Yeah, right! by Viv · · Score: 2, Insightful

      Being called a "professional engineer" is not about how difficult your job is, it's about the level of accountability you have to assume to practice your job.

      By law, professional engineers, like medical doctors and lawyers, can be sued if their product isn't up to snuff. If it's bad enough, they can have their license to practice revoked.

      Software "engineers" have none of that burden.

    2. Re:Yeah, right! by russotto · · Score: 5, Insightful

      Well, here's a clue: being an Engineer means that when you screw up, people die.


      Such drama. Lots of engineers work on non-life-critical things. That doesn't make them non-engineers.
    3. Re:Yeah, right! by aprilsound · · Score: 2, Informative

      It's not Engineering, it's not even science unless you're doing theory, and compared to either of those things we're still bumbling around in the Dark Ages. Most CS research (especially networking) relies heavily on the scientific method. It's not a 'natural' science like Biology or Physics, but the methods are very much the same. TCP/IP would not be where it is today if not for heavy experimentation and analysis.

      Even debugging (to be effective) requires the scientific method.

    4. Re:Yeah, right! by tixxit · · Score: 3, Insightful

      There are plenty of qualified engineers designing non-"life or death" products that wouldn't agree with you. I'd hardly say a using a toilet will turn into a life or death situation, but I guarentee you some engineer took great pride in his crapper. You can say this about thousands of other common things; cell phones, car climate systems, radiators, fans, key pads, etc.. Some software is related to life-or-death (you gave some examples), but much of it isn't. The same can be said for engineered products. I can guarentee you a lot more "rigour" went into the engineering of the guidance system of most airplanes than the gas tank in my car. When your designing software, you are allowed a certain amount of failures. It would simply cost way to much to create something as complex as an operating system an expect to, literally, never fail. The same goes for something like a car. Some things are extremely complex, and there are just too many variables to have it work 100% all the time. Your goal, as an ENGINEER, is to produce something that does its job with a failure rate lower than some minimum and do it within budget. Not everything engineers touch is 100% perfect or someone loses their accreditation. Cars break down routinely, nuclear reactors go off-line, giant undersea cables get cut, roads break and crack, jet engines fail, toilets leak, etc. Software engineering is about taking the standard principles of engineering and applying them software. This is where the idea of testing, monitoring failures rates, cost models, etc. come from. The same way an engineer can produce a product with some defined failure rate, so can someone create software with a defined failure rate. What makes software engineering not real engineering, as has been mentioned, is that engineers sign their name and can be held responsible for their failures directly. Although I don't see why this can't happen with software. We should be able to design software that works within predefined limits. Just because it crashes, doesn't mean someone will get sued. GM isn't sued everytime someone's MAF sensor fails. But, if someone designs some critical, one off, software for a client and guarentees a failure rate that it is obviously not meeting, then they can sue (though they can already do this already).

    5. Re:Yeah, right! by syousef · · Score: 2, Informative

      I don't suppose you've heard of software that can cause people to die, and in large groups? You know like

      http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html

      That's just one very classic example. There is plenty of software out there that can kill in large groups. Take the software flight control systems for modern jet airliners.

      I grant you that control systems are just one kind of software. Financial systems however can destabilize entire nations if they fail and that can lead indirectly to loss of life in a variety of ways. Accounting for billions of dollars isn't something you take lightly.

      --
      These posts express my own personal views, not those of my employer
    6. Re:Yeah, right! by Reverberant · · Score: 4, Interesting

      engineers take many forms, not all of which are necessarily directly responsible for hundreds of lives (Acoustic engineering for example)

      You'd be surprised what kind of dangers engineers from different disciplines have to face. Remember the ICE high-speed rail crash from a few years back? That crash happened because a resilient wheel came apart, which derailed the train. Resilient wheels are used as a noise control measure for train wheel/rail noise - thet are designed and spec'd by acoustical engineers.

    7. Re:Yeah, right! by p0tat03 · · Score: 2, Informative

      Until some real bad judgment sees you putting a small plastic part into the door handle, making it potentially hazardous for children - we've seen it before and we'll see it again. Or maybe during all the cost cutting the company opts for shoddy plastic that deforms and gives off toxic substances in a particularly hot summer. Or maybe the plastic becomes brittle over time, allowing it to snap off and form sharp edges.

      I was personally involved with plastic component design with car radiators - the number of issues you can have with them are immense, the same goes for almost every other branch of engineering. Something that on the surface seems simple and completely removed from life and death situations... are actually not. All of the examples I've brought up are perfectly plausible, and in fact I'd wager some of them have already happened.

    8. Re:Yeah, right! by pinkstuff · · Score: 3, Interesting

      And some Software Developers/Engineers work on life critical systems...

    9. Re:Yeah, right! by DrVomact · · Score: 3, Insightful

      Ask people what professions they think require high responsibility, and they might say something like "doctor." Well, doctors really don't have all that much: unlike Engineers, they can only kill their patients one at a time. Engineers kill people in big groups.

      Hmm. I thought you said you are studying civil engineering, but it sounds as though your career objective is combat engineer. Surely you know the distinction: "civil engineers build targets, combat engineers destroy them". But I think I get the idea: you're saying that engineering differs from computer programming in that engineering is an activity that has real-world consequences, while programming does not. So if you're a programmer working on, say, the targeting and guidance software for a cruise missile, then you're completely harmless. I work for the software group of a company that makes lab instruments that analyze yucky bodily fluids to see what's wrong with people. Those instruments are controlled by...software. (It runs on Windows, don't tell.) If I screw up, and a few hundred cases of Hepatitis C go undiagnosed before someone notices, well...I probably won't have killed too many people. After all, I'm just a harmless programmer...

      I actually agree with you—the title "Software Engineer" is pretentious. I disagree with your apparent belief that programming differs from engineering in that only engineering can have serious—even fatal—consequences. As I tried to show with my examples, the way in which computer programs function—or fail to function—can have serious consequences as well. So what is the difference between engineering and programming?

      You might invert the question: why would anyone think they're the same? I think it's correct to say that, in the most general terms, engineers determine how to construct or arrange materials to fulfill a specified purpose. In doing so, they manipulate quantifiable entities—such as the strengths of materials, the distribution of stresses, the known limits and characteristics of varying methods of construction as determined by empirical study, and so on. Programmers don't do anything like that. Programmers write code, and code is an application of logic. You might say that programmers are like engineers who build logical machines, but that's mere metaphor. Computer programs don't break because the wrong type of steel was specified for one of the gears.

      So where did the notion of "software engineering" come from? Maybe it's symptomatic of an unspoken insecurity, a fear that programming isn't a serious profession. Perhaps one source of this insecurity is that programming is still a very new item in the human tool-box, and we haven't quite decided which compartment to put it in. Moreover, programming isn't like any other tool we've had before. It resembles engineering in that the programmer does build something, though no materials are used in the building. It resembles mathematics in that it's logical, but it isn't bound by mathematical rigor. You can't "prove" a program—except perhaps in a—completely impractical—theoretical sense. (Of course you can test programs, and rest assured that where I work, we have very thorough software design and testing protocols.)

      And now the next contentious question: are computer scientists really scientists?

      --
      Great men are almost always bad men--Lord Acton's Corollary
  16. A++ tags, would read again by Osurak · · Score: 5, Funny

    programming, douchebaggery, pompouswanker, whining, slashdotted
    How appropriate.
  17. Rigor? That's not the issue. by Malkin · · Score: 2, Interesting

    I was unable to read the article, due to Slashdottery, but from the quote, I think Mr. Wise is failing to understand what "engineer" means. There's no minimal competency required to slap "Software Engineer" on your card, there's no license board that will certify your competence, there's guarantee to a given customer that you have any clue what you're doing, and you are ultimately not liable for damages, in most cases, if you are producing defective work.

    It's not that software engineers don't care, or that we're somehow inferior. It's that there's no way to learn software engineering the way Engineering disciplines are learned. You can teach a civil engineer to make a bridge that will stand for 200 years, but there is no educational program in existence that can even begin teach a software engineer to design flawless software. That discipline simply doesn't exist. I can use mathematics to design a concrete structure that is 100% guaranteed to float. I cannot use mathematics to design billing system software that is 100% guaranteed to address all requirements. A hodgepodge of algorithm analysis, best practices, design patterns, gut instinct, pretty diagrams, and programming experience does not an engineering discipline make.

    On top of all this, people make demands of software engineers that no one would make of an Engineer. Imagine that a construction crew is halfway through building the bridge which you designed, and then the government comes back to you, and tells you that no, they've decided that really they want the entire bridge to be two feet to the left. Oh, and they don't like how the concrete looks, so could we use granite, instead? Or, imagine that a car company has tasked you with creating a concept car for the Detroit auto show, but they don't quite know what it looks like or what it should do, beyond some vague hand-waving, and they're hoping that you can iteratively evolve a concept car for them, so they can give feedback as you work, but they expect this all to happen for the price of building one car. Then, they come back two months later, and tell you that they've decided that they're skipping the auto show, and instead, they need it to be road legal and ready for production by July.

    So, yes, we may call ourselves "software engineers," but we're not really Engineers. We have a lot of uncertainty in our lives, and in all fairness, I, for one, don't want the liability.

  18. Re:Since when is engineer a coveted term? by Viv · · Score: 2, Informative

    Not many people with engineering degrees sit for PE examns and qualify themselves as Professional Engineer. Those who do, seem to be mainly expert witnesses for defense for the ambulance chasers. Nonsense. It just depends on your discipline and industry.

    In the USA, PE licensing is all but mandatory in the Civil Engineering field. It's very helpful in electrical engineering if you want to be a power distribution guy. Mechanical engineers can stand to have a PE license if they're going to be doing HVAC work. In other words, if you're going to be an engineer in construction, a PE license is very important to have.

    If you're contracting out a big dollar engineering project, it's common to require a PE sign off on all designs. Where you typically don't find PE's is in unregulated industries in companies with internal engineering going on.
  19. Easy solution to his problem. by onkelonkel · · Score: 2, Informative

    1. Go to university and get a degree in software engineering.

    2. Work a few years till you meet the requirements for registration.

    3. Pass the professional practice exams and become a registered professional engineer.

    4. Now you _are_ a software engineer, so now you can call yourself a software engineer.

    5. Profit??

    --
    None of them can see the clouds; The polished wings don't care.
  20. A few clarifications from the author of the post: by Anonymous Coward · · Score: 5, Informative

    - Sorry about the site being down. Its probably not a coincidence that I made Slashdot AND my host (which, to be fair, survived a Digg-rush awhile ago) is having troubles. I'm on the horn with them right now.

    - A few people, who likely didn't make it to the site, like to make broad generalizations about geeks of this sort not having sex. I'd like to point out for the record that I'm married, have one child and another on the way. This suggests that I've had sex at least twice. And my wife is very beautiful.

    - The intent was not to gripe about Canada's standards for the term "engineer." I only pointed that out the difference between my home country, and my current country of employ. I prefer the term "software developer" myself, but it doesn't really matter to me.

    - The intent was also not to be pompous or fuel my own ego, it was to describe, as eloquently as I knew how, what most of us here on Slashdot are. Although the stigma is going away, us geeky types tend to be considered only that: geeks. When really there is art and beauty to what we do. I'm not even as skilled a programmer as I imagine most are, but I wanted to lend my prose to our art because I believe it is valuable. But flame on, if you must!

    Thanks for reading, hopefully the site will be back up soon! I'd copy and paste the article text here, but I wasn't expecting this and don't have an offline copy!

    Jonathan Wise

  21. Software is different for a damn good reason by Lost+Found · · Score: 5, Interesting

    But software is different, for some reason.

    Two reasons. 1: the warranty disclaimer. Like it or not, "NO WARRANTY" is stamped on to the licenses of commercial software because software consumers don't want to pay the higher cost that would be demanded if a warranty were provided. SLAs do exist, but SLAs cover services. The market is willing to pay for SLA on services, and the whole system works, even if it's not quite as perfect as we might dream.

    The other big reason is that a blue screen of death doesn't result in actual death. If you're building homes or highways, you have human life in your hands, and holding you accountable for negligence seems a bit more appropriate. If you're building door locks for the home and a burgular manages to pick it, holding you accountable for negligence is ridiculous because you never promised the lock couldn't be broken. If you're building the home's foundation and it cracks, you still aren't held liable unless you warranted that the foundation wouldn't break. And you wouldn't do that unless you could afford to fix it if it did.

    Simple economics. The market has supplied what the consumer has demanded. But some people get these ridiculous ideas about licensing software developers or enacting liability laws when there is NO risk to human life. They try to draw comparisons to disciplines where there are, then gloss over the details. Under even the most brief analysis, the argument doesn't hold water.

    1. Re:Software is different for a damn good reason by orclevegam · · Score: 2, Informative

      (To expand on the ideas of your post)
      A great deal of crap software is actually pushed out the door against the objections of the developers that created it. Ultimately it comes down to marketing and PR and not the developers in most cases as to when a particular piece of software is ready to ship. Also, as has been pointed out, people would be unwilling to underwrite the cost of a theoretically "perfect" piece of software that would never crash (barring hardware failure, or cosmic ray induced bit flipping), because given the choice between a $50 piece of software that crashes once a week, or a $9000 piece of software that crashes never, almost everyone is going to pick the $50 one and live with the occasional crash. Does that mean developers like that? No, and most of them cringe whenever anything they wrote so much as hiccups, but sometimes they're just not given the chance or the resources (or clear documentation) they need to design it properly, because the bean counters know that the $9k piece of software the developer dreams of will never sell, but that $50 one they're puttering around with now is just about the right level already.

      --
      Curiosity was framed, Ignorance killed the cat.
    2. Re:Software is different for a damn good reason by AutopsyReport · · Score: 5, Insightful

      I would argue that software is different for other reasons. Most software developers/companies cannot be held accountable because changes in the industry are beyond their control.

      For example, when engineers design and build, they have to contend with a variety of concerns. Most of these concerns are calculable, limiting, and realistic. As a simple example of the forces of nature, wind power is calculable and only occurs within expected limits. Things are built to withstand extreme winds. But there is a threshold -- we don't build to withstand 5,000mph winds because we know it just won't happen. Wind is wind, it increases or decreases, nothing more.

      Software, on the other hand, has the problem of dealing (or not dealing) with unknown circumstances. Developers cannot know that in five years, the platform their product was built on will be obsolete and unusable. Products come and go daily, and support for these products fade just as quickly. Hardware also changes on a daily basis, making it impossible to stand behind your product, the same way an engineer does his. There is no professional obligation for software developers because there are so many unknown variables that come into play.

      Here's another way to look at it using the bridge example. If an engineer 50 years ago built a bridge to support the horse and buggy, not knowing that the invention of the modern-day car was on the horizon, he cannot be held accountable for the bridge's collapse under the weight of multiple vehicles.

      This is akin to software development. Developers cannot predict the future, consequently cannot plan for it, and ultimately therefore cannot be held accountable for it's failure. Also... The other big reason is that a blue screen of death doesn't result in actual death.

      Actually, depending on the context software is used in, it can quite quickly result in death. Planes and automobiles come to mind.

      --

      For he today that sheds his blood with me shall be my brother.

    3. Re:Software is different for a damn good reason by cp.tar · · Score: 2, Insightful

      Software, on the other hand, has the problem of dealing (or not dealing) with unknown circumstances.

      ... and that is the other end of the issue: the users.
      As we all know, the user is the greatest unknown — the things an uneducated user could think of...

      On one hand, I see the problem with "software engineers" designing crap software; on the other hand, I see the uneducated users as just as dangerous as 14-year-olds behind the wheels. Of sportscars.

      --
      Ignore this signature. By order.
    4. Re:Software is different for a damn good reason by nusuth · · Score: 3, Insightful
      I would argue that software is different for other reasons. Most software developers/companies cannot be held accountable because changes in the industry are beyond their control. For example, when engineers design and build, they have to contend with a variety of concerns. Most of these concerns are calculable, limiting, and realistic. As a simple example of the forces of nature, wind power is calculable and only occurs within expected limits. Things are built to withstand extreme winds. But there is a threshold -- we don't build to withstand 5,000mph winds because we know it just won't happen. Wind is wind, it increases or decreases, nothing more. Software, on the other hand, has the problem of dealing (or not dealing) with unknown circumstances. Developers cannot know that in five years, the platform their product was built on will be obsolete and unusable. Products come and go daily, and support for these products fade just as quickly. Hardware also changes on a daily basis, making it impossible to stand behind your product, the same way an engineer does his. There is no professional obligation for software developers because there are so many unknown variables that come into play.

      Give me a break! There is no engineering environment better specified than a computer platform. The material world never does what you tell it to and you never get to dictate how it should work. You have to go at length to make its own working to suit your needs. We have means of predicting its behavior but it always has a lot of uncertainty. The raw materials are ill-specified, initial state of the system is imprecise and the models are incomplete. Worse, future environment is usually unknowable. IOW, you never get to know the operating environment of a RW engineered system.

      In software engineering, you always have a precisely defined system and if that environment isn't working to your specifications, you know that some other software or computer engineer messed up. It doesn't matter if the other guy of your own messed up backward compatibility or initial design; it is still some software engineer failing to write bug-free code to specification. The hardware changes are a lame excuse. Why does it matter if they changed the physical realization of a specification? If they did their job, your software shouldn't fail (but sometimes it still does) or they failed their job and you are not supposed to be responsible anyway. Software engineering is hard, but that is due to very complex interaction of very well specified components. Taken as a whole software environments are best specified and controlled engineering environments possible.

      --

      Gentlemen, you can't fight in here, this is the War Room!

    5. Re:Software is different for a damn good reason by nusuth · · Score: 2, Insightful

      I agree, fortunately real engineering disciplines have a sense of scales. So we usually don't (over-)over-engineer. Trying to use the same design for vastly different scales if an illness of the programmer, not the engineer.

      --

      Gentlemen, you can't fight in here, this is the War Room!

    6. Re:Software is different for a damn good reason by Skreems · · Score: 2, Funny

      That's a damn good point. If cars were as fault tolerant as users want computer programs to be, you could pour soda into the gas tank and the car would filter it out, put it in a cup, and place it in your drink holder for you. The number of strange operating conditions that software handles gracefully is extremely broad, compared to a lot of other consumer products.

      --
      Slashdot needs a "-1, Wrong" moderation option.
      The Urban Hippie
    7. Re:Software is different for a damn good reason by ScrewMaster · · Score: 3, Insightful

      Let us also not forget that the ultimate responsibility for a major team effort failing is usually managerial. There are processes that any professional engineering team's leadership puts in place in order to make sure the end result is as expected. That's because nobody is perfect and mistakes get made. So, it's easy to pick on a single individual, like the aforementioned civil engineer. One should ask why there was no proper design review (and if there was, why did they sign off on it?) In any event, a properly structured real-world project has layers of checks and balances. Modern engineering projects may have hundreds of individuals working on them, and for anything other then chaos to result, there has to be direction, there has to be oversight, there has to be management.

      When you get right down to it, when a big project fails the grade (like, say, Vista) it's the people who get the big paychecks that should be held accountable. That's why they get the big paychecks! They're supposed to make certain that the development and support staff are competent, and set up systems that provide adequate assurance of quality. Failure to do that is not the fault of the individual engineer, but is a systemic issue with all the fingers pointing to the top. Managers (particularly incompetent ones) will usually find a scapegoat in the form of an engineer, who they can point to and say, "See? It was all his fault!" That conveniently ignores that fact that, even if said engineer is a total bumblefuck ... it was management that hired him in the first place, and failed to manage him effectively in the second.

      --
      The higher the technology, the sharper that two-edged sword.
  22. void parse_prose(char* article) by cryptomancer · · Score: 2, Funny

    {
        if(article) delete [] article; // no time for prose, there's software to be written.
    }

    --
    Yes, we understand these tags always apply: fud, dupe, typo, slashdotted, topic name
  23. Software Engineer is fine according to HRSD Canada by Anonymous Coward · · Score: 2, Informative

    http://www23.hrdc-drhc.gc.ca/2001/e/groups/2173.shtml

    According to Human Resources and Social Development Canada, Software Engineer is a perfectly acceptable term for that class of job. Being an American now working in Canada, I prefer '(software/web) developer' as software engineer sounds too 90s for me. But there are plenty of software engineers in Canada and no looming threat from the other 'engineer' subspecies.

  24. Re:I work in Canada with a comp sci degree by p0tat03 · · Score: 2, Informative

    And that is also why you should never be allowed to call yourself "software engineer". In a single short post you have demonstrated a contempt for regulation, law, clear communication, and honesty, which are all required for a Professional Engineer in Canada.

    Despite knowing the regulations and laws behind the matter, you choose to willfully violate them, not to mention potentially defrauding others by impersonating a legal engineer.

    Like others have said in this thread, being an engineer is not about being able to do your job, it's about accountability and the willingness to adhere strictly to established regulations and standards, something you obviously cannot do.

  25. Perfection vs. due diligence by Anonymous+Brave+Guy · · Score: 2, Informative

    Also, as has been pointed out, people would be unwilling to underwrite the cost of a theoretically "perfect" piece of software that would never crash (barring hardware failure, or cosmic ray induced bit flipping), because given the choice between a $50 piece of software that crashes once a week, or a $9000 piece of software that crashes never, almost everyone is going to pick the $50 one and live with the occasional crash.

    I really hate it when these discussions become black and white. Software quality is not a binary value. It is a sliding scale with diminishing returns for effort put in, on which we are for the most part still at the "dirt cheap" end.

    I doubt I would want to pay the price of near-perfection. I'll leave that for the nuclear reactors, medical facilities and space shuttles. But the cost of due diligence — which I'll assume to mean taking reasonable, well-established, tried-and-tested steps to ensure quality in this context — is not the factor of 180 you gave. It's probably not even a factor of 5, and that's today when it's a relative overhead compared to those who don't bother.

    What it would mean is having to actually follow reasonable development processes that worked. No more buzzword kool-aid for you, Mr Engineer! It would mean hiring competent people as senior technical staff instead of promoting substandard but slightly cheaper code monkeys, and spending the time and money to train those working under these senior staff properly. It would mean not letting sales and marketing staff dictate the schedules at the expense of even basic quality control.

    Of course, if everyone were doing this and the industry as a whole grew up, this wouldn't cost much at all, because those same good practices actually make software development more efficient. It's just that short-sighted managers with their eye on quarterly reports and personal bonuses have an active incentive not to make the long-term investments necessary to reap those long-term benefits.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  26. RE: Cheap Software by djdavetrouble · · Score: 2, Funny

    So, I should cancel the order for the shareware helicopter ?

    --
    music lover since 1969
  27. Re:A few clarifications from the author of the pos by Anonymous Coward · · Score: 5, Funny

    >> I'd like to point out for the record that I'm married, have one child and another on the way. This suggests that I've had sex at least twice. Actually, it suggests that your wife has had sex at least twice; it doesn't say anything about you.

  28. bullshit by the_B0fh · · Score: 2, Insightful
    bullshit.


    I have a degree in civil engineering, and my professors stressed over and over again, if I fuckup, people die.


    In my compsci classes - oh, look, it compiles, lets hand it in.


    There's a reason they don't let Evi Nemeth teach Intro C classes - she does the right thing, and flunks people who don't do things properly.

  29. Re:Engineering Whining by onkelonkel · · Score: 3, Informative

    Not a flame as such, although much of what you say is flameworthy. You lack clue.

    "The professional association allows them to hide behind a large entity, with deep pockets, such that any litigation against a single individual, is futile."

    Um, no. The Professional Engineer Association of which I am a member has about 18000 members and we pay about $225 per year. An annual budget of $4 million is not "deep pockets" by anybody's definition, at least not when stacked up against corporate clients with several orders of magnitude more money. More to the point, the Association doesn't spend _any_ of its money defending engineers against litigation for faulty work. They do spend it pursuing discipline against incompetent or unethical members. The record of discipline against members is public, you can usually find it on their websites. Try APEGBC, PEO or APEGGA for examples. Every month we get to read about a handful of cases where somebody is disciplined for substandard work.

    --
    None of them can see the clouds; The polished wings don't care.
  30. Canadian engineers are accredited. by willisbueller · · Score: 2, Interesting

    Software Engineering is an accredited engineering discipline in Canada. Like all engineering fields in Canada, you must be accredited by the governing bodies. To do this you need to attend an accredited university for a 4 year bachelor of engineering program. That's right, we accredit directly in school. All programs are monitored carefully and ensure a consistent, minimum level of performance across the country. Put simply, you have to go through an accredited university- in an accredited program(bachelor of engineering)- to call yourself a Software Engineer in Canada. Or even more simply, from even our worst schools we consistently produce engineers that effing rock.