Are Programmers Engineers? 1002
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?"
Are Engineers who Code Programmers? (Score:1, Informative)
The difference (Score:5, Informative)
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.
In Alberta ... (Score:2, Informative)
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).
Well... (Score:2, Informative)
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 [reference.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
Re:Depends (Score:2, Informative)
Re:The meaning of Profeesional Engineer in Texas (Score:5, Informative)
It all boils down to liability. If I certify a water treatment process safe and its not. Than I am in DEEP trouble. No more lisence, fines and basically the carrear is down the tube. In Canada and I think most of the commonwealth this is true.
Now I know a bunch of computer engineers, most of those guys are hardware, not software, but these guys wouldn't want to be engineers under Canadian law if they were doing programming. The computer software industry is still too immature to fall under these types of guidelines. Too many programs are not stable yet are shipped out because marketing wants them to.
I think I all boils down to currently the public is willing to let flawed software exist. And until someone dies nothing will change.
Like water in Ontario. People have to die before there is a backlash and things are fixed.
Re:It all depends ... (Score:1, Informative)
The real engineer that knows how to do proper abstractions and doesn't hard code stuff everywhere spends a good deal of his time fixing the code monkey's work.
Been there, done that.
Re:The meaning of Profeesional Engineer in Texas (Score:5, Informative)
Right (Score:4, Informative)
Requirements are obscene (Score:5, Informative)
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.
Re:Well... (Score:3, Informative)
Engineering is a PROFESSION. A profession is an industry that is licensed and regulated. A secretary can't call himself a Professional because you don't need to be licensed and regulated to be a secretary, regardless of how "professional" he or she appears to be in his or her job as a secretary. Likewise, a computer programmer isn't licensed or regulated. An engineer, however, IS.
In Canada it's much simpler. You are NOT an Engineer unless the CCPE (Canadian Council of Professional Engineers) says you are. To be an Engineer, you must have an Engineering Degree from an accredited university. You must have work experience in the relative engineering field (2-3 years), and you must pass a written exam on professional practice (ethics, laws, regulations, etc.) Also, you're obligated upon graduation by taking the Oath of the Iron Ring, which just like the Hippocratic Oath, swears you to uphold the standards of Engineering for the public good and safety.
Software Engineering Computer Programming (Score:2, Informative)
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.
Re:Well... (Score:2, Informative)
Sure they do. It is a job title, a company can call someone whatever they want (at least internally). I work with two "software engineers" that have no formal computer science/programming education, and only one of them even has a college degree.
I went to an ABET accredited Engineering School (UNCC - Go Niners!), I passed the exam and now I am an EIT (Engineer in Training), and a member of the National Soceity of Professional Engineers. There were hoops that I had to go through, and I feel that anyone else that wants to call themselves an engineer needs to go through similar trials.
Programmers are not necessarily Engineers (Score:2, Informative)
Re:Can you say "Accountability"? (Score:2, Informative)
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 [apegga.org].
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.
Programmer, Engineer, Scientist - My Impression (Score:2, Informative)
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.
Re:No, but Software Engineers are (Score:2, Informative)
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 [uwaterloo.ca] 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.
Re:ACM needs to step up (Score:2, Informative)
The ACM has this paper [acm.org] 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.
Re:Depends on a number of things... (Score:3, Informative)
Personally, writing an "application" isn't engineering, and it really doesn't even require a computer scientist to do. I'm talking about bare-bones pithy little applications that don't have to take anything into account except one or maybe two different systems; like your database structure and your application layer. You can tier them up individually, but in the end somebody writing a product that snatches data from a DB that's located close (network wise) to your application is really writing a very simple system. I don't care if it's a web application, console app, or a VB app; it's the scope of the job that really matters. You did bring this up, so please don't think I'm trying to lambast you here.
There was a comment about the Indian outsourcing a few days ago where a poster stated that he thinks programmers really are plug-in plug-out now, as writing an application is just dragging some icons and slapping out some VB code here and there. This is true, there's a good market for such systems, but when you need something more complex than that, you need a computer scientist, or if things get really big, you need an Engineer. I'll try and make some sense out of all of this here.
I'm not degreed, as I jumped into the job market at an opportune time and was very dissatisfied with my education. There's a myriad of reasons for this, but I won't go into them. Perhaps it was sheer arrogance from being young, who knows.
Because of this I will not seriously consider myself an Engineer; however I do the work of an Engineer now. My previous job title was "Application Developer" -- a politically correct term for "code monkey". I hated that job's duties, but I stuck with it as it paid the bills until something fell into my lap that would bring me back into an engineering role. As code monkey you don't have any choice about what's going on, you just write components or applications that require pretty much zero-thought if you've got a basic understanding of how an application should be structured and sufficent experience. It's mind numbing work usually. It irked me to no end doing this job because I knew darned good and well it was no more advanced than the drivel I could crank out when I was 16 years old.
Now, where I'm at now I don't even write code most of the time. I'll hack up a system I've designed and fit it into our architecture if the developers are strapped for time, or if it would take too long to draw up a formal requirements spec for them though. What I'm doing now is fixing architectural problems related to a system we've purchased that just doesn't scale up well. It wasn't engineered -- it was code-monkey'ed out the door. To top it all off, it's a web-application that I'm fixing. The core product was well engineered, but the web application wasn't, probably because they figured any code monkey could do it. Boy, where they wrong.
A lot of this is mindset, as you mentioned earlier. A developer, when presented with the next-gen architecure of this application will usually just nod at the feature set and hope to hell they don't break existing API's. I, along with my team, are paid to find holes in this, and bring up the what-if's, and point out the impossiblity of some of their claims before we're knee deep in the next version withou a paddle.
Complex systems, with many layers (think multi-contentinal systems pointing back to a centralized database, or distributed databases replicating between them) need Engineers.
Complex problems, with large datasets and non-obvious algorithms to solve said problem require a computer scientist. How would one go about properly aggregating seperate datasets and pulling out meaningful stastical data from them and get the job done before the next century?
Fleshing out the code behind a UML diagram takes a code monkey.
Summary:
You need a big system? Find an
Re:The meaning of Profeesional Engineer in Texas (Score:2, Informative)
You mean people like those killed in the widely studied Therac-25 [vt.edu] accidents in the late 1980's? Or the US soldiers killed because of a software failure in the Patriot Missle defense system [klabs.org] in 1991?
Re:Can you say "Accountability"? (Score:2, Informative)
"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 [www.ccpe.ca].)
In fact, the professional engineering body of Newfoundland pulled MUN [www.mun.ca]'s accreditation briefly over a "software engineering" program that they offered.
-legolas
Engineer vs. Code Monkey (Score:5, Informative)
I end up working in both capacities..
If a customer wants a new network put up, and says "give me 30 web servers", I'm going to enginner the network that can do that, from the uplink connection to the server itself. As the engineer, I'll make decisions on what softwares he's going to run, install, and configure them.
Likewise, if the customer says "give me a system that does xxxx", that'll be engineered. The people who wrote and operate Google or Yahoo must look at themselves as engineers, not just some code monkey that wrote some programs.
If the same customer says "Make me a page that says hello world, and put it on my 30 servers", that's code monkey work.
Here's the important bits from dictionary.com [reference.com]. I feel that these say we're engineers..
----------
engineer
engineer Pronunciation Key (nj-nîr)
n.
1. One who is trained or professionally engaged in a branch of engineering.
3. One who skillfully or shrewdly manages an enterprise.
tr.v. engineered, engineering, engineers
1. To plan, construct, or manage as an engineer.
3. To plan, manage, and put through by skillful acts or contrivance; maneuver.
Source: The American Heritage® Dictionary of the English Language, Fourth Edition
Copyright © 2000 by Houghton Mifflin Company.
Published by Houghton Mifflin Company. All rights reserved.
----------
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. See under Engineering, n.
3. One who carries through an enterprise by skillful or artful contrivance; an efficient manager. [Colloq.]
Source: Webster's Revised Unabridged Dictionary, © 1996, 1998 MICRA, Inc.
----------
engineer
\En`gi*neer"\, v. t. [imp. & p. p. Engineered; p. pr. & vb. n. Engineering.]
1. To lay out or construct, as an engineer; to perform the work of an engineer on; as, to engineer a road. --J. Hamilton.
2. To use contrivance and effort for; to guide the course of; to manage; as, to engineer a bill through Congress. [Colloq.]
Source: Webster's Revised Unabridged Dictionary, © 1996, 1998 MICRA, Inc.
----------
engineer
n 1: a person who uses scientific knowledge to solve practical problems [syn: applied scientist, technologist]
v 1: design as an engineer; "He engineered the water supply project"
2: plan and direct (a complex undertaking); "he masterminded the robber" [syn: mastermind, direct, organize, orchestrate]
Source: WordNet ® 1.6, © 1997 Princeton University
Re:Programmers are not engineers, let me explain (Score:3, Informative)
The raw materials are hard to get because the "weapons grade" uranium is a very small percentage of raw uranium and it is difficult and expensive to seperate it out. It is actually this step that holds up most uranium bombs.
Plutonium can be made in a large, sophisticated reactor that is pretty hard to hide. The engineering for a plutonium bomb is somwhat trickier than for uranium bombs of similiar yields.
Small, high yield nukes require very difficult engineering even after you get the raw materials.
Re:it's a strange version of democracy (Score:5, Informative)
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?
Every single decision she made followed the law and held up under international scrutiny.
Katherine had anyone "suspected" of commiting a felon removed from the rolls
I assume you got this from the BBC's Greg Palast since he is really the only person that thinks this is a story. A quick look at his webpage [gregpalast.com] will show you how partial he is (he seems to have staked his entire career on undermining the Bush presidency).
Now for the real facts:
In 1998, Florida Division of Elections Director Ethel Baxter, a democrat, hired the firm Database Technologies to compile this list. The list had around 100,000 names on it.
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.
Once again, nobody was required to use the list (several counties including Madison County didn't use it at all), but if they did use the list, they were required to independently verify the names before any action was taken. The fingerprinting was only required to dispute the removal if the person actually was "verified" by the county supervisor and removed from the voter registration- otherwise they probably never knew they were on the list. With all of his complaining, Mr Palast has only found about a half a dozen people that were incorrectly removed from voter registrations and forced to dispute the removal.
So it boils down to this:
There is only anecdotal evidence that any legitimate voter was actually prevented from voting because of this list. Rep Corrine Brown, a democrat, claimed that she saw "2 or 3" black people get incorrectly turned away, but when the media pressed her, she was unable to give any details.
So were minority voters specifically targeted? The NAACP, who came in to represent these minorities, stated VERY plainly in this settlement [naacp.org] that
PE certification? Don't make me laugh (Score:3, Informative)
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.