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...
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."
In this particular case, it also pobably has to do with the safety standards issue. For example, a civil engineer has to certify that the bridge that he designs meets certain minimum safety standards, and will be held professionally liable for it if it doesn't.
:)
I'm a code-monkey and not an engineer in the sense that I don't think I'd be willing to be held liable for my bugs
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.
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
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
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 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
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).
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/
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
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.
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.
...
are you an engineer that writes software or a computer science major who does electrical engineering - I have met computer science majors who by all rights I would call Systems Engineers - they had a complete understanding of the hardware at a very low level and how the software makes up these systems of systems - on the other hand I have met computer science majors who were just code monkey's or sys admins who thought what they did was engineering when they plugged a PCI card into a motherboard. The very best software programmers that I have personally met were all Electrical Engineers (and one PhD in Physics who wrote radar signal processing code). I think the trend in Universities offering "software and computer engineering" degrees is telling in this respect - its a grey area.
At the school I went to, it basically boils down to: Computer Science: Software (memory management, theory, design) Computer Engineering: Hardware (circuits, lower level languages, hardware design)
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!"
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.
- 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.
To some extent, I would fall into the latter category. My degree has "computer science" printed on it, but I've done custom hardware to solve some problems. When we got some security cameras in that didn't provide for computer control, I reverse-engineered the bundled remote control (just a bunch of switches and resistors, really) and built a replacement control that handles up to 8 cameras and plugs into a USB port. I didn't even build a prototype before having boards made, but when I got the boards back and stuffed all the parts onto one of them, it worked the first time I powered it up. I wish more of my software projects were like that. :-) (In all fairness, though, it really wasn't that complicated a design...the FT245BM takes most of the pain out of working with USB.)
(I started out majoring in computer engineering, but inattentiveness in class led to some less-than-desirable grades in courses needed for that degree. I switched over to computer science and didn't switch back...hell, I goofed off a bit too much with some upper-level math classes there, too. I started college in 1989, but didn't graduate until 2001.)
20 January 2017: the End of an Error.
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.
As an Electrical Engineer, I would like to say that being an EE is in now way the least. It is definately one of the more difficult engineering fields. As far as programmers being engineers, I would say that they can be, but it the main difference is the methodology behind how they write their code.
In an interview I recently had, a group manager for lockheed martin told me that he prefered to hire people that were educated as electrical engineers to do the programming for his group. He said their methodology made their code better. By the way, he is in charge of programming the targeting and tracking for the weapons systems on F-16s.
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.
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.
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!
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.
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
That really wasn't the point of the article. I believe that regardless of what type of engineer you think you are, if you are not a licensed professional engineer then you can't represent yourself as one outside of the company. When I worked for a company in Richardson, TX (Dallas suburb) all of our business cards said "Telecommunication Hardware Engineering." I was told at the time (back in 96) that this was because you couldn't put engineer on your business card unless you were licensed. Oddly enough, the company I am at now seems to not have a problem with it. But then I think it's because they are unaware of the issue.
In Canada, each province has its own "Engineering Act". Alberta's is much the same as Newoundland's; maybe the acts are pretty similar across Canada. Neither the Alberta nor the Newfoundland Act restricts the use of "engineer". It restricts the use of the term "professional engineer" and it restricts who may engage in the "practice of engineering" as defined be the applicable Act.
One may not call oneself a "profession engineer" or use its abbreviation "P. Eng." and one may not falsely misrepresent oneself as "profeesional engineer". In Alberta and Newfoundland, the "practice of engineering" involves "discovery, development, or utilization of matter, materials, or energy. See The Engineering Act of Alberta.
Since the term "Software Engineering" predates Brook's "Mythical Man-month" and is commonly understood within the industry not to be "professional engineering", there isn't enough evidence to support a claim that putting "Software Engineer" on stationary or business cards violates the Engineering Act.
Since software cannot reasonably be believed included in "matter, materials, or energy", the practice of software engineering does not violate the Act either.
Frankly, I don't much care for the term "software engineer", but it is established now, so I live with it.
It's not so much an issue of using the term "engineer" but of misrepresenting yourself as a wearer of the iron ring.
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.
The question is though, how does one become a software engineer. I have never heard of here being such a degree or feild. Just programmers calling themselves software engineers.
Actually, there are Software Engineering degrees emerging at many universities. For example, the University of Waterloo has a Bachelor of Software Engineering degree, offered jointly by the Department of Mathematics (which Computer Science is part of) and the Faculty of Engineering. The degree is accredited and leads to the Professional Engineer title and license. There are also many Software Engineering specializations or options that have been developed as part of Computer Science or Computer Engineering degrees, which provide students with a comprehensive understanding of software engineering techniques and practices.
One of the other replies to this is actually quite valid, but since the poster was an AC it'll likely not been seen.
The ACM has this paper from 1997 regarding accreditation. A short extract:
2.1 The Computing Sciences Accreditation Board
In 1982 the Association for Computing Machinery (ACM) and the Computer Society of the Institute of Electrical and Electronics Engineers (IEEE-CS) formed a joint task force to plan an accreditation process for the computing sciences. Two years later draft documents for creation of the Computing Sciences Accreditation Board (CSAB) were completed, and the two societies appointed a group of provisional representative directors from the two societies to the newly incorporated CSAB.
CSAB's scope includes post-secondary baccalaureate programs that prepare students for entry into the computing sciences professions. Programs may be found in the fifty states of the United States, the Commonwealth of Puerto Rico, U.S. trust territories, and U.S. management areas. The Computer Science Accreditation Commission (C SAC) of the CSAB accredits programs in computer science.
The main purpose (from the ACM's viewpoint of 1997) is to provide recruiters with a way to be confident that an applicant is well-qualified to operate in a position that requires a Computer Science graduate. You could think of it as a certification in "well-roundedness" - the person has some knowledge about algorithms, processes, procedures, and is able to write far-better-than average code.
I myself am not in favor of the ACM becoming the Software Engineering Accreditation Body (and I graduated from one of the first ACM-accredited schools). They have a strong lean towards the academic side of software, and don't really address the issues encountered when writing shrink-wrap software that will be sold to end-users. Which is why I'm no longer a member.
I don't think that the various industry certifications are the answer either -- I've seen too many "Paper CNEs" (and MCSE's, Cisco certified, etc) being flaunted by people who merely had good short-term-memory skills.
Right now, I think the software industry is too immature for accreditation. The traditional engineering areas have had centuries of standards, procedures and customs to draw on. If mechanical engineering were like software, a 2" steel pipe would change it's diameter every 6 months.
Chip H.
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
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.
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
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."
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 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.
While the provincial Professional Engineering acts do not restrict the use of "Engineering", Canadian copyright law does.
"CCPE maintains official marks on the terms engineer, engineering, professional engineer, P.Eng., consulting engineer, ingénieur, ing., ingénieur conseil, génie and ingénierie. This helps CCPE's constituent members to enforce the provisions of the Engineering Act in their jurisdiction, and protect the Canadian public through the regulation of engineering practice."
(see here.)
In fact, the professional engineering body of Newfoundland pulled MUN's accreditation briefly over a "software engineering" program that they offered.
-legolas
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
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.
there is nothing you can come up with that engineers or programmers produce that cannot be described as a tool
:)
The fruit . . . hanging so low . . . must resist . . but can't . . .
I assume your parents were engineers and/or programmers, since this tautology pretty much make you look like a tool. IMHO.
Seriously, cmon. Stop with that. Sure, everything is a tool because you can USE it. That pretty much defines a tool, right? So, basically, since anything can be USED in some way or another, even if that way is silly or not-yet apparent, everything is a tool. Including you. (And, alas, me -- to ward of that inevitable comeback in advance).
Lots of professions involve making tools. In fact, just about any profession (being done well, at least) will involve more tool-making than anything else (remember, a better procedure is a tool, since it can be used too -- see the pointlessness?).
That doesn't make it engineering. And it doesn't equate engineering and programming.
That reminds me of this one:
A programmer, a hardware engineer and a departmental manager were on their way to a meeting. They were driving down a steep mountain road when suddenly the brakes on their car failed. The car careened almost out of control down the road, bouncing off the crash barriers, until it miraculously ground to a halt scraping along the mountainside. The car's occupants, shaken but unhurt, now had a problem: they were stuck halfway down a mountain in a car with no brakes. What were they to do? "I know," said the departmental manager," Let's have a meeting, propose a Vision, formulate a Mission Statement, define some Goals, and by a process of Continuous Improvement find a solution to the Critical Problems, and we can be on our way."
"No, no," said the hardware engineer, "That will take far too long, and besides, that method has never worked before. I've got my Swiss Army knife with me, and in no time at all I can strip down the car's braking system, isolate the fault, fix it, and we can be on our way."
"Well," said the programmer, "before we do anything, I think we should push the car back up the road and see if it happens again."
everything in moderation
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.
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.
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?
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 )
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.
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?
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.
"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.
I had a professor who claimed anytime you had to append "science" to something it meant that it wasn't. Computer Sicence, Political Science, etc.
When VPNs are outlawed, only outlaws have VPNs.
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.
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!
The design of the mirror was perfect, it was the manufacture and testing that were flawed. To add insult to injury Kodak made a perfect mirror that was used in the vehicle testing... It is still sitting at Nasa...
I am a Chartered Engineer and a member of the Britich Computer Society, most programmers in the UK are not. Only a percentage would qualify. Who do you call a programmer? Some HTML and perl monkey who does nothing but setup simple websites with frontpage? Someone who writes an Excell macro? Thats programming but it isn't engineering.
To be a chartered engineer you have to be more than just a grunt worker. You have to have a certain level of responsibility, usually responsibility for a budget, you have to have an architectural input. In short you need to be a professional and have equivalent skills to a doctor or an accountant or a lawyer.
That does not mean you are guaranteed to be any good, there are a lot of useless doctors arround (who thought that lobotomies would be a good idea), there are losts of incompetent accountants (Enron, Sunbeam, Harken, etc.) and there are plenty of duff lawyers.
The real test is whether you can get kicked out of the association if you screw up big time, although in fact few doctors or lawyers get struck off for incomptence, its more usually having sex with a patient or embezlement, or in one case sending spam (ok it was only 2 years for the spam).
Looking for an Information Security student project suggestion?
Try http://dotcrimeManifesto.com/