Are Programmers Engineers?
The Llama King writes "The Houston Chronicle has an interesting story about a debate in the Texas Legislature over whether programmers are really engineers. A quote: " 'It's one of the silliest issues we're having to deal with this session, but it's also one of the most important,' said Steven Kester, legislative director of the American Electronics Association, an organization of computer companies." Are you really an engineer? Or just a code-monkey?"
They said the same thing when our governer ran for President, but that turned out all right.
Well... sort of...
No.. There is more to engineering that re-using code....
I'm definitely an engineer, because the code I write gets loaded into flash memory on circuit boards I also designed! I figure I've got all the bases covered.
In Soviet Rush, today's Tom Sawyer gets high on you.
"elite hacker for all that is good".
1: Ask the question, "Are Programmers Engineers?" on a tech-oriented website.
2: Well... pretty much any other question, but No. 1 is the humdinger granddaddy of all waltzing in a minefield questions.
And just to get things started, "Yes."
A feeling of having made the same mistake before: Deja Foobar
an engineer or a code monkey. I'm a journeyman ... in the best sense of the word.
"And this is my boy, Sherman. Speak, Sherman." "Hello." "Good boy."
If you are a licensed Professional Engineer (PE) in the state of Texas, you can be held liable for any damages on a project. That was the reference to the 1937 project.
How many 'software' engineers in Texas are willing to put their reputations on the line (and stand up to civil lawsuits) if they have made a coding mistake??
"Software is the difference between hardware and reality"
If garabage collecters can be "sanitation engineers" and housewives can be "domestic engineers" then why the hell not programmers. =P
- level of involvement
- size of project
- mindset
Level of involvement:
Are you a system architect? Do you write php or perl on the weekend? I think the answer to those should be obvious. The higher ups who do design the system, and work with what parts fit where, etc, I concider engineers. They need to know the rules, have good practices, and so on.
Size of project:
Writing a web-based app is usually not engineer-level work. I'm not putting this on what language you use, but in general anything written in perl/php/other-scripting-language is not engineer-level (a project we just finished at work was written entirely in perl/ksh, so this is not 100% true.)
Most of all....
Mindset:
If you think like an engineer, you are an engineer. If you plan carefuly, and think everything through and treat your product as a full system, you are likely an engineer.
If you sit down and start typing code, you are likely a code monkey.
no comment
On what you studied, here i took a 5 college year course including physics 1 & 2, thermodynamics, calculs, adv calculus and all the regular programming/db/hw subjects finishing with a work-experience paper presented 6 months after finishing classes to graduate.
I EARNED the right to be a Software Engineer.
It has to be. Why else spend the time on such a "silly" debate?
I'm just surprised it took this long.
Is this truly the only Earth I can live on?
I agree that if someone calls themselves an engineer, they should have some certifications to back them up. Like the Professional Engineering or Engineer in Training tests (which a very hard to pass).
However, anyone can be an artist, so let's call them Software Artists. Sounds so much better than code monkey...
an engineer applies science to design/build something.
a computer programmer applies computer science to design/build software.
I think there are three types of people who program.
Code-Monkeys: these guys do exactly what they are thought to do: Grind out code. Usually not innovative, usually no technical achievement. Nevertheless, they'll get the job done especially if its something that they can base off other things.
Computer Scientists: These guys use code to test new ideas and methods. This is the research side, but its not always practical research. An analogy I can make is you can't a bridge without math but advanced number theory really doesnt make better bridges.
Computer Engineers: These are the practical counterparts to somputer scientists. Usually innovative but in a sense that they comstruct useful things. What an engineer makes a code-monkey will be able to replicate soon. Just like it takes an engineer to design an engine, but Joe-mechanic can rebuild one or even "modify" it to get some use out of it.
I dont want to put a negative spin on any of these as they all serve their purpose in my mind. Perhaps you will dis/agree.
cheers
-bort
on how much forethought you put into your code.
if you plan it out, have a model, a written set of clearly understandable design goals, that you could hand to someone to do the coding for you, then you have engineered something.
if you start coding off the top of your head and midway through your coding decide the mp3 encoding software you were writing should now control your toaster instead of dealing with audio, you are not engineering.
The term "engineer" has already been besmirched by Novell and Microsoft. Lets not water it down futher. The answer is simple. Someone with a computer engineering degree from a 4 year university is an accredited engineer. Someone with an IS, IT, MIS, ITM degree is _not_ an engineer. Sorry but if you wanted to be an engineer, you should have studied engineering. Someone who drops out of college and learns VB or perl or something is not an engineer. The term engineer implies some form of accreditation. I applaud Florida who makes it illegal to expand the term "MCSE" on a resume or in a business letter unless you are an actual engineer.
Never overestimate the end user. -jeramy b. smith
Don't engineers drive trains?
According to this text, and engineer is People who work in the fields of science and technology.
Generic geeks. Look at Dilbert for example.
Note to self: get smarter troll to guard door.
Programmers work at a tactical level. They are supplied specifications and produce a product to meet them. They are skilled labor, akin to tailors and masons.
Engineers engineer. They understand the problem better than the customer, and are consequently relied on to help form the basic goals of the project itself. Engineers, working at a strategic level, could also excel in business or government if technology didn't have the best toys.
I think that it really just depends on the programmer, their methodology, and their projects. A blanket statement one way or the other just doesn't cut it. Some programmers are more like engineers in the sense that they have to engineer their code to stand up against the world (i.e., if you're programming some health application that's used in hospitals, where an individual's life could depend on the correctness of your code), but there are certainly too many 'hacker-ish' programmers out there to say that all programmers are engineers. There's my two cents.
<wik>/bin/finger that girl in the back row of machines.
I am an engineer in the traditional sense of the word. I find it abhorant that a tech support person puts the word in their title or that there are actual cases of 'sanitation engineers'. To be a legal engineer, you must have the degree, and pass the exams proving that you are capable in your field. Furthermore, you cannot claim to be capable in a related but different engineering field unless you truely are. I may be shiznit in the field of transportation engineering, a subset of civil, but can and would never put my name on anything to do with structures, because I might not have the expertise.
However in the world of IT and programming, any slackjawed yokel who can hack out 5 lines of perl can say they're a badass programmer. No engineering to that. Thats like a poseur mechanical engineer making a basic drawing and saying he 'engineered it'.
There are real software engineers - they do engineer their products, but the trend towards dilution of the term engineer seems to stem mostly from the IT field where a programmer thinks the term synonymous with engineer.
to email me: take my
Graphical
Object-Oriented
Developer
You just have to get a better title, Engineer is over rated
I have mod points and I am not afraid to use them
From Meriam webster:
Main Entry: 1 engineer
1 : a member of a military group devoted to engineering work
2 obsolete : a crafty schemer : PLOTTER
3 a : a designer or builder of engines b : a person who is trained in or follows as a profession a branch of engineering c : a person who carries through an enterprise by skillful or artful contrivance
4 : a person who runs or supervises an engine or an apparatus
Considering that I always wait for a patch before buying a product nowadays I like definition number 2!!!!
The ACM needs to step up to the plate on this issue. It needs to setup a University accreditation (sp?) system. If you graduate from accredited universities, you should be known as an ACM Computer Scientist.
From the article:
Kester said the electronics industry has made changing the state law a top priority because it is making it difficult to recruit employees from other states and around the world. "We run the risk of not having them move here," Kester said. "That puts us at a significant disadvantage."
Yeah, right. Like the weather, fallout from the various crooked company implosions, bankrupt state government and general shitty quality of life have nothing to do with it.
Remain calm! All is well!
In Canada the term "engineer" is heavily regulated: again to protect the public.
Engineering I think is more "disciplined" then writing code. If you look at the more traditional engineering fields of mech., electrical, civil you'll see that after a design is finalized it can be guaranteed to work within given parameters/assumptions. Can the same be said of writing code?
In most cases, no. An engineer (to me, at least) is someone who can say: "I gurantee this design to work". With software it's very difficult to do. The embryonic "software engineering" field is a testament to this.
Until you can gurantee that the software that you write is as provably stable/sound as a design from a civil, mech., etc. engineer, you have no right to call yourself an engineer. I don't care how much experience you have.
This (of course) just one opinion.
All I want is a kind word, a warm bed and unlimited power.
... in order to be allowed to call yourself an Engineer you must be registerd with APEGGA, the professional engineering society. Currently, the only way to get in to APEGGA is to have an engineering degree from an accredited university program, of which there are 3 (or 4?) in Alberta.
However, the University of Calgary, and possibly the University of Alberta, now has a Software Engineering degree program, as sort of a subset of Electrical Engineering. This program gives you a BSc in Software Engineering, but also allows you to join APEGGA and call yourself an Engineer. I believe there is also more focus on hardware then in Computer Science.
So the answer (in Alberta) is sort of a yes. You only get to be a programmer whos an Engineer if you go the Software Engineering route. Computer Science, and all the wack of Technicians can't claim this status (and can get fined if they do).
Since this seems to mostly be a dick-size/resume-padding "look! i'm an engineer!" thing. It seems mildly harmless to come up with some kind of "software engineer" certification thing within texas to allow programmers to call themselves software engineers if they feel like it if they can pass some test or other. Banning the use of the general "engineer" title seems kind of reasonable to me, as it could potentially be misleading; i could write you an RDBMS if you would like, but anyone trusting me to build a bridge is insane.
On the other hand, ratings seem to in general be a natural precursor to control. That is to say, the government releases "ratings" for video games and movies, and within time anything that falls into one of the "bad" ratings can't be purchased by a significant portion of the population. Likewise, if the texas government there starts certifying "software engineers", there may be a time where non-certified programmers are limited in their field of endeavor.
This is silly, since clearly programming is such a rediculously wide field that there is no way you could come up with a single set of standards to judge programmers for.
By their meaning, clearly most poeple are not engineers. That's a clear cut one.
7/8 of the people working as "coders", that read "Java for waiters" clearly are not engineers either. Also clear cut.
4 year degree with something on the EE//CS line (I'm right in the middle) and a dozen years in the real world... if you have the degree, and you have the insurance covering your work by yourself or by proxy - which i'm gonna call "licensed" then yea, you're clearly an engineer by THEIR meaning.
But nothing is more insulting then being considered in the same job category and resume pile as waiter-turned-coder-last-weekend.
I'd love to see Texas lay the law down on the clueless, and license those of us that really do this for a living. Then all those waiters and such can go back to doing things they can do well.
- Adam L. Beberg - The Cosm Project - http://www.mithral.com/
I'm currently in a 4 year program and and have taken all that you have and I still don't have a degree in Computer Engineering. Why do they make us take so much Computer Science, well someone has to make the practical things the CS people ignore
This seems like a quibble over the definition of a word (definitely not something worth occupying so much of our time).
I'd like to point out the job title "software engineer". They don't just hand that to anybody.
Secondly, the dictionary definition of engineer (Dictionary.com) states the following:
One who is trained or professionally engaged in a branch of engineering.
One who operates an engine.
One who skillfully or shrewdly manages an enterprise.
These definitions aren't the best, so let's go back to the Latin origins of the word, "ingenium", which means "ability". I think that covers what programmers (especially software engineers) do.
The title engineer can apply to lots of things. You could call a horticulturist a "plant engineer" if you wanted to!
What can I say? I'm a programmer! I'm a software engineer!
-6d
For me, the definition of being an engineer is all about being a professional and taking responsibility for the work you do. In Canada, engineering is very strongly linked to ethical responsibility.
A good example of this is the fact that all engineers here wear a symbolic iron ring on their right pinky, supposedly made from the iron of a failed bridge that collapsed due to poor engineering, IIRC. This ring is a constant reminder of the responsibility that engineers have to society, as we all put our lives in their hands dozens of times per day at _least_.
Unless software programmers are bound by the same codes of conduct, and follow the same guidelines, they are not engineers.
In short it is definitely NOT the job description that makes the engineer. It is their responsibility to society. Almost every purely software development project I have ever seen fails this test miserably, and therefore software development is generally NOT engineering.
Now, of course, there are engineers who program, and they do often do a lot of programming as part of their very legitimate engineering jobs (maybe that's all they do, in practice). But software development IN GENERAL is not engineering.
In any field, find the strangest thing and then explore it. -John Archibald Wheeler
Programmers are now "Simian Engineers".:)
Is this a sigs-optional kind of place? 'Cause I am totally down with that if you know what I mean.
Are Programmers Engineers?
No, programmers are programmers.
Alright, I just recently got my Computer Engineering degree, and I can tell you plane and simple the difference between me and a computer scientist. My education was centered on the design and operation of an actual product like an embedded system or cpu. A computer scienstist at my school, UT, spend most of their time on theory about how to program and such. As an engineer I had very few just plain theory classes, I was constantly working electrical circuit problems.
I'm not saying that all programmers are concerned with theory, cause I know plenty who aren't, but I know very few engineers who aren't working on designing some aspect of an actual product.
Sorry, this will be an age old discussion for sure but the bottom line is that the education and training involved with becoming an engineer surpasses any chance of computer scientists being engineers. Yah, they get the shaft like engineers there is a scale involved here. Computer Science: Go through school, classes aren't too bad. Can get by without having to do major grinding work. The pay is relatively good but you take an easier way out. The trade off, not as much respect and taking slave jobs(not all, but some). Engineers: Take a beating during school, people warn you that you will get a well paid jobs, people will appreciate your work a little more but you get prepared for the grueling workforce people have told you about. In the end, get paid well, you are someone's slave but with more credit due for your work because of your background education. I've taken comp. sci. courses. The courese are relatively easy and the work load is a lot less. There is a reason why engineers are engineers. If you are a computer science guy, and don't believe me, enroll in engineering for a year. super_ogg
Black cat, searing pain, flames...? I must be in Heaven! - Homer Simpson
No, programmers are not engineers. Software engineers, however, should be and are engineers.
on what level you are coding on. If a person is involved in designing the software (data flow, class responsibilities, cohesion, coupling etc etc) then I would consider him/her to be an engineer. If the person is given a detailed framework of the class design and how everything should fit together, then I would consider him/her a programmer. To me, the title 'engineer' is a very loose term and is associated with a person who is involved in the design process of a project.
You're all code monkeys until your job really CAN'T be done by a smart high-school kid, and you have polished the art to the point that all the OTHER engineers accept and respect you as engineers!
It should be major news that Joe Somebody's computer crashed today, an event greeted with grim commentary and TV specials.
...
If (the programmer can be programmed) {he is not an engineer.} Else {he is an engineer} Link
The hoopla is that basically, you cannot call yourself an Engineer unless you have been certified in Engineering and licensed to perform Engineering.
A lot of people consider themselves Software Engineers, but since they are unlicensed, many states (Texas) disallow this practice of these people labeling themselves as Engineers.
I think licenses make sense, and a program that would license Software Engineers would kick ass (and actually would need to exist for licenses to be possible.)
I'm actually surprised this is finally on slashdot, since someone always mentions the Texas case whenever a story mentions "Software Engineer(ing)" in it.
At some schools, CS students can be mixed in with various types of Engineering students. Both groups will take similar math classes and physics classes their first two years, but Engineers seem to act holier. It would be kick ass to be able to get a B.S. in CS and then be certified as a Software Engineer.
Maybe this would require having taken a couple of engineering courses, but this would be the best.
Then, we'll be both scientists and engineers!
Instead of asking the question "Are programmer's engineers?", I think we should have the following answered:
Most computer software programming career-oriented students take Computer Science. If a BS in Software Engineering could make you an Engineer (after licensure) instead of a Scientist, would you take that path instead? If American schools split CS into those two majors, how would the focus of each of these differ, and which payscale could be bigger?
I know some schools have Software Engineering, so how do existing SE majors differ from CS?
Cover your eyes and click this link!
This is important because it says whether or not programming can be regulated, in that, is the programmer competent? As my Software Engineering professor pointed out, programming is the only life-or-death profession which is unregulated. How do you feel about your antilock breaks? Or any of the other millions of embedded systems which you rely on not blowing you up everyday. It is to our advantage that most of these systems are programmed by computer engineers (that's me!). I certainly feel that Software Engineering should be regulated in the same fasion, however obviously for many companies, incompetent programmers are fine, such as for a desktop OS.
I'd like to see programming taught as more of an art than a science.
Sure it involves computers etc. But I see programming as a sculpting of code, and artistic construction with its own nuances.
Not a common view though, but I think things will lean this way increasingly, or all we will have in a few years time are just code monkeys who bash out crap all day and noone taking the time to code innovatively.
This sig has been deprecated.
Programmers are NOT engineers. We don't spend 4+ years studying the mathematics and physics of our discipline to be compared with someone who knows how to "code".
One takes hard work and effort, the other doesn't even come close.
To be legally be an engineer with all the perks you have to pass the Professional Engineer (PE) exam after having passed the Engineer In Training (EIT)exam. As you must be enrolled in an ABET (forgot what it stands for) accredited 4-year engineering program to take the EIT, programmers without engineering degrees can not legally be engineers.
Some companies, Motorola comes to mind, won't even let you use Engineer on your business card if you haven't passed the exam.
So from a legal standpoint, programmers aren't engineers.
There are Software Architects who design the programs.
So, naturally it should follow that Software Engineers are those who bring the idea into reality.
your thin skin doesn't make me a troll
Atleast at my company, very few programmers would qualify as Software Engineers. Code monkey seems a lot more accurate as most good software engineering practises are never followed.
Come to think of it, most good coding practises are never followed either.
Well, monkey still seems to apply.
This issue has come up in Canada a few times in the past. See this for numerous article and editiorial links regarding this matter.
It's my understanding that the main objection to software programmers being called "engineers" is that an engineer is liable for faults and mistakes. He follows definite principles of design (how many definite principles/laws of design do we have for software?) and certifies that his design meets all of the standards and so on. And he's liable if he certifies something incorrectly.
Do you want to be liable for a fault in the accounts receivable program that you wrote last week? "That will be ten million dollars, please." How about the fault that the black-hats found in your firewall that's currently being used by numerous large businesses?
Read some of the articles cited in the above link. It's truly interesting material.
If you're a zombie and you know it, bite your friend!
I'm without a doubt a code monkey! Engineer?? Gee, I haven't got a complete high school degree. (I'm 27)
Girls are strange. They don't come with a man page.
-- Michael Mattsson
I have a degree in Computer Systems Engineering from Arizona State University. I like to think that I am an engineer. I feel that the work I do is above just coding but at the same time I work with people with "Software Engineering" from a "design" school. They are the ones who seem happy to call themselves software engineers. I went to school and suffered through statics, physics, and calculus like the electrical, chemical, and civil engineers around me. My college had ABET accreditation so again I like to think that I am a real engineer. I know I may be viewed as a code monkey but I have a job so call me what you will.
What about all the people who didn't take a PE exam but whose college degree says Computer Engineering? If I lived in Texas, I'd still call myself an engineer for precisely that reason...and if they didn't like it, tough, I'd switch states.
I can sort of see the fuss over someone with a 2-year Computer Technology degree advertising themself as an engineer, but really if they have equivalent experience I certainly wouldn't debate their right to the title of engineer either.
In the UK, engineers *delay* trains!
my BSEE says I'm an engineer and I code... though I will say that many of the coders I have meet are monkeys... I'd say it is a 50 / 50 split.. anyone can code, but only a few can code really well...
Only 'flamers' flame!
"It's one of the silliest issues we're having to deal with this session, but it's also one of the most important"
Is it silly, or is it important?
This is exactly why programmers/engineers shouldn't be allowed to speak in public.
Code munky sounds cool, but has a negative connotation, so let's not use that. However programmers aren't really engineers. Engineers work in the real world. that's how they're differnet for mathmatitions that also know physics. Programmers do something else. not to knock eitehr, but they're differnet things. And this ... engineer stuff (domestic engineer sanitation engineer) is stupid.
TWW
"Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
Here in Canada, we have laws saying exactly who and who cannot call themselves an "Engineer" - even Microsoft is bound to these laws. The reason is accountability.
:P) was they were legally accountable to the people they designed systems for, once that P.Eng was appended to thier name.
I've worked in engineering companies in the past, with Sparkys, Civies, Pipers, Mechs and thier attendant underlings. The thing that all of them had in common (other than being able to really screw up a computer. "But I'm an engineer!!!"
They are licensed in much that same way a doctor is for providing medical attention. They can be taken to account if they are negligent in thier designs. This is why most bridges, for example, can carry over twice thier rated weight for short periods - the engineer doesn't want to go to jail if someone decides to try such a stunt.
This differs from Software "Engineers" who are rarely, if ever, accountable for the systems they design - EULAs usually see to that. If you needed a license to write software, SorceForge could be (and in reality likely would be) hosted on a C64. It's all about being accounntable for your work.
Soko
"Depression is merely anger without enthusiasm." - Anonymous
If garabage collecters can be "sanitation engineers" and housewives can be "domestic engineers"..
For these, being called 'engineer' is a promotion, for many programmers it would be a demotion.
Programming is a unique discipline on the intersection between engineering, art, science and mathematics. It requires much greater deal of creativity and mental dexterity in entirely novel situations than mere engineering.
Optimist: "The glass is half-full."
Engineer: "The glass is twice as big as it needs to be."
Programmer: "Who cares? Just drink the free beer!"
Is a programmer:
1. A member of a military group devoted to engineering work? No.
2. A designer or builder of engines? Not unless you count search engines (I don't.)
3. A person who runs or supervises an engine or an apparatus? Not unless you count computer programs as apparatus (I don't.)
4. A person who carries through an enterprise by skillful or artful contrivance? Well yes, definitely. But I think that definition would also make Kobe Bryant as much an engineer as a programmer.
5. A person who is trained in or follows as a profession a branch of engineering? Depends on whether you count computer science/software design as "engineering." I don't.
So is a programmer an engineer? No. He's a programmer. My gut feeling is that the term engineer implies a certain application/understanding of physics which programmers don't (as a rule) undertake in their day to day activity. Let the flaming commence.
I think that I think, therefore I think that I am. I think. . .
I have written a lot of code, but I've never created anything complex enough to require an "engineer".
/Ex
Think about it-- How many engineers are needed to build a bridge? Now how many "grunt workers"? Now scale it down to the normal size of a software project. It's probably 1 engineer to 100-1000 grunts.
the people I think deserve the title "software engineer" are the guys that actually figure out how things are supposed to go together, and then let the grunts worry about implementing it.
Note: this is not to say that every project has an engineer-- seriously, anything with less than five coders is the engineering equivalent of getting a few close friends to throw up a barn over the weekend. A lot of larger projects even, have very similar "barn raising" techniques in the design phase.
You can teach almost anyone to program-- just like you can teach almost anyone to swing a hammer or use a wrench. Programming is a bit more intensive, as it's a larger number of "movements" for a result, but it all boils down to the same thing-- You can't easily change engineers in mid-stream, but the grunts are interchangable.
Another thing is there is this horrible divide between good and bad "engineers" in the computer field right now. The bad ones make *EVERYONE* an engineer-- "We don't exactly know what your piece is supposed to accomplish, but you need to do something, so have at it, and we'll get around to telling you what to do sooner or later". This doesn't work. It makes everyone work harder, to no benefit.
It is like a building engineer telling people to "just start nailing boards together, and we'll see where they can fit in the final design". The grunts suddenly are required to have knowledge of proper building and must make sure everything lines up because there isn't a blueprint to follow. That is why you never see that.
The worst, of course, are those firms that use the marketing department as the engineers. I am currently of the opinion that software should be written to fix a problem-- not the Microsoft idea of "build it and market it to death, then come out with 2.0. Wash, rinse, repeat"
So, basically, there are engineers-- The guys that write up the blueprint. 90% of us are at most aspiring engineers. Now. Let the flaming commence.
But a programmer who took a couple of courses at the tech school and maybe a college course, then read a few books? Thats not an engineer.
In about a month and a half I finish up 4 years studying to be an electrical engineer. If I'd wanted to program I could have very easily learned a language and gone from there, (My brother learned 14 programming languages in a matter of 4-5 months.) There is alot more to engineering than being able to turn out some random product. We don't call bakers engineers no matter how technical their pastry is.
I do security
I would say that a software engineer uses programming as a tool. Writing code is a small part of the process of producing high quality software. The entire programmer as "craftite" versus software engineer debate is going to be over quickly when the complexity of software reaches a point where, in order to compete, you have an across-the-board need to treat software development and its organization with an engineering mindset.
When you're writing it for free it doesn't matter how you do it, because the product doesn't fit in with any business need. You don't need to compete. Let see...we have cost, schedule and features. We don't care about cost, because we're doing it in our spare time. We don't care about schedule, because we have no market window because we're giving it away for free. We don't care about features because if there's not something there that people want, they will ask for it and we'll put it in later. If the product doesn't fit a need, or there's a better product out there, our product will drop off the face of the earth as if it never existed.
So my answer is that free software uses craftite programmers (or at least software engineers acting in a craftite capacity). Real software--the kind that people pay for--requires software engineering--competent professionals capable of providing engineering expertise for mission critical applications.
If I have a company producing circuit boards, I can hire 5 guys with no college background to do board layouts. They WILL refer to themselves as electrical engineers. All the real electrical engineers WILL laugh at them behind their backs. If you call yourself a software engineer, any REAL engineer will be able to tell the truth in a minute long conversation.
So, if you're not an engineer, but you want to say you are, don't hang around any real engineers.
I think he confused computer engineer with software engineer. Computer Engineers are pretty much just EE's with an emphasis on VLSI design and system level software.
Do you even know anything about perl? -- AC Replying to Tom Christiansen post.
Up here in Canada, the Professional Engineers Ontario have the same outlook WRT engineering.
Go to school, get a decent background in things other than programming (ie, thermo, materials, control systems, chemistry, calc, discrete math). Then when you graduate you can call yourself an engineer. Oh, what's that, you don't want to put in the time and effort required, then you don't deserve to call yourself an Engineer.
Another link at the PEO that's intersting is the software page.
... you insensitive clod!
Remove the caps and hold to a mirror.
This is silly. You put your reputation on the line in any line of work you do. You are subject to both civil legislation for negligence, regardless of whether you are an engineer or programmer.
- An engineering degree that meets some basic requirements
- 4-8 years of experience, depending on your degree
- Detailed log of what you've done for these last 4-8 years
- Experience under another licensed engineer
- Five references, three of which must be other licensed engineers
- Two exams
There is a serious problem here, notably that there are few licensed electrical engineers and no licensed software engineers. Since you need a licensed engineer to create a licensed engineer, few if any qualified people will ever be able to license themselves.There are exceptions for people who have been in the field for something like 12 years, but you are still required to have a detailed log of everything you've ever done. Simply put, most people never get this far.
Personally, I would love to have my license to go along with my EE degree, but it's just not realistic to waste my time. I don't even know any licensed EEs, much less have a company willing to hire me and place me under another licensed EE to gain the required experience.
My suggestion for the state is this. The word "engineer" has become watered down in the past several years. As it stands today, licensed engineers are allowed to place "PE" after their name, as well as calling themselves "engineers." Thus, the state should probably allow "engineer" to be used in whatever context people want and only let licensed engineers use the "PE" designation.
Licensing is important and has its place in quite a few fields, so I also recommend that the state evaluate ways to open the door for more people to be licensed in the high-tech fields. Perhaps the restrictions should temporarily be made more lenient to "seed" the field with licensed engineers, thus allowing for easier licensing of new engineers in the future. Finally, I recommend that the legislature let the engineers figure this out, rather than figuring it out for them.
Lets look at the obvious determining factor:
Programmers at a four-year degree universities graduate as Computer Scientists, in a department not usually included in any schools department of Engineering.
A computer engineer is a different beast altogether. While they might handle programming their main area of expertise is in designing electronic hardware such as computers or computer components.
Another good way to tell, an engineer can do circles around any programmer when it comes to Math... If you didn't take up to diff eq. and discrete math, you're not an engineer baby!
If you had a million monkeys and a million keyboards you could write a responce on slashdot..
Wait...
I'm just about done my second year of chemical engineering. The more I think about it, the more it seems like people who write software have nowhere near the same responsibility for their work as traditional engineers do. In one of my classes we learned about a mine tailings dam in Spain that ruptured, causing a huge biological disaster. The chief engineer was to blame and basically had no chance of getting an engineering job ever again. It may sound harsh, but that's the price you pay when you screw up big time. What happens when there are glaring security holes in software? Is the company that made the software ever held liable? Sure, they say in their licences that they're not responsible for anything. But if you saw a bridge, and it said that the company that engineered it didn't guarantee anything about its safety, would you cross it? This wouldn't even come up because you wouldn't hire an engineering company that didn't guarantee its work. Personally I don't think that computer programmers should not consider themselves engineers unless they will guarantee all work that they do, and are willing to put their career on the line for it.
...is far from new, but it's still in its infancy. Check out the Software Engineering Institute at CMU for a wealth of literature on precisely why software can be engineered. As for whether programmers are engineers, it depends solely on their training. As a fresh graduate in Computer Science at Oregon State, I can say that graduates from OSU are less scientists and more engineers everyday. Unfortunately, students in CS will eventually be split into the construction workers and archiects of the 21st century. (I'll leave it to you to figure out who the programmers are). Long gone are the days of building a bridge without statistics, design, and blueprints. You might do it in your backyard, but no one will use it. The same is true for the "field" of programming.
"Texas has one of the nation's strictest engineering practices acts and limits the title of engineer to those people who have studied engineering and passed a licensing exam." .. You technically aren't an Engineer in the eyes of most true engineers until you've gotten some sort of engineering degree. It's simple as that. You are a code-monkey, even if you write firmware for embedded devices (like me).
If this bothers you, go back to school. If titles aren't important to you, then don't worry about it. What Texas is doing is probably more correct than the way many other states just let anyone call themselves a "Software Engineer". The title Software Engineer is such a joke.
“Common sense is not so common.” — Voltaire
engineer \En`gi*neer"\, n. [OE. enginer: cf. OF. engignier, F. ing['e]nieur. See Engine, n.] 1. A person skilled in the principles and practice of any branch of engineering. engineering (nj-nîrng) n. 1. a. The application of scientific and mathematical principles to practical ends such as the design, manufacture, and operation of efficient and economical structures, machines, processes, and systems. b. The profession of or the work performed by an engineer. 2. Skillful maneuvering or direction: geopolitical engineering; social engineering. http://dictionary.reference.com/search?q=engineer http://dictionary.reference.com/search?q=engineeri ng
People in the thread want to redefine the word "engineer" to mean "registered, professional, accredited engineer." But the word predates registration and accreditation.
"The last of the three words -- engineering -- comes from the Latin word ingeniare, which means to devise. A lot of other English words are related to this word: ingenuity, which means inventiveness, and engine, which can be taken to mean any machine of our devising -- any "engine of our ingenuity." So an engineer is, first and foremost, a deviser of machines.
http://www.uh.edu/engines/epi12.htm
In the public mind, the word "doctor" has a very specific meaning and calling yourself a doctor could have disastorous consequences. You could say the same of "mechnical engineer." But it is silly to say it of "engineer" in general. A so-called software engineer may not be fit to devise a school boiler, but neither is a chemical engineer. "Misusuing" the term engineer is not likely to have serious consequences and therefore the government should not waste its energy policing it.
It would seem to me that it would make sense to have both trade certs(Technician, Journeyman, Master Technician/Programmer) and Academic Certs/Degrees(Engineer, Scientist, Analyst, etc...) depending on the individual person/tasks involved. No doubt an Engineer working with a couple Master Programmers would be more effective than the endless wrangling one might get with an Engineer/Scientist pair.
Dont know if it's feasible, but it seems sensible.
trailer park methmen: these guys purchase a lot of either and try not to blow them selves up. usually they follow a recipe handed down from father to son as mobile homes spring up across the country.
chemist: these guys make specific combinations of atoms and molecules to for a specific purpose. this is fairly low level stuff that can becime very tedious. typically this is done on a small scale.
chemical engineer: these guys take the work of the chemist and make it profitable. they take stuff done on a small-typically inefficient-scale and scale it up to production capacity.
so the flow of technology typicall goes something like this:
chemist-->chemical engineer-->trailer park methman
this is alot like the programming world:
computer scientist -->computer (software) enginner-->visual basic programmer
-- john
It depends on the situation. I would hope the guy whose programming error caused the Challenger explosion has had to find another line of work.
A glaring omission from the debate in the article is the idea of just allowing sofware engineers to be Professional Engineers.
It sound to me much like the attorney's BAR or the Medical Board. It's an artifical gatekeeper for the business, a guild, but for those who get in the club, it offers wage protection and can help with things like age discrimination, professional development and preventing destabilization of wages by H1 visa flooding.
I am an electrical engineer who's been working in various semiconductor and communications fields since '96.
Hiring managers *never* look for PE certification, they look for specific skills and they look to see if they can tolerate you...
- hawkeye
"...The smart and lazy ones I make my commanders." - Erwin Rommel
(Someone had to say it.)
Engineering requires the problem at hand to be much better defined and analyzed than what we typically are up against in software. That extra definition and understanding makes specifications, methodologies, and even fixed qualifying exams useful. Once a software problem is that well understood, we've written a tool based on that understanding to do it, so we move on and program something different.
Maybe if the code monkeys were personally financially liable for their (numerous and varied) screwups they'd appreciate test analysts and testers a bit more. I'm the only person in the room with a systems engineering degree and there's been times when I've been treated like a dog for having the temerity to comment on the rigour of their latest abortion. "What do you know? You're not a programmer."
If these guys started having to indemnify themselves and pay to clean up their messes (the ones we warned them about and they ignored), we'd have a more harmonious relationship at work between programmers and testers. Nobody likes to be told that they've just done something wrong, but if it's a choice between being told they're wrong, or they're bankrupt and their kids are going to be studying at the University of Burger King, then I think most people would prefer to be checked in time.
One of the penalties for refusing to participate in politics is that you end up being governed by your inferiors - Plato
I am a programmer with a computer engineering degree. However, that does NOT make me an engineer. Being a licensed engineer shows that you have had an education in not only your field, but also in safety, ethics, and responsibility. As an engineer, you are legally responsible for your work. Not your company, or your boss, or anyone else-- YOU. Just understanding electronics or programming does not make you an engineer.
LordBodak's journal.
Programmers are not engineers. Engineers have learned difficult skills, while any moron can pick up 'Programming For Dummies' and learn C in a week.
Programming is to hardware, as what hardware is to the universe. To build is to organize matter so that it solves problems and has a function. To program is to build small imaginary buildings that solves problems. Hardware is like an implementation using the language that is made up of atoms (alphabet) and molecules (words) and the laws of nature (grammar). You organize it in a certain way and get, for example, a bunch of microchips or an abacus. Programming software is the same, only not.
Programmers call themselves software "engineers" to:
1. get more money
2. gain respect they don't deserve and didn't earn
3. ride on the coattails of others
And actually 1 and 2 are byproducts of 3. Hat trick!
It's a shame that people who went through enigneering school, put in their time, took their professional exams, got their license, paid their fees, and carry their liability insurance have to put up with such NONSENSE from a bunch of egotistical computer nerds.
It makes about as much sense as me calling myself "doctor". I'm glad we have laws like this in Texas,a nd I wish there was more enforcement of it. Software engineer, sales engineer, customer support engineer, field engineer, application engineer. Jeez! All fancy titles for pretty lackluster jobs.
Ha ha, I am an artist not a grease-monkey. Who really is an engineer? As defined by dictionary.com an engineer is one who is involved in the field of engineering which is defined as "The application of scientific and mathematical principles to practical ends such as the design, manufacture, and operation of efficient and economical structures, machines, processes, and systems." Therefore a programmer is most definently and engineer because programming is the process of solving problems and then writing the solution into code, not simply writing coding as implied by the title of code-monkey. Just MHO/2C.
Checking out my form of escapism.
Now the real question addressed here is whether or not Software Engineering is a valid branch of engineering. I claim that it is as a "regular" engineer is someone who does applied science and follows a set of practices. Well, a software engineer is someone who does applied computer science and must follow certain practices.
For fear of sounding like an elitest, no, a programmer is not an engineer. I spent time not only understanding the base theories of how stuff works, but showing instructors that I not only understand, but can do (via long tests!!!).
Typically, an engineer thinks on many levels. What I mean by this is that we keep the big picture in mind while dealing with the details ( as Albert Einestien said, "God is in the details..."). People might think that this is trivial, but try it once. We deal with constantly changing requirements as well as changes in the platform (just try to really keep up with where Microsoft is and where they plan on going versus where they end up!!!).
Yes, an engineer can do the work of a code monkey (maybe/usually not as proficient as a well seasoned programmer), but I am damn sure that a programmer cannot do what I do on a daily basis.
Sorry for being a snob, but until I am proven otherwise, it is just my $0.02.
The big deal here is that there are three criteria for calling yourself an engineer:
1) Capable of the job. This includes having the necessary training and capable of passing tests on the subject.
2) Following a standard code of ethics.
and the biggest sticking point
3) Accepting liability for your work. If you write a program that crashes a pacemaker you can be sued in civil court and depending on the extent of your knowledge of the degree of hazard perhaps prosecuted in criminal court.
Given that all the other professional engineering fields must follow these standards its damaging to their reputation and confusing to the public that someone claiming the same title can deliver unreliable goods with no consequence.
We are not Engineers, and we are not Professionals. We cannot become Engineers because we cannot agree on a standard body of practice. We -could- become professionals if we could only get organized to protect ourselves and eachother.
.com/.bomb craze that inducted way too many people with little skill into our industry. This situation is only slowly being corrected now.
I am sick of the misperception that we are "code monkeys" - that our job can be done by just anybody with little training. This stereotype was fuelled by the
Building good software takes good design. These skills only come with good experience and education, and never come to some people.
Implementing "real" projects takes a higher level of skills, in specification and architecture, as well as leadership, management and politics. The fact that these skills are lacking in our profession (small 'p' used on purpose) should not encourage the ignorant public to put us all down.
It does not matter what the "dictionary.com" or "Websters" or "Oxford Unabridged" definition of "Engineer" is.
The state of Texas has codified a definition of the word "Engineer" and who may use the word as part of a title as applied in the State of Texas. This supercedes all other definitions when used in the State of Texas.
It doesn't matter what you think the definition is, or what you want the definition to be, because in Texas it is what the Texas Legislature has defined it to be.
JD
If organizations such as the ACM, ACL, ALP, CRA, ISOC, and the various national associations were to combine forces and come up with accreditation and standards for "Software Professionals", we might get somewhere. An accredited computer science degree, followed up by specialized examination in a particular field, should yield professional standing just as much as a medical, engineering, or law degree.
Currently, the software engineering we see growing out of the traditional engineering culture is not sufficient or inclusive. Engineers do not make good computer scientists.
If you went to a university and studied in a computer science or computer engineering curriculum (this means that you have studied at least 3 semesters of calculus, 2 or 3 semesters of physics with lab, taken a semester of algorithms, data structures, linear algebra, and a plethora of other mathematics related courses, not to mention your programming courses) then you are an Engineer. This is because a university graduate with the degree in CS/CE/EE has the background to truly apply math, physics and engineering principles AT an engineering level. Some 16 yr old from the local high school that knows how to do VB or Java doesn't even posses a thimble of the knowledge of a true engineer. That is why you see your 16 yr olds coding perl scipts for a web site form processor and your true engineer getting paid 10 times as much and busting out with apps that the 16 yr old probably couldn't even operate.
So I believe if you have your degree in CS/EE/CE or even Mathematics, and you are a developer, then you have earned the right to be called an engineer. The 16 yr old has a long ass way to go.
I'll be a 'certified' engineer next Januari if all is well. I've spent 5 fscking years in a dull school for that, so NO QUESTION about it! You should've come 5 years earlier with that!
"We can confirm that Debian does *not* ship the version with the trojan horse. Our version predates it." [CA-2002-28]
I got my master's in computer science from a technical university, where one by definition is an engineer when done.
;)
;)
Oh, and I code 10-16 hours a day for a living
The fun part being, I'm actually a "civil engineer". In this country it refers to the fact that I was not educated in the military, but at a civilian university. It has nothing to do with plumbing or building houses, I assure you
This question could also be applied to those of us that are A/V "engineers" as well as coders/software "engineers". Within A/V circles, if you know how to use the equipment in a studio environment to maximum effect and troubleshoot problems, you are known as an "engineer." Does the fact that we are able to implement, run and troubleshoot audio/video recording and editing systems make us "engineers" in the purest sense of the word? Certainly not.
By the same token, is the fact that one is able to build boxen, integrate a server farm, write scripts, properly implement ipchains, or successfully install Slackware on siad boxen make us "engineers?" Once again, no.
Most of the audio video engineers that I know (including myself) know very little about the low level workings of the equipment that we use and maintain. We are, in a sense, administrators: we know how to use the equipment to maximum artistic and technical effect and are able to resolve problems as they appear, but if asked to explain the nuts and bolts of the gear we know how to use so well, we are most often at a loss. The same thing applies to those of us that are highly able "users" of various boxen. We can manipulate these machines to do all sorts of nifty, useful stuff, which is great, but few of us could explain, let alone design, the inner workings of the machines we use so well.
To those that defy the above descriptions, I salute you. To the rest, we have to face up to the fact that we are users, albeit good ones.
Don't Panic!
But only if they bribed Red Hat!
'Obtain a prosperous future, money earning power, and the admiration of all with diplomas from prestigious non-accredited universities'
wonder if i can upgrade to the accredited version..
"en-gi-neer-ing" a. The application of science and mathematics by which the properties of matter and the sources of energy in nature are made useful to people. b. The design and manufacture of complex products.
The debate of software engineers(SE) being engineers has been going on since software emerged. At the university of Regina the engineering department sued the computer science department for offering a software engineering course and asked that the engineering department offer it. Unfortunately if engineers taught software engineering there would be a large amount of poorly designed software (not that there isn't). This is because software is a very new concept in today's world only recently developed by scientists and no engineer knows enough about the topic to teach it. The theoretical physics involved to build a bridge has been applied much longer than the theoretical mathematics involved in creating a piece of software. So engineers can't teach it quite yet. The title of engineer today (I mean ring and all) goes to a person that not only adheres to the definition above but one that is held accountable for any mistakes he makes in the engineer process. of course SEs are not held accountable for there bugs this is because there is no licensing process for becoming an SE, even though there is a large amount of software in the world peoples lives depend on. I would like to see such a process be put in place. In addition a software engineer is not going to build a bridge and and neither is an electrical engineer.
In time the engineer community will consider Computer Science to be a science that can be used to engineer products.
Until then there will be many engineers like myself running around without getting a ring.
(NOTE: I'm not talking about hack programmers but people that have earned a Computer science degree)
As someone who has a BS in Electrical Engineering, and a MS in Computer Science, I can state that "Software Engineers" are NOT Engineers. Engineers must pass 8-hour exams just to get a job as an Engineer In Training, plus a minimum of 5 years experience and another very intense exam (PE) to become an "Engineer". They also have a code of ethics they are required to follow. Engineering documents must be signed by a licensed engineer, who puts his/her reputation on the line -- s/he takes the fall if there is a problem, even if it is due to a subordinate engineer. Programmers have none of this. So while my title is "Software Engineer" I know the truth: we will not be Engineers until Software is signed by an Engineer, and there are liabalities for shipping defective software, just like there are liabilities for designing a defective bridge. We also do ourselves a great disservice by not having a governing body "license" professional programmers.
There's a big difference between an Certified Public Accountant and a bookkeeper. There's also a big difference between a Certified Public Engineer and someone who knows a programming language or two.
The same thing is true in other states. It's just that in Texas the issue has come to the legislature. The dilution of the term engineer and, in particular, all of the software certification programs that use that term have exacerbated the problem.
Professional Engineering registration was established to protect the health, safety and welfare of the general public. Building plans, commercial building electrical wiring plans, etc. must be certified by a professional engineer as meeting safety standards.
There is a broad exception for engineers working for a company which manufactures products. Most engineers fall into this category and do not require professional registration. The ones for which registration is required are those who directly serve the public or offer their services to the public, e.g., somebody that designs buildings - they don't sell a product, only a design.
Software is a relatively new entity in this area. Should certain software require certification by a professional engineer (in the software area)? Similar to the previous paragraph, should the rule be that if you work for a company you are exempt but if you offer services to the general public you need to be a registered professional engineer? The problem is that when a bridge collapses, people die and the cause is clear, but when a program crashes people usually don't die (fortunately!!!) and the situation is much less clear.
Society is going to have to deal with the software quality problem, whether it be by this means or another. As software becomes more important to the national infrastructure and economy we can't afford to tolerate poor performance.
Engineers create specifications based on knowledge.
Designers create things based on specification.
If you do both, you are considered a design-engineer.
There are software designers, as well as software engineers. You can not just lump all the programmers into a single category.
I have a masters in Computer engineering. This has absolutely nothing to do with what people consider computer programming. The article used bad terminology. I also have a BSEE. But I have been programming since I was ~10 (20 years).
I have known accredited and professional engineers who are incapable of doing decent engineering and technicians who can engineer. At my first job we kept the tools locked up to prevent the engineers from messing things up.
If most any software can be reverse engineered, it goes without saying that it must have been engineered to begin with, right?
Although they may just be engineers. An entry level programmer - regardless of his level of education - cannot really call him or herself an engineer any more than a member of an orchestra can automatically call themselves a conductor. They are different roles that are related - nothing more. To be a software engineer one needs IT experience, talent, leadership abilities, and an understanding of software development best practices not to mention a good background in mathematics and physical sciences - these develop one's ability to develop, understand, and follow complex methodoligies and algorithms. Without these skills an entry level programmer is just that - an entry level programmer. Basically someone who can write a bunch of code (or copy it) to accomplish a very direct task. The road to software engineer is a long one from there.
I got a BS in Electrical Engineering and an MS in Computer Science. Most of my work is writing code, but I know *exactly* where to kick the machine when the need arises.
My God, VHDL is a peice of cake, and in no way is it low level. This conversation hits close to home. Compter Engineer and proud of it.
I/O, I/O, its off to disk I go, with a read and a write, and a bit and a byte, I/O, I/O, I/O, I/O
Is a program an engine?
love slashdot. populate it. use it. abuse it. hate it. kill it. miss it. stop following links, they only kill servers.
If you say that a title conveys a higher level of achievement on someone, I would say BULL; I have seen clueless people at all levels.
If some idiot in a state assembly says that engineers need to be certified so they can be held responsible for their creations; he is off his rocker. In our sue-happy society a piece of paper is not going to save someone's ass if they screw-up.
Looking for a job?
Want your resume written professionally?
DON'T USE TUNAREZ!!!
There is a difference between 'software engineers' and 'programmers'. Grouping them both as 'programmers' and then asking "Are Programmers Engineers?" will of course invite differing opinions.
I aspire to create work of engineering quality - robust and reliable - and I am inevitably in the original sense an engineer (someone who applies ingenuity to problems); but I know that my work is not of comparable reliability to that of people who work in more established areas of engineering. I would like it to be and strive to make it so, but the reality is that if software became as disciplined and regimented as structural engineering is, I'd go looking for something a little bit closer to the edge, a little bit more raw.
I'm old enough to remember when discussions on Slashdot were well informed.
Whenever a programmer uses measurements, takes into account shedules, effort and costs then he is truely 'engineering'. These tasks are not always asked of say, a web developer, but if you're developing in a structured environment then you are an engineer IMHO.
If you think
Of course, such a measure would considerably reduce the number of people in the software industry. The ultimate effect would be that salaries for these certified "software engineers" would skyrocket, at least for 10 years or so until the universities restructured their programs and we had enough engineers to meet demand.
Not sure which would happen first: riots because of all the unemployment this would create, or the creation of a software blackmarket.
Can you imagine driving downtown, slowly rolling down your window, and asking if someone could hook you up with the lastest version of MS Office?!
Now, I am going piss off a lot of people but consider a large software project... say developing the software to run a complete Air Traffic Control System (ATC). This task would likely require hundreds of programmers and many managers and systems engineers. The managers and systems engineers who develop the SPECIFICATIONS, PROTOCOLS, INTERFACES (etc.) and oversee the development and testing... sure, they earn the right to be Software Engineers. The guy who takes a specification and writes his/her very modular piece of code to accomplish a small task == code monkey.
Now, this isn't to say that all programmers aren't engineers,...obviously many of the managers do know how to program but are indeed engineers.
In "traditional" engineering fields, an "engineer" usually refers to someone with a degree in some engineering field (not including software but including Computer engineering which at my college were the guys who actually designed chips and architectures). Even still, there is a difference between "being" and engineer and having the TITLE engineer. To use the title of engineer, you have to pass the Professional Engineer (PE) exam, of which I am completely certain that 99.99% of CS majors would fail with quite a bit of flair.
To make matters even more confusing, there is a degree known as an "Engineer's Degree". It is pretty rare, but falls somewhere between a Master's Degree and a P.H.D. People with this degree would say they have a Masters in Mechanical Engineering AND the degree of Electical Engineer. (as an example.)
"It takes considerable knowledge just to realize the extent of your own ignorance." - Thomas Sowell
I submit that there are four catagories of software professionals who actively work on code, and whom may be considered programers, one of which may be considered an engineer.
I have read earlier notes talking about programers, scientists, and engineers, which seems to miss the mark as well.
The first group ranges from the script kiddy through the technical school trained programmer. These are people who may, or may not understand the concepts behind good software design, but generally do not create their own tools, or the libraries of functions they use. This is neither good nor bad. Most could not tell you wether they use a top-down, or bottom-up development methodology.
The next group are the people who have developed dynamic libraries of their own software that they use to solve software problems, and who have ported that library of functions across multiple development languages as they need them. They do understand their own libraries, but may mistakenly believe that their functions are better than the equivalent functions built into the tools that they use. Sometimes they are right, but they have no evidence of that. They also make some of their own tools. These people may or may not know how to build good test cases for the software they develop. These programing professionals are generally very good at what they do. However I would not consider them to be Engineers.
Next is the Research and Development group. These people are often working on the very edge of software development. These are the first people who understand how to use mathematics to prove or disprove the validity of the functions they develop or use. This is akin to one of the expectations of an engineer, that structural engineers do their best to overdesigning the structures they work on compared to the expected stresses those structures will withstand. At the same time these people are generally not working in a field that seeks engineering certifications. You will find these people working in university post graduate programs, and some larger software development houses building the tools that the rest of us use.
The group that I would consider closest to the Engineer title are those programers who take the time to review the libraries they use, are capable of pulling the source code for the software tools they use, and repair/replace functions that almost work, feeding back those fixes to the people developing those tools. These people will stand behind the softare they develop, and are able to explain situations where their software will break.
Software development is both an Art and a Science. A programmer who "codes with the flow" is more likely to be an Artist than a Scientist. Someone who uses analytical tools to determine what needs to be written, and what can be re-used is more likely to be a scientist than an artist. There is room for both, in fact for most companies there is more of a demand for the Artist than the Scientist. Artists are less likely to look at a problem and say that it will take x months to write this, but are more likely to work the extra hours per week to complete the project in x-n months.
Then again that's just my opinion.
-Rusty
You never know...
Speaking as a licensed engineer this could be a very nice thing for software people.
There are very few people that would argue the point that theres alot !!!! of garbage code out there these days. The arguments range from marketing shoving things out the door, had to ship, management not having a clue. If you had licensed software engineers it wouldnt matter. Someone would have to put their license and personal wealth on the line and certify the project. Imagine if bill gates had to personally pay for the damages cause by every windows security hole.
If your a software engineer and are tired of seeing bullshit go out the door and having to say yeah that was mine. Having a real certification process that means youre more than a Microsoft Sales rep could very well be the ticket to gaining a little control of your professional work.
I think we're missing something here. True-blue engineers design things, but they don't build them (especially in the case of mechanical engineers). They don't physically build the bridge or building...that is left to the skilled craftmen. It's the same with programming--system engineers should design large software systems, and code monkeys should build them. Sure, the system engineer should be able to create prototypes and test them, but they shouldn't be responsible for building it. A code monkey should be the skilled craftsman of the industry...give them a set of specs, and let them build it.
These types of articles and discussions always worry me because I'm self-taught programmer. I always begin to feel like I'm not worthy to code because I don't have a degree in CS (mine is in philosophy). But I don't try to pass myself off as an engineer. I like to think of myself as a skilled craftsman--I have my toolbox, and I know my tools well. Perhaps some of the problems come from management...they see we code monkeys have toolboxes, and perhaps they see a hammer, and therefore assume any problem is a nail...
Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
at programming.
I work mostly with genuine engineers. They are very smart. They know a lot about the domain that I do not and generally are mathematically outstanding.
On the other hand, they know F*** all about distributed systems, when to go OO and when not to, class design, any modern toolkit or libraries, when to spend time on optimizations. For the most part they think the STL is some form of a disease and have lately taken to the irritating habit of calling anything that involves http a web service....Grrrrr.
But they are cool, smart and can be sued for things I can not. It all works out.
The government is the worst at confusing these two. In the government (and thus with contractors) you often have staff full of people with the title of "systems engineer" when they obviously do not have an inkling of what that means. "Process" is just another word to them and you certainly cannot count on their sheer specialized technical knowledge in an area like programming. The result is tons of money thrown at an unworkable system (unworkable because of the circumstances).
An engineer utilizes mathmatically based planning and testing methods and is implementation agnostic. A programmer takes this higher level architecture/function map and works out the actual implementation details. Both work together and it is actually helpful for a bit of overlap. There are too many things that a programmer should never have to be concerned about detail wise that the engineer is responsible for and vice versa. I personally think that regardless of what people's titles are there is a shortage of engineers and a shortage of programmers. What we have are vagabonds that do not know what they are and what is required of them. This of course is directly attributed to a lack of competent management AND leadership.
I think it is both amusing and depressing how in my little contracting arena we will get someone who is from the commercial side of the house and he/she is like a hired prize fighter that we then encase in cement and send into the ring. They are used to being in actual TEAMS and not disorganized gaggles of pretty boy, wanna be politicians. They are used to enforcing quality over policy and figure that any professional software development organization should already have a system in place of proper tools and processes to facilitate the output of goods and services that compete on quality. However, they soon learn a harsh lesson... contracting is only about bullshit artists and snake-oil salesmen. Much like many court cases recently it has less to do with the facts and everything to do with the sharpness of the forked tongues.
I therefore am skeptic of what can possibly come out of a state or federal governmental body that defines the difference between an engineer and a programmer.
Dude, that's MCSE, not MSCE. (Microsoft Certified Software Engineer, rather than MicroSoft Certified Engineer). So, the guy would not be confused with a Civil Engineer, or a Chemical Engineer, but rather with a Sandcastle Engineer or a Sewer Engineer, hehe...
Tau Beta Pi, the Engineering Honor Society, has struggled with this question as well. What disciplines should be considered "engineering?" At last year's convention, we approved (pending ratification due on Tuesday) following the guidelines set forth in ABET's criteria for Engineering programs. ABET (Accreditation Board for Engineering and Technology) accredits four types of programs -- engineering, engineering technology, computer science, and applied math. 's move was to limit membership to those programs which fall in the domain of the first.
ABET recently added accreditation guidelines for Software Engineering, but as yet, no such programs have yet been accredited. (That is, their pop-up menu for "search by program" doesn't list Software Engineering.) ABET also accredits Computer Engineering, which is usually about hardware, though this includes some programs with "Computer Science" in their names (such as Berkeley's EECS program).
The requirements for Software Engineering are:
1. Curriculum
The curriculum must provide both breadth and depth across the range of engineering and computer science topics implied by the title and objectives of the program. The program must demonstrate that graduates have: the ability to analyze, design, verify, validate, implement, apply, and maintain software systems; the ability to appropriately apply discrete mathematics, probability and statistics, and relevant topics in computer science and supporting disciplines to complex software systems; and the ability to work in one or more significant application domains.
2. Faculty
The program shall demonstrate that those faculty teaching core software engineering material have practical software engineering experience.
This is the sense of "engineering" which is concerned with the profession of engineering -- who can legally say they're an engineer, which is what the Texas legislature is talking about. But the word "engineer" goes beyond accreditation and licensing. Are the only teachers in the world people who have a license to teach? Are you out of line by calling Hippocrates a physician and doctor because he didn't have an M.D.? Of course not.
The second sense of "engineer" is someone who integrates principles of math and science with real-world constraints in the design, creation, or maintenance of some in-context solution. Thus, studying the physical properties of electricity and building a circuit isn't engineering, it's science. But building such a circuit under performance, economic, and other constraints is engineering.
Algorithm development is thus mathematical engineering. When Edsgar Dijkstra first published a shortest path algorithm and provided a complexity bound (the first version was O(n^3) I've heard), mathematicians said "So what? Just list all possible paths and pick the shortest one." Which is, of course, impractical for any large system.
Software Engineers work with performance constraints, economic constraints, time constraints, constraints imposed by existing systems, security constraints, constraints of readability and maintainability, etc. The code you write for a homework assignment which is graded purely on its functional properties isn't (likely) an engineered program. But programs you download (especially large ones) have been engineered (or they suck).
Engineering doesn't have to be technical, though. City planners can be said to be Social Engineers. Some people claim the title of Financial Engineer. The folks at Kodak are Image Engineers. Gutenberg was one of the world's first Publishing Engineer.
"Engineering," like "guardian" has a legal definition and a common sense definition. Engineering, in English, is an approach and a mindset.
Ceci n'est pas une signature.
And what would be wrong with that? Especially for applications like finance, defense, or medicine where there is no room for the sort of errors common in consumer-level software. I wouldn't want to be the first person killed by a double free in the heart-lung machine I'm hooked up to.
Personally, I think in no way is programming a kind of engineering. I perceive the usual job designation of "Software Engineer" to be one of systems programming, i.e., lower-level functionality that might be written in C or Perl or maybe assembly language, often for a general purpose or multipurpose use. OTOH, "Application Programmers" are those who write software that utilizes lower-level functionality to create an application for a specific purpose, i.e., "keep an inventory of our widgets".
In both of these cases, you are writing software that utilizes tools created from a lower-level tool. So maybe those who create those base tools-- compilers, assemblers, and maybe kernel hackers-- are real "software engineers". The rest of us are "programmers" because we are using tools that abstract at least one level up from the base level of functionality of machine code.
I am not hung up on not being considered part of an "engineering" discipline-- I see myself as an "Information Technologist", where my job is to apply the technology to real-world situations. Sounds like engineering, but I can understand why "software engineering" isn't yet accepted as a canonical engineering discipline: it's not mature. There is no single method that has been determined to create solid software. When that day comes, then perhaps programming/software engineering will be taken more seriously.
Always look on the briight side of life! (whistle, whistle)
A programmer is an engineer if and only if she has a degree in engineering and she can communicate with near fluency in English. Communication is important because coding requires that you comment your work in English. Far too many Chinese can chicken-scratch a few lines of code, but they cannot document what they wrote. When the occasional Chinese actually documents his code, his documentation is so poor that virtually no one understands what he wrote.
A programmer is someone who is able to solve a given business problem, using creativity, and their knowledge of algorithms and data structures.
An Engineer designs solutions that, within a range of certainty will not fail. Note that this range is never achieving 100% Most engineers that have to solve problems such as bridge construction can vouch for this, as can software engineers.
A Scientist searches for and evaluates new solutions to problems in the hopes of find the one true solution to a problem. This is why they use the scientific method.
Engineers dont use the scientific method, it takes too much time. But they dont have a set of rules and strict limits that they work with either. What they primarily work with is methmatical models which indicate the chance of success/failure of any given design. They are able to be creative, adn suggest approaches which might improve those chances.
Really to be an engineer, I think that what is required mostly is real world experience. The only way to learn how to evaluate a problem is sit down and confront it. That doesn't take book learnin' It takes experience.
Code-Monkey and proud of it. :o)
Engineers spend all their lives "guesstimating" and "near enough is good enough", but programming has to be exact otherwise the program fails.
We are truly approaching a moment of truth on this subject. Speaking as a professional engineer, who knows what it takes to become an engineer and knows the standards you are held to as an engineer, and also as a programmer, I struggle with this issue all the time. The simple answer is, if you want to be an engineer , become one. Engineering is a lot more than having technical knowledge. It's about professional standards and making sure critical issues that involve public safety are dealt with by people that are answerable for their actions. I, for one, want to know that the programmer that worked on the fly-by-wire systems on that Airbus A300 I might be flying on was monitored and licensed by a legitimate professional body regulated by state (provincial) and/or national legislation.
Most programmers aren't engineers. Many may possess good software engineering skills but that's not all it takes to earn the title. If you want the title of Engineer, go study for 4(+) years and learn all the processes required to build a large software project from the ground up.
If you just want to program, then skip the expensive degree.
In the same way that an architect is not a carpenter, an automotive engineer is not the same as the guy down at the shop putting the airbags and 24's on your Land Rover. They use the same tools but there is that added extra that seperates them.
You can program and know nothing of design patterns, algorithmic complexity, or architecture. You might have the greatest mechanic in the world. But would GM put them in charge of the Corvette design team?
I guess the problem is that everybody is coding now, so they think that there is nothing special to what SE's do. Of course when businesses do this, the project doesn't scale, is unmaintainable, awkward, and crashes randomly. Just because I drive to work or live in a house doesn't mean I could build one better than the guys who do it for a living.
What is music when you despise all sound?
I would argue that a programmer becomes a software engineer at the point where they develop methods for exhaustively testing their program for failure, and where they are willing to accept the responsibility and consequences of software failure. Simply kludging a program together and getting it to compile is not software engineering. On the other hand, writing a typesetting system like TeX, developing an exhaustive test suite for it, and making it virtually bug-free is an impressive feat of software engineering.
"It take 9 months to bear a child, no matter how many women you assign to the job."
Why? I'm not an engineer, or a programmer. But, I have worked with a number of licensed engineers, and the operative word here is "licensed". Engineers in the US must first pass a difficult exam to earn their EIT "Engineer In Training", and then after acquiring practical experience, pass another exam to get their PE "Professional Engineer" rating.
To the best of my knowledge, the computer industry does not have anything professional exam approaching the magnitude of the EIT exam, let alone the PE exam. Without a professional qualification of that nature, it's difficult to list computer programming in the ranks of the "learned professions", such as Engineers, Architects, Lawyers, and Physicians. All of whom spend a great deal of money on malpractice or E&O "Errors and Omissions" insurance.
I do not mean to say that there are not professional computer programmers, and that the work that they do is not of a professional nature. It's just that the field of computer programming has not yet attained the status of a profession - and it won't unless there's a means of ranking members of the field. Medicine has doctors and nurses. Law has lawyers and paralegals. Architecture has architects and draftsmen. Computer programers have software engineers and what other posters have referred to as "code-monkeys". When the industry develops a means to test and license the former to differentiate them from the latter, then computer programming will be a profession.
144l. ph34r my 133t l3g4l 5k1lz!
... not a software engineer, programmer, code monkey, etc. with emphasis on the word scientist. it's an important distinction, one which i'm particularly well able to appreciate as i work on my graduate degrees. about 70% of the people in my classes have the words "software engineer" somewhere in their title and after having had to work on group projects with these people, i can guarandamntee that they may be many things, but engineer is certainly not one of them. i'll set my issues with professionalism and technical ability aside for a moment to harp on my major issues: accountability and ethics. being licensed means that you can be held to a certain minimum level of professional ethics (e.g. the acm / ieee joint code of ethics) and discipline. i am sick of being forced to use packages that have disclaimers that essentially say something along the lines of "you indemnify us to the maximum extent under the law for anything that may go wrong, even if it is our fault. you also understand that we make no guarantees that this piece of software will even work, never mind do what we claim it does." personally, i think it would be beautiful if i had the same guarantees when buying software like office that come when i buy a toaster -- i.e. if it doesn't work, i'll get my money back or something that does work.
I worked for many years as a Hardware and QA engineer in the aerospace industry before I became a professional programmer (which Ive now been doing for over 10 years). I've got an engineering degree from Brunel University in London, one of the UK's top engineering universities. In short I know what engineering is, an I've enough experience in the software industry to make a reasonable judgement on the issue. And programming isn't an engineering discipline, its an art. Software develoment though, is engineering.
I took a whole bunch of Electrical Engineering courses (along with CS), it says "Engineer" on my Diploma, but I >feel like I'm currently doing code monkey work.
Am I an engineer because I know how to think like an engineer, a code monkey because that's the kind of work I'm doing, or am I both?
Well, if you give the technical sales support (people who know how to boot up and run the software that the sales rep is selling) the title of "Sales Engineer", you gotta give it to programmers. But I agree, it doesn't seem fair that marketing and liberal arts guys get to call themselves software engineers. Programming really is easy for the most part. Good design is not.
Most programmers would be best off to try to be engineers, but the sad fact is most are in environments that foster hacking... most programmers are hackers at best due to the enviroments they work in But if you find a market analysis, design and plan before program environment, stick with it as that is the future of programming.
On top of the certifications making the claim, programmers do exactly what engineers do....build better tools. I guarentee you there is nothing you can come up with that engineers or programmers produce that cannot be described as a tool for some purpose. (Even video games, viruses, and microsoft products are tools for entertainment, havoc, and well...non-productivity)
My shop does data mining and is often tasked with creating some radically different report to help manage a specific problem area in supply or maintenance chain management.
We are also often given an unreasonably short deadline. Hence, the reason we have posted a sign on our office reading:
"Custom reports and Warp Drive in 30 minutes or less"
I've dirtied my hands writing poetry, for the sake of seduction; that is, for the sake of a useful cause. --Dostoevsky
Professional engineers are licensed by the states/provinces to ensure the public safety. The most grievous programming mistake may put a company out of business but couldn't hurt anyone.
... ;-)
OTOH, Microsoft
If, when I finish my physics degree, I enter the private sector doing a job which is ordinarily done by engineers, and which is always recognised as a type of engineering, would I then be an engineer or not? And if not, aren't you creating a ridiculous usage situation, whereby I am a non-engineer whose vocation is engineering?
It would appear that for many of the people replying to this post, whether or not someone is an "engineer" depends on what their educational background is. In that event, "engineer" is just a title, because we all know that someone's level of education is not a guarantee that they are actually good at what they studied. That is akin to denying anyone without a BFA in music the right to be called a "musician."
I would postulate that an engineer is someone who engages in the act (or art) of engineering on a regular basis. People are what they do, not what their degree says they are.
http://developers.slashdot.org/article.pl?sid=01/1 1/05/1410251&mode=thread
" Is programming like manufacturing, or like physics? We sometimes hear of enormous software projects that are canceled after running years behind schedule. On the other hand, there are software engineering methodologies (inspired by similar methodologies in manufacturing) that claim (or hint at) objective estimation of project complexity and development schedules. With objective schedule estimates, projects should never run late. Are these failed software projects not using proper software engineering, or is there a deeper problem?" Read on for one man's well-argued answer, which casts doubt on most software-delivery predictions, and hits on a few of the famous latecomers."
(It says you really don't want to be held to the same standards as engineers: estimating software schedules, number of remaining bugs, etc. is much harder than building another bridge.)
Context: I'm in my 4th year of Electrical and Computer Engineering at a Canadian university.
As I am getting towards the end of my degree and I'm getting ready to head out into the big world and work, we've started to be taught several ethics courses. Additionally, I have recently received my iron ring - a symbolic (and secret!) ceremony that affirms my commitment to public safety. Through this, I have been picking up the subtleties of a professional designation.
A Professional Engineer, like a Professional Doctor, Nurse, Lawyer, etc., has a deal of responsibility to the public at large. The privilege of being able to build large buildings, for example, comes at the cost of being responsible that the building doesn't fall. Accordingly, Professionals have professional bodies that they are accountable to above and beyond their responsibilities as a normal citizen. The laws are also much harsher on a professional when they don't act in a professional manner.
My main issue with software developers using the title "Engineer" is that the software development industry at large doesn't seem to adhere to the professional conduct demanded of a professional. Just take a look at the standard EULA as an example - imagine if the designers of bridges did a similar thing? While I have no qualms about the software developer "engineering" in the sense of creating, I wouldn't call a first aider a "doctor", despite the fact they do the same thing.
From my perspective, the ideal solution would be to integrate the software developing business into the Engineering profession. In addition to having a professional title, this would be a healthy step towards maturity of an industry that is plagued by antitrust, among other things. This could help bring respect and dignity to the software developer - in addition to more money - which I believe is what people really want.
Anyways, until such time as this happens, I'm not comfortable with the use of "Engineer" by software developers. In Canada, the term "Engineer" is actually copyrighted to the Canadian Council of Professional Engineers - a few years ago, there was actually a conflict with a University that provided an unaccredited course called "Software Engineering", claiming academic freedom. It resulted in a mess, including the temporary withdrawal of accreditation to the engineering programs at the university.
Which was a bit counter-productive.
-legolas
The Texas Engineering Practice Act is and has always been a rediculous and excessive turf-grabbing boondogle benefiting the Texas Board of Professional Engineers.
I have a Ph.D. in Electrical Engineering from the University of Texas, but because I refused to be extorted to pay a fee and cram for the exam (which covers an archaic undergraduate curriculum which had little or nothing to do with my specialization), I can't legally call myself an engineer in this state.
If you want to license professional engineers, fine, then tell them to put "licensed professional engineer" on their business cards, but don't tell me I can't call myself an engineer. This is nothing but politics.
Is the class half empty or half full?
Pessimist:
half empty
Optimist:
half full
Engineer:
The glass has twice the volume as is necessary to contain the liquid. This might be advantageous to the prevention of spillage if said glass was to be used to transport the liguid. However a more efficient solution might be to produce the glass in the actual size necessary to contain the liquid and then utilize a lid to prevent spillage. In order to facilitate my provision of a clearer answer a requirements document will need to be written for the glass's containment of the liquid and provided to me when it has been completed and properly peer reviewed, at which time I will complete my analysis on the risk, benefits, and costs of both potential solutions
Code Monkey:
Where's the bong?
He is a scientist. I earned my BS in comptuer science, and worked my butt of doing it. Does that give me the right to the term engineer? No, it makes me a scientist.
scientist:
n : a person with advanced knowledge of one of more sciences [syn: man of science]
I earned the right to refer to myself as a scientist. There is nothing ignoble about the term scientist. Although our discipline often overlaps with engineering disciplines (computer engineering) we are not engineers. A chemist (also a scientist obviously) may spend his life working on advanced computer models, but he does not claim to be an engineer and has no claim to the title. As computer scientist, neither do we.
I guess now the question is (from my viewpoint): Are Engineers anything more than "specialized mathematicians," or is there something that makes them different, that isn't based on mathematics? If not, then Engineers we all be. :-)
Perhaps one could say that a programmer applies a degree of engineering when it comes to how to construct a class (if this is even left up to them), but an 'engineer' (at least in my opinion), requires knowledge and appreciation of the bigger picture - the engineer is the one that takes all variables into consideration, and comes up a best-fit solution - it's the programmer's responsibility to produce that solution (much the way that carpenters, bricklayers, masons, and steelworkers would construct a building designed by an architect).
I'd say, at least in some cases, programmers are to software engineering as graphic artists are to effective web design. As much as those involved would like to flatter themselves into thinking otherwise, I think the results often speak for themselves.
Like Cheetos are food.
I'm absolutely sick of hearing people's arguments about how only ABET (or whatever professional organization) can bestow the use of "engineer" to someone. I won't waste your time by quoting various dictionaries and such, however I'm pretty sure everyone will agree that the english word "engineer" wasn't invented by a current professional organization. The word "engineer" has been around for many hundreds of years. How long as ABET been around? What about, for example, locomotive engineers, flight engineers, et al.? How does ABET have the right to determine the use of titles in domains outside of its own?! AFAIK, it has nothing to do with, for example, software development (software engineer).
And I don't buy that argument about public interest. "Doctors" aren't limited to AMA certified members (e.g. Ph.D.) and somehow people don't line up for medical care at random "Doctors". If ABET wants to legally prevent people from calling themselves "civil engineer", that's fine in my book just like I support the use of "medical doctor" for only AMA certified people.
I also won't buy any argument like "but X legal authority said so" (We all know that judges, law-making bodies, et al are always right.) until an organization is formed to standardize/dictate the use of english language... and then I MIGHT.
Again, note that I have no objection to restriction of a SPECIFC TITLE such as "civil engineer".
If anyone can hijack words, maybe I should hijack "person". From here on out, you must be certified by ME to claim to be a person. Sound ridiculous to you? Probably not as ridiculous as this damn "engineer" thing is to me.
Rucker
Rucker
At least from one perspective. At the universities I have been to, programming is usually offered as a Computer Science degree, whereas Computer Engineering refers to hardware design. In my opinion, it would generally be more accurate to label the COmputer Science degree program as Software Engineering, as the vast majority of people in the program are essentially learning how to take existing algorithms and methods and apply them to specific problems - this, in my view, is engineering. A scientist would be researching new algorithms, creating new languages, and generally increasing knowledge about the field. I think most people would agree that this is not what most programming degrees are about.
Now, the article is more about a professional title as opposed to what the job involves. From this point of view, I don't think that most programmers should be considered professional engineers. Just because you perform engineering work doesn't make you a professional engineer - that invlolves more professional responsibility than most programmers take. It isn't even an issue so much of education - I could go get a Ph.D. in civil engineering and this wouldn't allow me to call myself a professional engineer. The title of professional engineer connotes not only the engineering education required, but also that the person has experience in the field and has shown that they posess the professional responsibility to be an engineer. If software engineers want to be professional engineers, they need to form a national or international organization with standardized tests and a way of evaluating prospective engineers on their professionalism. Also, if they want to be professional engineers, they need to be willing to take full, personal responsibility for their work - something that most "software engineers" I have dealt with are unwilling to do.
So, in my opinion, while "software engineers" really are engineers as far as the kind of work they do, they are not professional engineers in terms of credibility and personal responsibility. This is not to say that software engineers are not deserving of the title (at least some of them), just that if they want to be regarded as professional engineers they need to find a way to ensure that anyone with the professional title of "software engineer" meets a certain level of capability and can be relied upon by people outside the field to have the necessary knowledge and responsibility to get the job they are hired for done.
Professional Engineers of Ontario
Yup, I proudly call myself an engineer. What gives me the right to do that? Is my experience as a sanitation engineer, a customer service engineer or something else like that? Or maybe I dabble in software code, and I have the title of engineer in my company.
Or how about this. I went to a 4-year accredited university, where I earned my Bachelor of Science in Engineering (Mechanical Engineering); from the University of Michigan actually. Or maybe I can call myself an engineer an engineer because I sspent 5++ years doing research while earning my Ph.D. in mechanical engineering from UCSD.
Does my business card say engineer? No, I am a "Member of the Technical Staff" at an aerospace company; I'm effectively a rocket engineer. Mostly, we're referred to as analysts.
So, are programmers engineers? Not in the same way I'm an engineer. Go to an accredited 4-year university and earn your degree in engineering (mechanical, chemical, nuclear, nukular, electrical, and yes, even computer or computer science), then you can call yourself an engineer. These "code monkeys" who go around calling themselves engineers cheapen the term MUCH more than any sanitation engineer or customer service engineer ever did; because employees knew that it was an overt attempt by management to instill them with pride by calling them engineers. The code-monkey types actually BELIEVE they are engineers.
In another sense, we're all engineers if we solve problems. But in that case, I think 90% of employees would be an engineer of some sort. I get the sense that "software engineers" want to draw the line at everyone less technical than they are. How noble.
If you design programs, you are an engineer. If you write programs that others have designed, you are a skilled tradesman. You can be both as well.
I think there are fewer people who can design a complex program well than there are people who can build an already designed program, or design and build a simple program. There are plenty of people who know enough architecture, carpentery, and plumbing to build you a house without the help of an architect or engineer. Fewer could build you a hotel. None of them could build you a skyscraper.
- None can love freedom heartily, but good men; the rest love not freedom, but license. -- John Milton
Actually, this is a question that Texas is not the first to pose. The ACM has already asked it and they have decided "No, not yet." Why? Because being an engineer involves a set of well-defined standards for what it means to be an engineer and because of the broadness of computer science, there is no well defined way to admit someone into the club, so to speak. Doctors and lawyers and other professionals have exams. I actually work with a professor that is trying to get a subset of computer scientists recognized as engineering professionals - design engineers. But right now, the questions has no simple answer.
Engineers are a unique breed. Programmers are another breed. If you could merge the engineering process with a programming curriculum that embraces the engineering process, you could get the best of both worlds.
IT doesn't matter...
I have always called myself a technologist... I argue with REAL engineers, and dismiss coders/IT types as lacking enough perspective to understand the issues they raise when they refuse to code something 'right', but in a way that is convienent to them... to me, coders are artists, because they don't really follow a particular science to thier methods, there is a great deal of 'artistic' license used to solve a problem...
is one who drives a thousand tons of locomotive.
At least according to my grandfather, a (retired) Burlington Northern railroad engineer. Since the tough old s.o.b. can probably still kick my can, I've never really tried to debate the subject with him.
The difference between an engineer and a technician is an engineer can do the math to back up his design, while a technician relies on seat-of-the-pants.
I.e. an engineer knows calculus and how to apply it to design, and a technician doesn't.
Well, M$ seems to think so. (MCSE = Micro$oft Certified Software Engineer).
GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
A craftsman learned some skills and knows how to use them on similar tasks.
An Engineer is able to scale into unknown territory.
So basically, if you are a programmer and you are able to scale into a project that is 100 times bigger than what you have ever done before, successfully, you're an engineer. If you can't scale that much, you're not.
If you look at hi-tech companies, everyone is an enginner.
Very few really have a engineering diploma from any university.
In Canada, there is a Computer and information engineering degree available at various universities. It is a specialization of the electical engineering diploma. Depending on the university it is a 2nd-3rd years specialization or a complete program from day 1.
So yes, In my case, I am an software engineer, and a real one.
The rest be damned
-G-
Aren't Engineers the guys who drive Trains? I don't drive a train, but I do technical stuff as much as a guy who builds bridges or as one who plays with phyiscal NAND/OR gates.
Perhaps there should be, but in the case of Texas, the title denotes a status, and legal requirements have been met. Until Texas develops an exam for Software Developers to become Software Engineers, they should not be called that.
PS- My business card reads: Sr. Web Application Developer (I'm also in MA).
III.IIVIVIXIIVIVIIIVVIIIIXVIIIXIIIIIIIIVIIIIVVIII
No, I am not an engineer, I am a cunning linquist. :D
and OF COURSE i'm also an engineer - that's all that programming is about
Comment removed based on user account deletion
I would have to equate the difference between programmers and software engineers to the difference between carpenters and architects.
I have a 4 year + co-op degree in computer engineering, and that is definitely NOT software engineering, though I had a couple credits in that too. Computer engineering is EE with a couple courses cut out, but some software courses added in.
What I find myself doing now is what I would call software engineering. In a 55 hour week, I spend about 15 hours of that actually programming, and that's usually just really complicated parts of applications that I don't want our fresh-out-of-school programmers to have to cut their teeth on. The other 40 hours are spent being what I call a "software architect". That is, I design the system's data flow, storage structure, hardware, user interfaces, and most importantly, I address the "what if" issues. Then I pass it on to other programmers to handle the implementation.
I spend a lot of time considering what could go wrong in the system, and specifying exactly what has to happen to recover. I ask the customer lots of these "what if" questions to make sure they understand the limits of the system. I try to understand how they are going to use the system, and I change the design to suit them.
I find that your basic programmer doesn't worry about these issues... they seem to always consider the best case, and ignore the issues of memory constraints, malformed data, malicious users, and in many cases, mechanical failure in the actual system. That's the difference between a programmer and an engineer.
If civil engineers build bridges to stand up under best case scenarios, the first big wind gust would knock them down. I think the engineer's job is to be the pessimist.
"I have never let my schooling interfere with my education." - Mark Twain
Engineers have a notion called professional responsibility. M$ is proof that this does not apply to a large part of the software industry.
This is not a signature.
Yes and No.
Engineers are not asked to alter the foundation of a building once its halfway built but at the same time we must blueprint, design, and build a product. I say this but many programmers do not go through the blueprint and design phase whice often times cause major problems down the road. I am not putting all the blame on the programmer for this because many companies do not want to pay for a insite & architecture phase of projects. So instead of paying for the insite phase many end up paying for last minute chages and rewrites of fuctionality that just doesnt hit the mark even if the code is sound.
e=mc2
an engineer is someone who solves a problem, hence fuel-transfer engineer (gas-jockey), domestic engineer (housewife), software engineer (code monkey).
a professional engineer if someone who utilizes physics and natural sciences to invent, recreate, or alter the physical world by physical means. with the title of professional engineer comes the responsibility that what you create cannot harm the public, corportations, and other end-users.
in Canada professional engineers take an oath similar to the hypocratic oath that doctor take in the US. by accepting the responsibility and the liability we bind each other symbolically by wearing an iron ring at all times.
as you can tell i take professional engineering very seriously and get quite offended when improper use is performed. there are lots of engineers but very few professional engineers.
my $0.02
Frankly, I'm a network engineer because I seem to the only person in the building who greps how ethernet switches operate, low-level network services operate, and can build, configure, and maintain all of the mission critical IT functions in the building.
And yes, I do it all from scratch using linux where appropriate.
And no, I have no intentions of going back to school at this point, I'm earning a comfortable living with a wife and kid on the way.
I think I rightly deserve my title as Senior Network Engineer. I've put in a lot of work to costantly keep learning new technologies and perfect my techniques.
Do I have a lot of formal pieces of paper? No. Can I drag you bodily into my datacenter and show you what I've been up to? Yes.
Having interviewed countless IT folks to be my assistant, I can tell you there are a lot of folks that look great on paper, but they really don't know their stuff.
Perhaps we should really work on a way of judging people based on what they have actually done.
"Learning is not compulsory... neither is survival."
--Dr.W.Edwards Deming
There are certainly some programmers that wouldn't know engineering if it beat them up in an alley. And there are some programmers for which "engineer" is an understatement.
thoughts?
Hundreds of things were "engineered" by people who were not technically "engineers" during the Industrial Revolution. People would have an idea and they would implement it. Today, we just expect anyone who makes something new to have some sort of engineering degree, and when they don't it becomes worthly of the evening news. We are used to the idea that "engineer" [implies] "can build stuff", and we too easily make the incorrect assumption that, "can build stuff" [implies] "engineer".
I think the software project in question has to be evaluated for whether or not it required engineering of some sort to complete it. Did it simply use standard libraries in standard ways? Was some new idea or paradigm used that meant the construction of new classes? Were standard libraries meshed together in an unintended way?
If this is just a question of liability, where do you want the liability to fall? On the person who makes the bricks, or the person who made the wall out of them? In software, things are created to enable the creation of other things, which enable the creation of other things, etc, etc...There is no fine line to be drawn.
It's like asking if you can engineer something with Legos. Can you? Of Course. Despite not engineering the Legos themselves. Does this mean that everything that is built with Legos is engineered? No.
Does the notion that something has been engineered rely on it being done by an "engineer"? No. It depends more on what was done, not the title of the person who did it. If someone without a degree of any kind engineers a piece of software that ends up adversely affecting people, should they escape liability simply because they are not technically an engineer? I don't think so.
Okay, I'm a licensed Mechanical Engineer, so I have my own biases, but I'm also a decent natural coder, so I know how programming goes, too.
I design mechanical systems. I then draw them. The drawings then go to the floor, where our fabricators make them. Now, most of the guys on our floor could come up with the designs themselves. They know how to make things out of steel, and they have an instinct as to how strong things need to be. They don't need me to make things that will work. That's why the practice of engineering in manufacturing fields is not regulated.
With a little bit of practice, our fabricators could draw their designs. What they can't do, without an engineering education, is back them up. They can look at something and say that 1/2" plate is good enough. I can look at something and say that 1/2" plate will have a stress level of 10,000 psi and therefore have a safety factor of 3 under the endurance limit. As an engineer I can work more conceptually than my colleagues, and I can provide documentation to back up my designs.
In my programming, I'm more like our fabricators. I know the tools, and I can get just about anything I want to done, often with excellent design, but I can't back anything up. What that actually means in programming, I don't know. Software doesn't break the way construction materials do. Outside of embedded, we don't see limits on code size or memory usage, or even CPU usage very much anymore, so I don't have to justify those things before coding. If I had a CS degree I could tell you lots of things about algorithm efficiency, and optimization, which is the closest thing I can think of. If I can come up with new algorithms, and mathmatically compare them to existing ones, that would seem to be engineering.
I suppose I could put education, and using it, as a prerequisite. Yes there have been great engineers without an education. Many of them studied enough that they might as well have gone to college, so they really did have an education. Some educated themselves the hard way. Nowadays, >95% of the people who are qualified to call themselves engineers are going to have a college degree or have read as many books as someone with one.
Most programmers just use the tools they have to write programs. If they do large programs, they're going to have to be excellent designers, but not necessarily engineers. Until you're putting that education to work, you're just a designer.
I left a $30k/year school because everything I needed to learn about programming, well, they weren't teaching me.
Hell, they were teaching me crap I had learned when I was 14. I know what a fucking integer is, k thx byebye!
So the economy is teh sux. I decided to snag a degree since I live in the pimple on the ass of the world.
I'm sitting through classes with people who know more than my classmates at yonder expensive institution, yet still couldn't tell a hash from their elbow.
At least they seem to understand the theory behind such advanced concepts as 'arrays' and 'floating point math'. The really sad part is this is a community college, with people more intelligent than an accredited 4-year university.
So what the hell does this have to do with engineering?
It's simple. Engineers frighten people, because they're able to hold twelve hour long conversations about advanced mathematics.
When code monkeys can do that, and also take responsibility for shitty code, they can call themselves engineers.
I'm a programmer. Call me an engineer, and I'll kick your ass to defend the honor of a noble profession.
We *want* to be Engineers, but we're not.
If Engineers are making skyscrapers, programmers are still stacking rocks on top of one another, except the 4gl people who are packing mud between the rocks.
It's Christmas everyday with BitTorrent.
NO. Programmers are not engineers, not by a long shot.
Here, in Quebec, the definition of engineering acts is as follows:
PRACTISE OF THE ENGINEERING PROFESSION
2. Works of the kinds hereinafter described constitute the field of practise of an engineer:
(a) railways, public roads, airports, bridges, viaducts, tunnels and the installations connected with a transport system the cost of which exceeds $3 000;
(b) dams, canals, harbours, lighthouses and all works relating to the improvement, control or utilization of waters;
(c) works of an electrical, mechanical, hydraulic, aeronautical, electronic, thermic, nuclear, metallurgical, geological or mining character and those intended for the utilization of the processes of applied chemistry or physics;
(d) waterworks, sewer, filtration, purification works to dispose of refuse and other works in the field of municipal engineering the cost of which exceeds $1 000;
(e) the foundations, framework and electrical and mechanical systems of buildings the cost of which exceeds $100 000 and of public buildings within the meaning of the Public Buildings Safety Act (chapter S-3);
(f) structures accessory to engineering works and intended to house them;
(g) temporary framework and other temporary works used during the carrying out of works of civil engineering;
(h) soil engineering necessary to elaborate engineering works;
(i) industrial work or equipment involving public or employee safety.
3. The practise of the engineering profession consists in performing for another any of the following acts, when they relate to the works mentioned in section 2:
(a) the giving of consultations and opinions;
(b) the making of measurements, of layouts, the preparation of reports, computations, designs, drawings, plans, specifications;
(c) the inspection or supervision of the works.
4. For the works described in paragraph e of section 2, an engineer may not do any of the acts contemplated in paragraph b of section 3 without the collaboration of an architect unless they relate to an existing building and do not alter its form.
5. Nothing in this Act shall:
(a) affect the rights of a person entitled to practise as an architect, provided that he has the collaboration of an engineer for the works contemplated by paragraph e of section 2, nor shall it prevent him from collaborating with an engineer who requires his services for the other works contemplated by the said section;
(b) affect the rights of the members of the Ordre professionnel des technologues professionnels du Québec or prohibit the execution by a member of that order of any work for which he has been trained in the schools or institutes which give the technical course governed by the Specialized Schools Act (chapter E-10) or in the colleges established pursuant to the General and Vocational Colleges Act (chapter C-29);
(c) deprive members of the Ordre des ingénieurs forestiers du Québec of the right to use the title of forest engineer and to practise their profession within the field reserved to them by an Act of the Legislature;
(d) affect the rights of land surveyors in their legally recognized field;
(e) prevent urbanists, agronomists and professional chemists from practising their profession in the field assigned to them by any law;
(f) prevent any person from practising the profession of chemist, bacteriologist, geologist or physicist or from doing anything related to prospecting for minerals;
(g) affect the rights enjoyed by the members of the Corporation of Master Pipe-Mechanics of Québec and the Corporation of Master Electricians of Québec, under the Acts which govern them;
(h) restrict the normal practise of his art or trade by a mere artisan or skilled workman;
(i) prevent any person from carrying out or supervising works as owner, contra
You are definitely an Engineer if you have taken and passed the tests and won your P. E. license. No question about it, in my state it's the legal definition of "engineer."
The difference in my mind is training. A four year degree in Comp. Sci. teaches you how to write good, working, clean and maintainable code. It should teach you about algorithms, data structures, OSs, and how to integrate your code with an OS to take advantage of what the OS run time libs. have to offer.
The level above that includes training in architecture, and how to design large programs that take 10s, 100s, or 1000s of programmers to implement. This requires methodologies that are not typically taught at the undergrad level, and involves using engineering methods. For large projects, you learn how to break the project down into manageable chunks for programmers, integrate these chunks into subsystems, integrate the subsystems into systems, and get the QA done in a way that actually results in a quality product.
Believe what you want, of course. All I can say is I'm the only person I know who has delivered not one but two multi-year, small team software projects (real-time machine control) under schedule and under budget. When an actual engineer gets to run the project from start to finish relatively unhindered, this can, in fact, happen - I'm living proof.
And yes, I am a P. E.
If the garbage man is a "sanitary engineer" then programmers can be engineers too.
$G
-- $G
Some people here said, the sw engineering discipline is still immature - that is, for the most part, today, correct - not because we lack the methodologies to make software engineering a true engineering discipline but because a lot of companies choose not to adopt these processes as part of their development paradigm, and do not foster these processes in the company.
Such companies usually have smaller requirements that do not need MDA to develop good software so maybe they can get away with only using pieces of the MDA to do their software but not all of the processess specified in it, or maybe do away with it altogether and just kind of drive their entire development process based on a data model alone (e.g. in case of e-business applications..).
While this may be sufficient for the whole lot out there, it is definitely not helping software engineering become a true engineering discipline, which is precisely why there are no true state-mandated software engineering certifications, etc etc.
It all eventually will boil down to designing models , which are platform, vendor neutral, if you wish to formalize sw engineering as a discipline. It seems that is where we're headed. It won't however happen unless everyone decides to participate, force everyone to use these tools/methodologies....
But , give or take another 10-20 years, I am pretty sure we'll get there, massively... then software engineers will become just like anyone else
'A lie if repeated often enough, becomes the truth.' - Goebbels
Programming is a lot closer to doing formal logic - such as many philosophers do - than mathematics - such as most fields of engineering apply to their tasks. So let's use the most accurate name (surely any good engineer or philosopher would want to use the most accurate name - we're not talking marketing or "communications" here). It's computer philosophy.
/.ers!
Sheesh, you'd think this would be obvious to
"with their freedom lost all virtue lose" - Milton
In B.C. canada, you can now get an eng status as Computer Science Eng. The point? I dont know. Legislation about to be passed through the B.C. government makes the association of professional engineers all but useless as people are no longer required to be a certified engineer under provincial law..
They have handled this by making employers responsible for hiring qualified staff. If someone does something wrong the employer is liable. Standard bonding rules for most trades/eng uses still apply.
The question still remains is a programmer an engineer well.. yes and no...
As a programmer myself, some parts of my job i would consider engineering and some arent.
Example
In web development:
Engineering would be designing a web applications flow/data/in-out structure and the overall requirements of the system.
This would include DBA/UML work as well as various other options including defining specifications for contracts and groupware requirements.
Simple programming would be the implimentation of the above system. Creating the actual code is NOT engineering in my books.
The problem is I know of no programmers who dont do both on a daily basis. Its part of the job making us unique in the world of trades...
The engineering side of the job would not be a full time job, and could not employ enough people. It wouldnt make for a viable career for anyone.
Progamming would make a grunt-like career similar to a laborer/framer on a construction site, while noble and required it doesnt take the experience and/or education that application design does.
Short of making them two distinct careers, which clearly isnt viable in this tech market (a good developer is a jack-of-all-trades) theres no way that the Professional Eng's are gonna be happy calling programmers engineers...
B.C's approach clearly screws the old boys club of the pEng but who really cares... This is the new economy you should be expected to do everything that you are able.. Training, contrary to all the devry ads on tv isnt required for most fields..
Colleges around here are offering 2 year degrees in macromedia web design... 2 years to learn DW and FLASH! and walkin out at the end of the thing not knowing html/js/css etc... Is just fuckin funny and a lil sad. But thats what they think businesses require... and this proliferates to the businesses who then in turn think they need this because it must be hard if it takes two years to teach.. Cmon now.
Least the american market is still results based in this field.
my incoherant $0.02
Now scientists and mathemeticians work with very complex systems all the time. However, most if not all of it is theoretical.
Engineers take that theory and his own experience to build a useful system. This system has to withstand the rigors of the real world. It also has to be done on time, on budget, and actually do its job without killing someone.
A lot of "scientific" achievments in the past century are actually engineering achievments.
Now the point I am trying to make is that programmers are always defining new things. Engineers can't responsibly design systems around parts with unknown properties.
Engineering and most programming endeavors are mutually exclusive. A good engineer can't afford to have an unknown in the process.
Look at the space shuttle. That was real software engineering. They designed the whole system, to do a specific task, within a specific set of parameters. Yes there was programming involved, but in this case the software was only a highly flexible control system in an aerodynamics problem.
Could some 14 year old given enough time and caffiene do the same thing? Probably. Would I trust that software with my life and a 4 billion dollar spacecraft? No. Odds are the kid would not have a grasp of the differential equations, Laplace transforms... ah... engineering school equations leave me now...
"Learning is not compulsory... neither is survival."
--Dr.W.Edwards Deming
Who wants to be an engineer?
A mathematician, a programmer, and an engineer, all university professors, became friends and visited Paris to attend an educational conference.
While there, they accumulated all sorts of hardware and software that they could use as teaching aids. It was during the time of the terrorist bombings in Paris and when they were finished with the conference and returned to the airport, the security guards thought they were bringing suspicious material aboard the aircraft. They were sent back to Paris, found guilty of terrorism and sentenced to die by guillotine.
The mathematician went first. He was asked by the executioner "do you want to look up or down, Monsieur"? "Down", answered the mathematician. "I don't want to watch what's happening". The executioner pulled the cord and the blade stuck. The executioner said: "Monsieur, here in France we have a custom. If the blade she sticks, you are free". The mathematician skipped happily away.
Next came the progrrammer. He was asked "do you want to look up or down, Monsieur"? "Down", answered the programmer. "I don't want to watch what's happening". The executioner pulled the cord and again the blade stuck. The executioner said: "Monsieur, here in France we have a custom. If the blade she sticks, you are free". The programmer also skipped happily away.
Next came the engineer. He also was asked "do you want to look up or down, Monsieur"? The engineer thought a while, and then said "Up. I want to have one last look at the beauty of the sky". The executioner put his hands on the cord and prepared to pull. "Wait a minute" the engineer said. "I think I see the problem".
Kester may have made a point in favor of extending Engineering Certification to IT "engineers". It would act as a protection against the Offshore / H1B threat!
Its an oft quoted fact that the difference in productivity between an expert software developer and a mediocre software developer is about two orders of magnitude. In other words, the expert delivers about 100 times more debugged code per man-hour than the wuss.
In an engineering discipline, this sort of delta in the range of what's considered "acceptable performance" is simply unheard of. An expert Electrical Engineer might deliver 3 to 4 times the correct circuitry designs than what the mediocre EE does.
There a number of classic fields where the performance delta between okay and great is several orders of magnitude: music, painting, literature, photography, etc. That is to say, ART.
There is a great deal of engineering involved in writing computer software, but make no mistake about it: programmers are not engineers; they're artists through and through.
Programmers even get upset at the same kinds of criticism as other artists. (What do you mean you want me to write more comments, indent the code differently, and use descriptive variable names!? That's a little like asking a musician to mix the tracks differently and post-process the vocals.)
--
In fairness, it also depends on whether you're talking about programming in general or programming for a specific language. The skill delta in Visual Basic or Perl coders, for example, is not anywhere close to two orders of magnitude. The language either doesn't allow or pushes folks away from a huge number of bug classes.
The mediocre programmer is still mediocre, but the code is more likely to muddle through the mistakes with less impact on the end result. For example, a mistake with a buffer in C means that you segv (halting the program with no result) with a security risk if its interfacing with an untrusted party. A mistake with a buffer in Perl means that you consume an obscene amount of memory in order to finish the run.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
I mean, given that us aerospace engineering types are always arguing with the physics people over whether or not we are 'rocket scientists,' the code monkeys can stick an engineering title next the entrance to their little cubicles.
But I will still refer to programming as 'technical writing' just to start a brouhaha.
Are writers novelists?
Is everyone who draws a draftsman?
Are all painters artists?
Some programmers are engineers. Some programmers are programmers. Software engineers are a subset of all the programmers. Writing static HTML does not make a programmer an engineer. Writing embedded control software for a factory robot or a massive 3D graphics driver probably does. There's a lot of grey area in the middle. Unless you live in a state with licensing, like Indiana, where nobody's an engineer until they pass the PE exam.
Medical Doctor
Public Engineer
Lawyer
Certified Public Accountant
Registered Nurse
Although titles like these have the skeletons of economic protectionism in their collective closets, they do serve a useful purpose. They help the customer know (a least the baseline of) what they're getting.
Would you let anyone call themselves a "doctor" and hack your body? Then why allow half-trained code-monkeys to hack your software architecture?
"We reject as false the choice between our safety and our ideals." --The American President (20.1.2009)
I actually started off as a EE, and my father is an MSEE. I have a reasonable understanding of what that means.
Software Development is not Engineering, and I'm not certain it can be.
There has been this long struggle in the software development world to apply engineering concepts to programming. Some of these have been successful, but most have not. This engineering focus is what drove the Waterfall development method. Identify requirements, specifications and then start building and arrive with a finished product. This can work if people know exactly what they want up front, or as someone once put it "Writing software from specifications is a lot like walking on water, it's really easy if they're frozen."
Well that doesn't work for software for consumers or business users, and the newer development methodologies keep that in mind. The newer iterative processes seem to take the waterfall approach and break it down into smaller waterfalls, or more like going through a series of locks along the river. Engineer each part, make sure that works then move to the next. Ok, that's been a bit more successful.
Now the latest trend is one of Agile Development(think XP). The reality being you can't really know what the whole system will look like until you get further down the development path so just take what you can as you go along. That has it's own share of problems, but it's more flexible to changing user requirements.
I once heard someone explain the problem of Software Development like this...
Engineers are hired to design a bridge. They ask where the bridge will sit, how many cars and trucks should it be capable of moving and so forth. Then they study the location and create models to understand how strong the bridge should be to handle the job.
Software on the other hand is a bit more nebulous. You ask where it will be used, and you get something of an answer. You ask how many users will use it, and you get a wild guess. You ask how it will be used, and they sort of know. It's a lot like trying to design a railroad bridge to go over the Missouri River only to find out that the endusers have tried to deploy it across the Grand Canyon and now want to land 747's on it.
Or as someone else said... "Software has to adapt to change. That's why we call it software and not hardware."
In many ways Software Development is more difficult than Engineering.
Everyone knows what horror it would bring if sanitation engineers stopped collecting the garbage, and with the things the housewifee does for me, hell, I'll call her anything she wants me to.
Now what the heck have you done for me lately?
as much engineers as carpenters are.
There is a current trend of people calling themselves engineers when, in actuality, they are not, technically. Many projects which involve life and death consequences, such as power systems, bridges, etc. require a "real" engineer, one who has an engineering degree from an ABET accredited engineering program. Many times the project will even require a certified engineer, a Professional Engineer, PE. This is not unlike being licensed to be a doctor or lawyer. I can't just walk in off of the street and say that I'm a doctor and have the authority to practice medicine just because I've taken a few CPR classes, even though I may know as much as a licensed doctor. It's all about the credentials for liability purposes. The same should go for the engineering profession.
Not to sound elitist, but engineers are held to higher standards over run of the mill programmers for these reasons. Having said this, I'm a computer engineer and have a degree from an ABET accredited engineering program and I'd wager to say that there are MANY people who are much better programmers than I. I have no problem with computer science people or even self taught people being great programmers, what I do have a problem with is someone saying they are something which they are not.
I would like to mention something that became prevalent, and I don't know if it's becoming more or less so, but there's a heck of a lot of Title Inflation for job titles out there. If a firm doesn't have the cash or benefits, it can try to dream up impressive titles, and "engineer" is one of the favorite buzzwords to add.
Before considering the programmer vs. Software Engineer aspect of this discussion, I would like to shoehorn-in another title for comparison purposes: Computer Scientist. Who should earn or gets to use this title? From my experience, someone (typically Ph.D. or similar back
ground), who knows the math behind the CS, has expertise in one or more fields, and can either provide rigorous proofs of the mathematical relationships in computer problems or representations, or analyze or provide original insights into difficult or complex CS problems). I have met some who don't rise to this level with "scientist" in the computing position titles.
Software Engineers: My understanding of this term relates to people who understand the interrelationships that occur in large "complex" software systems (500k or 1M Lines of code and up), and the tasking and scheduling issues that are related to the completion of such projects on time, and on budget. Additionally, SEs have a strong familiarity with related CS issues, including, formal methods, discrete math / set theory / methods of formal proof, and a familiarity with contemporary software development issues.
Very, very few of the firms and individuals using the SE title have truly rigorous backgrounds in the mathematics or substance behind the relationships of aspects of computing models, or complex software systems. The term is perhaps more of a misnomer in the majority of cases, and only in fewer cases might it be mistaken for a software-based equivalent of EE or PE. The MCSE case is an excellent one where no such likening should be performed.
Programmers: Program, with the equivalent background and experience and depth-of-knowlege, of a hobbyist, B.S. C.S. graduate, or M.S. graduate, as well as knowledge in multiple technical, CS-related areas. Typically Ph.D.s are not hired to program, per se, but may be involved in aspects that demonstrate new techniques or innovations.
Ken Thompson, of Unix fame, and Reflections on Trusting Trust (http://www.acm.org/classics/sep95/
), also indicated that he listed himself as "programmer" on his tax returns. Here is an example of an individual who could describe himself as he wished : programmer, SE, or computer scientist, without being subject to challenge.
Some of my papers (web address below), address some issues of ethics in sofware development, as well as licensing in software fields. Barbers and hairdressers have licensing requirements and standards to which they are held. So do those in many fields. In Computer Science and related areas, the standard seems to be how much liability any firm in willing to accept or mitigate, based on the quality of the people they can hire, their processes that are in place, and the salaries that they offer. This has substituted (for better or worse) for any rigorous standard.
I won't get into it here, and many of you know that the more pressures you put on local employers when it comes to programmers / coders / SEs, the more they may try to hire outside the US, or get around such enforcement mechanisms. This leads us right into the whole issues of licensing of software professionals and that can - of - worms.
I think that a few trends have led to the situation of title inflation and loose utilization of the term "engineer." One is that software development sloppiness, code size, market forces, and relatively loose software liability laws have created an environment where companies are relatively comfortable producing larger and more complex bodies of software with lower reliability than should often be produced. To do this, larger sets of people are required than to produce smaller, well-designed, more limit
I'm going to be an engineer, or atleast, thats what my degree title states. Bachelor of Engineering in Computing, BEng Computing and I'm looking at working as a programmer after this. I wonder if this would apply in texas, im presuming that my degree would be a recognized qualification there.
I dont know who said it, but it went something like this:
"If buildings were engineered the way software is written, the first woodpecker that came along would destroy civilization".
I'm a programmer. I used to do mechanical engeering (aerospace). 99% of programming is not even close to engineering. Its more like art. Granted some of it is engineered...
-- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
Here in Michigan the title "Professional Engineer" has a legal significance. The term engineer can and is bandied about however anyone wants. Who cares? Everyone knows that if you want a P.E. to do something, look for P.E. on the business card. Likewise, Customer Support Engineer is not a "real" engineer, but hey, who's it hurting? Someone with an engineering degree may not be a P.E., but then it doesn't really matter. That UofM diploma carries more weight than UofKilleen+P.E. Heck, we even have "engineering technology" graduates that aren't engineers (engineering technology isn't engineering!) that call themselves engineers. BUT, they don't misrepresent themselves as P.E.'s. I'm an engineer in the auto industry. I don't feel hurt or threatened when posers call themselves engineer.
When computers were first being made, they were designed by people who had a background in mechanical and electrical engineering, simply just so they could get the darn things built.
Later on, when computers became versatile enough to execute arbitrary code, do you think they hired mechanical or electrical engineers then? No, they hired mathemeticians. A computer program, when you look at it in its basic form, is just an extremely long, complicated, and interactive algorithm. While electrical and mechanical engineers need to know a lot of math, a pure mathemetician is obviously the best person for the job.
I do admit that in modern times this situation has changed. With some software projects involving hundreds of people and taking years to complete, it's obvious that more than just an mathemetician is needed. Specifications, design plans, bug tracking, all of that. However, most amount of the "software engineers" out there are just a new and different type of mathemetician. Those who really do spend their time creating specifications and design plans are not really "software engineers"; a better way to say it would probably be "software architect".
Consider the design of a building; an architect would decide how it would look like on the outside, the general floor plan for inside the building, the landscape around the building, etc. etc., and while they at least have to pay attention to things like making sure the building they designed can stand up for itself, they don't have to verify it either. Then, an actual engineer or team of engineers get together, and based on the properties of well known and reliable building materials, they make certain that the building will stand. Then at last, the construction crew comes along and builds it.
The problem with software is that it's not done in the same order. First the "architect" decides how the program should function, and creates a list of features wanted. Then, the "construction crew" creates all the pieces of code. Then at last, they stick all the pieces together, and only then do the "engineers" try and calculate it all out to make sure it works right. Eventually they get something that seems like it won't fall in on itself, and they tell the customer that it's done. The problem is that instead of using known and verifiable building materials like an engineer working on a building, the materials used to create have usually just been created on the spot, and cannot always be fully verified and tested, as opposed to building materials such as steel beams, which can be tested and verified to support a weight of X metric tons or whatever.
Until such a time exists where software can and is tested to such an extreme length that it can be considered to have the reliability of a steel beam, a software "engineer" by my definition is just someone who certifies software as ready for release because they can't find any more bugs... not because they can prove that there aren't any. In fact, it has been mathematically proven that it is impossible to prove that all programs can be proven to work. I don't want to go into it now but it has to do with Godel's Theorem and the improvability of certain systems of axioms.
Disclaimer: I am a computer science student at a state university. I have not worked at a professional software development firm and much of what is written above was extrapolated from stories and hearsay from those who have worked professionally. And while the university I attend has chosen to place computer science in the college of engineering, I personally do recognize the fact that I am studying what is essentially a very specialized form of mathematics and algorithm creation. Some schools I considered attending did not have a college of engineering but had a computer science program in their math department. In addition, I h
---- "A programmer is a person who solves a problem you didn't know you had in a way you don't understand."
... a degreed engineer (ME with a minor in EE) who also has a masters in Computer Science.
However, I work as a Code Monkey, in the Code Monkey Zoo in corporate America. It has been my experience that the folks who develop software are almost universally Code Monkeys, in that they are obliged to code whatever damnfool thing the customer wants, whether it does the job or not, and whether it harms the customer or not.
I have also worked as an degreed engineer, and can confirm that while it is possible for an engineer to be browbeaten into doing something stoopid, it is the engineer's fault for having done so. Engineers have the right and responsibility to tell the customer that what they want cannot be done, that the laws of physics and mathematics will not permit it.
99.99% of all Code Monkeys lack the ability to make such a statement. They are unable to make definitive statements about whether a particular piece of software will perform as desired, or whether that software will do what the customer wants, even if it does perform as desired.
If you want to know whether you are a Code Monkey or Software Engineer, ask yourself the following questions:
1) do you have a degree indicating that you know how to do formal proofs, mathematical modelling, statistical analysis, etc -- one that has the word "Engineer" in it?
2) do you code defensively, designing and writing code that works even when it's broken, that always fails gracefully?
3) do you have a large assortment of programming tools (language skills), and are able to select the most appropriate language for the task at hand, or do you always code in the small handful of languages you are familiar with?
4) do you work with any/all computing platforms, or do you only work on a preferred one/two? If someone presents you with an assignment to be done on platform XYZ, do you throw up your hands?
If you can answer YES to all of the above, then you are probably a Software Engineer. Otherwise, you're just another Code Monkey with an overly inflated opinion of him/herself.
I think someone working at, say, CMM level 2 or 3 is clearly using engineering principles. However, it *is* true that the same job can be done by a high school kid, and I'm not at all convinced CMM is a good thing.
But... a smart high-school kid could probably design a bridge, too. It's just a much bigger deal when it falls.
Maybe if the code monkeys were personally financially liable for their (numerous and varied) screwups they'd appreciate test analysts and testers a bit more.
I would imagine programmers would be more likely to accept personal liability if management and marketing didn't force projects to go out before they were ready.
"They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
Not unless you are actually a SOFTWARE ENGINEER are you an ENGINEER. And by software engineer I don't mean "I Took SENG in College". I mean you actually understand why you write those lame documents and how you apply past knowledge and research economically to future products.
I'm a code monkey of course! ;)
And a Sanitary Engineer cleans up all the crap I fling
-=sig=-
Wouldn't definition 2 be very close to what the cracker community denotes as a "social engineer"? Hmmmm...
In my 24 years of experience in Texas, I have worked for exactly 1 Registered Professional Engineer...and he wouldn't sign off on anybody's work to let them become a P.E. Besides, being a PE in Texas means you know how to build a bridge...next to no computer electronics involved in the PE test unless they revised in from a couple of years ago.
Back in the day when I was programming for Lockheed, they called me a "Software Engineer"... but now that I think about it, I've *always* loved bananas.
chown -R us
I don't think so. Most of what passes for programming is pretty far short of engineering. If a civil enginner practised his profession the way a programmer does his he would get thrown in jail.
One of the key areas where programming falls short is liability. No software company provides any sort of warantee for their product, and courts do not enforce any claims against software. Real engineers accept liability for the quality of their work.
I am a Mechanical Engineer, although I'm not a Professional Engineer (P.E.). In order to get the Professional Engineer certification, you have to first complete the E.I.T exam (Engineer In Training), then get X number of years of supervised work under a current Professional Engineer, then take the Professional Engineer exam. Most people take the E.I.T in college before they graduate.
Most Civil Engineers need the P.E. license since they generally work for government agencies (building roads, bridges, etc). Mechanical Engineers who work in the HVAC industry generally get their P.E. license also.
Engineers usually get the P.E. license if they are doing work for outside customers. If there are no P.E. certified engineers at your company, you can get a P.E at another company to check and sign off on your work to count toward your required years of experience. Many times, a P.E. license in one state will be recognized in surrounding states (subject to variation).
If you are an engineer doing work only inside a company, you generally don't need a P.E. license. For example, in the aerospace industry, or automotive industry, it isn't required as far as I know. In that case, you can pursue it if you wish and you may get paid a little more money and it looks good on your resume. If your company doesn't require it, then there is no penalty for not having it.
The E.I.T exam is a comprehensive exam on all subjects (thermodynamics, controls, electrical, mechanical, etc). When you take the P.E. exam, you can usually choose between a general exam, or one that is specialized to your field.
At my school (Mississippi State University), they just moved the Computer Science department into the Engineering Department.
Your password has expired, please login to change it.
Dude - best sig ever.
But not in Canada, at least.
Do you have a Bachellor of Engineering? If not, you're not an engineer. Even that can't make you a practicing engineer, because of liscencing.
For the sake of all those programmers out there, I'd hope they say "no", because I seem to remember engineers having to be liscensed in Texas, which generally requires a few years of work in the field and then passing a test (generally on ethics).
As a side note, Microsoft was successfully sued for calling people MCSEs "engineers" in Canada, and get fined heavily every time they do it again.
Dark Nexus
"Sanity is calming, but madness is more interesting."
Yeah, I slept through a pile of dull lectures and the creation a bunch of inane Pascal programs on a crappy time-shared "mainframe" in the mid-eighties at RPI. That mean I'm an "engineer"?
Of course, those Pascal skills and three dollars and ninety-five cents will get me a cup of coffee in 2003.
What makes me an engineer is that I love to build great stuff.
Bing
I'm an EIT (Engineer in Training) as licenced by the state of massachusetts. I never got my PE(Professional engineering licence) and moved to programming. There is very little chance that anyone who graduates with a degree in Comp-Sci could pass the EIT test (lots of physics / mechanics/chemisty and circut analysis).
Engineering is more applied science, computer science is more applied mathmatics. I like the term computer science.
I was a civil engineer and its a much different filed than software. Before anything is built a drawing must be stamped by a PE licenced by the state. When things go wrong they look at who stamped it. It takes 4 years of experience to get that stamp. I don't see how that would work in software. There currently is less responsibility for releasing buggy code than for designing a building that colapses.
As computers manage more importing things for people this responsibility is starting to change.
Thats not to say software isn't hard and shouldn't be / designed well by experienced people. Its just very different than what most commonly is known as engineering.
In universities computer science is often in a differnet college
I say programmers aren't engineers because they don't need to know a non-negligible amount of real-world physics to do their job. A programmer is as much an engineer as a race car driver: They both can do amazing things with their respective machines, but they certainly aren't able to design them.
engineer = computer scientist
cad monkey = code monkey
YOU ARE NOT AN ENGINEER.
one last thing....YOU don't get to decide...."I'm an engineer"
you get the college degree
you get the apprenticeship
you get the experience
you pass the exam
others decide whether you can be a licensed engineer or architect.
all you can do is go through the steps, and hope you meet the criteria.
otherwise everyone and their dog will proclaim themselves engineers.
much like everyone here.
Seems to me (a EE from Purdue) that the only thing that makes engineering engineering as opposed to arts or crafts is the use of metrics. That is, you're s'posed to be able to design something to fit within a certain set of constraints, and have a way to objectively measure how well you've done. It seems to me that a lot of software is built by artisans, who "just build the damn thing" without really worrying about what constraints may exist in the problem domain. That's certainly how I seem to write my code... Most of these software artisans wouldn't be able to do a comparison with another piece of software that purports to solve the same design problem without a side-by-side benchmark after the code is written. Real engineers know before build-time how well their design compares to others.
:).
I guess it's time for me to go re-read some algorithm books
" Are you really an engineer? Or just a code-monkey?"
how about "artist"?
engineering n The application of scientific and mathematical principles to practical ends such as the design, manufacture, and operation of efficient and economical structures, machines, processes, and systems.
By that definition, a software developer is quite frequently an "engineer".
The real debate I'm reading here is whether you need an accredited certificate to be titled an "engineer".
I feel no compunction about calling myself a "network software engineer". I perform acts of engineering daily - co-ordinating thousands of bits of data on multiple clusters of computers in a scale and scope comprising thousands or (potentially) hundreds of thousands of people.
Yet, I do not have any official-looking pieces of paper saying "engineer". So, I am not an accredited engineer, but that doesn't stop me from engineering!
I have no problem with your religion until you decide it's reason to deprive others of the truth.
you are an idiot.
they aren't controlling programmers.
program all you want, do it in the tub, do it in your backyard naked.
people can't say "i'm a structural engineer" and go to work on a 60 story high rise unless they have the credentials to back it up.
The word "profession" is abused when associated with something like locksmiths. What has been missed in the preceding comment by the Ontario engineer is that there is a governing body (the profession) which self-regulates members of the profession. That is different from whether a client will sue you or not. These people can take away your status as licenced engineer for transgressions against the engineering code of ethics. As such it isn't a question of insurance or CYA, it is a matter of ensuring that the word "engineer" stands for a high standard of practice and ethics.
"Consensus" in science is _always_ a political construct.
Ok, enough.
--Practicing Engineer--: One who, having graduated with an appropriate degree from an accredited college or university, and further having received acknowledgement of his or her status as a Practicing Engineer by both his or her peers and by the community in which he or she practices, adapts principles and methodologies prevailing in his or her field, for the purpose of producing solutions to problems at the conceptual level.
The insight of this definition is twofold:
1) It recognizes the importance of recognition of your status by your community and your peers. The application of the term is a recognition of a certain status within a community. To make it clear to those who do not understand this, the sense is not the same sense in which the term might be said to be trivially dependent upon the community as it might be said all language is.
2) It recognizes the importance of the sort of solutions you produce. For example, the person who picks up your garbage at the curb is not a Practicing Sanitation Engineer.
It may be that you are a Practicing Software Engineer and that you also produce solutions to problems at levels lower than the conceptual level, but you do *not* do so *as* a Practicing Software Engineer, for the status of Practicing Software Engineer says nothing of and makes no guaruntees about your ability to produce solutions a levels lower than the conceptual level.
Further, being a Practicing Software Engineer does not entail being a Computer Scientist, and neither does being a Computer Scientist entail being a Practicing Software Engineer.
Given the definition I have provided, this should be obvious.
And so, from this and a cursory examination of the software industry, we may observe that a majority of workers involved in the production of software are not Practicing Software Engineers, and further are not Computer Scientists.
Rather, the majority are skilled laborers just as construction workers are skilled laborers. This is nothing to be ashamed of. Some are skilled in the employment of heavy machinery to do their labor. Some are skilled in manual labor. Some are skilled in public relations. Some are skilled in the management of other skilled laborers.
Certainly being a skilled laborer in the software industry often involves a higher level of application of intellectual skills than some, but again, that itself does not make you any more of an engineer.
So, it seems that some group of people in Texas is more interested in the representation (spin-doctoring) of their employees than they are in the sanctity of the "Engineer" title. To that group of people I say: boo-f'in-hoo.
Some personal background on myself, before I launch into the tirade: My father was an engineer. I received a Bachelor's of Science from an engineering school (my state does not license Software Engineers). I married (and later divorced) a Mechanical Engineer. I have worked as a programmer for a large auto manufacturer (where I kept crossing the border-line between programming and the Industrial Engineering discipline) and a small software company (where we crossed into the realm of the Chemical Engineering discipline), and ultimately settled into management over a programming group. I took, and passed, the Engineer-in-Training test in 1990 (mainly, to see if I could do it). I have met and worked with software engineers - these were 1960s-era programmers from IBM that had worked on the various NASA space programs.
I am NOT an Engineer. I am barely a programmer, these days.
A few others in the CS department at my university took the EiT at the same time as I did, and each one of us that passed that test that day managed to knock some poor Civil or Mechanical Engineering student into the "failing grade" category. These are people that I do not want designing buildings, nor bridges nor nuclear power plants - so, even though I could not become an Professional Engineer, I did my part in making sure that someone who should not become a PE ... would not become a PE.
If I read the original article correctly, Mr. Kester seems to think that having "150 engineers" instead of "150 programmers" is better simply because of the way customers perceive the title. I agree with him, since the title "engineer" actually means something. Had he said "10 engineers and 140 programmers," I would have been right with him. However, he seems to want to give the title to everyone who can bang on a keyboard, just because it sounds better to a customer. That is something that I expect from marketing - hype anything for a quick buck now, and to hell with the future effects of our actions.
Marketing is precisely the wrong reason to give someone an "Engineer" title. Proven skill and experience is the right way.
My straw-man example is the MCSE certification program. When Microsoft first started this program, getting the certification was not easy. The people who did pass knew what they were doing, and had proven it, so having the MCSE was enough to tip the balance when a company was selection between candidates X and Y. Then, people looking for new jobs got wind that the MCSE was the reason X was hired over Y, so they started clamouring to get the MCSE. Microsoft relaxed the difficulty (making it easier for people to get their MCSEs) and started making more money on the program. For a while, having the MCSE was still enough to tip the balance in favor of an application, but then hiring managers started noticing that the new people with a MCSE certification were not nearly as good as the originals were, and having that certification has become a reason to tip the balance against candidate X and in favor of Y.
So, Texas - please do the right thing, and create a Professional Software Engineering discipline in your state - and make it VERY difficult to get. The existing engineers from the other disciplines will respect that, and the marketing bozos of the world will (eventually) figure out that it helps them, too.
Chivalry is not dead, it's just frequently misspelt. - M. Langley
The downside, of course, is that with professional certification you become liable for your work.
So long, and thanks for all the Phish
As a mathematician/software engineer, I've worked on sophisticated algorithms in the past, and at those times, I considered myself an engineer. With a bad economy and being thankful to have a job doing silly MFC shit, I don't feel much like an engineer at all. As there are people who do both of these things, I would find it quite beneficial to have the software world divided into engineers and non-engineers. If the code you write is algorithm heavy and optimization is a necessary thing instead of a pretty option, then you're an engineer. If you simply write interfaces, then you aren't an engineer. If you just write interfaces and consider yourself an engineer, you take yourself too seriously.
Programming is just a tool to an engineer.
Apocalypse Cancelled, Sorry, No Ticket Refunds
The term "engineer" has become so diluted that anyone can call themselves one. The Texas Society of Professional Engineers is trying to keep the title of engineer something that is earned, not something that is handed out like popcorn.
An engineer is a Professional, not someone who just decided to add the title to their business card.
"No problem. I have the capacity to do infinite work so long as you don't mind that my quality approaches zero."-Dilbert
I thought Engineers drove trains? Haven't they been called Engineers for decades? Yet they don't have to pass some engineering test that other engineers do. I live and work in Texas and my business card says Sr. Software Engineer and I seriously doubt thats going to be confused for someone who designs cars, airplanes or bridges.
The aerospace company I work for ran into that issue thirty years ago when we came to Denver. We don't often bother with that exam either, and the local PE society complained. So we sent them a nice letter saying we would be glad to comply with the rules, and would they please send a copy of the sample test, four hundred membership applications, and the schedule for their next officer election?
Haven't heard from them since.
rj
"Since you need a licensed engineer to create a licensed engineer, "
/every/ engineering related question you are asked.
Um, no, not necessarily. Experience gained under a suitable non PE can be used in some states. If you are serious about getting your PE then go and talk to the board about your problem. I don't know where Texas, in particular, stands on this, but I KNOW some states understand the difficulties.
The requirements are hard, not obscene. You are taking on personal responsibility for your answers to
FWIW I work in Australia and I wish we had the Texan, or Canadian, attitude to the title of engineer.
I have done both. I was engineering for only 8 months where i built and modified irrigation gates , augers and various other industrial and farming equipment , using all sorts of machinery , plasma cutters , welders , gas plants etc....
I then went on to do a Bsc Computer Science. Programming is very much engineering , at least i used the same analitical skills to solve problems. The way i aproach problems in building some engineering project is the same way i approach programming problems , which is the same way my lecturers approached programming problems and they have done no engineering. So yes good programmers are engineers.
As a degreed Engineer, I say that Programmers are not engineers. So, what's the big deal? Why is this even a question? I don't see any business managers, accountants, doctors, or even lawyers arguing (and we all have some idea how much lawyers like to) that they're not engineers.
I work for an electric utility, and I've had many positions over the years. When I was a substation design engineer I didn't do any design. That was left for the designers. Likewise, the designers didn't to any drafting. That was for the drafters. But without all three positions, none of us would have had a job.
In my current job, it's a little bit different. As an electrical engineer I am responsible for an outage management system. The system runs on Unix and Oracle. So, I had to become versed enough in Unix and Oracle (and many, many other proprietary services that we have) to effectively communicate with our IT and Oracle gurus to do my job. This job role has forced me to learn to be a system administrator. I could never do my job w/o the IT guys. But, I'd never refer to them as engineers. Likewise, they'd NEVER refer to me as one of their own - I'm always referred to as an engineer.
The point of the matter being - everyone chooses their own role in life. Relish in that decision. But, don't try and be something that you're not.
JB
Think, write, think, edit, think...then post.
#include <stdio.h>
...
#include <string.h>
main( int argc, char *argv[] )
{
if ( strcmp( "engineer", "programmer" ) == 0 )
printf("Programmers are engineers\n");
}
Seriously, if they were one and the same thing then why create another word. The answer is that they are different. Computer programming is an activity that can be learned in a few minutes/hours. At it's essense it's just translating a sequence of steps into a computer language. There are simple programs, moderately complex ones and very complex examples that few people can understand.
My definition of "Engineering" is the ability to make a reasonable determination of how well something will work "before" you built it. Or more abstractly, "the systematic removal of unknown variables from a problem domain to reveal the solution space". In other words they were predicting the outcome "prior" to doing something.
For example you might hear an engineer say that "using a multi-user Ethernet segment as the message passing fabric will lead to a non-deterministic response time because of resource contention".
Does this mean you "have to" be an engineer to be a good programmer? I would say no, there are lot's of good programmers who are not engineers. In reality a lot of programming environments are architected to specifically remove or reduce "excess" knowledge. This "simplification" facilitates the programming task, opening it up to problem "domain" specialists, i.e. the people who actually understand a problem well enough to translate it into a workable computer based solution. This is a good thing, you really want to enable end users by providing them an easy way to "program" their computers. Note the success of spreadsheet programs, which do exactly that, or VisualBasic which strives to enable end users. Even Unix/Linux is a programming environment, and in fact that's why it's so popular. Shell scripts make it easier to program
Are programmers engineers? Well, I suppose it depends on who the programmer works for. If the programmer works for Microsoft, then the programmer is a monkey, not an engineer. All other programmers are artists, writers and engineers.
- Artists because programming is largely a masterful craft that only master artists, otherwise known as Real Programmers can accomplish.
- Writers, obviously, because you have to write the damn code.
- And engineers because, well, computers are a highly technical thing and they control all sorts of devices and business processes. The people who make these machines do what they do are engineers.
Therefore, I believe that changes must be made to the way programmers are paid for their efforts, as I'll explain briefly, in one or two sentences, below.The programmers are the most valuable people in every organization, even if they do a job that is of negligible importance for the rest of the company. Thus, each programmer should earn more in a month than all the shareholders and management of the organization combined earn in a year. Each programmer should be given a $60,000.00 car for each member of their immediate and extended families with all expenses covered by the company. All of this in addition to benefits which include every type of insurance imaginable and every type of investment, paid in full by the company, for the programmer's benefit. All of the programmer's bills should be paid by the company and all discretionary spending should be submitted on expense reports in order that the company can reimburse the programmer for those expenses as well.
A point system should be established so that the programmer earns a point for each dollar spent by the programmer or any member of his/her immediate or extended family, and at the end of the year, the company shall pay that programmer ten dollars for each point earned. Furthermore, the programmer with the most points at the end of the year receives a bonus equal to ten times the combined points of all other programmers in the organization, or one million dollars, whichever is greater.
Obviously, each programmer receives a corner office with a square footage of 1,500 square feet or greater, with plush furniture, a private secretary, a private DS3 connection to the Internet and any computer equipment desired by the programmer.
Every member of the organization will have to make an appointment, through the programmer's secretary, for the priveledge of speaking with the programmer. The secretary may indefinitely tell everyone in the organization that the programmer is busy and cannot talk. If it takes the programmer a long time to accomplish some task, the boss is to make an appointment with the secretary in order to thank the programmer for taking his time to make quality software. If a bug is found in the programmer's software, the boss must make an appointment with the programmer's secretary in order to thank the programmer for all the bugs that were not introduced into the software. If the programmer writes long code, the programmer receives a penny for each character typed. If the programmer writes short code, the programmer is paid 100 dollars for each character typed.
Nobody may criticize anything done by the programmer, and each programmer must be given tenure after 1 day at the organization, after which the programmer may not be fired or laid off for any reason.
All intellectual property developed by the programmer is explicitely the property of the programmer and not the company. After each piece of intellectual property is developed, the programmer may bill the company for royalties for use of the intellectual property. And in fact, all of the aforementioned shall be made federal law.
Ok, so maybe it took more than one or two sentences.
It does not protect the public against bad engineering. When it is advanced for this purpose, it amounts to paternalism: You will pay for the costs of making this software satisfy some group's QA criteria, even if you are willing to put up with a few bugs in order to pay much less.
The capital costs of software development would increase tremendously. You would be able to hire only "registered" or "licensed" programmers, or become one yourself, and you would (eventually) need to satisfy some state-imposed QA criteria, which requires a lot more testing and costs much more than techniques like alpha or beta testing and customer feedback do today.
Software is unique in that it requires only a small, finite amount of capital -- one teenage hacker and a PC, for example -- to produce a lot of return. In many respects it's similar to art. (After all, Knuth's books are called the The Art of Computer Programming, not The Science of Computer Programming.)
Software engineering licensing is unenforcible in free software, so if it were adopted it would only be applied to commercial software, and to employees of software companies. As long as the free software movement stayed alive, there would be economic incentives against making commercial software have this disadvantage.
(Under some wacko conspiracy theory, I suppose that mandatory DRM hardware could try to stop people from using unregistered compilers, or doing any kind of programming without a license key, but that's too far off at this point to even be considered.)
Programming is one of the last refuges for free-marketeers. If protectionistic measures such as licensing programmers or software engineers was started, many people with bright ideas would never become programmers.
Unfortunately today's economic climate is exactly the kind where these regulations are most often started, to "protect" jobs. American programmers are feeling competition from India and elsewhere. Some therefore jump at the opportunity to add regulations in an attempt to protect their jobs.
I'd rather be free to program without a license and without bureaucratic regulations, even if it required changing employers more often or taking a pay cut.
I write math problems for a living, and on the last contract, we also got a small sum for each of the drawings (graphs, diagrams and the like) that accompany the problems we write. No degree in art, only lots of math and a couple of science degrees, but I'm getting paid for it. I'm a professional artist!
I'm not flaming or taking issue with your idea; I just had fun extending the thought and applying it to myself. The only drawback I see is that I remember having heard the title "software artist" used by a fairly pretentious person a few years back, but I still think you've got something there.
I'm an artist! I can't wait to tell Mom...
Think, write, think, edit, think...then post.
I am a programmer, and I consider myself an artist.
Like a painter, work with a good knowledge of how to mix paint and use their imagination to create stuffs, so do the programmers.
Unlike engineer, there is no constraint for programming, such as law of gravity. Thus, programming is art-based science.
Individual states have the right to regulate such things as the state legislators see fit. Aside from this, whether one is a *really* a software engineer is depends on whether or not one does the *work* of an engineer. Software coders are much like logical bricklayers, whereas software engineers are akin architects. As any rate, I think the term "engineer" without context is meaningless in any event. There are civil engineers, electrical engineers, chemical engineers, etc. Chemical engineers generally do not know anything about civil engineering. Adding "software engineering" to the list violates no acceptable use of the term, as long as "software" is part of the title. As far as I know, software engineers typically do not try to pass themselves off as chemical engineers or civil engineers. Texas is clearly overstepping reason here.
--Slashdot: News for Turds. Stuff that Splatters.
Well, maybe some of the guys who model their code with legos and tinkertoys, but for the rest it's creative writing and plagiarism.
There are two issues here. The first is whether or not a software engineer performs "engineering". The second is whether a software engineer can have the legal status of an "engineer".
Do software engineers perform engineering? What is engineering anyway? As far as I am concerned as a Chemical Engineer, an engineer fundamentally designs systems. As part of this work, he will probably need to model the system and test this model (whether the model is mental, computational or physical). Implementing the design involves the engineer, but is not the engineer's job. That is the job of the technician.
This means that a software engineer should be the person who develops requirements (both software and hardware), overall design (data structures, classes, interfaces, protocols) and supervises their implementation. As part of this he may write some test code or build test equipment to verify his design. The actual writing and testing of the code to the design specification is the job of a software technician (which is a better term than "code monkey").
Note that engineers usually have engineers below them. Smaller parts of the overall system may be designed by a junior engineer according to specifications that the senior engineer provides. This smaller part may in turn have smaller parts designed by yet more junior engineers and so on. So you do not have to be a project manager to be an engineer. The important thing is what you are actually doing at your desk. If you design, test THEN implement, according to scientific principles, you perform engineering and are in that sense an "engineer".
However, whether or not you can legally be called an "engineer" is a seperate matter. A "professional engineer" in Singapore is a very special beast. To become one, you need 10 years of exemplary active experience, yearly training, adherence to a code of conduct, etc. You become empowered to testify in court as an expert regarding engineering in your field. Certain types of work require certification by a professional engineer and cannot proceed without you (this means big bucks).
In return for this status, you accept great responsibility. You are personally liable for criminal charges if a design you certify fails, in addition to civil damages. If the failure involved grevious injury or the loss of life, this may mean 10+ years jail and caning, in addition to a criminal record.
This is the issue that the article probably refers to. The software industry has not yet reached a state where its engineers can accept this level of responsibility without it becoming a legal farce. The poor seperation of engineer from technician in software engineering makes this even harder. This is because every line of code is in a sense "designed" when it is written. The design of the code IS the code.
I do not see any real way out of this, which is a pity. Until some professional order is imposed on the software industry, hairy and wasteful civil lawsuits will be the only way to ensure (not just produce) quality, which means that unreliability will remain rampant. It is likely that software will always remain an art and never make the transition to engineering. Perhaps that is the way it should be.
The fact is, all licensing and accreditation issues aside, by far the best academic preparation for a career in Software Engineering is a Computer Science degree. Sure there are graduates in Engineering, Physics, and Math who do equally well, just as there are those who somehow make it through CS without a clue. One day the Software Engineering curriculum may supplant Computer Science but this is a long way from happening.
There are two main approaches to programming, and I know people who do both.
I personally think of myself as an artist. I think the way to learn to program is similar to the one should learn art. This is by studying great pieces of code, and writing as much code as possible.
The other side of the coin is engineering. I have to take tons of engineering classes in school, and or CIS department is part of the college of engineering. So I also feel that if I take all these engineering classes (and pass) it is unfair to not call me an engineer, when I have done all of the work other engineers do.
Normally when people ask what I do for a living, I take the easy route out and say "Stuff with computers", which usually shuts them up. If not then a "Programmer" usually narrows it down.
The interesting thing I find when talking with non-IT related Americans (I am in New Zealand), I get a vague(ish) reaction if I say I'm a programmer. If i change my response to "Database Engineer", it is inevitably "Ahhh!" and they immediatly have an indication of what I do.
It would appear to as though the engineer term when applied to programmers has been bastardised in the USA enough for it to filter through to the Joe 6-Pack.
Good programmers are engineers. They create structure and maintainability, they make code that makes sense and works.
Bad programmers are code monkeys.
and "Combat Engineers" are also called "sappers," because among their tasks in medieval warfare was to tunnel under defended walls (yep--that's what "undermining" is), then burn the braces they'd placed in the tunnels, in order to create a breach in the wall as the ground fell out from beneath it. That was sapping, and the tasks they perform on the battlefield in modern times are descended from that kind of objective: anything to do with "Uncivil Engineering"
Think, write, think, edit, think...then post.
What if M$ offered you the chance to become an MCSD (M$ Certified Software Doctor) for a fee. How many of you would pay for the chance to be called a doctor?
Why are you asking the code monkeys?
Real engineers don't read Slashdot!
From the New York Times and the BBC
via Stupid White Men (the awful truth)
Katherine Harris was both George W's presidentail campaign co-chair and Florida secretary of state in charge of elections ie who was allowed to be on the roll and vote counting. No conflict of interest here?
Katherine had anyone "suspected" of commiting a felon removed from the rolls, this included anyone with a "similar" name to a felon. This mostly affected black democrat voters. 173000 registered Florida voters were removed. A black list of a further 8000 peole was supplied from Texas of people who had moved from Texas to Florida, and these all had their names crossed off, even though they were actually eligible to vote.
One of these "supposed felons" was Linda Howell, elections supervisor of Madison County, Florida. The only way to get back on the roll was to agree to fingerprinting. Ie guilty until "proven" innocent.
Of the Florida overseas ballots many were counted that did not meet florida law, specifically
Overseas ballots can only be counted if they were cast and signed on or before election day and mailed and postmarted from another country by election day.
544 overseas votes that counted towards George W Bush did not meet this criteria.
As for the supreme court, the ancient republican appointees Sandra Oconnor and William Rehnquist did not want to retire until there was a republican government in power to appoint more republicans to the court. Clarence Thomas's wife had just got a job with George W Bush and the son of Antoni Scalia was working for the law firm that was representing George W Bush.
And there's more and it gets worse.
Personally I don't think the result should have hinged just on Florida and some of the other state results looked dodgy too. If I was a USA citizen I would have voted for Nadar, not because I thought he could win, but because the Democrat and the Republican are almost identically pro Corporate America and against everyone else. Except we probably wouldn't be wasting money on a stupid war if the Democrat had got in. I could be wrong about that.
-- it must be true, it's on the internet.
The American Heritage Dictionary defines an engineer as someone who (1) is trained or professionally engaged in a branch of engineering, or who (2) skillfully or shrewdly manages an enterprise. Another definition further down the page says an engineer (3) "uses scientific knowledge to solve practical problems". (I am ignoring definitions revolving around the root word "engine" because they do not apply here.)
In accordance with the second and third definitions, everyone could be an engineer. Most likely, the Texas legislature is using the first definition and is trying to determine exactly what the field of engineering is. Enter AHD:
Engineering is mechanical in its roots, having derived from "engine", but insofar as computer technology is the engine of tomorrow, anyone who works in the development of computer technology is an engineer by my understanding of the word. I hope Texas comes to the same conclusion.
p.s.-- Wouldn't this be a decision for the courts, not the legislature?
Short answer? No.
Long answer? No.
Programmers produce a set of logical arguments, that are constrained to a set of rules. programmers are not engineers, they are more like lawyers or Lawmakers.
I think someone got the idea right when they classified different levels of programmers. You could pretty much look at it like subsets of skills: "code monkeys" have a subset of the skills required to be a "software engineer" who have a subset of those requird to be a "computer scientist". Sorry to be cliche, but cars are yet again a good comparison. For a complete system, you need auto mechanics, automotive/mechanical engineers, and automotive researchers. The researchers put forth new ideas (not always useful, as previously noted about computer scientists...), the engineers design each specific car, and the mechanics put the cars together from standard parts.
This is exactly what we do in the programming realm. Unfortunately, this does not mean that you can test the computing realm just as easily. The engineers and researchers don't need a specific standardized skill set-- an engineer on a graphics card driver project is going to need very different skills than an engineer working on Google's search technology. I think this is because computer science is too much of a mixed field. You have to mix natural science, engineering, and even art mentalities to grasp the breadth of the subject. Only one of these fields has the ability to rigorously test its practitioners... that's why it's so hard to nail down what you'd test a programmer in.
lets talking building things
.NET, but VB .Net is going to scare the hell out of a lot of VB programmers.
The people that design the structure for tall buildings, are they engineers? Yes.
The people that design how the electrical system, and plumbing engineers? yes
are the people that put the rivets in engineer? No.
Now programming
Are the people who write the low level wroks of CPU's engineers? yes.
People who write drivers, is that engineering? yes
The people who wrote the appollo programs? yes.
People who through to gether a high level gui app with no understanding of the inner workings? no.
See asking if 'Programmers' are engineers is like asking "Are people involved in building buildings engineers? well, it depends.
I tried to explaining to a vb person why:
If len(var) = 0 then
is better then
if var = "" then
but it quickly became clear that they have 0 idea what goes on underthe hood, and wat was worse(IMHO) is that they didn't want to know. They just wanted code that worked, not code that worked well.
Say what you want about
Not to bag on VB programmers, I am sure many people on this bard who program VB understand it far batter then the average VB programmer.
One time I had a VB 'programmer' was contracting at a company I was at, makine 100 dollars an hour, and didn't understand classes. Ohh the pain.
The Kruger Dunning explains most post on
then you would be a Document Engineer... :)
A little nonsense now and then, is relished by the wisest men... --Willy Wonka
'nuff said.
Software Engineering is a relatively young engineering discipline that is (mostly) not recognized by the other engineering disciplines as being an engineering discipline. The title of Software Engineer has been handed out so haphazardly that it really doesn't mean anything any more. Every programmer gets the the title, whether they practice software engineering or not and regardless of their educational background.
Likewise, where are the board certification examinations that other engineering disciplines require? The smattering of A+, Microsoft, Oracle, Java, etc. certifications don't really provide the same level of credentials in the eyes of other engineering disciplines.
Until we begin to recognize that hacking is not the same thing as a software engineering, we will never receive our due as an engineering discipline.
That doesn't mean that there aren't talented programmers out there because there certainly are. However, hacking by the seat of ones pants flies in the face of good engineering practices. For example, would you want to fly in a plane designed by a seat-of-the-pants engineer? Or drive over a bridge designed by one?
Having been through a 4 year EE program and a 4 year CS program, I can say without a doubt that any 4 year CS graduate can be considered an engineer.
It is true that there are alot of programers that don't understand Big-O notation, recursion, and the differences between quicksort, bubble sort, and the finer points of linked lists and pointers. These programers should not be considered "engineers" just like graduates of "technical" institutions should not be considered engineers.
Seat of the pants learning is OK, but when it comes to critical systems, fundamental understanding of the theories is crucial.
-ted
There really must be more to this story than what is given in this article, since it was big news *several year ago* when Texas became the first state to license software engineers as PEs. Incidentally, the ACM has taken a position against licensing software engineers, while the IEEE is moving forward with the idea. See http://www.acm.org/serving/se_policy/selep_main.ht ml
for more on this. This ACM position paper also notes the fact that Texas did decide some time ago to develop a software engineer licensing program.
Until I complete a 4-5 year 'appenticeship' under another Professional Engineer I will only say I have an Engineering Degree.
As an article of interest, in Canada if someone claims that they are an Engineer all you have to do to check the semi-veracity of their statement is look at the pinky finger of their working hand. All engineering graduates receive an iron ring to remind them of the seriousness of their work and the code of ethics which they pledge to uphold. You can read a little more about it at ironring.ca
Whether they go on to complete the requirements of the Association of Professional Enginers and Geo-Scientists of (Province Name) and become a Professional Engineer is up to them.
As a programmer who designs a set of requirements, implements the design, and tests the application, on a multi-tier system using multiple languages where necessary, I highly object to being compared to lawyers and Lawmakers.
Engineers produce products that are constrained to a set of rules too. The rules are called physics. Lawyers are constrained to a set of rules called laws. Lawmakers are constrained to a set of rules called the Constitution.
Don't compare me to a lawyer. I don't need to be insulted like that.
If a company doesn't hire any P.Engs, are they liable? (Disregarding situations where they have to hire P.Engs.)
One line blog. I hear that they're called Twitters now.
with an engineering degree.
"# 1: Ask the question, "Are Programmers Engineers?" on a tech-oriented website. "
;)
I thought the granddaddy of all waltzing in a minefield questions was "which is better, Linux, or BSD?"
And just to get things started, "BSD."
Let the *REAL* flamewar begin!!!
I'm concerned that that Software Engineering as a Professional Engineering discpline is not really going to get very far very quickly. The public and our potential clients need too much education to see value in the profession. I believe the Professional Engineering associations have a huge challenge ahead.
The Professional Engineering associations do what they can under the legislation to support Professional Engineering. The ultimate premise behind the legislation and existence of these associations is that Professional Engineering is needed. Of course in traditional engineering fields, including the oft-exampled bridge building, a degree of competence is required and demanded by the client. Where public safety is at issue, the professional associations stand behind the "seal of approval" needed by the client, government, and the general public. Of course no one wants unqualified people responsible for works that pose an obvious potential danger.
However, the public trust is very difficult to causally connect to the practice of professional Software Engineering. I submit the following reasons:
While there might be enough evidence, both academic and anecdotal, to counter all of these points, it requires extraordinary public education. I have heard comments from my local association members wishing for more proactive public education in traditional Professional Engineering disciplines. While the association has had some lukewarm results in raising the Engineering profile, I find the challenge of doing so for CSED to be orders of magnitude more difficult.
P.S. I currently work primarily in Software Development, but hold my P.Eng as an EE.
Anybody want a peanut?
Like Jumbo Shrimp and Peace Through Superior Firepower!
:oP
Ever since I've worked at a large "technology" company developing "cutting edge software" I've YET to see ANYTHING resembling engineering as it relates to software development. All I see are prototypes that transmogrify into shipping products. I don't see good engineering practices employed start to finish, resulting in products that satisfy the customers' needs and generate a profit for the corporation. Security flaws - OOPS, sorry about that, we'll fix it in the next revision... Take the bullet for your fucked-up applications and THEN you can call yourselves engineers! Till then, try getting used to Software Developer or Computer Programmer, cause that's what's going to be on your business card from now on in Texas.
I think the question here is not, "does what you do make you an engineer?" Asking, "Is a programmer an engineer?" is something akin to asking, "Is someone who owns a Porsche a racecar driver?" Well, maybe. Then again, maybe they're just an old fart with more money than they know what to do with. No one asks if someone who works on cars is a mechanical engineer, and no one asks if someone who builds electronics is an electrical engineer. So why should we ask if someone who simply programs is an engineer? Engineering is much less what you do than it is how you do it. If someone approaches programming problems with professionalism, thoughtfulness, and regard for its social impact, then yes, this person is probably an engineer. If someone tackles obstacles by haphazardly throwing code out until something works, then probably not. It should be noted that hacks should not be tossed into this later category; on the contrary, it's engineers come up with some of the best hacks around. These are my thoughts on the subject, anyway. Feel free to agree or disagree as you see fit.
`which fortune`
True, you have to work in a guild system under another P.Eng for a few years.
You need to have done at least 4 years in engineering courses in a reconized University. You are member of a professionnal order...
Not quite. In Quebec, university degrees are shorter due to the CEGEP system. Why are we endorsing guilds? Didn't they go out with middleages?
One line blog. I hear that they're called Twitters now.
Oh no, not this again.
Can't you just settle on a personal opinion on this and just be happy with it without spewing your condescension on the rest of us?
Huh? an ARCHITECT is the one that takes all variables into consideration. It is usually a PROJECT MANAGER's responsibility to produce that solution (who may or may not be a programmer). The programmers ARE the carpenters / bricklayers, not the architect.
Sure, we (programmers) can be architects for little tiny projects. But if a new skyscraper is going up (aka big system) there's going to be a bunch of Architects who lay down the blue prints. and a bunch more code monkeys to pour the concrete.
Conserve Oil, Recycle, Boycott Walmart
not to hate, but if you're fortunate enough to be able to go to college (which only 1% of the world is) you should do something that benefits society. Writing a paper about race-relations is not science.
me, i'm a computer engineer specializing in machines of oppression.
...a soul and office space requirements of an artist.
...attention of a craftsman.
...an ego and salary demands of an engineer.
... if you build a product out of your efforts.
/. article.
If we can downgrade our respect of programmers from engineer or artificer to a "monkey", then it can and will happen to any skilled trade.
Medical doctors can be made into "pill dispensers".
Bridge engineers can be made into "steel workers".
Judges can be made into "security guards".
Electronic engineers can be made into "assemblers".
Lawyers can be made into "librarians".
... until the costs of maintaining the skillsets drives the skills out of them.
... and shouldn't we stop that before we end up in a civil war?
... no, not those ... they have REAL elite skills, not 1337 5k1llz.
My biggest fear is that they will continue to refuse to understand the necessity of mature intellectual labor until some wetback or recent grad boots them out of their own supposedly so-terribly-skilled jobs.
Then they'll shed the same tears while the capitalists add another power of ten to their bank accounts in the Cayman Islands.
Disclaimer: I am not certified or degreed in any way.
I really worry about the implied attitude in this
My personal -- perhaps overly paranoid -- theory is that the whole idea behind this implied attitude is that skilled trades are to be progressively underpaid to the benefit of capital owners. With so many people owning stock through various means, this seems to be a great idea for a while
The assertion that skill will be driven out is hardly an unfounded one. Would you go to college for 4 years just to make $12 an hour? At that wage, would you spend $40+ at a crack for each computer book, and have many computers and distros at your disposal? Computer skills require a good many hours (in classrooms and/or out) of study and enthusiastic interest, and twelve bucks an hour doesn't buy that kind of loyalty (especially since the median house prices in your area are at US$90K and climbing).
Despite this, what do I hear from the Young Republicans (and the sold-out Young Democrats)?:
Code monkey : Jesus Fucking Christ, I am so tired of hearing that term. Programming is as hard a mental labor as any of the mental professions. This mental labor is intrinsically worthwhile since it produces stuff that is intrinsically worthwhile, and THEREFORE is worth compensating. This link from value to compensation is being broken all over the place due to criminal and sociopathic greed
A high school student can do your job : Holy Bastard Hell, I am even MORE tired of hearing THAT phrase. I find it particularly amusing that people with skillsets that are as codified into books as computer programming, still think that programming could be assumed by immature people with a few reference books. But not their own skills!
[You have a stable society when some nut guns down a schoolyard and the law doesn't change.]
They're called trash men^W^Wsolid waste disposal
specialists (or some BS, eh?)
thoughts?
The issue is essentially with false advertisements. I don't know about Texas, but where I'm from "Engineer" is a word that carries a specific meaning. I can't call myself an Engineer because I'm not a Professional Engineer, that is, licensed in the Province of Ontario. It's actually illegal for me to say I'm an Engineer, unless I specifically say that means I only have a degree in engineering, and I'm not licensed.
A professional engineer in Ontario is responsible for whatever they put their rubber stamp on. If a licensed engineer designs something and it ends up killing a person, they are personally liable, and have to prove that they did everything using acceptable engineering principles. The same would apply if a failure of the design caused a monetary loss.
Now imagine if someone was a "software engineer", and they approved a software system that managed banking transactions. If the software has a bug, they would be held legally responsible for that failure of the system.
A programmer is not held legally responsible for their code. That's the difference.
"I have never let my schooling interfere with my education." - Mark Twain
Because I am an engineer, I program (on occasion).
However, the fact that I program does not make me an engineer. (Nor does it make me a programmer, except in a very rudimentary way, and I do not refer to myself as such.)
Programming and engineering are two fundamentally different tasks, with very little overlap, beyond the fact that there is some minimal level of "technical" skill required (for lack of a better term). IMHO, programmers would be better served to refer to themselves by a term unique to their job, talents, and abilities required in their field, rather than to plagerize a term that is only tangentially related.
As an example, those developers that implemented the TCP/IP stacks for various operating systems would have 'engineered' a solution because the problem was well defined, the tools were pre-existing, and the solutions were well tested. Now designing TCP/IP may not have been engineering, but that's why you can't lump all software developers into one camp or another.
The lack of available talent in the last couple of years forced companies to start lowering their own standards in their hiring process. People with less years of preparation (one programming class to an associate degree of 2 years ) started working side-by-side with engineers that had gone through 4 and 5 year programs. The market for "engineers" went crazy and these floks were considered the same.
When it got really crazy, people that had not even attended school and grabbed a programming book started to take those spots too !!!
Many of these folks lack the overall skills and training to succeed and move up in the organization or projects that go beyond programming. They have maxed out. If they haven't been layed off already they know they are in for a ride as their opportunities in the current market are close to nothing. Their lack of preparation is going to keep them from being able to lead bigger and more significant projects as managers or tech leads.
Got a free ride before, pay up now. Hope you saved the money to go to school.
An engineer is much more than a programmer.
Engineers can be coders and programmers, but coders and programmers cannot be engineers.
Designing software is NOT engineering. Managing design, programming, testing, etc a program is not engineering either, it's project management.
Those that program systems related to physical engineered projects, are engineers involved with the design of the hardware, not programmers.
A "computer/software engineer" or "computer scientist" is not going to be used, for example, to program a feedback control system for a helicopter. The engineers that design it are going to do the software as well. A "software engineer" wouldn't have a damn clue how a helicopter's control system works.
And no, I don't buy the idea that the Windows OS is an engineered product.
I have a BS in Aerospace Engineering (and while no PE exists for my field, I still consider myself an engineer) and am currently working on a BS in Computer Science. Right now I pay my bills doing internet application development. Currently, I am a code monkey. I would never embarass myself by claiming to be a software engineer.
It is clear like pure air that Software Engineers that use to discriminate programmers are now complaining of being discriminated.
It just shows that it all boils down to egotistic thinking.
The US company I work for calls us programmers "Engineers" and it pissses me off - engineers building bridges! They even call the support guys "Engineers".... We're Programmers or Developers, not Engineers!
#include <sig.h>
My degree is a BS Mechanincal Engineering. I passed the EIT in NY. I've never worked as an Engineer. I work as a Unix System Administrator.
My studies were not limited to physics, math and analysis. There was a factor of safety, failure modes, economic analysis and end of life.
Most programming I've looked at is more like some guy racing a car at a local track then formula one racing.
Formula 1 involves aerodynamic, safety, thermodynamic and structural design. There's lots of real heavy duty anylysis and modeling done. Usually before it's built, but also during the season. Things are measured and incorporated during the season too. From the design, they know how a crash will affect the driver, how the car will collapse and break.
The guy racing the local track modifies an existing car & tries things to see what works. Safety devices are dictated by common sense. What feels right dictates much of the design. Feedback comes from the driver. There are no sensors in the car to measure things.
The F1 cars are engineered. I don't think software has things like factor of safety, fracture points, end of life yet. I'd love to see it happen, but I think most of it is seat of the pants kind of design.
Programmers are gods. They are implementors. Through their own will, they create beautiful worlds.
i know people graduated with an electrical/computer engineering degree working for microsoft. personally, i think it's a disgrace for everyone else with an engineering degree to work there. and cs majors who think they are better than them think they're engineers as well.
you can easily get cs knowledge without going to university, but you cant work in an engineering position without.
programmers like to call themselves software engineers because it makes them feel good about themselves. it's like every junior MS programmer calling themselves product engineers.
my blog
In Quebec, university degrees are shorter due to the CEGEP system.
O EN-Hardware-Sep1999.htm
I wish it was shorter... I know, i'm doing one... it's 4 years like anyone else in Canada even if we have to take 2 pre-university years in CEGEP (after 11 of primary and secondary shcool). At least i only have to pay around 2500$CAN/year for education... The rest is paid by the gouverment.
For those who want to know, most degree are 3 years around here (Except for engineering and medecine) For reference:
- http://www.polymtl.ca/etudes/bc/index.php
And if you can't read French, here's one from Concordia: (i couldn't find one from Mcgill)
- http://www.encs.concordia.ca/scs/Sequences/COEN/C
Why are we endorsing guilds? Didn't they go out with middleages?
Well the basic idea is that you can be held responsible for not doing you job correctly... even if everything was within "legal parameters". That way you protect the customer. If the someone can carry the name "Engineer" that mean he is competent enough to gain the trust of the "guild". (meening: you're supposed to get less con artists that way)
it's true it's not a perfect system, but it's one that seems to work around here.
I live in Soviet Canuckistan you insensitive clod!
Afro-American engineering, the first ever discipline.
My wife is a licensed architect (a real one), and I studied it for four years. Now with 20 years programming experience, my title is "Software Architect". She hates that, and I suppose a similar legal issue to that of engineers exists.
Licensing requirements should be based on the project at hand - not all projects should require licensed professionals. For example I shouldn't need a licensed software dude to put together a web page; similarly I don't need a licensed civil engineer to put up a non-loadbearing wall in my garage. However, if I were designing flight control software for an airliner, it would be reasonable.
The liability issue is a sticking point - architects get sued more than anyone I know. I don't know what the solution to that is.
Another issue is that the comparison of software engineering to hardware engineering only stands up to so much scrutiny. Software is a much more abstract and mutable medium and a project can easily get beyond a given person's ability to grasp. In hardware you can usually address this by physically separating the components; we're making progress in achieving separation in software components but it's still evolving.
Read my keyboard review.
Gee, Cisco used to think I was an "Software Engineer" and paid me 135k a
year and I only have a masters degree in fine art. (Performance art and Photography
and a few things in between) On the other hand when I was getting that MFA
I built a camera from billitt aluminim and a electric guitar from wood scraps.
I always thought that programming was as much an art dicipline or perhaps
an exercise in linguistics or theater ( see Brenda
Laurel )
I have an BSEE degree from an accredited school. I have 10+ years experience as an engineer - my current job title is Sr. Staff Engineer. I work mainly on signal processing and IC verification.
I agree that the EIT and PE labels have merit. However, I think that they apply mainly to Civil Engineers and Mechanical Engineers. Why? Because the scope of projects and public safety concerns require liability. In EE, if you are not working on Pacemakers or high power subsystems, public safety is a greatly reduced concern. My company accepts liability for any mistake I may make. My actions will not result in death - the types of devices I work on typically have disclaimers - for example, this device is not to be used in life support applications.
As for a texas law saying I am an engineer or not, I don't accept it. I don't live in texas, and I have always had 0 interest in living there. The way I have seen the professional certification handled in other states is a 'PE' after your name. I am an engineer. Texas can go stuff it.
That said, I do not think that programmers are engineers. That is the same as saying that Dell phone support technicians are programmers. They don't do the same job. Dell phone techs aren't programmers, and programmers are not enigneers. The methods that programmers use are not engineering.
Engineering the process of applying scientific principles to the creation and maintaince of efficient machines and structures. Programming is not based on science - it is more a specialized branch of mathematics. There are of course exceptions, but coding a word processor or writing a web server application is most assuredly NOT engineering.
This thread is getting ridiculous. Does it matter whether the people in software development/IT are called engineers? It is just a title. In order to excel in the field of software development/IT, one needs more than just basic math, science, and CS knowledge. He or she also needs knowledge in many other areas such as literature, economics, bioscience, sports, music... . The field of software development/IT alone is useless. It has to be combined with some other disciplines in order to be useful. Since the field of software development/IT demands a wide array of knowledge, I rather be called scientist than engineer. Computer sciene is not about coding, but being able to code well and fast is an ability that every computer scientist must possess.
So, is XP really engineering? But it's so... well, freewheeling! If not XP, how about RUP?
Stir in some CMM level 5. How about now?
I think an important point to make is that just because something is *really* hard to do right, that does NOT make it engineering. So what does?
Interestingly, I'm not really sure how to answer this question. I got my degree in music, but I've moved from "Associate Software Engineer" to "Software Engineer" to "Senior Software Engineer" since then. Does knowing UML make me an engineer?
There are only 10 types of people: those who understand decimal, those who don't, and, uh, 8 other types I forget.
Nobody can call themselves an engineer legally without receiving professional certification... "Software Engineers" are as valid as "Sanitation Engineers"
To get licensed, you need to first take the EIT exam, and later, take the PE test, along with various other letters, etc. Engineering is a profession like law and medicine. "Software Engineers" are really just code monkeys.
I do "Software" although I have a PE in Mechanical. I can't say the software work I do is really engineering - This is in a CMM 2 shop doing DOD stuff. Sorry guys, it's not engineering.
Get licensed before you call yourself an engineer.
While I agree that there are many qualities that make programmers stand out from the field of engineering, if we ever want to *think* about writing real code that doesn't break, to build OS's and applications of any real quality, the process of software development needs to be treated like any other domain of engineering. Just ask Carnegie Mellon- most software houses in the US are total CF's. I consider this fact to be total bullshit. We need discipline in this field if we're ever going to produce quality systems. So yes, I would say programmers should be considered engineers. Now whether that implies they should have to recieve formal certification like many CivE's do is a completely different story.
I don't wish to take away the art and creativity from the process by "engineerizing" it, I just think we need to do a much better job at writing it.
My $.02 as a computer engineer from Purdue.
The terms "software engineer" and "code-monkey" are about as far apart as you can get on a spectrum of prestigous titles. I just can't imagine anybody wanting to put "code-monkey" on their resume or anbody bragging about passing the MCCM exam (Microsoft Certified Code Monkey) :-) .
IMHO, requiring software developers to pass an engineering exam would be a good thing. There are too many "code-monkeys" who have no understanding of basic principles of software design and development. (Hmm... come to think of it, I know a few people with a "software architect" title who don't understand basic principles either.) A rigorous exam would weed out the "code-monkeys" in the field who are churning out bug-ridden messes for the engineers to clean up.
Let's count the advantages:
1. The average skill level among software professionals would go up.
2. The tolerance for and prevalance of buggy code will go down.
3. Also, if you are an accredited engineer, do you think some PHB is going to fire you just so he can hire low-paid labor in a third world country?
4. Software engineers would be able to command more respect among non-technical people.
5. Certified software engineers should command a higher salary just by passing the exam.
Now, having said all that, I don't like the current exams that software developers are encouraged to take. Exams created by corporations like the MCSE tend to be too vendor-specific to be useful for most software professionals. I once looked into the ICCP exam and learned that the concepts required for it were too old-fashioned or primitive for contemporary software design. So, I decided: why bother taking that exam?
If there ever is an exam for software professionals, I hope it is rigorous instead of being watered-down like the ICCP exams.
Post would be closer to the truth if all instances of 'democratically elected' were replaced with 'corporate sponsered'.
My Blog
This seemed generally relevant --
The Java license includes restrictions like this:
---------
Licensee acknowledges that Licensed Software is
not designed or intended for use in the design,
construction, operation or maintenance of any nuclear facility.
----------
It used to contain a restriction against using it in air traffic control, as well, though that seems to have disappeared as Java matured.
In other words, Sun doesn't want to be held accountable for anything really disastrous happening because of bugs in their code. If engineering is (as the article suggests) mostly about forced responsibility for quality, this would seem to address that.
Note: I AM primarily a Java developer (I'll skip the "engineer" appelation for now), but I DO NOT to write software for managing nuclear facilities.
I wonder what it *is* written in (no, not PHP *or* Perl!).
There are only 10 types of people: those who understand decimal, those who don't, and, uh, 8 other types I forget.
I've got a degree in chemical engineering and one in computer science. What does that make me? That makes me an engineer who's also a programmer that understands computers well. The degree of difficulty between the two is significant, and I think that should make the term "engineer" signficant. I'd no sooner call myself a Software Engineer than I would call myself a Reading Engineer, Writing Engineer, or Arithmetic Engineer.
I have a BS degree in Aerospace Engineering and a BS in Computer Engineering. I am currently working on an MS in Software Engineering. I program for a living and apply my engineering skills in building software. I think the bottomline of this article is the kind of courses one took in college. Courses in the engineering curriculum just don't compare to the courses in computer science or software engineering, though I respect these fields. Basically, programmers don't deserve the title of engineer (even if they have a Software Engineering degree - maybe it should be changed to Software Designer degree?). People who have MCSE certificates aren't engineers, either, and certainly don't deserve the title of engineer. If you've passed both the EIT and PE exams, then you may be called an engineer because you are the best at what you do.
Vince
"Happily lived Mankind in the peaceful Valley of Ignorance." -- Hendrik Willem Van Loon
I used to build rockets in high school. I used to build castles when I went on family vacations to the beach in elementary school. Better yet, I could build with blocks well before I could even use a computer. I was doing what engineers do, but on a smaller scale. As I progressed through life, I progressed in my structures.
Invention convention, the robotics club, plus whatever else high schools have show engineers in their early form. You may see more software engineers because software is cheaper to make; therefore, more of it is made.
Lastly, no programmer considers Billy to be a programmer.
Oh and does anyone remember the name of the Canadian x-ray machine that didn't have the proper threading, which was programmed by an electrical engineer, that ended up killing a random individual with obscene amount of radiation? We may not get your respect, but using us will keep you your job!
No one's going to read this at this point but I have to assuage my own conscience. (Damn engineering ethics courses) I will presage this by saying I am a civil designer with a BS in Civil Engineering and 3 years experience about to take the EIT that has spent 8 years in the IT field as (variously) a sys admin, helpdesk, Q/A, sales support, PBX admin, network flunky, and hardware reviewer.
Fallacies
1. It's a meaningless debate because it's just a title.
It is a title, but not a meaningless one. People are breaking the law in most states by claiming to be an engineer/lawyer/doctor/plumber/surveyor/etc if they are not one for the same reason it is illegal to claim to be a police officer. Those titles imply that you will look out for the good of the public and your client (in that order).
There is software out there today that could kill you if it malfunctions (antilock brakes, traffic controls, etc). Today that software is a component in a system and the engineer in charge of the system signed off on it and will be held responsible if it fails. They know it and they take the responsibility seriously.
Claiming that title can put you in a position where your actions could affect others seriously through your negligence or ignorance. I can see a day fast approaching when a CEO hires a tech-school "software engineer" to design a system that winds up killing someone because it was never evaluated by a "real" engineer. I hope that someone isn't me or mine.
2. Engineers only increment known designs and aren't creative.
While 90% of engineering is run-of-the-mill, that 10% requires creative thinking. Sure, I can spec out rehab work & basic residential designs all day in my sleep, but there are times when the Engineer works in the unknown. Build a structure on a new soil type or any device exposed to extreme environments and you will see real engineering at play. And all engineers are expected to be able to deal with that. They may call in people from other disciplines to advise them, but an Engineer will ultimately deal with the situation.
3. Current "software engineers" will have to go back to school.
When the egineering licensure became an issue for the states, there were many qualified people working in the field who did not meet the paper requirements. So there was a grandfather clause that was generally 5-10 years of documented experience and must pass the licensing test like any new graduate. There was also a window of opportunity until the grandfather clause was removed.
Any current programmer who wants to be an engineer would likely be given the opportunity to take the tests. Good luck, you'll need it. Engineers are expected to be multidisciplinary. I had courses from all branches of engineering (Civil, Mechanical, Electrical, Chemical, Industrial) AND Comp. Sci. programming courses (Fortran & C++). The point isn't to say an engineer is competent to practice all fields but that they will be able to understand information from all fields.
The flip side is that a licensed Software Engineer would require the tests for *ALL* engineers to expand. Not a bad thing at all in a software-operated world.
4. Companies will only hire these "licensed" engineers creating artificial demand.
Truth is, most current engineering companies have a significant number of non-engineers: draftsmen, surveyors, technicians, designers, and scientists. Those people do a significant amount of the work, but the Engineer is responsible. (Exception: The surveyor is responsible for the accuracy of the survey, since they should be a licensed Land Surveyor.)
5. Anyone with a degree that has "engineer" in the title is an engineer.
Most states have specific laws regarding the Professions (including the oldest one, but those laws regulate it out of existence typically). The degree is not enough because colleges & universities can lie; just read your spam. You have to get a degree from a university that has pro
I've been on slashdot so long I'm starting to get out of touch with the cool stuff if it ain't on slashdot.
This is a malformed question. Asking, "Are they engineers or code monkeys" is tantamount to asking "Are you an apple, or are you a corvette?"
As you can see, the problem with this line of questioning is that it leaves no room for reasonable alternatives. So, perhaps I'm neither a corvette nor an apple, but I'm a dolphin. You see where I'm going with this.
Thank you ladies and Gentelmen, you can enjoy your dinner now.
The lunatic is in my head
Since I am a graduate of a Texas university with a BS in Computer Science & Engineering, how about if I just put that on my business card?
No! They are programmers. Engineer is often misused. ex. Sanitary Engineer.
Are programmers doctors? No. Because doctors are professionally licenced as such. Programmers are not.
To rightfully wear the name 'Engineer' also requires a professional licence. It's that simple.
I'm not bashing programmers. I love programming more than I do engineering. Otherwise I wouldn't be here on Slashdot.
After 4 years + 1 co-op year in a difficult mechanical engineering program and 2 years working, I can't legally call myself an engineer; only an 'Engineer in Training'.
In Mississippi, this is what is required to legally call oneself an engineer:
After finishing at least a B.S. in an engineering curriculum, one must pass an intense 8 hour standardized exam just to be called an 'Engineer In Training'. After reaching this point, one must work 4 years under the supervision of a professional engineer to be eligible to take the Professional Engineer Exam (which is quite difficult). Once the status of Professional Engineer is achieved, it must be maintained.
Just because you can bandage a wound doesn't mean you can call yourself a doctor. Just because you 'engineer' something doesn't mean you can call yourself an engineer.
Engineers are often responsible for people's lives. Think about this next time you cross a bridge. Engineers get sued when their designs fail.
Respect the name.
But am I an Engineer? Hmm.. let's see what my degree says. "Bachelor of Science in Computer Science and Engineering".. yup, I have an Engineering Degree, therefore I am an Engineer.
Where's my business card.. it says "Software Engineer". Yeah, Texas Legislature, prepare for me to vote your monkey asses out next year. Pray that I don't take the initiative (and the pay cut) and run against your stupid asses.
Our resident MSCE is better known as "Nimrod."
I don't mean to demean MSCE-holders in general, but that alone is no real qualification deserving the title "engineer." An MSCE in addition to oh, say, 5+ years (minimum) real-world experience, and maybe a "real" CS degree would help. "Nimrod," the guy I mentioned above, is best known for fscking up anything he tries to debug. This guy refused to replace a hard drive that gave "no boot device found" errors three times a week for a month; he'd come down, run ScanDisk (which found so many errors that it took 4 hours to run, and trashed data and install info - requiring reinstalls of software every time) and tell us "it's probably just a software problem." I told him the first day that it was a bad drive (seen enough of them to be able to tell, but "no MSCE, so who the hell am I to judge.")
All he's qualified for is installing software, and he even manages to fsck up that on a regular basis, leading to one of his (non-MSCE but capable and knowledgable) co-workers wasting their time fixing his mistakes. But, he has that MSCE, so management figures he's OK. WTF?
Engineering axiom #1: there's nobody as dangerous as a nimrod with a degree.
Engineering axiom #2: nobody listens to the guys with experience, if there's a nimrod with a degree spewing nonsense in the area. Nimrod w/degree trumps experience, according to the suits.
"A generation which ignores history has no past and no future." -- Robert Heinlein
I know what Engineers have to go through, my Father is one. I didn't go through anything like what he did, yet the company I work for still wants to call me an Engineer. That's fine. They can call me whatever the hell they want. I'm not going to though. Techincally I'm a Technologist, but really I'm a code monkey (a senior code monkey, but a code monkey all the same). I just wish more of the "Engineers" in this industry would realize this as well. If they want to be an Engineer then do the time and get the ring. Texas is right about this as far as I am concerned.
I'll be damned if some Javascript kiddie could call himeslf an engineer, too! The term "Engineer" should mean something, like a basic ability to perform scientific and mathematical tasks correctly.
Best Buy can have you arrested
Congratulations, your post has won the highest rating to bullcrap ratio I think I have seen on Slashdot yet. That is quite an achievement...
..must not feed the trolls, must not feed the trolls...
I have entertained the thought that you are a troll, and that responding to you would serve no purpose. That +5 moderation, however, shows a giant gaping void of ignorance in at least a subset of Slashdot moderators, and that, at least, should be addressed.
Now, I grew up in a household of "big engineering" so I'm a bit biased, but you are so wrong it isn't even funny.
points:
1. No mathematics in engineering? I'm speechless. Flabbergasted... Stunned. What do you think engineers use, iambic pentameter?
2. Science. Right, no science in engineering, and a whole lot of science in programming. Why, engineers never use physics, say, or chemistry. Alot less than that guy over there working on opitimizing that printer driver.
3. Art. The Eiffel Tower, the Golden Gate bride, the Hoover dam.
or
Windows ME.
Many engineers I have known have decades of programming experience, on bare metal, Fortran, and C++. Who do you think developed the field in the first place? That programming sprang fully formed from the forehead of Zues, like Athena?
I would say yes, since this fundamentally mathematical endeavor is akin to an engineer's derivation of equations describing the behavior of real-world systems. The discipline of engineering lies not only in the actual design and construction of things/systems, but also the development of mathematical rules that unequivocally define the behavior of such systems.
Don't engineers blow thing up in combat? If an army employs crackers, should they be called engineers?
No data, no cry
Congress can impeach them if it's determined they did something incompatible with their office (the conditions are similar to those that would warrant a president's impeachment). This almost never happens, which is what makes the judiciary fairly independent. You can impeach a judge if he accepts bribes, for example, but not if he makes terrible decisions you hate.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
I write code to control subway trains.. does that make me an engineer??
Engineering applies Mathematics while Computer Science (and to some extent programming) is (the science of) mathematics.
2. Science. Right, no science in engineering, and a whole lot of science in programming. Why, engineers never use physics, say, or chemistry. Alot less than that guy over there working on opitimizing that printer driver.
Again, engineering applies science, whereas Computer Science is science. Arguably, programming is often not science in this definition, but often it is.
Many engineers I have known have decades of programming experience, on bare metal, Fortran, and C++. Who do you think developed the field in the first place?
Mathematicians, mainly.
We define a function called C
A boolean its output should be
If C equals 1
Then function D we will run
If it's 0 we call function E
I don't know about engineers...but if the gcc guys pull their finger out then at least the code-monkeys could start using iambic pentameter. What am I thinking..code-monkeys understand iambic pentameter? You'll need an engineer to show them how.
You and I are saying the same thing, it's just that I didn't articulate it very well. The architect and (software) engineer design, the bricklayers and programmers implement.
Let's compare the underlying theories.
Mechanical engineering: clasical physics
Software: halting problem
Which of these is more likely to enable a reliable outcome?
In Italy, we have had recently a heated debate on something similar. ...).
Most of programmers, software analysts, and so on come from the Master course in Computer Science (sort of), which is inside the Faculty of Sciences and not Engineering (where a course in Computer Engineering is instead available). Some 'computer scientists' (let's call them this way) tried in the last years to have a State licensure for their (our) own job, but it wasn't possible and as substitution it is possible now to access the Computer Engineering licensure exam (which exists already). However, engineers are not glad for that, and at present it is unlikely for a computer scientist to be able to obtain the license (not only matter of knowledge
Engineers say that computer scientists are not engineers, so they cannot access the Computer engineering license. Computer scientists say that computer engineers do not know sufficiently computers to have 'computer...' in their licensure (I agree on the latter, but I'm biased). However, civil engineers may obtain the computer license too, so the latter might be true (and is a reason to have a different license).
Bye
To my knowledge "engineer" is an unprotected title, and it somtimes amuse me that people will spend up to 7 years extra in school only for that title. :) :)
I'm a self appointed technician and quite proud of it, all tho I don't like westwoods interpretation of a technicians.
Programmers are superhero's as I learned in Futurama. Superheros cause alot of collateral damage, thats why they never, for insurance reasons, reveal their true identity (unless it's encrypted)
In the former Soviet Russia, bugs execute bad programmers.
That has to be the funniest "in Soviet Russia" comment I've ever seen. Good work, man!
On a side note, why the hell do I have to log in to post a reply to the parent?
... as engineers are engineers and lawyers are lawyers and doctors are doctors and achitects are achitects and so on
:P
now I wonder, What is an engineer?
one who designs and builds engines... isnt it?
An architect builds homes. is he an engineer?
may be a civil engineer
by the way, Im a designer.
---
Blur the truth, and se what happen
No big difference?
IEEE
BCS
EIC
etc etc depending on country and discipline.
If not, you aren't an engineer, you're a programmer/whatever.
It's that simple.
Government of the people, by corporate executives, for corporate profits.
At a function about 3 years ago, I asked two Boeing VPs whether or not they felt that Software Engineers should be licensed, overlooking the fact that Boeing doesn't need to hire PEs because the company covers the engineers liability. The Texas law had just been passed, IIRC.
Their divisions each had a substantial investment in software engineers, one more so than the other. And they had slightly different opinions.
They both felt that it should be a licensed profession based on the quality of the people they hired. One hated the CS people they hired, because they were too eager to do thing. He'd rather train an EE to program, because within 2 years they'd be far more productive and introduce fewer problems. The EEs he felt had a respect for failure that the CS students lacked. He especially cited the degradation of most CS programs during the 90s due to the perception of incoming students that they should all turn into Windows coders. Perhaps things will perk up now that the market has tanked. The other didn't have a strong opinion about where they came from, but he noted they tended to hire more out of engineering than CS programs.
One felt that Software Engineering wasn't mature enough yet because it lacked a set of rigorous standards. Civil Engineers know how much you can safely load a beam, EEs know failure points on components, but Software Engineers don't have these - or don't have them laid out as standards. What is the standard for preventing buffer overflow? etc. Until there are well regarded standards for Software Engineering practice, there's probably not much value in licensure. Of course, licensure isn't important to them, so they might not have been so hot on it.
I've also spent time with some Biomedical execs that deal with software in their industry and they expressed more urgent need for it. For one, they're accustomed to accountability through the FDA and physician liability. One pointed out that medical device companies tend to be pretty small - not unlike civil engineering firms, and simply don't have the resources to cover their own liability. They need licensure. They worry less about the hardware development because they can hire licensed EEs or MEs.
There's programming and there's Software Engineering. There are good programmers and there are bad software engineers. And vice-versa.
Most programmers are not engineers. Most software has not gone through anything that could be remotely called an engineering process. Most companies wouldn't be willing to pay the cost of developing software that did go through such a process.
There are programmers who in the course of their careers learn how to do and end up doing engineering. There are trained and qualified engineers who are "just" programming.
The me, engineering is a process that includes quantifiable measurements of success and processes of continuous improvement. No process is perfect, but deviations from expectations are measured and statistics are kept so that defect and failure rates can be determined, and moreover, analyzed to determine if they represent a problem to be fixed or are within normal variance of the present process, etc.
I'm not an engineer. I am a programmer. I'm not totally ignorant of the art and science of engineering, but I'd be posing (like many of my colleagues) if I claimed to be one.
Of programming and engineering, one is not "superior" to the other, any more than one could say a lawyer is "superior" to a dentist or an oncologist. They are different disciplines that provide different values and produce different goods.
I think it is a bit like psychologists and psychiatrists. Because the engineer (psychiatrist) has a longer education and a professional credentialing body with a longer history and more "power," the programmer (psychologist) is sometimes just the teensiest bit defensive about his status.
I don't think we have to be or should be.
In my experience, the proportion of the highly skilled to the wastes of space is roughly equal in both professions. In other words, one may educated far beyond one's intelligence in any field.
Engineered software is very expensive. Most of the time, businesses are not willing to pay that price. In most cases, they feel, good enough is good enough. This is an economic decision. And a sound one. Cost-benefit. Classical economics.
I think another reason this comes up so much lately is that the Internet has changed the definition of "good enough." With virtually every computer in a business being in either direct or indirect contact with practically the entire world, risks that were remote before are commonplace now. Programmers have had to get a lot better all of a sudden. And how you improves processes is by applying the techniques of engineering.
So, the two are different but complimentary skills. Especially since, even today, businesses want their custom software sooner and cheaper. That doesn't encourage engineering.
Face it kidlings... There is a distinction between a discipline and the folks who are engaged in that discipline. I know a significant number of software professinoals who are in every sense of the word "Engineers". They think of something wonderful that needs to exist in the world. They look at how it will ft inside the various structures, standards, and requirements that the real world imposes, and then they build the critter.
If that's not engineering, then there ain't any, except maybe the folks who run trains. That doesn't mean that there aren't sorry hacks and wannabes out there diluting the field of participants. Further, it has nothing to do with the shabby business practices of those who decide it's better to release a software products that would best be transported in a fecal specimen cups, rather than boxes.
There is no shortage of bad business decisions or poor engineering on hardware or software... hell I can remember a little incedent with a rocket company named Morton Thiacol? There are all kinds of ways to crash a system...
Genda Bendte
Place your sig here for a reasonable price...
No Degree = No Engineer
don't care what work you do, the engineering title is only for those with that specific university degree.
and thats final.
Being able to write a "hello world" program makes you a programmer, but doesn't make you an engineer, because it doesn't require the skills mentioned above. Does this mean that programmers are not engineers? Not necessarily. Designing a fault tolerant software system is just as much engineering as designing a fault tolerant river crossing system (bridge). But the actual programming has nothing to do with this, just as the guy who bolts the members of a suspension bridge together is not an engineer. Software engineers deserve the title of engineer, but this has nothing to do with the fact of writing programs.
If I seem short sighted, it is because I stand on the shoulders of midgets
"Many engineers I have known have decades of programming experience, on bare metal, Fortran, and C++."
Then they are not engineers, they have distinguished themselves as being much more than that, even in your mind. They are programmers, obviously a cut above their engineer peers, which include you, since you did not say "I am an engineer but I also program C, Fortran, etc.".
The reality is, John Carmack, one the finest programmers alive, has gotten further as an aerospace engineer in two years than some engineers get during an entire career.
I know an aerospace engineer whose claim to fame, the pinnacle of his career, was to design the rear lavatory on the 737.
Not every engineer designs the Eiffel tower.
Not every programmer wrote the Linux kernel...hmm...
But where the Eiffel tower was designed by one man, the Linux kernel required the labor of thousands to get where it is today.
300 people built the Eiffel tower in 2 years and yes, it is true art, useless, it does nothing but make a good backdrop for postcards.
The Linux kernel on the other hand is quite useful, required the brilliant output from thousands of esteemed programmers as opposed to 300 ignorant laborers, is elegant and much more worthy of your inspired praise.
Don't worry, this is a parody of the trolls you were hoping not to feed. It's funny, laugh.
If voting were effective, it would be illegal by now.
Do we as programmers/engineers only need such certificates because the bulk of our managers are unable to tell a good programmer/engineer apart form a bad one given less than one year to study their behaviour and the outcome of their work?
If this is the case, why are there no great push for certificates for managers?
It should at least certify that they can spot the difference between a fresh out of three year programming school idiot who thinks his education has enabled him to pass absolute judgement on any topic related to computer science/software engineering, and a competent and experienced guy.
It should also certify that the certified manager has understood the content of "The Mythical Man Year" and are aware of ways to stear clear of the pitfalls it describes.
and the list goes on.
uH uH uH uh!
aH aH aH aH!
If a train station is a place where a train stops, what's a workstation?
..that part of programming IS engineering. I know this, because I need the feeling of "creating something" and I don't relay on random occurrences in this process. But I accept fully, that being able to call yourself "software engineer" you would have to be given this title, by definition sitting in front of computer and knowing all about programming doesn't make you an engineer, even if you can create better programs than "actual engineers". the highest title I would grant myself is self-educated professional. I think this gap between "better than good programmers" and "software engineers" is simply academically accepted training because the real-world performance of MANY of those better than good programmers is greatly superior compared to most of the certified guys. it's just the question of discipline.
I have also worked for some "economical software service" firm, where I grew bored fast, because all the programmers they would ever need were code-monkeys who modify the pre-packaged modules for custom needs. And there might be a line of some sort between "creating" and modifying..
Answering the question of whether a computer programmer is an engineer, must surely depend on what the programmer is doing. There is little doubt that any form of programming requires some technical ability and an engineering approach is essential for efficient development. However, there is a marked difference between the complexity of producing webpages to display some home photographs and coding a numerical simulation of a particle accelerator. That is not to say that just because the subject matter (in this case particle physics) is mathematically complex the software is also more complex. But numerical simulations tend to demand a deeper understanding of the internals of a computer and how matters such as numerical precision will affect the result; it demands greater computer knowledge. Producing webpages to display home photographs has been done often before. However, even here it could be that the display images task is non-trivial and requires extensive computing knowledge.
As a professional engineer (with a PhD and Chartered status) and someone who develops software (for algorithmic research) I would consider myself a computer engineer. In the UK anyone can use the title engineer, unlike doctor or lawyer for which you could be found fraudulent. This is different from other European countries notiably Germany where the title engineer is protected and also regarded. And I think this is an important point. Often (as some postings here have shown) engineering is regarded as the poor cousin to other professions. Thus people feel free to abuse the title. Also, unlike doctor and lawyer, the term engineer doesn't imply any particular field and so is often attached to areas of work where you have to question the utility of an engineering approach!
I would like to see technician used as a title for someone programming with lesser aims, although how you define the quality of the aim is another matter.
I guess in summary I would say that just because you are planting a tree, it doesn't mean you are a gardener.
-- "Can't sleep, clowns will eat me!"
The above is a troll.
IANAL but write like a drunk one.
... that decpetive prctices are OK as long as nobody is harmed.
Define harm first.
And still you may be unharmed but still you may have been deceived and your trust may have been abused.
They don't try to add the word Engineer to their lame certifications just by chance, they are abusing term that in our societies confers trust and knowledge.
We all know and MCSE is not really an ENgineer, then why should not the law reflect that simple common sense fact?
IANAL but write like a drunk one.
...if you want. Just don't call them scientists :-). I spent years working as a sysprog before I realised that...
In Italy, the title "engineer" is obtained by completing the probably-hardest academic course available. This is reasonable, because it is a title. I am an engineer, and a number of programmers do code far better than me, many administrators administer better than me, etc... So this is what it is: a title. Hard to get, implies you studied a lot about math, physics, computing, but that remains. I can say if anybody is not engineer because he did not graduate, but I would not say that one does not know about engineering because he is not a graduate: that is another matter.
Question is: why does a court care about this?
I mean: in real world, you should be judged by what you have done, not by what a title says that you can do. This is for the court.
To continue with the Italian case, there are things that you cannot do if you do not have that title (e.g.: signing some ministerial projects), so you can never find yourself in the position of determining if you are an engineer or not: what is illegal for a non-engineer is clear in advance.
So, again, why would a court care?
Perhaps, to set rules about what a programmer is allowed to do and what he is not, like in my country?
Engineering is a respected profession which requires certification. If a programmer wants to be an engineer and use the title engineer in texas, then they should pass their EIT and P&P tests. If they pass, they can be registered and call themselves engineers. If not then stick with software dude. An engineer can pass the test. (The tests require understanding all engineering disciplines, EE's must know some structural stuff, ME's must know what an electron is, etc.)
I worked my ass off in engineering school for 5 long frickin miserable years, finished my coursework and enlisted in the Army. AFTER I was enlisted I got my bachelor's degree elsewhere just so I would have the diploma. In Puerto Rico on top of graduating you have to pass a board test just like all medicine doctors, lawyers and CPAs before you are considered a real engineer.
Yes, I got an accredited diploma from a school even bigger than the one I went to, but that does NOT make me an engineer. Just because I have been programming for 15 years that does not give me the excuse to use the title.
And no, MCSE/MCSD or any other alphabet soup certification won't make you an engineer either.
When people ask me what I do I tell them I am a mechanical engineer fallen from grace and that I have never practiced mechanical engineering since the day I walked out of school.
To those of us that survived the dot bomb mess, titles are pretty much useless since we are just happy enough to be employed while all our friends got laid off left and right. In my current job I am CTO/CIO/Technology Director/Senior Programmer/Mac guy/PC guy/Phones guy. Depending on who I am talking to, I change my title. I may be talking to the production folks while wearing the hat of senior programmer, then switch to CTO/CIO when hunting down leads for phone service vendors, etc.
My boss already made it clear he does not care, and he will only make a title official to avoid misunderstandings. Sometimes it goes kind of crazy, but the variety is enough to take away any chance for boredom.
Pedro
----
The Insomniac Coder
Hmmm, 666 comments thusfar (browsing at +1)
Maybe it means programmers are merely the tools of the devil?
Oh, sorry... not funny.
Just remember, if legislation starts declaring programmers as engineers, then the next step will be requiring programmers to get licensed. No more programming jobs w/o local union approval too. No more coding at home and making some $$$ from it.
Various unions and government agencies have been trying for years to get programmers declared engineers. That means more revenue for them if they succeed and less job enjoyment for us IMO.
Besides... Imagine what an engineer would do if his boss came in one week before completion on a large project and said "Yeah, it looks great, but I forgot to tell you it needs to do _____." If I had a banana for every time I heard that! :)
"If you're not failing every now and again, it's a sign you're not doing anything very innovative." -- Woody Allen
Someone doing technical stuff
Someone operating in a professional capacity
Someone who has training in specific skills
And the choice just goes on and on...
Making this a debate with no answer unless the bounds of what is meant are further specified.
Technology ate my cat
Let's not forget about Computer Engineers, who usually get most of the education of an electrical engineer, but have enough knowledge of programming and software engineering to improve computer architectures and implementations.
Don't get me wrong. I'm and Electrical engineer, and wouldn't want to be mistaken as anything less [puts on flame resistant suit...].
read this excellent article at http://portal.acm.org/citation.cfm?doid=506218.506 237 or http://tayek.com/~ray/xptools/p27-wang.html
vice chair orange county java users group (ocjug.org).
In case you check up on this, Civil Engineers working on city landfills are the technically accurate "Sanitation Engineers". Garbagemen saw the fancy title and the money earned with it, and decided they could call themselves that because they felt they could do the same job just as well.
It's like Drafters and Engineering Technicians having engineer envy. EIT (Engineer in Training) earn more money than the techs usually, and the PE's even more. All the grunt work is passed to the tech's, who get resentful because they get paid less to do more work than the engineers.
When I'm working hard, tapping stuff out to meet a deadline, debugging and so on, I'm just a monkey.
When I'm sitting back, puzzling solutions, running tests, writing documentation and proposing action plans, I'm an engineer.
Basically, engineers are a bit more "theoretical" and technicians are more "hands on." Which is the reason I don't consider you a "Network Engineer" if all you do is pull cards all day and hang ethernet cable from the rafters.
Hey freaks: now you're ju
Until then, you're not.
"Reality is that which, when you stop believing in it, doesn't go away." - Philip K. Dick
The problem that I have had with labelling software development as an engineering discipline is that in any engineering project, the requirements of that project are well and rigidly defined. As things change, they tend to change in some quantifiable way.
In my decade of working in the software development field, I have not once seen a development project where the users of the software accurately, completely and rigidly defined the requirements of their system, or had changes to the initial requirements specified in a quantifiable way.
User needs are vague and fuzzy, and change in response to urges like "That's not exactly what I had in mind." Though they can't elucidate WHAT they had in mind. This is typical, common, and the way that people work with respect to software.
As a result, what we do is more like a quasi-artistic design. The needs of an engineer to understand the physics behind structural stresses in a building is simply not something that exists in any analagous capacity for software developers. A small percentage do "hard" programming like device drivers, but that insulates the remaining programmers from having to deal with this level of difficulty. And unless the users of a system are dealing with physics and differential equations, the software won't either. It certainly won't with standard business software.
The difficult bits in developing software for people are in determining what they want the software to do. You have to get into their work-space and see how they want their world to work. Then you have to begin showing them prototypes, and iterate your way to the end result. As I describe it here, it sounds more like interior design than architecture. It certainly doesn't sound like how Engineering should be practiced.
Engineering doesn't work in an iterative fashion, and Software Development works best in an iterative fashion.
...who also does a bit of coding (parallel Fortran mainly) I'd like to argue that code monkeys ain't engineers. There are two main reasons why:
1. It takes a lot of effort to train as an engineer - I've spent 4yrs studying hard, and will need another 3/4yrs on site training before I get to be a qualified engineer. And when/if I get there I'll be responsible for designing things that won't fall down/blowup/wobble/burst into flames/etc, on my head be it if I kill a few hundred people. It only takes a small amount of knowledge and experience to start writing good code, as the environment in which you are working is so constrained. Proper (good) engineers have to take into consideration a much wider range of problems to come up with a design that works.
2. The product of an engineers work is totally reliable - How many of the people reading this article right now, are worried about the floor they are supported by or the roof above them falling in? Compare that to the number of you that would not at all be surprised if the code they were currently running suddenly fell apart.
Engineers do try to limit there market, and are fiercly proud of there title, in my opinion rightly so
My spelling isn't bad, I'm evolving the language
I currently live in Texas, and am both a software developer and an Engineer in Training. I should have my P.E. (professional engineer) license by the end of the year.
When you get your P.E. license, the most important thing you get, aside from the sexy title of "Engineer," is a stamp. A boring rubber stamp with your name on it. You use this stamp to certify that the plan, report, or whatever is good, and you are willing to stake your career on it.
In many engineering firms, only a few people actually have P.E. licenses. The P.E.s have a bunch of other people (with engineering degrees) doing the calculations and work for them, and the P.E. looks at it, checks it all, and says "Yes, this is safe". He or she will affix their stamp, which legally binds them to whatever they stamp.
Now, this means that at some point, every point of the design have been examined by someone with years of experience and education in their field, and they are willing to stake their reputation that it is correct.
Now, the issue of the stamp is an interesting one, especially for software. Who will publically certify that every single line of code in a big project is good, and that it has been tested so extensively that it will not crash. Who would want to foot the bill for that, much less the responsibility?
Think about it:
I want a Microsoft project manager to stamp a printout of every page of the Windows 2003 Server code to guarentee to me that it won't crash every day and be open to hack attacks every other day. Then I want the ability to sue the Project Manager and Microsoft and strip them of their ability to ever make software again if the crashing software costs me a significant amount of money. Would they do that?
I think that some people are getting too hung up on the title.
How are engineering and software development the same? Well, they both involve a lot of training and intelligence. They both play important roles in society by creating things that people want to use. They can also, potentially, kill someone (or many someones) if they are wrong.
Now, should all software developers be considered engineers? Probably not. Are some software developers engineers? Definitely.
I think that some distinction should be made between the person who sits around designing web pages, calling themselves a "web engineer" and the person who sits around, designing pieces of software, reviews code to make sure that it won't crash and calculates everything correctly, and is willing to give it out to the public to say "This works"
There is that small matter of opening source code to the public if anyone ever wants to prove that your design is flawed, but I'll save that for another time.
The most important thing is that we all get donuts at the beginning of the day.
As a "real" engineer in the automotive industry I cas firmly state that all of that schedule compression and lat minute additions DO happen; and vehicles are still required to pass every safety regulation in every country in which they might be sold. Sometimes getting the US, Canadian, and European regs to be compatible can be a feat in itself!
On the other hand... If the vehicle is a Ford, you still get the safety 'bugs' but in general our vehicles today are very safe.
One of the things that separates Software Developers from Engineers is that an engineer can be sued for their work harming people - we software developers tend to hide behind license agreements that prohibit users from striking back at us.
But there is also the point about ethical conduct. Engineers are bound by a code of ethics - having worked in the Software Development industry for many years, I can tell you that developers are bound by no such rules.
What it comes down to is that Engineer is a professional title, much the same as Medical Doctor.
I can put a bandaid on your owies and be called a nice guy, but people would have a real issue if I suddenly called myself a medical doctor.
There are really at least three concepts here that are badly entangled. As Dark Nexus just pointed out, engineers, in some fields of engineering, accept liability for the things they sign off on. That's a matter of taking professional responsibility for your work. That idea put the responsibility in the hands of people who were acknowledged to have the training to hopefully make competent decisions about real engineering issues.
Then there is the related issue of the training and certification for an engineer. It is certainly possible to use the title of engineer without taking on the responsiblity for anything. Frankly, I think the two should be distinguishable. I have no problem with certifying authorities having full control over who they say is certified. So, using the title Software Engineer doesn't make you an MCSE. Microsoft controls that certification. They set the standards. It's just like the fact that anyone can call himself a doctor. Dr. Demento does it. You don't have to have a degree for it. But certain specific professions require that you be certified. You can't claim to be an M.D. until you have the training and pass the tests.
The third issue is one of protectionism. That is, limiting the number of people entering a particular field. I have a problem with that. Fine, don't give them the certification and don't let them claim to have it. But so long as they are not permitted to claim qualifications they don't have, I don't object to people working or giving advice. How often do we see IANAL online? There's nothing wrong with having an opinion on a subject, and even with having that opinion taken seriously by the world, without being a member of an exclusive profession.
I suspected we were saying the same thing. In that case you are correct :)
Conserve Oil, Recycle, Boycott Walmart
I'm a code monkey... there's just no way around it...
Snooze and you lose your sushi.
This article reminds me of a bit of graffiti I found in a men's room in the University of Maryland engineering building 20 years ago:
"A Fire Engineer is someone who, when someone at a party asks him what he does, says 'I'm an engineer', and hopes they don't ask what kind".
My job title is Senior Software Engineer. But I know engineers, some engineers are friends of mine, and I am no engineer. I'm a good programmer and systems designer, but there's really no engineering going on in my addled brain.
I think the term Software Engineer came into use to try to legitimize what we do. But, with few exceptions, software development does not make use of engineering disciplines and mathematical rigor.
The word "engineer" is so badly misused in the computer field (sales engineers, Microsoft systems engineers, etc.) that I think Texas is right to crack down.
No sig? Sigh...
There are two main phases to software development: the development of requirements and the testing of the developed code. That sounds a bit like enginnering to me, how about you? If you think that it takes the most time on a project to sit down and write the code, then I can guarantee that you have never worked on a software project of any size.
Almost all of the time, the requirements I've been supplied have been incomplete, or not specific enough. It is left to the programmer to determine for instance what UI will work best for a particular user. Programmers have to understand not only what the problem is, but how to deliver the process and the results to the user. (In fact, often that delivery is much more difficult than the actual process of solving the problem.)
I take offense to small minded "engineers" who claim that because we have nothing tangible to show for our efforts, we obviously are not engineers.
For purposes of this conversation, I'm specifically considering people with at least a B.A. in computer science from an actual, accredited college; this is the very LEAST level of ability that compares with that of an engineer, because engineers generally have at least a B.S.M.E (or EE, or CE, etc).
What shall we call a well-trained, qualified computer programmer?
Traditionally, a degreed programmer should be called a "computer scientist" if he's in academia, but that generally implies at LEAST a Master's degree (more often, a Ph.D). Programmers who work in the field, as opposed to academia, were called "Programmer", "Programmer/Analyst" or "Systems Analyst" depending on how much experience they had. Generally, the chain of events was, a person would graduate college to become a "Programmer", then get promoted to "Programmer/Analyst", then finally, to "Systems Analyst" although sometimes, the middle term would be skipped. Where I work, the process has been replaced by "Programmer/Analyst", "Senior Programmer/Analyst" , and "Associate Programmer/Analyst". Unfortunately, my chances of making it to "Associate" have been pretty much shot; my employer is no longer holding exams for that position apparently. So I'm fucked, but that's a whole other conversation.
Along came the guys who decided it would be a good idea to apply engineering principles to systems analysis. Don't get me wrong, this was a good idea. Many of the principles of "Software Engineering" are sound. However, calling it engineering was a mistake. There's nothing physical being produced; there is no actual product being built. Engineering, typically, dealt with physical processes. Software Engineering should have been called "systems analysis" which would have been much more descriptive.
My thinking is, if you're doing software engineering you're a programmer, programmer/analyst, or systems analyst. These are the traditional terms we've used for the job, for decades. Why piss off the engineers? They're having a rough enough time anyway, what with all their jobs being outsourced. Their title is all they have left in many cases. Let's go back to our traditions; let's call ourselves analysts, as we should have been all along.
Just my opinion; for what it's worth.
Farewell! It's been a fine buncha years!
Past conversation:
"What did geeks do before computers?"
"I dunno. Engineers."
Point is really moot (the mass elitism with "can programing be called engineering?" Can you engineer with quantum mechanics? Just because it ain't concretely tangible it doesn't make it less of an engineering feat). The people who designed and implemented The Great Pyramids weren't really held in high regard. And I imagine a lot of the day to day engineering problems were handled by the equivalent to code monkeys. Do you really pecking order amongst the left of center crowd?
Also per same person-
Definition of a geek: Keeper of Arcane Knowledge.
Software KAK?
As I appreciate having strict definition of things (otherwise look at the scrbbles), that also lends itself to doubleplusgood thinking... if you are going to confer by title alone, then you are pretty wacked.
engineering
The application of scientific and mathematical principles to practical ends such as the design, manufacture, and operation of efficient and economical structures, machines, processes, and systems.
Duh.
Education is the silver bullet.
Management usually dictates this.
I am very small, utmostly microscopic.
Because mathmatics is so integrated into programming people (including programmers) tend to believe it falls into the "hard" sciences. However, programming is closer to the arts than the sciences. There's more in common with painting than bridg building. Hacking at it's greatest is akin to W.A. Motzart than H. Ford.
--
If I actually could spell I'd have spelled it right in the first place.
Attending school in this case is a barrier to entry.
Assuming that someone did the time in school, then passed the bar with flying colors, this means absolutely NOTHING. It doesn't mean this person is a good lawyer. It doesn't mean that she will win your case and keep you off death row. All it means is that she spent some $$$ and time, took a test, and got a paper.
What else you got?
Yeah, right.
-- (Score:i, Imaginary)
Is a code monkey someone who writes any sort of code whatsoever ? If I write assembly language code for embedded platforms because my cross-compiler cannot optimize to the extent I want it to, am I a code monkey ? If I design and implement a G.711 (A/Mu Law) or a GSM speech codec on a Motorola Onyx DSP, am I a code monkey ? If I write a Unix software application to update a table based on real-time data received from an ADC, however I decide later to modify it so that it each table element has its own thread processing it independently of other threads, am I still a code monkey ? The above examples require me to code, however they also require an fair amount of knowledge of the target processor, operating system, or compiler, very often all three. Not all code monkeys are engineers, not all engineers are code monkeys,and sometimes, they are either the same or interchangeable.
I can say with good experience that the PE ceritificate doesn't prove much. I've seen very smart people with the PE and I've also met an equal number of idiots with the PE. If the PE is a filter, then it needs a great deal of improvement.
I took the EIT class. It was almost all theory. I had thought the EIT and PE were supposed to prove some sort of competence as an engineer; but when I saw what the tests really were, I lost interest. The point of certifying engineers is to show that they know how to translate theory in to reality. The PE and the EIT tests can't possibly do that.
I don't know of any good tests which can prove competence in such things. Only an appreticeship with someone who knows the field can be an effective filter against such mediocrity. Doctors and aircraft pilots are certified this way. As a private pilot, I'll point out that even this method is a lot less effective than I'd like.
No, what really keeps a building up are habits and Engineering Standards. Most engineers I've known are smart enough to use similar approaches. But there is one thing that separates the kids from the adults. The standards are guidelines, not dictat. When you pull these mediocre "standards at all costs" engineers out of their element and drop a problem even slightly outside their normal experience in front of them, they're often at a loss to deal with it.
I should mention the kind of engineering I do is often post mortem. When something doesn't work and it seems like it should have, I get called in. I'm one of the guys in our company who gets to clean up after the people who don't know what they're doing.
So, is writing software or network management the same as engineering? Well, yes and no.
Networks should involve engineering backgrounds. However, few people I see in charge of networking actually understand the data sources, sinks, and typical traffic patterns on their networks. If someone actually does this, then he or she deserves the title of Engineer. The typical fresh faced MSCE graduate doesn't qualify.
In software, I think better theories and tighter standards are needed at the application and user interface level. The Open Source projects help a great deal because they offer several competing examples of how something can be done. I hope that eventually these various approaches can be catagorized, and the trade-offs of these approaches become well known, much as various sort and search algorithms have been documented.
However, because the practice of software is so immature, being more art than science, it's not ready to be called engineering in my opinion. It will get there some day, but it's not there yet. Sorry, folks.
Nearly fifty percent of all graduates come from the bottom half of the class!
Try this link florida voting irregularities
There were 3600 complaints.
The complaints from the supervisors of elections and from Floridians in the aftermath of the election illustrate that indifferent attitudes and careless practices prevailed over the more cautious approach for the protection of voting rights advocated by Ms. Baxter. [she advocated leaving a voter on the roll if in doubt, or allowing them to vote using and affadavit]
According to Linda Howell it can take 6 months or more to get back on the list if you are incorrectly removed from it, ie the falsely removed would not have been able to get back on the roll in time for the election anyway. And there is no uniform system across Florida (let alone the rest of the country) for getting removed from the roll or getting re-instated.
The link clearly shows that the people most affected were black and these would mostly have voted democrat, more than enough stuff ups to overturn the result.
But as you said, perhaps in Florida they don't have to bother with a vote at all.
Which is even more frightening that what did happen.
We should be more scared of people with cars than iraqis or al quaeda. And we should be more frightened of laws that remove our freedoms in order to "protect" them.
Interesting that they protect the freedom of the likes of Mrs Jeb Bush, caught sneaking $19000 worth of jewelry in to the USA without declaring it for paying the tax on it - a felony. Caught, I guess, but presumably not punished by having her name removed from the roll.
-- it must be true, it's on the internet.
Depends on what ya do I guess.
If you are writing apps for HR folks, you are a programmer.
If ya write software for the guidance system on a cruise missle, I'd say you were an engineer.
I think that people are hung up on semantics because the social status of "engineer" was equivalent to being a mechanic before they started handing out degrees from colleges. Ya don't wanna have too many people who call themselves "engineers" ya know.
Have you noticed that any subject you study in college that has the word "science" in it, isn't. Like political science, social science, behavioral science are anything but scientific.
Who cares, really?? Me?, I'm just a geek whore. Call me anything ya want as long as ya pay me.
best regards,
buck
Apologies all 'round if this is an inappropriate forum, but if James McP sees this, can you e-mail me? I'm at tewligan@yahoo.com - if you're the James I think you are, you probably remember my name. Thanks.
When we understand knowledge-based systems, it will be as before --
except our fingertips will have been singed.
-- Epigrams in Programming, ACM SIGPLAN Sept. 1982
- this post brought to you by the Automated Last Post Generator...