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
In Canada you're allowed to call yourself a Software Engineer if you hold (go figure) a software engineering degree and have met all the professional requirements of being an engineer.
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.
A mythical beast then, eh?
Nobody cares what goes into it, as long as the result satisfies the taste of the customer. Monosodium glutamate helps the lazy chef who feeds the masses.
You have got to be kidding me. Get over yourself.
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!
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.
I haven't visited the site, but that's because this Jonathan Wise guy sounds like a huge egotistical asshole based on his summary. No thanks.
"I want to be an engineer, sex can wait !" -- and this sums up the life of an engineer...
Are you looking for a date in this place??
...
Could become interesting after the third repost I guess
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.
I just returned from a seven weeks stint in Europe as a software engineer. My company sent me there because according to my boss there are limits on software exports from the US - they found it cheaper and more time efficient to do all the affected coding in Europe, and thus avoid these limitations.
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
In most cases, mostly a code monkey, holed up in a dark office, with very little social interaction with others. Probably a little bit smelly too.
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.
What job does not include many different tasks. Try working in a high level NOC and see how many different aspects you have to use every day. Its all part of your job. Your profession may be specialized, but your job is going to involve a whole lot else.
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
<homer>
Boring!
</homer>
assume I'm an arrogant self important ass when I tell them I'm a software engineer/software developer/systems architect/systems analyst/computer programmer/software designer?
Must be my identity crisis.
/\/\icro/\/\uncher
Where I live (Montreal, QC) you are allowed to call yourself an Engineer as long as your are an Engineer. That means if you take a degree in Computer science ENGINEERING, and pay your yearly fees to the Order, you can call yourself an engineer. Because you're not allowed doesn't mean real engineers aren't. (Unless the laws in your province are different in regards to this)
Given that the University of Calgary offers degrees in Software Engineering http://www.enel.ucalgary.ca/undergraduate/, and that it is a protected term by APEGGA http://www.apegga.org/members/Publications/peggs/Web02-05/compliance.html/ (Association of Professional Engineers, Geologists, & Geophyscists of Alberta), I think the more accurate statement would have been "I don't have the credentials to call myself a Software Engineer, and I'm going to whine about it on the front page of Slashdot".
A few decades back there was this movement to persuade engineers to prefix Er. to their names like the doctors and try get addressed as Engineer, in India. This blatant aping of doctors failed miserably, nobody bothered. That too in India, where mothers stay up as long as their sons are up burning midnight oil preparing for engineering entrance examns supplying them with bottomless pots of tea.
So why is this Canadian cribbing he can't call himself an Engineer?
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
I've been a software developer for over 10 years and empathy is not high on the list of common traits that I've seen in my fellow programmers.
It times out... I guess that ego can't be channeled to power everything.
Run and catch, run and catch, the lamb is caught in the blackberry patch.
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
From That's Life:
I've been a puppet, a pauper, a pirate,
A poet, a pawn and a king.
Ive been up and down and over and out
And I know one thing:
Each time I find myself flat on my face,
I pick myself up and get back in the race.
When you are a halfway decent programmer and do it professionally, you will come across a wide range of projects. And what happens wich each new project? In a matter of days or 1-2 weeks you gotta acquire the knowledge of your new problem domain. And that is very often a problem domain others spend years to study and get a degree, yet as a software engineer, you gotta be able to understand the problem domain good enough to automate it. T means you must be able to understand all the nomenclature and the structure, you must be able to spot even the subtlest problems, you must know the pitfalls and special cases, you must be able to talk to the experts in their domain on somewhat equal footing. And if you wanna be any good, you must understand the new problem domain enough to generalize it and often to make it accessible to non-experts. ... which is the prerequisite for all this. ... it is your bread and butter to learn things in a matter of days others take and need years to learn.
And that is only one half of the job. The other half is the broad field of computer science
In my life as a programmer I have had to learn the termodynamics and streaming physics of internal combustion engines, the bioengineering for bio-processing tanks in pharmaceutical production. Dentist medicine. Law. Economics. Hard body physics and so much more. And about each year one or two neew things get added to the list.
Sure, I'm no expert in either of those fields. But I know (or knew) enough to find my way around by myself for 90% of the time, and to know when I should ask the expert. And the fact remains
Just because I can imagine doing a hippopotamus, doesn't mean I'd like to do it.
"software engineering" or whatever the hell it is, is something a smart 10 year old can learn and do as well as some guy who has 40 years in the field. you will of course here blather about knowing about N gates and P gates, UML and use case
as if any of that crap really matters. seriously
not having htis matter is good, because unlike a real chemical engineer, us IT plumbers, or dot com hot air wranglers, or whatever the hell we are, don't have to play with chemicals that give us cancer
at the same time, as soon as we turn 30, we are antiquated and ancient
long live the ultimate job title: electron marching band drill designer
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
In the Canada where I live, there is software engineers, and they do call themselves software engineesr. They even have university programs for that. (https://www.mcgill.ca/engineering/degrees/undergrad/software/)
...Protects the public against the posers.
Now, in order to call yourself a "Software Engineer", or any kind of "Engineer" for that matter you have to be member of a professional order. The reason for that, is to make sure that not just any Joe Blow of the street can prentend to be an engineer without being one actually. (unlike in the USA)
http://www.peo.on.ca/
that's all.
So you probably live in a different one than the one were I live.
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.
Silly whining poster probably just got out of college and is used to mommy and daddy telling him he's the greatest. Now in the real world he's just another bottom-of-the-pile programmer. Life: get one!
Engineering is the art of compromise.
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.
- 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.
if he got a Software Engineering degree from an accredited engineering university offering an accredited software engineering degree, then he could call himself a software engineer. University of Ottawa has offered software engineering for ~8 years now, with the first graduating class ~4 years ago.
http://www.site.uottawa.ca/eng/school/ugrad/softwareengineering.html
I almost took soft.eng, but opted for comp.eng instead since it is more recognized and the soft.eng program was so new.... now all I do is software.
{ // no time for prose, there's software to be written.
if(article) delete [] article;
}
Yes, we understand these tags always apply: fud, dupe, typo, slashdotted, topic name
I agree with techpawn. I'm not an engineer of any sort. I'm a programmer, a sysadmin, a database administrator, a network technician. I don't design anything; somebody else comes up with the spec, gives it to me on the back of a McDonalds napkin, and I do the best I can to implement it. Once I've done that, I test it. Then I pass it to QA for more testing. Then one of my eight different bosses decides to change the spec and gives me the changes written on the back of a Ninja Burger napkin.
I'm not an engineer. I'm a programmer working one thankless job after another. If your kid tells you he wants to code for a living, hit him upside the head and tell him that janitors get more respect. Not only that, but at least the janitor doesn't have to deal with having the goalposts moved every five minutes.
I write sci-fi for metalheads
If an electronic engineer screws up a piece of electronics stops working.
And they do all the time. By your measure, electronic engineers aren't engineers either.
Likewise anyone working on unmanned flight.
Or satellites.
Your "if they screw up people die" thing is nonsense. Does that make software engineers on weapons systems real engineers, but those in banking systems not engineers?
"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 he'd throw you out, good job. Come back when you have a degree in Software Engineering and a few years commercial experience.
"You can put your boots in the oven, but that don't make 'em biscuits"
None of them can see the clouds; The polished wings don't care.
who rides on Waste Management trucks?
I am studying to be a Software Engineer right now in Canada. I am also applying to CO-OP jobs asking that I will eventually complete my degree and become a Software Engineer.
You most certainly can be titled as a Software Engineer in Canada, you however must earn it. A web developer in his basement out of high school, and a programmer with no post-secondary education are not a Software Engineers as they lack the science, the theory and the mathematical backgrounds.
I cannot believe that this troll was moderated insightful.
,in the end you depend on the rigorousness of the CAD software engineers to ensure the rigorousness of your structural designs.
I would love to see you repeating the above statements in front of the _software_engineering_ teams in charge of A380. You can replace A380 with
any advanced means of transportation or any advanced defense system.
Creating and running pieces of code is easy and perhaps this is the reason people think that it is not a rigorous engineering principle. However,
creating code for critical applications is something very very different comparing to e.g. writing a Facebook application. The first has to abide by numerous standards and constrains and ensure strict reliability and performance guarantees. Hell, even a Facebook application may be a critical task and have to conform to high standards if millions of dollars of revenue depend on it.
Since you are also a civil engineer, no doubt you heavily rely on CAD applications to create structurally robust designs and you are not manually applying statics for every brick and column in your design. So
Software is one of the most complicated human artifacts and the fact that humans can successfully create such artifacts (spare me the Windows jokes pls) is the proof that we apply engineering principles.
Someone else has a nice argument on the subject too
http://www.embedded.com/columns/embeddedpulse/159904927?_requestid=904565
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.
>> There's no minimal competency required to slap "Software Engineer" on your card,
I'm guessing you're not aware that in some countries (for example, Germany I believe) one cannot legally call oneself an Engineer without the appropriate qualifications, in the same way that one cannot call oneself a Doctor.
I very much like this and feel that the job title 'Engineer' should be earned, and in those countries where it must be, the title does seem to have some value.
From my own experience, just the difference in respect and regard of a Software Engineers skills and opinions is very noticeable between working in Germany and the US. In the US Software Engineers in general seem to be very unappreciated. Its probably a self-fulfilling prophecy when unqualified people can legally just arbitrarily call themselves Engineers.
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 calls for a Narn bat squad.
Oh wait, you did.
My wife is a "domestic engineer" The garbage collector is a "sanitation engineer" Me, I'm a "software engineer"
Most software development is try something, look for the error. repeat. Engineering isn't like that, at least not to that degree. You have to work everything out ahead of time. You don't get to test to that degree, so need to be able to understand the applied physics and math without creating the actual object. With software, the theoretical thinking part is really the product as well. You can experiment with it without consequence. Heck, this is one reason I love developing software. I get to play and see what happens. I don't call myself an engineer with it though (I *DO* have a degree in aerospace engineering, however).
Some software could be called engineered, but only if it was carefully thought out and built and compiled and worked as designed with all exception handling done on the first go.
Do you write software that way? Most likely not. So you aren't an engineer. That's not a bad thing or a good thing. It just is. Stop trying to give yourself an important-sounding title without understanding what that title actually means. Engineering is a lot of applied theory BEFORE the product. Software, well, you get to produce the product right away with no real cost or design required. This is why software also should not be patentable, but I digress.
Whoever tagged this "pompouswanker" should get a lifetime supply of mod points!
Brett
Interesting. No, wait, that other thing. Tedious.
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.
And sprinkled in with some sarcasm and cynicism. In otherwords, realism?
"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"
Americans are so sweet.
... is really science.
Slim to none, I bet.
I'll bet most hardware engineers can't either.
Even coming straight out of an acredited engineering school, it's not a slam-dunk.
I received a traditional engineering education. We were taught we were engineers first, and specialists (e.g. electrical, mechanical, etc) second. Mathematicians, Scientists, and the like were not engineers at all.
If I recall, only about 2/3 of those electing to take the EIT exam from our school were expected to pass. Since most of us weren't going to be "Professional Engineers" (few are), taking and passing the exam wasn't mandatory, but it was pretty much expected if you wanted to prove yourself competent other than just holding a diploma.
That said, to be a "Professional Engineer" you are required to have passed the EIT exam, the PE exam, and some amount of work experience under a registered PE (details these requirements vary by State, of course. Texas used to hand out PE certificates to anyone graduating from a Texas school, but they are wimps).
I'm not a PE, and I don't plan to be. I certainly don't hold myself out to be a PE in any way, shape, or form, especially if I'm working in an area where a PE actually has legal standing. At most I'll declare myself an EIT, or that I have earned an engineering degree.
The typical keyboard jockey calling himself an engineer isn't.
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.
if you write shell scripts in FORTRAN. :-)
"Not an actor, but he plays one on TV."
In Oklahoma NO ONE may can themselves an engineer, unless they pass the Registered Engineer exam, pay the yearly fee, have a seal for all documents, etc., etc., etc. I consider it a SCAM. Dating back to bridge scandals. I am sure there are other states, that are the same way.
Never trust a man wearing a coat and tie!
Anyone can change out an electrical panel without being a "licensed" electrician here in the States. You can do it as a homeowner (which I've done) as long as you can do a sufficiently good job to garner the approval of the inspector that the City sends out to look your work over. You can do it as a handyman, as long as you have the homeowner pull the permit and call for the inspection. If you want to pull the permit and have the inspection yourself, at a location other than your own home, you merely need a business license, and that's more so the municipal entity can collect taxes than for any real safety reason.
In fact, I'm not aware of any "construction type" work that must be done by a "licensed" worker. When I've done remodeling, the City Engineer will stamp my hand-drawn plans as long as what I'm doing isn't too extreme. They've stamped off on structural work where I knocked out a 5-minute drawing of the floor joists that I'd be installing. I'm not a licensed anything, but I've made significant structural changes to my house, completely re-wired the kitchen (removing the old wiring and installing new) and done other work without any issues.
YMMV outside the U.S. of course.
Interested in a Flash-based MAME front end? Visit mame.danzbb.com
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.
Actually, if they screw up people live.
Many years a group of my friends tried to start a company called SEA which stood for Software Engineering Associates. It turned out the usage of engineer in any title was illegal except for a registered engineer. The reason is because of US and international laws. Here is a excerpt from wikipedia and the link:
http://en.wikipedia.org/wiki/Engineer
Most U.S. states prohibit unlicensed persons from calling themselves an "engineer" or indicating branches or specialties not covered by the licensing acts. The legal situation regarding the title of "engineer" in Canada is unsettled.
Hope this helps.
"Computer Science" is not a science.
Therefore, applied "Computer Science" cannot be Engineering.
Therefore, "Software Engineering" cannot be Engineering.
I mean, honestly, what's next? Mathematical Engineers?
Canadians must understand this. Americans don't.
What does "software engineering" have to do with engineering? I guess just as much as 'computer science' has to do with a science. Can you imagine an airplane or a bridge or a building designed and constructed by someone with skills and professionalism of software engineer? A scary thought, isn't it?
Did you ever see that one Friends episode where they make up a game where they test their knowledge of each other? In one of the rounds, the girls are asked what Chandler does for a living, and the answer they come up with is "transponster!" Which of course isn't a word. All they know is that he carries a briefcase.Well I believe that many of my friends don't know what I do for a living. I suspect, if asked, you'd answer something like "I think he fixes computers."I know jobs aren't the most interesting topic, but in my continuing series on embracing my inner geek, I think its important to tell you all (you who are interested anyway) what it is that I do. If you're at all interested in who I am, you should know what I do. And believe it or not, I don't fix computers for a living.
In fact most employers I've worked for actually have rules in place to suggest that I not try to fix my own computer. There's these organizations, some (not all) still stuck in the 70s and 80s, called "I.T. Departments" who's official purpose is to fix computers -- but who's actual purpose is to attempt to prevent their users from doing anything dangerous (read: useful.)I do not, and have never, worked in an "I.T. department," although I've volunteered those skills I have in that area on many occasions. In actuality, my job is much different.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. The process of developing software differs from organization to organization. Some are more "shoot from the hip" style, others, like my current employer are much more careful and deliberate. In my 8 years of experience I've worked for 4 different companies, each with their own process. But out of all of them, I've found these stages to be universally applicable:
Dreaming and Shaping
A piece of software starts, before any code is written, as an idea or as a problem to be solved. Its a constraint on a plant floor, a need for information, a better way to work, a way to communicate, or a way to play. It is always tied to a human being -- their job, their entertainment... their needs. A good process will explore this driving factor well. In the project I'm wrapping up now I felt strongly, and my employer agreed with me, that to understand what we needed to do, we'd have to go to the customer and feel their pain. We'd have to watch them work so we could understand their constraints. And we'd have to explore the other solutions out there to the problem we were trying to solve.
Once you understand what you need to build, you still don't begin building it. Like an architect or a designer, you start with a sketch, and you create a design. In software your design is expressed in documents and in diagrams. Its not uncommon for the design process to take longer than the coding process.
As a part of your design, you have to understand your tools. Imagine an author who, at the start of each book, needs to research every writing instrument on the market first. You have to become knowledgeable about the strengths and weaknesses of each tool out there, because your choice of instrument, as much as your design or skill as a programmer, can impact the success of your work.
Then you review. With marketing and with every subject matter expert and team member you can find who will have any advice to give. You meet and you discuss and you refine your design, your pre-conceptions, and even your selected tools until it passes the most intense scrutiny.
Once you have these things down, you have to be willing to give them up. You have to go back to the customer, or the originator of the problem, and sell them your solution. You put on a sales hat and you pitch what you've dreamt up
So, I should cancel the order for the shareware helicopter ?
music lover since 1969
That's fine, and I don't have any problem with those people. What I have a problem with is the other 99% of people who call themselves "software engineers," who aren't working on stuff like that, and who aren't working at the same level of accountability.
Yep. In fact, I actually work on such a program. But guess what: the people in charge of it are P.E.s! In fact, one of them spends a considerable part of his time ranting and raving about how we shouldn't, as engineers, rely on the software -- not even his software. He spends an entire lecture every semester drilling that into the heads of his students, and often travels to speak about the same topic at other various organizations.
So believe me, I know about those sorts of issues. Oh, and you've got it backwards: engineers don't (or at least, shouldn't) use software to check the rigorousness of their structural designs. They use their designs (with the associated calculations) to check the rigorousness of their software!
"[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz
I don't think you understand either.
Yes there is (I won't list everything here). The problem is that people think "Software engineering" means "programming". Software engineers don't (have to) program. They can if they want to, but engineering isn't about programming. A civil engineer isn't the same as a carpenter, just as a software engineer isn't the same thing as a programmer.
After 3 days without programming, life becomes meaningless
- The Tao of Programming
>> I'm guessing you're not aware that in some countries
:)
>> (for example, Germany I believe) one cannot legally
>> call oneself an Engineer without the appropriate
>> qualifications, in the same way that one cannot
>> call oneself a Doctor.
Given that A.) The OP mentions that Canada restricts the use of the term "engineer" and B.) I live in a state that restricts the use of the term "engineer" in much the same way (and for much the same reasons) as Canada, I'd say your guess is wrong.
However, you pretty much just underscored my point: In the US, there is no way to know if a software engineer is capable. Heck, even in my state, enforcement is weak, if not non-existent. Some companies seem to use the term "software engineer" for most senior programmers, across the board, and it's hard to even get them to make an exception, if you object to that usage. I'm not sure there's any way out of it, at this point.
- 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.
Sounds like it wasn't properly engineered! Har!1. Wake up at 10am and stroll into work in yesterday's clothes
2. skip lunch, play online games
3. Go home "late", complaining about staying past 5pm
4. Home, yeah MOM's home.
5. order pizza
6. play WoW until 4am
7. rinse and repeat (weekends, leave out work)
Yes, you have obligations. Pay you fees, stick with the brotherhood and crap with your arrogance on any before you without that degree. Amen. Nothing more than a frat club that lasted too long.
For software, the best people I know do not have a Canadian BS degree.
>> 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.
Wow... It is amazing to see how sensitive the "engineering" nerve is here. Allow me to point out a couple of interesting items regarding its sensitivity, which I would hope the readers come to realize.
:^)
First of all, for those that are uninitiated to this, allow me to shed some light on the situation. I am fortunate enough to have lived and worked in multiple countries around the world. I had the pleasure of working with engineers, and scientists in different fields. What I have come to discover is that only in Canada is the engineering profession so damn protective and sensitive. Even more so that lawyers, and doctors, who are professionals in their own right. Anywhere else in the world, professionals from each industry treat everyone else with respect - even those that may not be professionals. Why? Because the first rule of professionalism, is to be professional to the people you are in contact day-to-day. Because that much is owed to each and every human being. However, in Canada, if you are not an engineer amongst engineers, don't expect to be treated equally.
First thing you will notice is that engineers in Canada most often refer to themselves as "Engineers." Funny, I don't see "Bus Drivers" or "Soccer Coaches" or even "Dental Hygenists." But, you do have "Engineers."
Second of all, as you get to know a few of them, they seem to have an interesting "better than thou" attitude. This must be bestowed on them in one of the University classes, which I apparently slept through. Oh yes - I forgot to mention that I am a professional engineer as well.
Thirdly, you will notice the little steel ring on their pinky (for more information, see here: http://en.wikipedia.org/wiki/Iron_Ring). Generally, it is meant as a reminder of those lives lost during careless engineering practices. Great. Why, do you think, such a device is necessary? What about a doctor who does not have a little piece of jewelry which reminds him to apply proper treatment to his patients? Does that make the rest of the world's engineering practices less worthwhile than Canada's?
Fourthly, an engineer's approach to a task should be moderated - professional. You should be capable of understanding the problem, and being able to gauge whether your skills are suitable to solve it. If not, you find someone who is better suited for the test. However, that is far from reality, as there are many many engineers that work as software developers. What is unfortunate, is that they don't understand that the 2 programming classes they took in university actually don't make them well suited for crafting effective solutions to computational problems. However, being engineers, they think that they can't be vanquished.
Lastly is the all-important professional organization, to whom they all strive to belong to. This organization oversees standards in member skills development, cross-training, standards, and of course, safety. However, you will quickly come to realize that an engineer is never wrong! How is that? Well, if a mistake is made, it is not them who are to blame, but rather an incorrect type of material being used, or that the plans were read incorrectly. Remember kids: sh*t always flows downhill, and they think that they are the top of the pile. The professional association allows them to hide behind a large entity, with deep pockets, such that any litigation against a single individual, is futile.
A previous poster implied that if their wall falls down, then it was obviously not an engineer who did the work. What they don't realize is that civil engineering, especially large construction projects, utilize so many standardized components and techniques developed over decades, that they are about as far from engineering as is possible. Number one reason: safety. Very few insurance companies are willing to sign off on bleeding-edge designs. And when they do, they are incredibly expensive to insure, therefore build.
Bottom line: please unde
Dear Mr. Architect:
Please design and build me a house. I am not quite sure of what I need, so you should use your discretion.
My house should have between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also, bring me the cost breakdown for each configuration so that I can arbitrarily pick one.
Keep in mind that the house I ultimately choose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that exist in my current house (the floor of my kitchen vibrates when I walk across it, and the walls don't have nearly enough insulation in them).
As you design, also keep in mind that I want to keep yearly maintenance costs as low as possible. This should mean the incorporation of extra-cost features like aluminum, vinyl, or composite siding. (If you choose not to specify aluminum, be prepared to explain your decision in detail.)
Please take care that modern design practices and the latest materials are used in construction of the house, as I want it to be a showplace for the most up-to-date ideas and methods. Be alerted, however, that kitchen should be designed to accommodate, among other things, my 1952 Gibson refrigerator.
To insure that you are building the correct house for our entire family, make certain that you contact each of our children, and also our in-laws. My mother-in-law will have very strong feelings about how the house should be designed, since she visits us at least once a year. Make sure that you weigh all of these options carefully and come to the right decision. I, however, retain the right to overrule any choices that you make.
Please don't bother me with small details right now. Your job is to develop the overall plans for the house: get the big picture. At this time, for example, it is not appropriate to be choosing the color of the carpet. However, keep in mind that my wife likes blue.
Also, do not worry at this time about acquiring the resources to build the house itself. Your first priority is to develop detailed plans and specifications. Once I approve these plans, however, I would expect the house to be under roof within 48 hours.
While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell it to someone else. It therefore should have appeal to a wide variety of potential buyers. Please make sure before you finalize the plans that there is a consensus of the population in my area that they like the features this house has.
I advise you to run up and look at my neighbor's house he constructed last year. We like it a great deal. It has many features that we would also like in our new home, particularly the 75-foot swimming pool. With careful engineering, I believe that you can design this into our new house without impacting the final cost.
Please prepare a complete set of blueprints. It is not necessary at this time to do the real design, since they will be used only for construction bids. Be advised, however, that you will be held accountable for any increase of construction costs as a result of later design changes.
You must be thrilled to be working on as an interesting project as this! To be able to use the latest techniques and materials and to be given such freedom in your designs is something that can't happen very often. Contact me as soon as possible with your complete ideas and plans.
PS: My wife has just told me that she disagrees with many of the instructions I've given you in this letter. As architect, it is your responsibility to resolve these differences. I have tried in the past and have been unable to accomplish this. If you can't handle this responsibility, I will have to find another architect.
PPS: Perhaps what I need is not a house at all, but a travel trailer. Please advise me as soon as possible if this is the case.
*Still* negative function...
Having actually read what Jonathan Wise wrote, I thought he made quite a few good salient points. Going from idea to finished product is as much about art as it is about science. There is artistry involved at many different levels. Alas, the end-user only gets to directly see the top layers of that art. The actual organization of the code, the algorithms used, to optimizations, the kludges -- if any! --, the language constructs exploited, the database schema, if applicable, all add to the art and elegance of a software.
Most of the beauty will forever lie hidden from any but those who dive into and interact directly with the code itself. But the end-user will be presented with the form and function, and perhaps can have a appreciation for the art behind the art.
Perhaps another term for what we do, which embraces all aspects of creating software, is hacker. To the cognoscenti who appreciates the true meaning of that term and not the disparaging, derogatory version the silly media created, "hacker" says it all. And is a greater thing than just being a dry boring "engineer". After all, we are not building planes and bridges, but creating "art" that just happens to be wicked useful and pay wicked well!
Ruby Neural Evolution of Augmenting Topologies
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.
It's a troll, and definitely NSFW.
Lol, you should specify that you are talking about another comment. For a moment I thought you were talking about the article link so i hurried to click when I read "deffinitely NSFW"... unfortunately it is slashdotted, and as I started reading the other comments, I realized you were talking about the last measure troll
Ubuntu is an African word meaning 'I can't configure Debian'
Not to be a troll or anything, but doesn't the fact that he has two kids suggest only that his wife has had sex at least twice? Or perhaps that they've adopted twice?
What we have here is a failure to communicate.
Many, many engineers are not Registered Professional Engineers.
Do EE's need to get certified in Canada? Here in the States, most don't bother. The few who work on public safety related things do.
Nearly all CE's need to get certified, or they won't find work.
So it's entirely proper to call yourself an engineer if you do engineering. It is illegal to call yourself a Registered Professional Engineer when you are not.
The same should apply to Software Engineering, if there ever is such a thing.
What would an uncertified EE call himself in Canada? Electronics Designer? Gate Organizer? Substrate Doper?
Curiosity was framed, Ignorance killed the cat.
Given the information you gave us, strictly speaking, it's possible that could've only had sex once: she could've been giving birth to twins and was just between them at the exact moment you typed your comment.
To echo some other posts, if somebody wanted guarantees, warrantability, etc... for some piece of code that I wrote, the cost, effort, and time would be increased by 1 to 2 orders of magnitude. There would be pages of stipulations about what precise hardware platform, OS, and other installed applications and services were running on the same machine. I would probably just go the 'appliance' route and lock down the box so that they could only make minimal changes to the environment. It can be done, but since I don't write life-critical/infrastructure-critical code, I can't see that the cost can be justified.
Constrast that with the computer field, both for both hardware and software. Just a few years ago, multicore systems were the sole province of big expensive servers. Now you can buy a quad-core system for under $500 USD.
In my 30 years of software engineering/development/architecture, all kinds of languages and programming methodoligies come and go. It's bewildering how quickly the market changes, and what was true when you first start school for computer science is dinosaur stuff by the time you graduate. Then you throw away nearly everything you learned in school as you cut your teeth on the realities of the corporate world.
Mechnical engineers have is easy in comparasion. What you learn stays useful for a while, and your degree actually means something. For a software engineer, no number of degrees means diddly. The only thing that matters is are you competent in the current development platforms and can you think on your feet to solve problems that never existed before.
It's the perpetual novelty in the field of software "engineering" that will forever keep it from becoming what many would recognize as "true engineering".
Many joke about a software engineer designing planes. But the truth is, a software engineer is perpetually at the Wright Brother's stage of development. Really, be honest -- would you feel perfectly comfortable and safe flying in a Wright Brother's plane?
Ruby Neural Evolution of Augmenting Topologies
Bet John Denver's family wishes he had...
do electrical work on a building that they personally live in. If you own a building which you rent out, you are required to use a licensed electrician. Ditto for a building used for a business or other non-residential purposes. I believe the same goes for plumbing and other licensed trades.
Remember "News for Nerds, Stuff that Matters"? Help make it a reality again! http://soylentnews.org
In Canada, I'm pretty sure the term can actually be applied to yourself: Engineer, I mean. So far there's no precedent that says the term is the desmesnes of standards and accreditation bodies. I think you just can't call yourself a "Civil Engineer" or an "Electrical Engineer."
I would be interested if someone would point out actual law that says the term Engineer can't be applied basically willy-nilly (except for established practices as I mentioned.) Precedent would be even better.
Here's the reality... Software engineering involves a lot of check as you go. Bridge building, device building, cars, etc, don't seem to work that way. One day you can't just say... holy cow... the car we're working killed 12 people the first time, guess its time for a revision. As we all know, mistakes in real engineering have some very very real consequences. If you really want to call yourself an engineer, go through a real engineering program and stop whining about trying to join ranks where you don't belong. Real engineering requires endless hours of discipline and effort. I've worked as both and can say honestly that writing some software doesn't quite qualify you to call yourself an engineer. Some of you might say well you might be an engineer, but don't know how to write software... Here's where you're wrong. As an electrical engineer I'm required to take several programming courses (a lot of which I took myself) but really, you don't need tons of work to be a good programmer, but for all of you computer programmers, can you all honestly say you actually have what it takes to engineer a device or a bridge...? Can you? If the answer is no, then you might want to think why the real engineers don't like you trying to call yourself an engineer.
I read your comment and immediately wondered whether your education skipped the Therac25 entirely or maybe you just skipped class that day? If you want the prestige of calling yourself an Engineer, you need to a) understand and b) live up to the standards of the profession.
An Investigation of the Therac-25 Accidents
Nancy Leveson, University of Washington
Clark S. Turner, University of California, Irvine
Reprinted without permission, IEEE Computer, Vol. 26, No. 7, July 1993, pp. 18-41.
Computers are increasingly being introduced into safety-critical systems and, as a consequence, have been involved in accidents. Some of the most widely cited software-related accidents in safety-critical systems involved a computerized radiation therapy machine called the Therac-25. Between June 1985 and January 1987, six known accidents involved massive overdoses by the Therac-25 -- with resultant deaths and serious injuries. They have been described as the worst series of radiation accidents in the 35-year history of medical accelerators
from http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html
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
I call bullshit.
No you can't thank them. For there are NO software engineers writing fuel injector firmware for turboprops, at least not for any that are expecting to be certificated by the FAA to fly in the USA.
All turboprop engines currently certificated for use by the FAA on domestic aircraft all have mechanical fuel pump and injection systems on them. In order to gain certification, these engines must be able to continue to run with all electrical systems/subsystems failed. The FAA will permit a starter/generator system to fail after the engine is started, but if the engine is not capable sustaining running and making full power until you intentionally shut it off or it runs out of fuel, it will not be certified to be installed on a certificated aircraft in the USA. So sayeth the FAA.
You're preaching to the choir, man. Software engineers don't have to (by definition) program. Computer scientists, likewise, don't have to program. There's a real problem in the fact that we conflate these three disciplines. It's exacerbated by the universities, who often lack a software engineering major, and in their computer science department, end up conflicted with themselves over whether they're meant to be teaching computer science theory or vocational programming. Back when I studied computer science, we were largely forbidden to work with other students on anything, so we learned nothing about developing software in teams, let alone engineering things that other people needed to build -- though, from what I understand, that is improving. Still, there are tragically few people who are actually trained to be software engineers, and that's just a tiny fraction of the people who have it printed on their business cards.
However, since we are apparently in agreement on that point, I'll grant that you have a more valid bone to pick with me on the matter of software engineering discipline. I will grant that there are people who have attempted to codify methodologies for the software engineering discipline that are meant to achieve an "Engineering" level of reliability. That said, your examples are kind of weak. Z notation and UML are languages, rather than methodologies. They will not ensure quality engineering any more than C++ ensures quality code. Formal methods (mentioned towards the end of the "Software development process" article you linked) are really the closest thing to traditional engineering you're going to run into. Though it's extremely rare, in practice, that systems are designed with that level of validation, or that the funding is provided to do so.
Even if the funding were available, I'm not sure that, in practical terms, it would even be feasible in a reasonable amount of time to address all possible software systems with that sort of process. Avionics are a relatively old, stable problem space that doesn't change much. Many software engineers work in areas where the problems are not so well-understood. Their designs -- no matter how formally diagrammed -- often end up being more like battle plans than blue prints.
You forgot to mention "Mindreader" - I just knew you would.
Once I was a four stone apology. Now I am two separate gorillas.
[Troll Alert]
What does professional software "engineer" produce? A bunch of overpriced software. While those who program as a part of their hobby are responsible for the software rovolution (GNU, Linux, FreeBSD, etc.)
Why don't you stick with the title, "programmer?"
But you get to look down at code monkeys ;-)
(sorry, no offense meant. Besides, I quit civil engineering years ago for the reasons stated above:-)
sig sig sig siggy sig
And don't forget the most important part of the job - part monkey!
Being a doctor is no less rigorous than being an engineer, but doctors don't get to call themselves engineers either, because they're not engineers. Just like you don't call yourself a software doctor or a software astronaut, the word "engineer" actually means something. It has a specific (and legal) definition. In my province, for example, professional engineers are required to perform such duties as certifying electrical plans and building plans and ensuring that they meet safety codes. There is a reason that the profession is legally defined and regulated. Applying the term arbitrarily to any profession or occupation ("customer service engineer") is ludicrous. And yes, in Canada you can become an _actual_ software engineer. You would do so by attending university, studying engineering, and pursuing the software discipline.
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.
Would you like some cheese with that whine? I think I'm going to be sick.
Gagh.
The higher the technology, the sharper that two-edged sword.
The people who believe that software can be certified like bridges clearly haven't built or maintained any software.
The orders of complexity are geometrically greater with software.
Every serious piece of software I have ever seen or heard of ships with hundreds if not thousands of known defects.
It would never be cost-effective to eliminate these.
Theory says it is impossible to know if you have eliminated all errors from a program.
Program correctness is often a matter of opinion, semantics, and the result of hundreds of subtle trade-off compromises
that ensure that it is not possible, except at a meanngless management level, to say that it is "done" or correct.
The worst code I have ever seen has been written by certified engineers (electrical, mechanical, eng. phys, you name it)
who basically think there's nothing to it. (And when they do it, they're right.)
The best code I've seen is usually written by a loner in a dark room who hates paperwork, because he or she is concentrating,
but can out-think any 10 other certified practitioners.
If you certify programmers, you'll get damned reliable MacDonalds hamburgers for programs.
Where are we going and why are we in a handbasket?
A friend of mine had the title "Software Craftsman" on his business card.
This feels a lot closer to being right than anything else. I think of it as much more of a craft than anything else.
Alan.
I, for one, welcome our Canadian Software Engineer
Do Canadian engineering schools have degrees in operations research? At my (American) school, it was an engineering degree, even though the basis for it is essentially mathematics.
From TFA:
In my 8 years of experience I've worked for 4 different companies
I read all I needed to know from the article in that one sentence. Make your own judgments...
-- Posted from my parent's basement
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.
I don't know about the state you are in but in WV (where I am) it is illegal to call yourself a software engineer or hw engineer or any type of engineer unless you take an engineering test. At least that's what I've been told by a local university professor.
this nation, under God, shall have a new birth of freedom. -- Lincoln, Gettysburg Address
Mod parent up. Software engineering is a skill (a la pottery) which has a few basic principles and is built upon through experience and intuition. Other forms of engineering (take structural engineering) for example fall back upon rigourous and empirical calculations that arise from training and formal education. That is not to decry the profession of software engineering(I am one myself) but I say that to differentiate it from the conventional trades of engineering that exist.
;) ) but can you show me the math?
You can justify the design of a bridge built to carry a certain load under certain conditions under some assumed factors of safety but how can you, say, justify _empirically_ that the class architecture you designed is the best that could be or how c++ is better for a particular task than Python is. You can only quote from experience, gut feel and hearsay(for some
Software engineering I feel is a craft, a certain art form where you can exhibit your wizardry, but it's still not something you CANNOT pick up without 4+ years of engg school training, whcih is the case with most other established forms of engineering.
Much of the disagreement in Canada comes from the well-meant desire to protect the good name of engineering from the obvious (and occasionally not so obvious) cereal-box-top code monkeys denigrated in previous posts. That much is laudable. Where the fight gets interesting, and perhaps more contentious, is the desire (not universal, but significantly present) to keep software engineering accreditation as something that only schools of engineering can achieve. Software engineering is studied and taught equally in engineering and in computer science. It's the conflict between these two fields that has historically (at least in Canada, but strangely not in the rest of the world) been the site of the most litigation and vitriol. I think this does little for either side, but as a graduate from a computer science program with a degree in software engineering (University of Saskatchewan) I may be biased.
I think that both engineering and whatever software engineering will become will benefit from a more rigid structure of professionalism in software production and maintenance and I think you'd be hard-pressed to find a software engineering graduate (from either discipline) who would disagree. That said, this is less about protecting the public from people like me (I flatter myself) and more about those who call themselves software engineers with few or no qualifications. I often think of this as the fight that psychologists face when trying to deal with the large number of "psychotherapists" who purport to provide similar services -- just without the education and legal responsibilities.
I'm startled at the highly modded trolling found in this commentary -- not to the usual standards of Slashdot, but apparently this touched a nerve.
Definition of Engineering
just 1 word: Measurement
If your discipline involves measuring stuff, thats part of some branch of engineering.
next question please
Pretty slovenly for a putative "engineer", I'd say.
Hi, I have to disagree the following points about software engineering:
A. "there's no way to learn software engineering the way Engineering disciplines are learned."
B. [Software] discipline simple doesn't exist.
C. "cannot use mathematics" design system software.
From my study in my computer engineering courses, we learn what is software engineering. Software Engineering doesn't mean just "programming", it involves many other aspect of software development, like collecting specifications, designing, implementation, testing and software maintenance.
In design phrase, software engineers have to consider the cost, quality, reliability, delivery time and many other matters just like any other engineer in the traditional disciplines.
Although it seems to there is no mathematically involve in general software design, but if you take computer science courses, you learn that your software performance rely on mathematical calculation (i.e. O(n)). If you are working on assembly level software development, you definitely require mathematically skills to solve complex problem because your software is limited by your hardware performance (memory and speed).
Just like any other engineering, software quality also based on statistic and software engineering models. Think about highway engineering, the quality of the road material is mostly base on statistical calculation. In software engineering, we have Lines of Codes, function-points, function metrics measurement and many others determine the software quality, maintainability and flexibility.
So, what is the obvious difference comparing to other traditional engineering fields? 1. The cost of correcting an engineering mistake is a lot less. If your bridge design is incorrectly, it will cost a lot rebuild or re-enforce bridge compare with solving software deflect. 2. Software "usually" doesn't have a direct impact on public safety. Billing system maybe a bad example, but think others, like automobile, airplane, traffic light, it is controlled by software. If the software crashes, it could cause death.
Unfortunately because software engineering doesn't have a total clear understand among the public, and mostly not even to CCPE I bet, therefore it is hard to distinguish one from a software engineer to just a programmer. It is probably very hard to have regulation on software that require engineer's stamp because the definition is not clear.
Does medical charting software require an engineering stamp before it can be use in a hospital? What happen if there is a defect in the software and doctor incorrectly prescribes drugs which cause a patient to die?
It is pretty much impossible to write a useful software that is flawless, even a bridge cannot participate every possible environmental hazards and combinations. It can be statistically said a bridge can last for 200 years, but it is not definite.
If you do claim yourself to be a software engineer, you have to do your job professionally with high standard and due diligence. This is a standard and common ground for all engineers in Canada. And yes, software engineering stream (usually from Computer Engineering discipline) does exist in a number of Universities in Canada.
I think the term engineer is overused, and overrated. I agree with Canada's stance on it - engineers have a degree in some engineering discipline or they're not engineers. In the US, you might call yourself a "software developer", but I have always gone with the far more flouncy "Consultant". After all, you may "engineer" software or "develop" in another, but you're ALWAYS the consultant between "guys in suits" and "customers" for what code can and can't, will and won't do.
It also seems to pay more than "engineer" jobs, I think in some countries it goes like the Army, Combat Engineers who.. dig holes and put tents up, maybe deploy a prefabricated bridge, maybe blow one up. It is hardly a requirement for an 10-year stint getting your second masters degree in an engineering discipline to do that. After all, if you needed it, it'd be a dead loss to the Army because you couldn't get enough of the guys to the right place to put up that IKEA "Brïgge".
And that - the "can't get enough" problem - is probably diluting the meaning of the word in the corporate world too. There never seem to be enough "software engineers", as in ones that could be stated an engineer in Canada, but everyone is employed as one in the US and UK. I wonder if we actually need more differentiation in our jobs.. a few more job titles, so everyone knows where they stand and what their job would really entail..
Notation != Engineering. It is a tool of engineers, but it is not a methodology, and it does not ensure quality work. O-notation, in particular, is useful for describing the efficiency of an algorithm, and thereby discussing the relative tradeoffs of various approaches. That is, it has a value in analysis and communication. Notation can be used to justify your design choices, and it can be used to communicate your design to others (such as your programming team). However, it has no way to guide you the way that the laws of physics guide traditional engineers.
When I was in high school, I was required in one of my engineering classes to build a floating concrete structure. Most of the kids addressed the problem with meek iteration, crafting tiny things that were barely thick enough to stay in one piece. I came into class with a mold I had built, and set about making a large, thick, heavy concrete bowl. All the others swore up and down that it would never float, but I just laughed, and told them to wait and see. On the day we had to demonstrate our designs for our teacher, I marched up with my monstrous concrete salad bowl, and I set it upon the water for the first time. It floated, marvelously. The other students asked me how on earth I did it. I said, "I did the math."
Software engineering does not feel like that.
I thoroughly enjoyed the write up, and forwarded it on to a few friends and family members. I have a difficult time trying to get across why I love what I do, and how I willingly add the extra time into a project to make sure it comes out right. I am talking about: teachers, lawyers, doctors, PR folk, accountants, service industry friends, and so forth. The only ones that appreciate the labor of love would be the architects.
Engineering definition bickering aside this was a well thought out post. Good job!
You just ruined my marriage.
Comment removed based on user account deletion
"I am, in the States, known as a Software Engineer. In Canada we're not allowed to call ourselves engineers,"
In some states your not allowed to either unless you have a PE. Oregon, for example.
" although the discipline is no less rigorous than any other kind of engineering."
True, when doing actually engineering with software. Most development is not.
" 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, "
no NO NO. There is a right way to write software, then there are the thousands of other ways to do it.
"part salesperson and public speaker"
No different then any engineer.
", part artist"
no. If your code is 'art' then it's not engineering, at all. Sorry, they way a bird flaps it's wings may be pretty, but it's not art, it's the way its done.
" and designer"
And engineer should never design, doubly so for software engineers.
", and always equal parts logic and empathy.""
Empathy? WTF?
Another Bozo with an over inflated self worth in what they do. Just great. You're the last person the industry needs.
Sadly, it's full of people like you; Which is why it's can't seem to leave it's infantile state and mature.
The Kruger Dunning explains most post on
"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."
:P
that statement could just as easily mean that i have had sex a least twice
I think this a really insightful article. I worked in a similiar capacity to what the author is desribing and can realte to having worn many differnt "hats". I also believe that code is very much like art. If Art != Science then FLAME!!
Well that's just silly.