Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Programming IT Technology

The Life of a Software Engineer 519

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."
This discussion has been archived. No new comments can be posted.

The Life of a Software Engineer

Comments Filter:
  • Huh? (Score:5, Interesting)

    by 4D6963 ( 933028 ) on Monday February 04, 2008 @03:02PM (#22295168)

    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?

  • by iknownuttin ( 1099999 ) on Monday February 04, 2008 @03:04PM (#22295206)
    ... 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.

  • by s20451 ( 410424 ) on Monday February 04, 2008 @03:05PM (#22295248) Journal
    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.
  • by Quasar1999 ( 520073 ) on Monday February 04, 2008 @03:06PM (#22295268) Journal
    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?
  • by RobinH ( 124750 ) on Monday February 04, 2008 @03:07PM (#22295284) Homepage
    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.
  • by gnick ( 1211984 ) on Monday February 04, 2008 @03:17PM (#22295486) Homepage
    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.
  • by CastrTroy ( 595695 ) on Monday February 04, 2008 @03:21PM (#22295574)
    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.
  • by dmatos ( 232892 ) on Monday February 04, 2008 @03:29PM (#22295738)
    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.
  • by Malkin ( 133793 ) on Monday February 04, 2008 @03:37PM (#22295840)
    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.
  • by Lost+Found ( 844289 ) on Monday February 04, 2008 @03:52PM (#22296090)
    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.
  • by grqb ( 410789 ) on Monday February 04, 2008 @04:18PM (#22296628) Homepage Journal
    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.
  • Re:Yeah, right! (Score:5, Interesting)

    by Reverberant ( 303566 ) on Monday February 04, 2008 @04:28PM (#22296844) Homepage

    engineers take many forms [wikipedia.org], 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 [wikipedia.org] 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.

  • by ari_j ( 90255 ) on Monday February 04, 2008 @04:28PM (#22296856)

    Jonathan Wise writes to share with us an interesting bit of prose describing life as a software engineer.

    Interesting. No, wait, that other thing. Tedious.

    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.

    No. You're a code monkey. Your poetry sucks, your writing sucks (to the point of your having written "its for the best"), your salesmanship sucks (your article sells nobody on anything), your public speaking is probably twice as melodramatic as your article and therefore sucks, your art sucks, your designs are plagued with whining about having to make them, and you have never experienced logic or empathy as long as you've lived.

    Get over it. If you want to make your pathetic job seem more important than it is, Slashdot isn't the place to do it. If you want to whine about being a code monkey, Slashdot is even less appropriate of a place to do it. Just get up, get coffee, go to job, and have boring meeting with boring manager Rob.

  • Re:Yeah, right! (Score:3, Interesting)

    by pinkstuff ( 758732 ) on Monday February 04, 2008 @04:58PM (#22297374)
    And some Software Developers/Engineers work on life critical systems...
  • by ebh ( 116526 ) <ed.horch@org> on Monday February 04, 2008 @05:06PM (#22297524) Journal
    Are you then liable for life for any bugs that may turn up in anything you ever put your name on?
  • by Anonymous Coward on Monday February 04, 2008 @08:07PM (#22300334)
    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.
  • by willisbueller ( 856041 ) on Monday February 04, 2008 @10:42PM (#22301942)
    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.

Get hold of portable property. -- Charles Dickens, "Great Expectations"

Working...