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."
Life? We don't have a life!
It's a troll, and definitely NSFW.
Curiosity was framed, Ignorance killed the cat.
Parent post contains link to nasty shock site which screws with your browser.
this is my sig
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
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!
"I want to be an engineer, sex can wait !" -- and this sums up the life of an engineer...
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
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.
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
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
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.
No, the baristas didn't want their title being denigrated in such a demeaning fashion.
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.
- 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
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.
Such drama. Lots of engineers work on non-life-critical things. That doesn't make them non-engineers.
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).
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.
And some Software Developers/Engineers work on life critical systems...
>> 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.
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.
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