Should Programmers Be Certified?
An anonymous reader wrote in to send us
For Coders, a Code of Conduct (from
the NYT so free registration is required). It says that
an engineer needs a license to work on a bridge, but
programmers work unlicensed all the time. What do you
think?
Should teenagers be required to have a license to work at the mall or at McDonalds? Should a writer have certification to write a book or to give a speech? Do all the little kids in Asia that work in sweatshops need to have a license to make Nike's? No.. so what's their damn point? Isn't it about wether or not you can do the job to the company's satisfaction (and beyond)?
Crypt242
Ever heard of a Project Manager? Usually in a normal healthy working environment there is heavy interaction with upper management, to reach their goals and your own. I find "we hope this is what you wanted" to be a rather inaccurate example.
In the case of bridges, if the engineer screws up people could die. In the case of software, programmers can release it anyway (it's a feature, not a bug).
your too late, the programming world is already full of morons and has been for years.
How in hell do they expect that to work...let's see, I have Linux, it comes with GCC (or egcs now), I can sit down and code away to my hearts content. Then I can fire up my internet connection and release that code to any people who find the web page I put it on. Would this get me arrested, or fined for coding without a license? Or am I just going to need a license to get hired at a company. Because companies are just hiring people at random. I know so many people who just get grabbed off the street by software companies, loaded into trucks and dumped in front of computers. Happens everyday.
Strikes me that some nut has just got his knickers in a twist again over the Y2K bug, and not bothered to research his facts.
(Note for the stupid: When it was first used, the code that has now given us Y2K was a good idea, more or less. If you have less than a meg of memory, and you want to set up a database or spreadsheet, you have to save memeory where you can, or you'll end up with a database with a fifty record limit. those 4 bits start to add up, you know.)
Certifying programmers is useless when managers
and marketing decide what ships. What is really
needed is independent quality inspections prior
to release. Before a software product can be
used in any critical situation it should be
inpspected by an independent agency and certified
as reliable. Certified programmers can produce
junk just as easily as uncertified people but the
end result is what is truly important.
And what does software development have to do with bridgebuilding?
I can understand that people may want some proof of quality but certifying the programmers?
When is people going to understand that poor quality always comes from the top, not from the bottom. The proof that a project isn't managed by an idiot is all the quality assurance one should need.
Isn't linux where a lot of the work is done by people without cs degrees a proof of that.
worked in the corporate arena and doesn't see a need for some kind of license is blind or incompetent. Most of the lamers who get degrees couldn't code their way out of a wet paper bag, much less anything with any degree of sophistication. Look at MS for example. You've got lots of people with good degrees but maybe one in 50 has any real skill or talent! Let's face it: the real reason Linux is better than any of MS's crap is the fact that everyone working on Linux believes in it and has proven they've got the skills. The ACM should just offer some certification test proving that you at least know what good form is....doesn't have to cost a lot(just enough to print the test IMHO).
there have been few cases where somebody has died from bugs in software and as more things become controled by software more ppl will die from bugs in it. look how much medical equipment is being controled by computers, air traffic systems, traffic lights, subway systems, etc... if there are bugs in the software that controls these things it can become very possible for somebody to die.
comparing building a bridge to creating software is not correct in most places. software is more similar to manufacturing in general. being certified is not needed for the bulk of programming that is being done but for those few things that are comparable in scale to building a bridge i think certification should be necessary.
I for one, do not look forward to the day every program must be written by a licenced programmer and cost about as much as that bridge. You think M$ programs are expensive now, wait till they are the only company allowed to write them by law!
What do you think......
I was coding Clists for the mainframes, scripts on the UNIX boxes and some Visual Basic - I know its crap, but it was all they had for the Wintel platform.
Is that enough for you guys????
Oh and this was full production systems for a major UK company.
Cheers
I think he is refering more to 3rd party closed source software. You never get to see the blueprints (source code) of the bridge (program). As the end user you may or may not care about this. If it works and works well you might not care (at least until something unexpected goes wrong). But if you want to see the underlying source code then you are going to want to use open source software. I dont think the y2k issue is as much about liscensing programmers as it is about the responsibility of the software industry in general (respinsibility of how well the program works, how open they are, etc). Overall though, this article showed the author's ignorance of both the problem itself and the probable effects. Would liscensing programmers really take care of the stupid PHBs who would still refuse to pay attemtion to them because they are talking about needing more money to resolve whatever potential software problem is in question.
Yeah, but why go around giving morons certificates claiming they know how to code?
Maybe we need a different kind of "certification" for programmers...
I know plenty of people who are good students, would pass any likely certification test, and I sure as hell don't want anywhere near my dialysis machine.
Take off the shades and see the light.
Who would you rather fixed the brakes on your car, somebody with 3 years of classes or someone with ten years of fixing cars.
SGL
If I have seen further, it is because I have stood on the shoulders of giants.
Sir Isaac Newton
The tools of the trade (languages, platforms, tools) aren't standardized enough yet. Microsoft is largely to blame for this IMO. 5 years from now when Microsoft is irrelevant, certification will seem a lot more reasonable.
I've seen the quality of programming from a lot of programmers and requiring a license or certification for programmers would immediately cost about 60% of them their jobs. And it would utterly decimate Microsoft.
Though I expect that this would mean those of us who are left will be able to triple our salary demands. And it would put a stop to the wholesale importing of minimum wage programmers from Bangledesh. So huh. I guess I'm for it.
Well another thing.. most programs don't consern human life, ;) )
whereas a bridge does. If someone who wasn't trained well enough to get a lisence built a bridge,
there's more of a chance of the bridge collapsing, killing people.
But for someone coding a game or such.. it can crash
all it wants.. no humans will be killed. (Though if they got really far
and didnt' save it.. they may kill themselves
What an ignorant thing to say.
You've been duped into thinking that
paying money, listening to someone talk, reading a textbook, working in a lab, and taking tests will somehow bring you a level of enlightenment that is beyond the grasp of someone who doesn't have access to one these "churches" of knowledge.
I have proof that I can keep up with new technology- I have never had a formal education in it yet I'm working with it now. Thats my degree. Your degree, however, proves nothing.
Check out the Oceania Project: http://www.oceania.org
The OP as put forth on the website will probably never come to pass (how long has it been since they updated that site anyway?) but the general idea is still a good one. (The Pacific might not be a great idea, depending on where you are...wherever there's "a lot of room", you're awfully far from anyplace that matters.)
Before we even consider licensing programmers we should figure out where we draw the line between programming and something else. Is someone who writes HTML using a WYSIWYG tool a programmer? What if he uses EMACS instead? What if he writes in XML? What if he rolls in a few javascripts?
There are a lot of programming concepts more complex than scripts...
:-)
DD*
You've obviously never seen a clist
I don't have a degree and I can program circles around most of the degreed programmers I know. I worked with one woman in two different jobs in two different states who (apparently) had a degree but absolutely no aptitude for computers. I have to wonder how the hell she got it...
And then, even if you ARE able to tell your ass-end from your elbows (In a purely binary sense) chances are you get saddled with some dumb-ass manager with no concept of what's capable with current technology.
And every once in a while you get an interviewer who is going for buzzwords "Ohh! Yes! C! We want C! And UNIX! Yes! And OS/2. And Windows NT. And we pay $30,000 a year, and... hey... where are you going?"
I'm okay with paying a small fee and taking a test to certify that I have a certain degree of competency in a particular skill.
The fee must be small because of the rate if change in this industry. We'd have to get lots of these little certifications for specific skillsets.
You seem to be using two very different terms to describe one thing. I may be reading you wrong, but to clarify the below is offered as an explanation.
Certification: Used to show that you know SOMETHING and won't blow up the equipment. Usually handled solely in the private sector, no government intervention. Examples: CNE, MCSE, MCP, CCIE, etc.. Usually it's a test or series of tests.
Licensing: This is handled partly by the government. You are NOT ALLOWED TO WORK without a license. They are usually quite costly to obtain either in terms of money or time. This has a proven history of preventing people from using thier talents even if the customer agrees to the risk in not having a licensed person doing the job. The only real purpose of licensing is to shut out those who can't afford a license for one reason or another. This is commonly seen for doctors, lawyers, taxi drivers, and engineers.
Now, that said, I would like to mention that I know MANY people who are excellent programmers who don't have degrees, much less the money to get a license. I also have worked with programmers with degrees and certifications who don't know jack about programming. Programming is more like art then science. There are many, many ways of doing the same thing. New ways are found all the time. There are advances in, say, engineering as well. They just aren't as rapid, or as easy to test out (do you REALLY want to build a "test-bridge"?) as programs are. Where we can compile, hit it with tests and decide what we want to do.
There are very few hard, fast rules to programming. There are a ton of them in all the licensed professions I know about, and with good reason. I wouldn't want an engineer building a test bridge, or a doctor testing a new procedure on ME without a LOT of evidence that it works and is safe. There are very important differences and they need to be recognized.
As for certification, I have to echo the others here. An advanced degree should be certification enough. If it's not, there is something wrong with the degree program and it needs to be reworked. This leaves open the potential of a child prodigy or some other talent comming out of the woodworks and still being alowed to work based on skill. I'd even be willing to support an apprentiship type program as long as it was to be based on skill alone rather then years.
A GOOD programmer with an advanced degree and some experience should be able to get a job anywhere very quickly. There is a huge demand everywhere I look. If you really want to stand up to stupid managers, then do. Your skills are valuable on the job market, take them elsewhere if your ethics don't allow you to do what they demand. Nobody is holding a gun to your head, it's still a choice.
I feel licensing, and all that it brings with it, would be horrible for computing. It would stiffle innovation, and lock out real tallent from our field. Companies should decide if they want to accept certification as a barrier to entry or not based on thier needs and experiences. But the option should be there.
I think a certification with much the same criteria as the PE certification would not be excessive- if I recall, it's like 2 years and a degree, or like 5-6 years without a degree, and a test either way.
As for obsolete certification, why not use a language everybody should know or pick up easily like Pascal? It's obsolete, and it's a good learning language.
And I think that whoever said "There are no dangerous weapons, only dangerous men" could have been talking about programming languages and programmers instead of weapons and soldiers. A language is just a vehicle for solving the problem, nothing more. A good programmer should be able to pick up any language pretty quick, and the fundamentals are the same regardless of language.
That's why I think a certification wouldn't be a bad thing- it'd weed out the "not-so-dangerous men", if the certification was done right.
Just great. It almost seems that they want to create another social class
Licensing is about legal responsibility, not competence. Before licensing of engineers, anyone could call themselves an engineer, and build bridges, roads, and other structures.
Many of those bridges stand today, a testimonial to the competence of the designers. Many failed, however, causing loss of life. The failures had many causes: incompetent designers, poor materials, poor understanding of how materials behaved, and so on. Read "To Engineer Is Human : The Role of Failure in Successful Design", available at amazon.com, for many examples of how engineering design evolves.
State laws for licensing of engineers do not require that all people involved in bridge design and construction have an engineering license. However, when the licensed engineer puts his stamp on the work, he is taking responsibility for it. He certifies that it meets the requirements of state and local laws, building codes, etc. If the work does not meet those requirements, then the licensed engineer and his employer are held legally responsible.
The way that usually works, neither the government nor the government's contractors (Which is to say every major corproation in the country) would not be allowed to use your code because you were not licensed.
You want me to certify my skillz? /. article, the number of new programmers declined from '90 to '95.. Employers can't afford to be too picky.
1) according to a recent
2) My GPA is in a sense my certification.. Yet it says nothing about how well I code, so certifications can't possibly test enough areas. Should I get certified in Basic C coding? Maybe Direct Draw, or OpenGL, or maybe they need someone to make some AI..should I get certified in that?
3) Starting sallary for someone that is competent is about $45K, if you try for more, I'm sure you can get it. I swear, if someone puts me through "certification" I'll tack on another 15K for my trouble.
4) Employers hire interns all the time, these are usually untested Jr-Sr in college, pay them less money, and get code that works just fine. Again, employers don't seem to interested in certification.
5) If you are really worried about quality, there are ISO specs coders can follow. Personally they seriousl hamper getting real work done but if you are that anal, so be it.
Bottom line for me is I don't think you could "certify" someone beyond a minimum set of skills. Something you would pick up in a "Learn C++ in 21 days book." If you don't poses those skills, any competent recruiter would be able to tell.
Finally.. I bet you money whoever suggested this isn't a coder.
Rather, lets force anyone who reports news to be a licensed journalist. A slight difference. It'd probably put every news anchor (Read: Face that reads the news) out of business.
How would this affect Jerry Springer?
So calm down people.
But if you design embedded microcontroller code to deliver doses of directed X-Ray radiation for a cancer machine, or you are designing code to run on a new heart lung machine, or to control an air traffic control system, do you think this should be a "fun" and "interesting" project that you can just HACK AROUND on?
This is serious stuff people and play time is over. It is not innovation time, and it is not hobby time.
If you're not interesting in doing commercial work, and only interested in doing GPL/OSS based stuff, what are you complaining about?
The way I see it, all of the hacks doing GPL stuff can stick to their hobby and try to eek out a living on their chosen philosophy and lifestyle, and the real software engineers, meaning the people who take time to design specifications, implementation plans, work with management, through to implementation, can do the real nasty work that needs to get done in the world, and get paid for it.
Building the 10,000 bridge, skyscaper, or road may not be fun or interesting, but it's something that has to be done.
Building yet another GPL VI clone can be left to the hobbyist bottom up coders.
I'm not a VB programmer but i think you're being unfair to those that are. There isn't much you can't do with it that everyday programming would require.
From the point of view of having a degree, the only thing I can find in its favour is that the paper is very absorbent...
Acadmeia is all very well if you have a burning urge to shell sort your laundry list or see if the length of your knob is a prime number, but give a university education any reasonably sized real world application and its limitations show themselves pretty quick. Sure you get the concepts, but you don't get the discipline. You're not likely to learn much real world responsibility if the worst consequence of your program fucking up is missing Cheap Drink Night at the Students' Union.
No substitute for experience, basically. Why talk to the monkey when you can talk to the organ grinder?
Another difference between commercial and OSS programmers and that OSS programmers are not accountable to anyone.
OSS programmers don't have a contract. They don't have a customer to report to. They don't have management. They don't have shareholders. They don't have an obligation.
In theory, a commercial programmer as part of a company, must deal with customer requirements and desires. These may not be fun, interesting, or may even go against HOW YOU'D LIKE TO DO IT.
The commercial programmer is held accountable when his project doesn't mean expectations or IF IT KILLS SOMEONE. (company gets sued)
The OSS programmer sits in the comfort of his parent's basement merrily hacking away, adding only the features he cares about on his whim. No real obligation to fix anything that breaks since if someone uses his software it's "AS IS" "AT YOUR OWN RISK" "PATCH IT AND FIX THE SOURCE YOURSELF"
See the difference?
How many OSS programmers even use software engineering techniques it all? How many have read and used Booch/Rumbaugh/Jacobsen? How many do UML/Cue cards? How many have a team process?
Its a Batchelor of Experience from the University of Beentheredonethat.
Unless certification is controlled at relatively local level, it inevitably (or at least often) degenerates into a means of competition control. This seems to happen in both free mnarket and command economies, regardless of government structure. Sometimes it is a nessessary evil none the less - as with the civil engineer. Additionally, certificatiom inhibits paradymn shifts, obviously not good for rapidly evolving industries like software. Leave the certification at a higher topological level - the civil engineer needs to be convinced that his engineering software is reliable.
Been there, done that, then did 20 years of development. Maybe, from your ivory tower, I'm crap too, but i produce stuff, people pay me lots of money and they ask me back.
But it doesn't teach you how to write, does it?
Think about it.
Wow... that was a dumb comment. All of Mircosoft's certifacations have to do with using their software, not writing it. If you are going to post something, at least make sure you have half a brain first. I personally find most of Microsoft's products excellent. Office is unbeatable. NT, while it has it's flaws, performs better and is nearly as robust as most Unix flavors. And for a begginer, or just somebody who likes playing games, their consumer OS is good. If you are going to bad mouth MS, bad mouth them for their strong arm business tactics, not their software.
I am employed as a computer programmer, but my masters degree was in mechanical engineering. I picked up a lot of linux/ unix "sys-admin" stuff, and learned c++ w/out doing that stuff in school.
But the application of the programming languate is where my degree really helps. For example, my knowledge of numerical methods and automatic control systems has helped me a great deal in designing financial trading packages.
I think a person can pick up quite a bit without the college degree, but I doubt most people would
be able to write an operating system or REALLY understand the ins and outs of data structures as well as having some understanding of their applications without having a lot of incentive to learn it on their own, or some formal training from a good school.
Of course you would use leaving as a last resort. Someone else posted a soultion to the getting the blame side of the problem. Just make sure you get it in writing (yes, on a dead tree) that managment has ordered you to do it. That way if fingers start pointing, you can point back.
As for the ethics side of things, licensing wouldn't help. If you did that ALL licensed programers become "hard to work with" or "not a team player". The situation is not improved. When it comes to personal ethics, there are no easy answers. If explaining the situation to your employer does not produce results, you have to decide weather you want to leave, and risk the branding or violate your ethical code and do the project, perhaps with proof that you were "following orders". What it comes down to is personal choice.
As a person, I'd like to keep my choices available.
I can't see this ever being the case. Court cases have generally viewed source code (programming LANGUAGE) as any other language in which you can write. This is the basis for settling early squabbles over copyright (you immediately have copyright over your source code, exactly as if you wrote a book).
Certification? And then Stephen King will be certified as a novelist, Scott Adams as a cartoonist...
And let's not even get started on the technical side... How do you test? We'll all study for the MS Visual C++ test? What if I'm a PPC assembly guy? Leave it up to the employers and open-source. If an employer doesn't like how you do it, they won't hire you. If it's open-source, feel free to redo it.
Actually, that's a lot of hooey.
I've been designing, writing, and maintaining software for 15 years and I've seen a fair share of incompetant managers who forced bad design decisions -- HOWEVER, I have also seen a large number of programmers who took shortcuts and used too many "Stupid C Tricks". I don't want to count the number of times I've heard a programmer say "well, the user shouldn't DO that".
In short, don't blame Y2K on the managers. In some cases, it's our own fault.
Just KIDDING!!!
Good managers don't need to be certified, and they don't really need to know that much technically (although it certainly helps). Managers need to know their limitations, and they need to respect and listen their staff. My manager is great, he views his primary role as 'running interference' between us and certain people at the company who get in the way or our doing our job.
What a Luser, take your own advice and check into the MCSD certification. Unless you consider MFC an application?
It would be just as accurate and effective if every time windows crashed, somebody went into the M$ building and randomly fired the first programmer he saw.
So what's the problem with that?
:)
you are mistaken
after a long period of disbelief, I finally learned that the issue of licensing for engineers is not one of public safety, but one of economic control of the licensees.
The concern is that engineers (and doubtless soon to be programmers) can earn income as private individuals which is "outside" the IRS programs for W-4 withholding and I-1099 reporting. This makes non-reporting of income by professionals easy, and makes collection of taxes on significant quantities of income difficult. In a not-so recent but very memorable tax audit, in which I was challenged for deduction of my computer no less, the auditor treated me as though she was my "operator" and I a piece of "economic apparatus" on which she too had to report. She remarked that my income seemed to low according to her data for engineers and that as an engineer I should be making more money! Like I didn't try, the bitch.
Licensing for public safety is - phooey. This is all about maintaining an economic profile and a taxation profile on an increasingly independent segment of the labor pool.
BTW, in Virginia, licensing is linked to your SSN, and each year the SSN list is sent to the IRS, which then compares the SSN list to reported economic activities.
As a registered Professional Engineer (P.E.) I can tell you that taking an exam is not the worst part of it. The registration process went pretty much as follows.
1. 4 year college degree (minimum)
2. Exam, 8 hours, testing you on your entire college engineering curriculum.
3. 4 years work experience under the direct supervision of a registered engineer.
4. Exam, 8 hours, testing your in-depth knowlege of your engineering discipline.
What this procedure is trying to do is to assure the public safety. The states (and most countries) have set minimum standards of competency to be considered an expert, where experience has shown that not doing things properly will result in serious danger to the general public.
A bridge designer who doesn't know what he is doing may kill hundreds of people when the thing collapses. A software designer (Like Microsoft) won't kill anybody when his program crashes. The losses are only financial, no loss of life is likely. (Where NT or any other crash prone system is used in a critical life safety application, the Engineer if Record - the guy who stamped the drawings approving such use- is the one responsible, not the programmer.)
From the above, I don't believe that regristration of programmers is legally required. Certification like MSCE or NCE a convenience to the employer, to gauge competence for someone he doesn't know.
My PhD is in Astrophysics. I aided in developing
neural-net based star/galaxy classification for
a digitized all sky survey. My thesis used a
genetic algorithm to fit a 19 parameter model to
a several gigabyte dataset. Currently I work at
the U of Az designing a GUI-fied real-time
automated asteroid detection code for a Near-earth
asteroid survey.
In eleven years of college and three years as a
postdoc I have had exactly one formal computer
science class and that was Pascal (not exactly
what I use day to day).
Ninety percent of my work for the last 13 years
involves programming. I have had four CS
interns (one a graduate student). They were all
excellent, but I rarely feel incompetent working
with them. It is completely experience. No
amount of coursework can prepare you for your
first networking problem or your first real-world
computational problem that can't afford the luxury
of homework problem simplification.
You need CS people, but don't diss on those of us
who got our experience the hard way.
. . . but you wouldn't know about that.
People will spend thousands of dollars to attain a degree so that they can make a nice high return on investment.
People with that mentality belong in marketing or sales. They're tremendously destructive, because they don't give a rat's ass about anything but collecting a paycheck -- hence they write rotten code and devote their time and enthusiasm to office politics.
I have no use for those parasites.
Because management would not then be able to scapegoat techies and would lose an element of control over their little empires...
And because management will hire cheap talent over over higher paid certified/licensed programmers (even at higher skill levels) as long as there is a pool of the prior from which to draw.
Licensing will not happen UNLESS it happens in the way that benefits techies least: software
co's can still use unlicensed progr's at low cost
and need only one LSE to sign off (but the techies could not sell SW "out of the basement",
moonlight or GPL without an LSE signoff (if they
hoped to join the "guild" themselves).
Is this MS's next big ploy?
-- TWZ
Exactly... I went to school for a while, got tired of the morons and the attitudes, and got a job.
This year I would have graduated from college and instead I write compilers. If you have the instinct, you know what you have to do. Just because I didn't finish college doesn't mean I didn't work hard to gain the skills I have.
I think we should operate just like the AMA or any other trade guild -- have arbitrary and capricious requirements which restrict entry to the trade, creating a shortage of labor which allows us to charge exhorbitant fees for our services. Then we could start a campaign to treat Open Source as the only accepted development methodology, and all other methods (such as closed source) as "software quackery".
You guys with me on this?
Re: the "Software Engineering" case.
You are slightly incorrect. What's happening is that Memorial University's *Computer Science* department is offering a program called "Software Engineering." Memorial University refused to either change the name or move the program to the engineering department and change to contents to meet the Newfoundland Engineers' Association's (the actual name of the body escapes me) requirements.
So the Newfoundland Engineers' Association is suing Memorial University.
I think they should give an option of 3 different obscure programming languages for any programming tests. The person pursuing certification must choose which implementation languages is most suited to their own skill sets and the problem at hand. Probably we should have representation for each of these categories:
functional
procedural
declarative
But make sure the languages are so obscure that most people wouldn't have had any real experience in them. Maybe even make them up. Then maybe supplement this with whatever language is "hot" at the time (e.g. C++).
CIPS or the "Canadain Information Processing Society" has been around for years, and as far as I know works great. You have to be re-certified every 3 years or so (to make sure your skills are still up to snuff).
I don't get what all the fuss is about, certification works great for both the employer & the employee.
Introduce a software lemon law like the original poster described, you kill most commercial activity based on the GPL. My, what a desirable outcome that would be.
I think we should be certified.
Most of you are idiots. I am not an idiot. Therefore I should stand out from you, not only in salary (which I do hahahahaha), not only by my resume (hahahhahahaha), but also to show I can pass another test. The test that you are to lazy to study for. Why do I know you will not study for it? Because you are to lazy to learn the features of the language/product/etc that you use now. Instead of picking up the manual you call tech support.
Yes, we should be certified so I can charge more per hour than I do now.
>Its absolutly silly. How do you empirically test
>programming competance?
The Java Prorgammer Exam does an OK job at testing programming competance. The developer exam is also an OK measure.
absolutes are often silly.
This is why HR people don't tend to interview programmers. At every commercial software company I've worked at - that's five over the last nine years, in all sorts of positions - the HR weenie is there to get forms filled out, then the actual interview is done by technical people. Tech support interviews tech support, QA interviews QA, and developers interview developers. Occasionally there's a manager thrown in, but the manager's opinion doesn't count nearly as much as the opinion of someone who actually codes, or tests, or answers phones.
:-)
Case in point: I'm currently working for a major printer manufacturer. When I applied, I interviewed with four technical types and one manager. The manager type told me, in the interview, that he didn't think I was right for the job; I didn't have a degree.
The next day, they called me. The technical types all wanted me and the manager wasn't about to argue with them.
Too bad Microsoft doesn't force their programmers to be MSCD certified, therefore your point is moot.
What else is supposed to speak for him? (Hint: an answer that does not mention the acronym "NDA" is incomplete.)
20 or 30 years ago when Y2K bugs were being coded, I suspect it was often considered the correct thing to do. That is a "certified programmer" would have be trained to make these kind of optimizations. In other words, such practices probably were not seen has "hacks" but the right way to do things.
Any fossils out there care to reaccount first expereinces in this area?
So even if a good certification process could be developed and implemented, I suspect problems like this would still come up. It is easy to be far sighted when you're looking behind, but not so easy when you are looking forward.
The problem with certification is the problem with any standardized test. They are unfair. However, they can ensure at least some level of competency, however that assurance won't be cheap. It might lead to be bunch of average programmers running around with few really good or even fewer really bad ones in attendance. However, for building bridges and other critical production type systems we might want competence over whizbang anyway.
The better comparison is software fail = pacemaker stops = patient dies. If Y2K causes enough BIG failures licensing will happen.
The flow is - Disaster > look for someone to blame > force changes to "fix" and prevent from happening again. The fix usually is forced on the easy target (the programmer coded the problem) not the cause (manager told programmer to not fix the Y2K bug and to code on.)
Let's see: programmer salaries right now top out in the low 6 figures -- and that's just driven be market scarcity.
Throw in certification/licensing and we'll be like doctors and lawyers. With better wardrobes.
Who's going to complain when Java rates go past $200/hr.
Not the worst thing in the world. We're smarter than they are anyway.
Perhaps, but comparing civil engineers to software engineers/developers is comparing apples to oranges. In the civil engineering world there are barriers to entry (ie. materials to build a bridge do not come cheap). Where as building an operating system such as linux has relatively few barriers material wise. The priceless asset is the time/work of experienced coders.
Or...maybe they are very similar, and right now all the software developers have an axe and a forest of trees to cut down, and build stuff with. As with everything, the strong will survive and the rest will go by the wayside.
vt0asta
I think that programming has changed in some ways. As the programs have gotten larger, the standards have changed and large programs where there are tens or hundreds of people working on them have often become much more modular. OOP is in, fortran isn't as popular as it used to be, we've discovered the world of event-driven programs,etc. My mom worked with punchcards 20 years ago, but that experience is useless to her. I doubt most programmers would have a problem keeping up with the changes, but if you check out of the computer world for a few years, you might have some culture shock in the transition. for example,the jump from having direct access to everything to being stuck with DirectX has been annoying to a few people I'm sure. The changes not be large, but it's amazing how small of a rock can make some people trip.
I think it's very difficult to test programmers to see if they have the appropriate skills to write good software. It seems a lot better to build a series and tests to tell if the software is effective, and behaves nicely. The OS vendor or some other appropiate entity could then certify the software (similar to Sun's Java compatibility tests). This won't work for all products, but it seems more effective to me than trying to make a programmer chose between losing certification and losing his job when sales screams "We promised to ship it yesterday!".
the thought that one number can adequately
describe a human intellect is fundamentally absurd
On a related note: has anyone ever heard of programmer's "insurance?"
I knew a programmer who was working for Apple and he had to have insurance to work on their QuickTime code.
Anyone know where to get such insurance?
An mechanicle engineer works on a bridge so that society may use it. A software engineer works for a company, or potentially him/herself.
Yes, their is a BIG goddam difference.
There's no certification for electrical engineers. I design analog circuits and my reputation is based on the quality of my work. In any job interview, I get asked what I have worked on in the past and to describe it briefly. It is easy to tell in that situation if someone knows what they are talking about.
I'm not sure that programmer certification will improve software quality. It seems that the management is more responsible. Even mediocre programmers, given the right management, can produce good code. It will just take longer. When project managers and marketing reps will settle for kludgey code, we see craptacular software in the market.
I don't really like the idea of certification. It seems like a misguided, beuracratic (so I can't spell, I'm an engineer) burden that becomes a mandatory hoop to jump through. You have to pay for it, but it doesn't mean much. Yeah, I went to an accredited university and that may be seen as certification. Maybe it is, but I learned a heck of a lot at school. Sure there were bozos out there who slipped by, but that will be evident to all but the most boneheaded employers.
I'm all for standards and codes, but this kind of mandatory seal of approval looks like it does more harm than good.
Matt (forgot my password)
Bridges collapse most often when loaded (with traffic). Boilers blowup when they're full of steam under pressure. These are the kind of things that licenced professional engineers put their stamp on. There's a lot of engineering that gets done that doesn't need a stamp. There will allways be a lot of programming that gets done with out a stamp - but I could see a PE for software for something like the control program at a nuclear power plant.
I'd rather hire a MIT grad than some State U grad not because the wonderful course work but because he is statistically likely to have higher IQ.
i think you mean they are statistically more likely to have richer parents. cost is the single most deciding factor as to whether a person goes to an expensive private school or a cheap state school. it has nothing to do with ability.
Perhaps a lot of theser respondents merely haven't taken a sufficiently interesting, creative test.
Sure, I can see miserable, horrible tests that check whether you know how to trigger the garbage collector the right number of times to keep your object count low while serializing accurately over OODBC connections (to buzz the right words).
I'm far more interested in tests of code design ability, code reuse, language adaptability, flexibility. Awareness of robustness principles.
Not in fusion.
"...if you don't know history, you repeat it."
Whether that history comes from one of your old
men screaming at you or hitting a book or asking
a coworker I believe the end result is the same
and that is the point I was trying to make.
The point is experience. Classrooms attempt to
give a person a lot of "experience" in a short
period of time. And I grant you there are few
more efficient ways than that. In my experience
part of the failings of classrooms are that some
of the old men refuse to accept new ideas and will
not teach them to you.
But...
There is another type of experience you overlook.
That is, most programming does not exist in
a vacuum. My CS students are all experts at programming.
However, my programming has a
purpose (astronomy) and often it is easier to
code up certain critical routines myself
(never mind if you would find them inefficient)
because I can't depend on a pure CS student to
understand the nuances and I don't want to have
to constantly look over their shoulders. In
other words, my assistants handle the sundries
and I make sure the critical bits work right.
I can't imagine that this is just my problem.
Given a choice between a CS major who is
technically excellent at programming and an
accountant who is self taught but competent,
I know whom I would choose to write an
accounting application. Of course, large projects
would have room for both so perhaps this point is
moot.
But this is why certification *cannot* be tied
to a degree reading only "Computer Science."
As we approach an age in which computers are becoming more powerful each and every day, and the scope in which any given piece of software can have an effect is widening exponentially, perhaps the notion of licensing programers isn't that far fetched. The reason that doctors are licensed is precicely because of the potential damage they can do. Shouldn't programers be judged with increasing scrutiny as the level of influence they have in society increases?
Yeah, let's all sit around and hold hands and sing together about the "community". What a load of horseshit. People who code for free do so because they're not qualified to get paid to do it.
Yeah, wonderful. SO if that code kills people, who's at fault, the "community". More OSS fairytale bullshit.
Most business programming doesn't require any concept of how the computer system could relate to things outside itself, so there the average CS grad is relatively well-equipped. But with the huge growth of smart devices, the proportion of programming which needs a comprehensive knowledge of the application and its environment is growing. To work in that world, you have to have knowledge not just of formal methods but also basic physics, electronics and sometimes mechanics.
Software is my living, but I can talk reflected power with the RF engineers, thermal conductivity with the mechanical engineers and current-force relationships with the guys who deal with the magnetomechanical interface gadgets. I can dig through the system to find what's wrong, hardware or software, and often I can fix it. I can understand the system, and that's where I really earn my pay.
Getting this back to the subject of the thread, I think we could all agree: there is never going to be a test which can measure the ability to do these kinds of things, and these are of far greater importance to an employer than a score on a standard section if they need those skills. This is why the resume', not any "certification" authority's appraisal, is going to be the most important thing for getting a job for a long, long time.
>Who would you rather fixed the brakes on your car, somebody with 3 years of classes or someone with ten years of fixing cars
Humm... Here's a real life answer to this hypothetical that translates directly to the computer programming industry :
Whichever is cheaper.
That's why, when you go to Midas to get your breaks fixed, GED cannon fodder is behind the wrench.
Anyway, the point is quite moot, as it looks like Microsoft has an internal fix waiting in the wings just incase this scenerio plays out...
The REAL question is what sort of impact would this have on OSS, uncertifed software?
Maybe Microsoft is quitly pushing this issue?
y2k should be very telling...
You would probably also realise that house plans are not very detailed (compared to a bridge or multistorey building). A lot of the actual detail gets filled in on-site by the builder as they go. And the builder will also be licensed - well the labourers won't but anyone with any responsibilty will be.
You would also find that engineering drafting has more stringent requirements (in my country at least) than architectural drafting.
I wouldn't worry about it, 5 years to get the degree, and then +12 years of experience. 12 years, is a LONG LONG time in the IT industry. I for one plan on retiring by the time I'm able to be certified in Texas.
Okay, so something goes wrong with your Microsoft software... who do you sue?
Never did I suggest that MS employs sub-standard programmers, in fact I believe quite the opposite. However, I find your assertion suspect as I have a friend who programs at Microsoft and who doesn't have any certification.
lost my password, this is spauldo (formerly da hippie, 'fore the air force cut all my hair off...)
This type of thing looks good on paper, but if you look at it in practice...
For example, let's say that our favourite monopoly gets all their programmers certified. Will their products be any better? No. Do you think that the programmers at M$ really want to program bloated code? No again. They're brilliant people for the most part, from what I've heard. But coders don't neccisarily call the shots on what they have to work with.
For example, let's take the A+ certification (computer repair). I took heathkit practice tests for it, and passed it easily, even though the test includes laser printer repair, and macintosh architecture, neither of which do I have any twinkling of experience with. I can fix a PC with my eyes closed, but I'd be lost on a laser printer. Yet my certification says I can repair them.
So really, a certification just proves that someone has the minimal knowledge of a particular subject. I have a minimal knowledge of programming, so can I get certified too?
And as for people writing better code just because their certified, as it seems you were trying to convey in your argument, I would seriously doubt that. I don't repair PC's any better because of my A+ certification. I repair them just like I did before (adding the two additional years experience in the meantime). You either have the ethics to check all your code, and do the best job you can, or you don't. There's no certification in the world that will guarantee that.
The thing is physics are always the same they are laws, but unless you wrote the compiler or are programing in machine code you are never going to be sure how it is really going to work. There is no choice but to test the real thing. Something that is all but imposable for someone who builds a bridge.
For the person that said that the CEO is resonable is not thinking. The CEO is a buisnessman he makes money when the company makes money he wants to sell updates, service contrats, and new versions a program with out bugs is not in his best intrest.
On the whole, I agree with this. It is about your being able to do the job.
Why is it that the only answers ever considered in these sorts of situations are government regulations? I mean, come on, you have to be certified to sell land?
Why not various (and competing) professional organizations that certify individuals as competent in certain fields? You get all the certificates, plaques, badges, decals, etc. that go with the territory.
Then, if I, as a customer, want a certified programmer, real estate agent, etc., I can choose one certified by the organization with the best reputation.
Make it VERY ILLEGAL to claim membership in such organizations falsely. Make the individual and perhaps the organization liable in the event something goes wrong.
DO NOT PREVENT other competent people from making a living just because they do not buy into the paper = competence game. Do not prevent clients from hiring people they know from history to be capable just because of a lack of a piece of paper...
where the fizz wazz.
OK, so what is the situation if we have the "LICENSE" but do not make it ILLEGAL to practice without a licence?
There is no information cost, AND the client still has free choice.
Why is this not tried? That is, I have a cold. Do I want to go to a state licenced doctor or to a herbalist? Well?
where the fizz wazz...
I actually teach a certification course at a community college for web developer. Personally, I don't think certification works. Why do I say that? If it were up to me, I would not certify anyone in my class. However, the college wants me to certify all students that attend every class. Come on...give me a break! I wouldn't even hire them. certification these days are a way for colleges and institutions to make a quick buck. It's a joke. A true programmer doesn't need to be certified. Certification is a means of separating one idiot from another of what they think they know. that's my $.02
Computer science != programming. Computer science is about things like neural networks, digital signal processing and applied psychology. Software engineering is another thing, but even in it you don't really succeed without formal education. Everyone can learn to code trivial applications, but in designing very complex systems (such as in medical applications) you need project-management skills, a broad knowledge of different tools (nearly impossible to learn on your own) and basic knowledge about other fields of engineering. So you love to code. I don't, and that's why I'm a student of computer science.
If it were a software company, they would hand you a bridge and say "We hope this is what you wanted."
certification means nothing. its just a scrap of paper. experience and intelligence are what makes a good programmer. look at how many bozos there are out there with freshly printed mcse certs that don't even know how to turn on a computer. a programming certification will only pave a road for morons to enter the programming world.
Civil Engineers need to be licensed, as do contractors and anyone else who designs public projects (at least in the US, although licensing is an issue for the states themselves). Electrical Engineers are not licensed if they work in the private sector, neither are programmers.
Nor should they be.
There are plenty of professions that require certification or licenses. Doctors, teachers, engineers, etc. all need licenses or certificates. It's too bad there's nothing like a Programmer's Guild (read: labor union) universally recognized to take this job.
I didn't read the article (I didn't want to register, mirror anyone?) but I never thought about licensing programmers. Of course it would be interesting to see an implementation.
The reason I found it interesting is that I have an electrical engineering major, and I found out that in some places becoming a licensed "Professional Engineer" brings some benefits. Computer programming classes are often offered through engineering departments of schools, but they are also offerred at JCs and in math departments. So, is a programmer an "engineer"? Also, there are issues of liability with the engineer and bridge example, but every piece of software has that big disclaimer on it that denies responsibility (which is why I think y2k lawsuits have no legal grounds), so if there was some licensing scheme, would this lead to programmers being held liable for the stuff they write?
The person in Texas proposing certification indicates both a degree and exam. If someone has proven experience and can pass a comprehensive exam, why require a degree?
Just what we need, eh ?
Union-controlled programming shops equal:
- timed bathroom breaks
- no refreshments except during timed 15 minute
breaks ( 2 each )
- pay and raises based on "longevity", etc, not
skill and quality
- union mandated tools ( "You WILL provide a
proper, green-screen terminal for our
workers!" )
- hugely overstaffed projects so the union
bosses can keep their Caddies
- low quality, low productivity work
environments ( hey, it's a *union shop* )
And of course, loss of the cutting-edge to just
about any other country that cares to take it away.
By the way, what do you think a certified
FORTRAN-77 or COBOL programmer on Data General
minicomputers would be worth today ?
Software development is a craft (part science and
part art). As a craft it is best learned from
craft masters. I don't have a degree but I would
put my training up against any. I was taught to
develop software by three seasoned masters during
a period that was very similar to an apprentiship.
I still make a point to continue learning about
both the science and art of programming but the
fact that I do not have a degree says absolutely
nothing about my skills.
Dead On!
I went to a school with a lot of engineers and I am working toward becoming a System(software) Architect. And I can see a lot more similarities with engineering at this level.
Within the engineering field you also have the EIT level Eng. In Training. You can happily sit at that level forever. But if you are a fully certified Engineer when you put your stamp on a project you are putting you job/reputation on the line. If the thing fails you could be screwed as far as being an engineer. At least that is my understanding from some friends that work for the state in the bridge division.
I've always said it is pretty weird how CS people go to school for 4 years to become the blue collar workers of our industry.
I'm a programmer. I don't have a license to program. In past careers, I've been a lawyer and a registered rep of a securities firm. For both of those careers, I had to be licensed (though the securities licensing was a joke).
What's the difference with programming? Well, for one thing, you aren't generally handling peoples lives or money, or incurruring tremendous liability. Generally, you work for a company and if you screw up, your company is liable. Professionals, such as lawyers, doctors, and accountants are personally liable for their mistakes, even if they are part of a larger firm. There is also a lot of room for those professionals to take advantage of their clients. This is not *generally* the case with programmers. Also, licensing is often used as a barrier to entry into a profession, where people with bad motives can do lots of harm. (Unethical or incompetant doctors and lawyers for instance.) Considering the current derth of good programmers, companies are scrambling just to find folks birght enough to be trained. Licensing would force many of these companies out of business.
Now, if you happen to be self-employed as a contractor, or own your own company, there are additional issues, which I won't go into, but still no need for licensing.
To sum it up, licensing amounts to regulation of the industry, and regulations is generally a bad thing but a necessary evil when there are people (read: clients) to be protected. There is simply not a great enough public good to be accomplished by it.
I know who decides if a cost should burden the buyer or the seller: the buyer and the seller.
The point of the free-market is that I should be allowed to exercise my own judgement when making a trade (be it hiring a programmer, or a doctor). It also means that if I don't like the terms of the deal, then it's my responsibility to walk away.
You say a person can't rationally decide if a doctor is qualified. Yet, it's a decision I should be allowed to make in principle. However, the law prohibits this (in the form of unlicensed medicine). Are you saying I have no right to choose my doctor on my terms?
But so many slashdotters think people can't be trusted to choose their own OS (unless they choose you-know-what)... so I guess we know what that means...
Hey, I work for a java development firm in Houston. We've got all sorts here, from undegreed, uncertified programmers to degreed, certified programmers.
Our best, brightest folks are those w/ no degree and no certifications. Crazy but true. I guess these sorts of bad-asses didn't have to get a piece of paper to prove their value.
lin-dze
(lin_dze@yahoo.com)
Take me. I'm a double-E, not a CS. I have taken a mish-mash of half-working code and a requirements document, and fixed it up to satisfy DO-178(b) level certification. This code is running now, landing airplanes for its pay. (Yes, it is safety-critical code.) I have created embedded systems from scratch, and been awarded patents on my work (look at 5,297,063 for an example).
I have seen CS grads who had absolutely no idea what a port address was, or how to write an interrupt service routine. For all their academic ability, they never had the curiosity to find out what machines were actually like deep in their bowels. This made them almost totally useless for embedded programming work because they lacked the fundamental concepts of the opereration of any kind of hardware; without those concepts they had nothing to build on.
I had one (1) course in this, and I was already self-taught in most of it when I took it. Don't tell me about CS degrees. I know better.
It is wrong to compare software engineering to physical engineering simply because the expectations are so different. Nobody else thinks of software like they think of bridges. There can be many pieces of software to accomplish a particular task, but the "bridge market" isn't an overlapping one. A bridge may take many years to go from planning to built, but even software that is more complicated to design is often expected in months. Bridges seldom get upgrades, yet software sees many versions. Bridges are designed to connect to specific points, but software is often used and reused in bits and pieces for many different projects. When most software crashes, people restart it; when a bridge crashes, people die.
If you put the same restraints on software development that you did on physical engineering, you would find nothing would change. Clueless managers would come in asking for unreasonable things, and if the certified engineer said they wouldn't do it, they would be replaced by less competent developers, who would pretend to be more competent by claiming *they* could do it. The project still gets behind schedule, over budget, and ultimately fails.
The difference that makes no difference is of no difference.
What we really need in this country (USA) and others, is a software lemon law that provides customers with remedy and legal recourse against software vendors who sell buggy and un-QA'ed software that doesn't function correctly as marketed/advertised. Such a law should simply state one thing: if you sell software or licenses for software for money, then there must be a performance guarantee that the software can perform exactly as it claims to do. If it fails to do so, then full refunds are in order, as well as the possibility for civil litigation recovery of punitive and consequental damages compensation to the jilted customer, just like as with any other product sold for money. If your software is given away for free, only then can you be legally immune from such performance guarantees and the filing of lawsuits against you for non-performance of your software.
>> What other professional field allows people to
>> work without licenses?
>>
>> Architects? No.
>> Doctors? No.
>> Laywers? No.
>> Accountants? No.
>> Stock brokers? No.
>> Real estate agents? No.
Professional Athletes? Yes.
Jockeys for Horse Racing? Yes.
Sales People? Yes.
CEOs of Companies? Yes.
Chefs? Yes.
You get my point. There are just as many
unlicensed professionals as there are licensed
(in terms of fields). I believe that licensing
is a crutch used by many to show that "they
must be good - they have the license!" attitude.
They try to use the stigma of using non-licensed
professional is foolish. Now, can you imagine
any five-star restaurant having such an attitude?
Don't eat at the Palm! They're chefs are unlicensed!
The point of licensing is exclusivity. Period.
A talented software developer will be known
whether he has a license or not. If during the
course of interviewing a potential candidate
you cannot determine his/her skill level - then
maybe they need assistance in evaluating talent
for their hiring purposes.
Sorry, wandered a
bit there. Getting back to the exclusivity issue.
If the license was really based on talent, then
why do doctors and lawyers need different ones
for different states? Shouldn't the general one
(say the degree conferred by the accredited
university) suffice nation wide? Some may argue
well, the laws are different in differing states.
Fine, but then the license is just an exam to see
if you know the difference in the laws, not whether you're a talented lawyer. Also, this would not hold for a medical practice - I believe the ability to tell the symptoms of a cold are the same for all states... Thus, obtaining a license for a particular state equates to becoming a member of the good-ol boys club - exclusivity...
I firmly believe that licensing software developers will lead to such a situation - besides giving managers a means to point fingers and threaten jobs... Also, HR will then use it to
initially weed out candidates without first
reviewing the resume for relevant work experience.
If the shortage of talented software professionals is as dire as all the news agencies are reporting, then this seems like a really silly practice to me.
Finally, I firmly believe that licensing only means (and I lump certification into this category) that you were able to pass the test - it in no way conveys to me that the individual has the ability to write good software.
peace. JOe...
Licensing and certification would not solve these problems. The problem is more fundamental.
:), but I would not be comfortably with that responsibility, and could not in good conscience accept it. At least not without a hundred other programmers whom I respected reviewing my every line.
How do you verify a program as "bug-free"? Last I looked, software verification was still charitably called a black art. How do you prove that the nuclear power plant core thermal regulator software you just wrote won't fail because of some obscure overflow condition in a microcontroller you know nothing about? Or guarantee that an operating sytem will never crash?
Computers and programs are huge state machines, nondeterministic finite automata, with hundreds, thousands, millions+ of states. The larger the program, the more states and error conditions you have to check. First, prove to me that your 1,000 line program is correct. Then prove that the 10,000 lines of libraries it uses are correct. Then prove that the operating system it runs on is correct. Then prove that the underlying hardware is correct.
Programming is not bridge building. You can take your knowledge of statics, dynamics, strength of materials, etc. to compute that a bridge is sound. Point me to something comparable in computer science to will do the same for a program (at least in O(N) time).
Since we can't prove that a program is correct, then all we have left is peer review. (A bunch of people standing around and saying "Yep, that's looks right".) I suppose that is in essence what doctors do. ("According to JAMA, this is the accepted way to treat this condition"....)
I don't think licensing is the answer. While I agree that there are certainly a good number of "local music dropouts" who pass themselves as programmers, licensing/certification hardly seems the tool to seperate the wheat from the chaff. Higher standards amongst ourselves, and with our employers, certainly "feels" like a better approach.
I personally would never take a coding a assignment where the potential for loss of life was high if the program failed at some crucial time. I feel I'm a good programmer (don't we all
But hey, isn't that Open Source?
Joe
jacobson@pobox.com
- If the source code and accompanying documents or tools needed to work on the program are available, then an explicit disclaimer of liability is permissible since the user community can be reasonably expected to be able to fix and identify any issues themselves. Of course, for this condition to hold, users must not be restricted from sharing information with each other.
- For anything which does not come with the source code and other documents needed to build the thing from scratch, liability falls directly on the distributor unless someone else explicitly takes it on.
- Corporations can explicitly accept liability for the products they produce, if they can post a bond or demonstrate sufficient insurance to do so.
- Individuals can explicitly accept liability for the products that they produce or manage. They must do this on a per-finished-product basis and can't simply be forced to accept it in advance as a part of an employment contract.
- Anyone accepting liability can specify specific limits on what functional domains they are willing to accept liability for. However, whatever remains will flow to everybody else listed above.
- The developers/managers/testers of a product have the right to include comments with the product if they feel ethically responsible to do so. Disclosing true bugs is protected, and this right can not be contracted away by any means.
Example: If some corporation wants to release a proprietary product, anyone who distributes it (even gratis) would be liable unless the company explicitly takes on that liability itself. However, if the developers feel confident enough about their product to trust that users' will never need the source code, then they are free to explicitly sign off for portions of the product and thereby reduce the liability of the company. They can only sign off on things that they actually were somehow responsible for.When a bridge fails, it's the responsibility of the PE who signed off on it. When a software project fails, should it be the fault of the programmer who wrote it? Yes and no.
If there was no pressure from a marketing department to get a product out the door, then this plan might have a chance, but sadly, that's not the case, so ultimately I guess it's not the programmers fault at all if something fails because it was released before it was ready.
Finally, programming is far too much of an art (you don't see licensed artists, do you?) for this kind of thing. Yes engineering is something of an art, but there are a lot of hard and fast rules to go by as well, as well as a huge body of literature. In todays proprietary software climate, programmers are constantly programming the same thing differently, and in non foolproof ways. So no, it's not even feasable.
As long as decisions are made by marketers and managers, then the programmer doesn't have the last say as to when the code is released. Is he supposed to keep it in an unusable state until the very moment he believes it's ready? What would stop them from sneaking it out on him.
:)
Let's look at professions that don't need to be certified:
Artists
Carpenters (at least around here)
etc.
(it's early, give me a break
Personally I think programming is more like the above two professions than doctors, architects, engineers. The former rely on their reputation for skill and accomplishment for new work (or continued work) and they intend to be especially creative.
While I agree that licensing would be useful, even helpful, it is not feasible until we pass laws that state software can't be released until it is reviewed by a licensed programmer. I'm sure most people would agree that this would do nothing but harm the entire industry, and put open source software to death almost immediately.
And does *anyone* think that licensure of doctors means that you can go to any doctor and expect him/her to be competent and working in your best interest?
Adding licensure is adding politics to the process, and I should think that adding politics to programming is surely to goo it up, slow it down, confuse the relevant issues, etc. For instance, imagine the confusion when Bill Gates successfully lobbies for the programming equivalent of the bar exam to cover HIS protocols and HIS versions of languages.
When we want to introduce more government into a process, we like to imagine a perfect government, one where the agents act perfectly. When the agents don't act perfectly, the best intentions go wrong. Interstate highways turn into sprawl-enablers. Law enforcement becomes revenue enhancement. Programs intended to improve conditions actually hurt people.
The technology industries just happen to be the fastest-growing industries in the world. Lack of impeding regulations and licensing is one reason why. Please don't mess with it until it has had a chance to save the world...
Such a system seems reasonable in the field of software engineering. No one is precluded from working just because they don't have a degree. But at the same time, those who are held responsible, are the ones who have completed graduate coursework in the field.
This seems like a quite reasonable approach to things, if people feel it is necessary to license software developers. I still disagree with the need, however.
(Note: there is an inherit assumption in all this that writing code is, in fact, an engineering science and not an art form.)
I don't agree. All engineering is art. All engineering is science. That's why it's engineering!
Engineering is the art of using science to pick a sub-optimal solution for the sake of politics (to please everyone). ;)
Now some may object that this is isn't good enough. Well, if that's true, I'd have to ask, "Why?" Let's make it good enough. A degree in the field of computer science, computer engineering or electrical engineering should say something. If it doesn't, it needs to be fixed.
If companies are going to hire "local music dropouts," that's their problem. Don't go blaming the engineers who have an advanced degree in the field.
Furthermore, the pushing out of the older generation of programmers is only going to make things worse. IMHO, these are the people you need the most since they have the experience of getting products out the door (on time) and have a wealth of practical experience to draw on. This needs to be passed on to the younger crowd.
I've always found the whole idea of licensed programmers absurd. A combination of advanced education and on-the-job mentoring and experience is much more effective than passing a silly exam. Corporations should be responsible enough to conduct regular reviews of their employees and address any problems that crop up.
Being a (former) coder and now QA person, I see both sides. However, I don't think that a civee goes to build a bridge without getting opinions from someone else. I know that if I were to design a bridge, I'd want someone to go over every inch of the design and make sure it's sound.
Enter QA. This is where Y2K should have been caught in the first place. You can't really blame the coders, as they wrote it to the design specs. There should have been a QA person as part of the design, coding, and testing phase as a double-check to watch for potential issues such as these.
Much of my QA expereince has to do with hardware QA, but I have been part of software QA where I have 5 other coders going over every line of code I wrote to make sure it's right.
Programmers are not to blame for Y2K. Go look at the QA and design docs to find better answers.
Posted by JoeyRamone:
Well Microsoft has certification, but that doesn't get them better programs now does it.
Posted by The Evil Dwarf from Hell:
Texas already requires person who wish to do program consulting to have a PE (professional engineer license). You don't have to have one if you are employed by the company you do the programming for.
The requirement (I think) only hold for the team leader (if it is a team). To get a PE you have to have either a certain number of hours from an accredited engineering school or a certain number of years of professional coding. (Unfortunately for me I don't have either being a physicist/mathematician...)
Posted by Stephen "The Carp" Carpenter:
Where does "ETHICS" enter into it?
Licencing is about regulation. Certifing that
a person has passed some sort of test (or often
just paid some money).
Its absolutly silly. How do you empirically test
programming competance?
Posted by The Mongolian Barbecue:
First of all, _I_ submitted that certification thing on the NYtimes (along with a witty quote) over a day ago. Probably rob just stole it and didn't give me credit- that's ok though. What really bothers me is the oil story- I posted a nice flame on the end of it, and now its dissappeared! What has happened
Posted by MurphAndTheMagicTones:
The number of unfilled software jobs out there is too high. This licensing scheme would serve to only reduce the number of programmers available.
Posted by PasswdIs ScoreOne:
I'm sure that when every engineering profession stepped over from the occult art practiced by a few to mainstream science in everyone's life, the people cried, "there ought to be regulation". And the engineers said it's not necessary; it's not realistic; it won't prevent bad engineering; etc. Software development has since crossed from being an occult art and so the cries for regulation have started. History shows this is inevitable.
Posted by PasswdIs ScoreOne:
How does my ability to do a free body diagram, find the thevenin equivalent of some circuit, or to calculate necessary thickness of a glass wall for a cubic aquarium to hold 5000 gal of water prove that I can write reliable code? Until there's a PE cert for programming, any other PE cert will be meaningless for ensuring the production of quality code.
Speaking from an entirely biased viewpoint, I have no desire to see myself become any less mobile in this field because of certification restrictions.
I also have no desire to fund another bloated, useless bureaucracy.
While there are a few core skillsets that have remained constant in this field, too much changes too quickly for any of these silly tests to remain relevant.
No, No, NO!.
What we need is an IT union.
:)
How about the Teamsters.
Certification is garbage. Go to college.
If I was Italian, I might consider that...
Certification though, is not. I agree with the earlier poster about checking libs, OS, etc., but if coders were certified on their knowledge of the language, and the underlying libraries, (but not the code involving those libraries, just the calls, etc) other API, etc., it wouldn't be too bad of an idea, and protect the programmer in case that nuclear plant blows it's top.
"I knew what I was doing, Cert. XXX666 shows that, therefore it must hvae been the Operating System....."
I think you see what I mean.
-Erik-
What, do we have to register *EVERYONE* nowadays? Why not register authors, and columnists, and poets? Is there no freedom anymore?
It's not about freedom, and those other professions that you describe are ARTS. As much as programming can be artistic, I don't think anyone in their right mind can literally call it an ART. Art doesn't have boundaries because there's no one/nothing to protect if art fails, because failure in art is only opinion.
Get the programmers together and REVIEW THEIR CODE on a weekly basis. You will know who is the best programmer. And you will know who is 'certifiable'.
I agree, peer review is one of the better ways to handle code discrepancies, but what's to say that any of the reviewers are 'certifiable' either?
It's not a bad idea. Certification is one of the best grounds for protection in a lawsuit, especially with something like a science, where the plaintiff is more often then not going to be someone that doesn't hail from that field of science, and hence, uneducated about the subject. If someone were to sue you because of your poor code nowadays, the only thing you have is to call another, possibly your senior, programmer, and have them 'vouch' for your prowess. Personally, as much as I hate it too, I would rather have a piece of paper that signifies that THOUSANDS of programmers are vouching for my programming ability, not unlike a bar evaluation for lawyers and (?) doctors.
-Erik-
Offer a licensed software engineer position for companies that require engineer quality. That does not mean everyone has to be licensed.
When i was in school, the term 'engineer' ment you were licensed and had many years of schooling. Now the term is losing meaning. Anyone and everyone is tacking engineer on the end of their title.
I've read the comments but not the story and most people are saying NO! That is very closed minded. Most gpl authors have full time jobs, usually programming. Just because some companies want licensed engineers does not mean that's the end of gpl software.
I am all for licensed software engineers and I would love to see the end of the engineer word abuse. Especially from Microsoft!
Programming is more art then science. A million line program (I'm working on one now) is about the equivelent of engineering a bridge from Death Valley up to the sapce station It could be done, as any engineer would tell you, but no enginner would attempt it because it is so difficult. Yet NT is between 20-40 million lines (depending on how counts) Solaris is 6 million lines (If I recall correctly, at least 5 anyway) God only knows how big Office is. I could write a bug free 1000 line program in little time. It would take me 20 times as long (This is a very low estimate) to write a 10000 line program, but if you only asked that the 10000 line program rarely encounter a bug, I will have the 10000 line program done faster then the bug free 1000 line program
When you ask me to write a small bug free program I'll do it, it will cost you in time though. Forget internet years equaling a couple months, cuase there is no way to debug a program in that time.
When the publics attitude chages, when programing will change too.
BTW, whats the problem with music school drop outs programing? I happen to know a couple who are good programers.
But on the other hand, I'm providing (potentially) a product to someone that has the potential to wipe out vital data if I did it poorly.
Where do you draw the line? Personally, I think software is more like the Bridge in the NYT article, than a Book in someone's post above ("Do writers need a liscense to read a book").
However....using my argument that progs can destroy vital data, one might wonder why politicians don't have to have licenses. After all, they do more damage than my programs ever could.
How's that for a rambling reply?
Werd.
>>>>
I believe that certified, licensed engineers have every right to get upset when programmers (like myself) try to stick "engineer" on their title. Much like the term "Dr.", "engineer" has a rather specific meaning and requires a good deal of time/money/effort/blood/sweat/tears to achieve. Whether or not we agree with the process they went through, we should respect the result.
In addition, the term "engineer" gives a weight to comments that programmers don't deserve. When a structural engineer gives an opinion (i.e. "That bridge design is adequate for xx cars over yy years"), I give that comment a great deal of weight because that engineer may be liable if he's wrong. When my doctor says a procedure is safe, I'm willing to trust his judgement because he legally has to stand behind that conclusion. No programmer can match that.
Personally, I don't think programmers should be licensed. Until we are, however, we should not call ourselves "engineers".
Its not my fault
theres a bug in the compiler.... or the library... or the os... or in the hardware... or in the microcode
it was due to radiation screwing with the chip
computers crash for many reasons... course, if the reasons above were the only ones Id be thrilled... but still, certification is impossible, there are too many places for things to go wrong
"In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson
the response to my earlier comment said something that is relevent here...
:)
have code for life and death systems be checked by an outside angency... its the customers job to make sure that the workmanship they get is acceptable.
Im sure that the people that designed and built the house im going to buy were certified, so I guess there is realy no reason to get it throughly inspected before I sign a $200,000 mortgae...
if anyone believes that I have a lovely house to sell you
PS josh, im up this weekend, see you then
"In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson
I see your point, but here is my question
according to your credentials you are highly qualified, you could easily get a job anywhere you want.
If an employer asks you to do something that you find objectionable... leave...
thats all there is too it...
maby Im being a little nieve here, but thats my phillosophy... I have made solid decisions about what I will and will not do in my carreer (Im sure there are some cases that I havent run accorss yet, cant be prepared for everything) and I feel strongly about them...
if you feel this strongly you might want to reconsider your employment
"In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson
you have to decide where your comprimize point is... obviously supporting ones children is the most important thing you can do, and you should perhaps be willing to put up with more from you job because of youre obligation...
There is, never the less, a line for everybody... if that line is crossed, and your employer askes you to do something you find unacceptable (and I mean completely unacceptable here, lets be reasonable) then you have to ask yourself some damn tough questions...
everybodys situation is different... everyperson must make their own decisions... but there are always choices, its just a matter of finding the choice which is best (or rather least bad)
"In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson
being a contractor puts you in a unique position... im not sure what the best way to handle that situation would be, but if it got bad enought you could concievably leave you firm and perhaps persue a non contracting position... this would be extreem though
:)
you have a good point. you dont want to go jumping from job to job... that is a bad thing, but staying at a company where you are unhappy is even worse, for instance... I left my last job after only 6 months... why? well, not for any reason like your talking about... I left because they didnt have enough work to go around to the engineers in the group (government contractor anybody)... not enough work make me bored (though I spent more time on slashdot then)
staying would have made me miserable and hurt my carreer, so I left... if you are in a position where staying at a company will make you miserable (doing the Wrong Thing) and hurt your career (scapegoats often have trouble finding new jobs) then you have to leave... Im not recomending anyone ever take such a decision lightly, but it is an option and must be considered under some circumstances...
it is unfortuante that all employers are not good employers... hopefully Darwinisim will prevail, my last employer is currently up for sale, hopefully the company that buys them will be better at managing their resources, but im not counting on it
"In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson
as what Im not sure
the question here is... who makes the test... who decides what "good programming practices" are.
I dont know about you, but I realy dont want to see a world where everyone writes code the same way... its unproductive and stifles creativity and innovation. (esp if everyone wrote code like MS:)
on the otherhand, if I had faith that it could be done right it would not be so bad...
the most important thing to remember though is that quaility of code does not come from the skill of the programmer, everyone makes mistakes (hey, even Mel had a bug in his code, what make you so special) quality code comes from a good process of design implementation and testing, including CODE REVIEWS!
I dont know about you, but I certainly wouldnt want to write code for a life support system and not have someone review my work heavily before it was put into use.
perhaps it would be better to focus on certifying companies (or project leaders) in this way... focusing on process... of course certification is only necessary for "important" progects, ie life and death... cases where liability is a serious issue (much like the engineering profession)
"In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson
First off, bridge building doesn't change all that much. The basic structure and design of the highway bridge over the creek on I-80 is more or less the same one the romans knew.
Second, certification is no measure of competence, it is simply a measure of how well they take a test. For example, simply because you pass the bar or get a license does not automatically make you a good lawyer or doctor. So- how do we know if a lawyer or doctor is qualified to continue practicing? Peer review- which (while welcomed by the open-source community) is against the fundamental principal of proprietary software. Do you really think Microsoft will open it's code simply to allow us to judge the competancy of their programmers?
Third, and most important, it's trying to solve the wrong problem. At least as many software problems are the fault of the software managers as it is the software writers. Impossible deadlines, being forced to used an unworkable technology, a constantly changing set of requirements, etc. I'd recommend a read of the book "Antipatterns" for a sample of the ways Management can screw up a project (there are also examples of how the writers can screw it up).
The solution is nowhere near as simple as this- no more than we can stop violence in our highschools by simply banning doom. Instead, a completely different approach to software is needed. One in which quality is prized above all else, in which the code is peer-reviewed and not released before it's ready (and I don't care when the salesperson promised the customer it'll ship- he shouldn't have been promising that anyways!). One like open source software.
Public - Software engineers shall act consistently with the public interest.
What nonsense. Who decides what is the public interest? Does this mean no coders could write a bulk mortgage foreclosure system? No more missile guidance software?
I've generally found that such "ideas" for professional organisations are reasonably explained by:
Those who can, do. Those who can't, administrate.
This sig left unintentionally blank.
While I can sympathize that you lacked resources to get certification in the traditional sense, I don't think this excuses the fact that the vast majority of Information Technology workers I have to deal with are simply INCAPABLE of doing their jobs due either to inexperience, incompetence, or downright stupidity.
Regulation of the industry is necessary. There are (I believe) more shysters in IT than any other field of "intelligent" work. I've dealt with IT companies that have overquoted on projects by 50 times or more, have sent out network experts who didn't understand basic concepts of TCP/IP routing or subnetting, and damn rotten corporations (most of them have as names 3 letter acronyms) who will take college graduates and palm them off to the client at 11 times the salary the graduate will see, often claiming these graduates have skills that our either exaggerated or downright false (like the firewall expert who didn't actually know what a firewall was, or the C++ programmer who had 2 weeks book experience and had yet to use a C++ compiler).
I can understand your position, that regulation would have had an adverse affect on your chances, but the alternative is that the customer continues to be ripped off by greedy companies and clueless workers. Perhaps instead of being against the concept of regulation you should be looking for (and even promoting) methods of regulation that are based on real world achievements rather than upfront payments. In this way you would not have been affected, nor would other people in a similar situation to yourself.
Personally, I think the whole concept of certifying programmers for this sort of thing is ridiculous. Perhaps it's a good idea to certify the PROGRAMS, but why the programmers?
Many of the best pieces of software I've seen in the last few years were written by someone in their spare time, usually because it's the type of thing they wanted for themselves. Often these pieces of software were written by high school and college students - the very ones who would not yet be certified.
Why, if they write better programs, should they not be able to distribute them? Simply because they didn't have the time or money to get certified?
Additionally, the requirement of "X number of years experience" is ridiculous. You must have a degree, plus at least 12 years' experience! The ability of the programmer is absolutely irrelevent unless they've been in the job market for over a decade? At least with other certifications I've heard about the only question is the ability of the person to pass the test - this age requirment is absurd!
It's possibly even illegal to require this certification for a job, as it is against federal labor laws to discriminate based on age. You'd need to be AT LEAST 28 to get a job requiring certification - you can't start working at a job until you're 16 in most states, and you need to have 12 years' experience for certification. (And this assumes you get your degree either before you're 16, or work all through college.)
No it isn't. (At least not in the statutes I have read.) What is says is that you cannot discriminate when hiring based upon race, religion, age, sex, physical handicap, etc. - it just says "AGE" without specifying any particular age. And it means you cannot discrimiate for being young or old.
The point of the law is that you must look at all applicants equally, regardless of age, or any other factors. An employer is only allowed to discriminate against people who would not be able to do the job in a reasonable manner. (Not hiring an armless typist for example.) If the person is capable of getting the job done, and is eligible for work in the U.S., Federal law says you must consider them for the position.
Any practice requiring certification to get a job, when the certification requires applicants to be of a certain age would be viewed as an attempt at circumventing the law. It would most likely be considered illegal.
Not a badly written article, quite balanced etc.
But...
some experts
say it is not clear that
certification would have
prevented the year 2000
problem.
http://rareformnewmedia.com/
Not a bad article, balanced, researched, etc, but how do you certify a field which changes so quickly ? By the time anybody has set up a reasonable professional board and exam for a particular skill, the skill would be redundant. Only the lowest common denominator skills (eg write a quicksort routine) could possibly be tested.
Professional qualifications have very little to do with protecting the public, and are much more designed to protect the profession. Professions which change slowly (eg medicine, civil engineering etc) can get away with it and justify themselves by pretending to protect the public while simply placing a nice bar to entry to maintain nice fat fees. Do you really think the American medical association wants to force you to get a prescription before you buy vitamins in order to "protect the consumer".
In some ways it sounds wonderful though. Imagine being able to say to a manager - "no, we cannot release this software for another 6 months, your opinion is irrelevent since I am the certified computer professional here". However, its just a fantasy, it flat won't work for IT and if the government tried to legislate it they would do such a crap job that it would be worse than useless. You would be forced to learn redundant skills so less competent people than yourself could judge you according to their standards.
http://rareformnewmedia.com/
*sigh*
you aren't certifying a *language* you're certifying a *process*
actual code is trivial if the system analysis and process is good - it's just data entry.
ah, you poor naive child.
people like you are why there's so much legacy code in the world, because back then people knew how to build systems, and now they just don't care.
say well away from programming anything that isn't a toy. don't even think about air traffic control, the banking system, life support machines....
The next Cmdr Taco duplicate will be ready soon, but subscribers can beat the rush and see it early!
Certification, a college degree, publications, ... they're all things people put on their resume, but they don't always mean much of anything. I went to an excellent school for my undergraduate degree and I came out knowing a lot. But there were plenty of other people who graduated with me that I wouldn't even consider hiring.
Certification is the same way, plenty of people come out of a program knowing no more than when they went in.
Education is important, but you've got to figure out in an interview who can really cut the code and who can't. I've found it's really quite easy to pick out the good from the bad with about twenty questions.
College degrees, certification, etc. can help you initially take ten resumes and put them into categories (I wouldn't hire someone without at least a BSCS or equivalent experience for the current openings, for example), but beyond categorizing people you don't know, these "qualifications" are somewhat meaningless.
It might just be an Englishism, but do you REALLY want programmers going around, claiming they're certifiable? It's hard enough being a geek, as it is. :)
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Unless the lives of many people depended on the programmer's job performance, there's no need for him/her to get the same level of certification as an engineer. In contrast, an engineer's job often results in products that affect our lives directly. Say, if that construction engineer wasn't certified when (s)he designed that bridge, would you feel safe when crossing said bridge? Now, if I were running some software on my computer and it crashed, I wouldn't lose much, except perhaps for some work. If it were the case of an aircraft's flight control system, though, there's a difference, and I would very much prefer that the software be written by someone who has been certified for that job.
In Soviet Russia, Jesus asks: "What Would You Do?"
If, in a free market, there is a demand for quality in software development, then surely organizations will arise that offer various certification programs.
Netware and Microsoft have been doing this for years.
So, certification would be inevitable: it's just a question of whether it matters to a particular customer.
Licensing, on the other hand is a beast of a different colour. Licensing means that you can't work without a license. This has no place in a free market, and is usually advocated by those that have a vested interest in controlling the size of the market: unions, doctors, and lawyers do this, with the necessary government 'help'.
The argument usually goes something like this: "With licensing, we can ensure the level of quality you're gonna get from someone in this profession". Of course, this is bogus, since all it guarantees is that a licensed programmer is, well, licensed. The enticement is that a potential employer or contractor does not have to evaluate skills for themselves. Who controls the licensing board, and what is in its best interest?
As with all things that depend on government force for enforcement, such a scheme is not likely to work well: good programmers that can't afford to pay the licensing fees won't get licensed, and bad programmers can lobby to keep good ones unlicensed. The production of free software might even be outlawed (much as practicing medicine without a license is).
With certification, the certifying board has to compete with other certifying boards and remove any possible question of inpropriety, lest it's reputation suffer.
Traditionally, certification has come from Universities (originally for philosophers and medical doctors), trade schools and apprentice programs, and more recently, equipment manufacturers (the guy who works on my car is "certified" by the auto maker to know what he's doing).
We have no need for licensing in this business.
In Liberty, Rene
You're right, the right thing to do is to test on those basic theories. But in coding there are many solutions to the same problem. And on top of that there are many more paths to said solution. The real question is how do you create a test that is broad enough so that it allows for these differences, and yet not broad enough to let any loony with some basic VB knowledge to pass. I also think you'll find it very difficult to create a test that's not biased to one particular language or application.
I might be overlooking something obvious here, but the only things I've actually found to be universal in programming is logic, data structures and algorithm analysis. So what kind of test would we design? It can't be an "application" test where you have problems to solve because this kind of test would be heavily biased by the person judging them. The only thing I can think of is a knowledge test that is very specific on those basic concepts, but those are the same tests you already took in collage and obviously passed if you got your degree.
Ex-Nt-User
Certification for programmers is a bit rediculeous. Is html code or data? What languages will the certification be in? Different certification for each language? What libraries? MFC? OWL? or ANSI? How about OS? What data structures? Will code formating be in it? Who will administer it?
I can just see this mess now. If certification for coder will become mendatory.. I can just see the OSS movement taking off because of all the people who love to code but may not be able to afford the rediculeous cost of geting certefied.
Ex-Nt-User
I have never taken a CS class in which I learned anything. The *only* good I've gotten out of those classes were the projects-- and not because I completed the projects, but because I took the projects and made them into something interesting.
I had been programming for *years* before I ever took a CS class; I started programming (BASIC, Pascal, and 6502 assembly-- Sweet16, don't'cha know) on the Apple ][ in 6th grade. By the time I started college, I already knew C, and I'd written a few assembly-level TSRs for the IBM PC. The data structures classes, and the algorithms classes, and the methods classes were moronic; the only classes that had something to offer were the math classes.
Most of the people clogging the CS classes were there because they knew that computers were the paying wave of the future. About 30% had never touched a computer before; about another 60% knew how to process words.
A lot of great programmers get CS degrees; but they are not great programmers *because* of the CS degree. I learned more from my peers than I ever learned from a class; peers, and good, classic texts.
There are a *lot* of bad programmers that are degreed. And the good ones tend to be good programmers to start with-- they got into CS because they love computers in the first place. So do not confuse cause and effect here. Just because you've noticed a good correlation between good programmers and CS degrees does not mean the CS degree caused the good programmer.
-- Tony
I think this is the point. "We don't want hobbyists writing our software!"
By taking the worst-case scenerio, they can shoe-horn in every kind of software developer.
Me, I'd like to see politicians certified. Makes more sense to me-- their decisions affect millions, and sometimes billions, of people.
Just because someone has a CS degree does not mean that they can program worth a damn, nor does an English degree mean a person is worth their weight in sand as a writer. As was said in another post, and I misquote... "A CS degree teaches you the History of programming, so you don't make the same mistakes" (apologies to author, was a good post!) In order for that CS degree to be of help to you, you need to PAY ATTENTION AND LEARN WHAT THEY ARE TEACHING YOU. Figure out what professors are the ones "in the know". Do more than is required in class.
I did do more than was required in class-- because it was the only way to learn anything. And I did pay attention-- I just didn't learn anything. (I did very well in those classes, grade-wise; I just didn't learn anything. Other students came to me for asssistance; I just didn't learn anything.)
The best way to learn about software lifecycles is to get involved in a project. Yes, taking classes teaches you which mistakes to avoid, and that is helpful; and I did learn that there is more to programming than just stringing together lines of code.
However.
I've learned a hell of a lot more since I've started working on real projects, with real programmers. And everything taught in college is better learned apprenticing yourself to a project, like KDE or GNOME. And considering the number of worthless CS graduates out there (most of the CS graduates I've worked with, in fact) the degree means nothing.
Now, I must give one caveat-- I did not go to a great CS school. My computer architecture class covered the war between CISC and RISC better than it covered actual architecture. I reckon if I'd gone to a decent school, my classes would not have been worthless.
But my central assertion remains-- a good programmer can learn everything from experience and exposure to other programmers, including project and software management, software design, etc.
Even the best programmer cannot learn in a vacuum. I'm not claiming that a totally-self-taught programmer is better than a CS grad. I'm just saying, a CS degree is no real indicator of capability.
-Tony
Not all people working as engineers are licensed nor are they all engineers. For instance I'm working as an electrical engineer, have an electrical engineering degree but am not licensed as an engineer in the state I'm working. At this point in time I choose not to license myself because in my present circumstances there is no benefit for me, my credibility or the people who have hired me.
Being a licensed engineer in general doesn't mean that you are tested on your engineering proficiency. You're tested on ethics, the law as it relates to contracts and your responsibilities as an engineer. Passing this exam and getting your license then entitles you to call yourself an engineer (your jurisdiction may vary, in Ontario Canada you're not an engineer unless you're licensed, I'm not sure about the jurisdiction where I am)
Passing the exam also changes the playing field. If you make poor engineering choices or somebody insinuates you have done so then a lawsuit can be brought about. A lawsuit can be brought about even on something said in passing or as a favour. This is the reason doctors and lawyers don't dispense free advice. They can still be sued no matter what caveats they apply. The governing body who granted your license will be on the publics side, not yours.
In some industries the above is important for your credibility: if I were designing biomedical electronics for instance; if I were a consultant etc. The same possibly goes for programmers as well. Most programmers don't write code that directly effects the public safety. Most programmers shouldn't be licensed. There is a pretty strong case that the programmer who designs the firmware that runs on the microcontroller that operates an insulin pump or EKG machine should be licensed.
Requiring all people working as programmers or engineers would drive the costs of any programmed or engineered products through the roof. The insurance to protect you against lawsuits is phenomenally expensive (although many large companies have blanket insurance for their engineers)
"CEOs of Companies? Yes.
Chefs? Yes.
...
They try to use the stigma of using non-licensed professional is foolish. Now, can you imagine any five-star restaurant having such an attitude? Don't eat at the Palm! They're chefs are unlicensed!"
Most states in the US have a kitchen hygiene certification. In order to be the manager of a commercial kitchen (and I can't imagine any 5 star chef who wouldn't demand to be the kitchen manager), you must hold that certificate. Is it hard to get that certificate? No. Does it prove you can cook good food? No? Will the state close down your restaurant if you don't have one? In about 60 seconds. Will your competitors let the world know if you have been cited for running an "unhygenic kitchen"? You bet - I have seen it many times.
Similiarly with CEOs. They must be bonded and carry D&O insurance, and they must be appointed by the Board of Directors or other owners. Does it prove they can run a company? Of course not. Does it show that someone has at least looked at whether they have some of the basics to do the job? Yes.
I could go on about driver's licenses and similar hurdles proving minimal ability but not quality, but I think you get the point.
sPh
"Who would you rather fixed the brakes on your car, somebody with 3 years of classes or someone with ten years of fixing cars."
Who would you rather have fixing the brakes on your car: a guy who just walked in off the street , with no experience, looking for his first job as a mechanic? Or the guy no with experience but three years in a nationally certified training program?
The analogy is closer than one might think. Nationally certified mechanics (I forget the acronym at the moment), as well as those certified as dealer mechanics, are now spending 100 hours per year or more in class to try to keep up with technology changes. The generation of cars coming into the market today essentially has the equivalent of a small LAN built-in, so this isn't just brute force technology either. There is a major shortage of mechanics and salaries are rising...
sPh
"The people who code for the radar systems in airports, for example, do you want these people to walk in with bare minimum of knowledge and write faulty code?"
Software along the lines of an airport radar controller is going to be contracted out as part of a total system design (if the contracting authority has any competence at all). Hardware, software, backup systems, performance specs, acceptance criteria, etc. are all going to be part of a single project, and the ultimate documents for that project are going to be signed off by a registered Professional Engineer (PE).
The PE can be held individually liable for his work, so he is going to need indemnification by his employer. His employer in turn will lay off that risk to an insurance company, and the insurance company will demand audits, proof of competence, demonstrated capability to carry out similar projects, etc. That's how it goes in the real world of Big Stuff.
The PE (slash project management team) probably isn't going to be able to examine every line of code, or necessarily _any_ of the code him(them)self. But you can bet he will take steps to make sure that quality and capability are there.
Even as a person on the PE track (which I am), I acknowledge that there is an element of market control / guild-ism in the process. However, before you squeeze the trigger on the flamethrower, please spend a few minutes in a good engineering library reading back issues of Scientific American from the 1870-1890 time period. Read carefully the accounts of steam boiler explosions and the death and destruction they caused for many years. Then if you have a few extra hours, scan through the "History of the ASME Boiler and Pressure Vessel Code". Those boiler explosions, and the effort that had to be undertaken to get them under control, are the direct ancestors of the PE process. And brutal, heavy-handed government regulation turned out to be the only way to bring the body count down.
Hmmm, in terms of accepting responsibility for quality of work, does that sound like any industry we know today? I am personally not advocating that the PE regulations be extended to the software world, but after rebooting Windows 95 for the 5th time today I can see why some might.
sPh
Is anyone else alarmed by this?
'unforseen events' could be as bizarre as a cosmic ray causing a bit flip in a jump instruction, reversing the logic in part of a program. How can anyone be help responsible for that?
Does a new country need to have physical territory? Why not start a Geek Republic and we'll all be immigrants....
...richie - It is a good day to code.
Actually it is not the qualifications of the designer that are important but the quality of the design. I really doesn't matter who produced the design, as long as it satisfies the safety standards.
For example, I can do electrical wiring in my house, but for it to be "legal" an electrical inspector has to sign it off.
Another example is in aircraft design. Many people are designing and building their own airplanes (check out http://www.eaa.org) but before they can obtain an airworthiness certificate they need to show that the airplane was built according to the standard practices, that the design was verified to be airworthy etc.
So what we need is a way to verify the quality of the code. The best way to do this today is code reviews. So open source is the way to go.
...richie - It is a good day to code.
This is not a new thing. Various taxing authorities have been trying to get into the wallets of programmers for a long time. They come up with various excuses like "public safety" or "reliability", but when it comes right down to it it all equates to MONEY.
Government certification and licensing of software professionals is a *BAD* idea.
First of all, do you standardize on one coding methodology or many? How do you keep "fad-ism" from creeping into the tests? What do you test for?
Coding is not like building a bridge. Bridge building is pretty standardized. There is a small number of ways to build it so it does not fall down. Programming requires a much greater range of knowledge and problem solving capability. It requires that the programmer be able to understand the problem and convert it to something that functions depending on a number of specifications and design parameters. That is something that is difficult to test for.
I also see this as the start of the effort to control programmers in some rather nasty ways. (Sorry if I have such a distrust of Government, but so far my distrust has been bourne out.)
"When you have them by the paycheck, their hearts and minds will follow."
Currently local, state and federal governments are on a jihad to control anything that threatens then or could possibly threaten them. Programmers are viewed from time to time as one of those threats. I would not want to see them have yet another tool to use in the war on creativity and free thought.
I would hate to see programming become yet another overregulated profession with licensing fees and arbitrary tests and rules.
"Trademarks are the heraldry of the new feudalism."
The article is simply bringing up the point that some software systems are mission critical. Software failure can be just as catostrophic as an engineering failure.
On the other hand...
It is pretty rare that I lose respect for someone after only a sentence -- don't tell me that this could be quoted out of context.
I suppose this guy could be referring to "uneducated" hacks. Even then, this is just a horrible thing to say about people who study the fine arts. Somebody should write a song about this guy :-)
Regardless, I have always agreed that without proper acredation, programmers have no right to call themselves "engineers."
It doesn't mean that everyone needs to be an engineer to write code. It just means that engineers will make gobs of money as project managers for software. Engineers will be soley responsible when hundreds of children are killed by a faulty instruction controlling a safety valve.
They can have that job, I don't mind.
The computer and information technology industry changes too rapidly to create any useful certification program (Texas suggests 12 years and a degree? How many programmers fit that requirement?). It's like trying to hit a moving target. This sounds more like sour grapes from the "real" engineers, who don't like the fact that we're getting the jobs, money, and attention with what they may see as less effort than them. The last thing the industry needs is another attempt at regulation. Drop the leash.
i agree with AArthur's statements "Really, certifing programmers is a bad thing, certfing software is good.", "Reguluation is serious pain in the ass for programers, who are often free willed and libral.".
some folks here compared programmers to some other branches (building trade, ...) but i see one big problem here: i do not know what's the official definition of pragrammer but some people say it's like art too. and we can't compare pure technical branches with art. so that's why i do not agree with strict programmer' certification.
Big Red said it fine: let's certify software (i.e result of the programmer's work) ...
... and do not forget to teach little programmers basic principles of software not the latest technology gadgets.
only after doing so we can receive more good/working/correct/stable/... software.
hany
but i say that we have to certify software, not people!
hany
This is nuts.
If you're going to purchase software from someone (either for preexisting stuff or as a comissioned work) then it's your job to ensure that you feel comfortable with their work. If you don't like it, go somewhere else, or be willing to let them know about design changes you want.
I work as a designer. If I screw something up, but the customer signed off on it (having not caught the error) then it's not my problem anymore. If someone is willing to accept a program, or whatever, then that's it. Otherwise test stuff out before you have to rely on it.
-- This and all my posts are in the public domain. I am a lawyer. I am not your lawyer, and this is not legal advice.
In the world today, that sort of departure does not get you a reputation for uncompromising quality. It would merely get you branded as difficult to work with--a prima donna.
Besides, the answer to every unpleasantness in the workplace is not to switch jobs. Believe me. I have switched employers three times in as many years. It's one crapshoot after another. Some companies are great, some are miserable. Will overall conditions ever improve? I like the economic darwinism theory. Companies that treat their skilled workers badly soon have only unskilled workers and will therefore be less competitive. I like that idea. But I would also like a more active response. My professional existance is not a token sloshing about from one company to another, looking for a favorable ecological niche.
I haven't found the answers yet, but I'm still looking for ways to improve the entire ecosystem. Darwinian evolution takes a long time, and I am impatient. Nature, red in tooth and claw, is not kind to the entities who are evolving.
"Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
Having established my credentials, let me say that I have long advocated a certification process for programmers. I support it not for the benefit of employers, but for my own protection.
I have, in previous engagements, been asked to perform services that would not meet the ACM's code of ethics. From time to time, I have also needed to make project managers and sponsors aware of some unpleasant realities about their systems or proposed systems. Let me tell you, those conversations were not well received. There are still plenty of "shoot-the-messenger" organizations out there. While I felt that I was discharging my obligations as a professional, by making them aware of these potential disasters, the reaction was to ignore the situation. I was directed to continue working the planned course of action. When the inevitable train wreck occurred, the same perpetrators sought scapegoats.
If we had an accrediting body, or if I had a license, I could have taken the much stronger position: "I will not continue on this path, or I will lose my license." Would the threat of losing your license to work in your chosen field motivate you? I think it would. If you think laywers are sleazy now, imagine what they would be like without the threat of disbarrment!
I have also had the experience of working with teammates who were grossly underqualified. Unfortunately, the client did not have the capability to detect the BS artists before hiring. Thus, I would be stuck with teammates who provided a net negative to the project. If there were such a licensing program (or better still, tiered licenses: e.g., apprentice, journeyman, master) the client would have been better able to detect those who should not have been hired.
Of course, any such licensing program is perilous in many ways: technical change, anarchist revolt, enforcement, and many others. There will also be failures of the system--unqualified individuals slipping by, irregularities in the review procedure-- the same as every other professional accreditation system. By and large, however, I think we will ultimately need to adopt such a system for our own protection.
"Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
True, technical certification is not long-lived. What we need to discuss, however, is certification of technique. You don't get certified as an OO developer or as a device-driver-writer, any more than an architect gets certified to use a cantilevered beam. You get certified as a professional who adheres to a code of ethics. You get certified as one who can judge risks, balance economic and technical concerns.
The medical profession has a credo: "First, do no harm." Have we any such guiding principles?
"Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
My experience teaches me that most of the problem isn't at the developer level, but at the manager level. Sure there are some marginal to incompetent programmers out there, but it seems that the bigger problem is management. In fact I've heard from many developers who've been in the industry of a long time that warnings were made in the 70's and 80's about the Y2K issue and management ignored the developers request to avoid the problem. And who is management usually going to blame when projects fail? Rarely will it be themselves...
The bridge metaphor does apply! Consider
folks writting code that has life-or-death
implications. Things that come to mind are
pace-makers, nuclear reaction control systems,
etc.
It could also be argued that the "guild"
already exists - it's called ACM.
Have you compiled your kernel today??
Uhm Not quite!
I'm a practicing electronic engineer in the
computer industry. I don't have a PE, and
don't need one to pursue my career.
The poster states that passing a PE examine
GUARANTEES that the design will be fail safe.
This is demonstrably false. I can show you
any number of structural designs that have
failed, yet were designed by PE's. They didn't
fail safe either, people died.
Passing the PE examine doesn't ensure that I
am competent to do design of some nature. It
shows that I am good at taking tests on
material I only know fresh out of college.
For that matter, the PE license (and it's a
license in my state...this varies from
state to state) was only established as
a "gate-keeper" mechanism to try to ensure
some minimum level of competency. It doesn't
really achieve that either. My basic
complaint with the system is that they don't
test engineers on the fields they are going
to practice in... why does a computer design
engineer need to have a structural engineers'
understanding of statics or dynamics?
The bottom line is that this system operates
mostly because it already is an established
bureaucracy. I see no reason to extend this
system to programmers as well!
To take a different tack - a professor of
mine once defined those in the "professions"
as people who have "dangerous knowledge." I
think this is a good operating definition.
Consider - would you want me to use a knife
on you to take your appendix out - I'd be
dangerous - I don't have the requisite
training or experience to accomplish the
task. So professionals are keepers of
dangerous knowledge.
To extend this definition to the programmers'
world - are there programs that require
"dangerous knowledge." Well - there ARE
programs operating in environments that
are "life critical." There could be a
case made to extend "professional licensing"
to just these areas. Writting operating
systems to handle my game playing requirements
don't fit the requirement! Writting real-time
OS's to control a nuclear reaction might!
Even then, I don't think this is needed
or desirable because I don't think you can
test for "minimum competency." I don't think
this screening mechanism works.
Have you compiled your kernel today??
That's all programmer certification would be in this case.
Set up a host of certifications from everything from A to Z.
Then charge a couple hundred bucks for some silly little test.
Then, 2-3 years down the road, charge for a renewal/retest.
The whole problem is, certification doesn't improve the quality of the code AT ALL.
Currently I'm a certified Nursing Aide, as well as a Certified Phlebotomist. I'm better than most, but not as good as some. You have no IDEA what kind of dregs can actually qualify for certification!
All the certification would prove is that you're good at memorizing facts and taking tests.
Chas - The one, the only.
THANK GOD!!!
Chas - The one, the only.
THANK GOD!!!
I don't think the best programmers are necessarily the best test takers. How do I know this? I'm good at taking tests but I suck at programming...
Later,
WebDosa
This is based on the programmer-as-engineer idea which is known to be badly broken. Change the metaphor to programmer-as-artisan, and ask yourself how sane an idea it would be to prevent woodcarvers or potters from working unless they are licensed, stamped, certified and barcoded.
The software industry has gotten away with not being accountable for bugs other than the threat of someone not buying it anymore. I think it is a byproduct of the immaturity of the industry and probably won't last for long for important applications.
Your password has expired, please login to change it.
> This is akin to verifying the correctness of code > (mathematically proving that it cannot fail), an > incredably extensive and expensive process. But
> sometimes it needs to be done. An exam such as
> the Professional Engineer exam is an attempt at > making sure the people who work on these projects > that affect the public know when and how to do
> this.
If you read the license to 99% of software out thier, including free and commerical software, their is no-warrenties and guarrenttes. Most software may not be allowed to be used in Nuclear plants, and other mission critical bussiness.
Most software is licensed to you as is, and containts no warrenty what so ever.
Registration for mission critcal software is already in place, it requires special licenses between you and the company, a special certification program for any software to be certified.
Really, certifing programmers is a bad thing, certfing software is good.
Reguluation is serious pain in the ass for programers, who are often free willed and libral.
IMHO, Open Source is the only way to go to avoid large technical bugs in the future (peer presure works!)
Thanks,
AArthur
I spy a troll!
License is (simplified somewhat) "permission granted to do something which would otherwise be illegal".
You cannot be required to obtain a license for any activity which has not been declared illegal.
Any other issues such as liability are secondary, or more.
I'm no lawyer, but I'd bet one would tell you the same.
You can be prosecuted for using the title without the proper certification.
All this said, this still doesn't prevent crappy design. Poor coding habits, etc. What is need for that is a decent software engineering process, design and code reviews. People must learn to employ good design habits even in the absence of such a process. The IEEE's tutorial on software engineering management is a good place to start if you want to learn.
I've got to agree with you. As I read the article, I kept feeling like the reporters were asking the wrong people the wrong questions.
The article states that some large percentage of corportate software projects come in over budget or after thier deadline. Did this survey research the reasons? From my 3 years of professional experience, the majority of the times that I see something come in late and/or over budget is because the project was given unrealistic deadlines by the management team. Or, the project becomes the victim of feature-creeped or redesign due to marketing concers or a rushed design.
This is very true of recent years, in which the internet has exploded onto the corporate scene and know-little marketers and managers are scrambling to do something. They quickly come up with some rough requirements, get an estimate, then decide to change everything 1/2 through the projects. The programmer, designer, and architect often have to change major segments of functionality because of legal or marketing concerns.
I don't think certifying managers is the answer either, though. I'm just anti-certification on a whole slew of points, which I guess I won't rant about right now.
After reading the article all I could do was laugh!
Not one of the sources was a programmer. They were all Dr. of MIS, or Analyst for XYZ. No actual programers were interviewed as to weather they thought it was a good idea.
Personally I think it sucks. Requiring coders to be licensed would be like requiring authors to be licensed before they could write a book or artcle. Lets see those author/analysts deal with that!
Thats fine but if I'm not mistaken that is for civil engineers only. I'm sure the Iron ring doesn't go to chem engineers or bio engineers or computer/electrical engineers.
What about Hardware? Should EEs and CEs need certification? A large part of the y2k bug is hardware with not enough bits for the date. As a CE (computer engineer) I find this whole Idea a litlle disturbing. Would I have to pass both a hardware and a software test? Many people bounce from lowlevel software to hardware and back again. Do all of those people need two licences?
Auto engineers arn't required to have a licence. Neither are engineers who design medical equiptment -- however the final products from both fields must pass certain federal standards. Either product could have been designed by the mythical infinate monkey room or some gifted savant.
Would webdesigners be required to be certified? How about sys-admins? They can be responsable for very inportant data. For example the sysadmins at NSI Inc. or IRS or an Army stratigic planning system. Should they be licensed to setup a system with no holes and disabling al bugs?
I think licensing programmers 1) opens up a can of worms we don't want open (who else do we require to be licensed). 2) would eliminate free software and savant programers.
That same principle holds true in any field: Law, Medicine (who needs to see a doctor and pay doctor's rates when all they need is a little Bactine?), and programming.
You get what you pay for. It's called capitalism. Bad programmers won't be in business for long as they lose customers/employment. It's that simple. We don't need licensing in any industry.
DFL
Never send a human to do a machine's job.
DFL
Never send a human to do a machine's job.
Certification rips away from these companies the right to hire whomever they choose.
This same principle applies in all sorts of "licensed" fields, however:
Of course, I could go on. But this is precisely the problem. And when we look at it this way we see that somebody's interests are being protected, and it's not mine.
DFL
Never send a human to do a machine's job.
Ever heard of ISO? There's this certification called ISO 9000. There are contracts you can't get unless you're ISO 9000 certified -- a de facto license. There are ISO programming language standards, meaning they could easily certify compliance to the standard. Process on the other hand, no one seems to know what's best. Probably the most bulletproof process is the one they follow for the space shuttle guidance software, where every minute change has to go through rigorous specification and proof. But any consumer software company that followed that process would never see their products get to market.
I've finally had it: until slashdot gets article moderation, I am not coming back.
The y2k problem was caused mainly by shorted sighted management who wouldn't listen when told of problems to come. Certifying the programmers won't guarantee a better product when management still sets deadlines the programmers know can't be met without skimping on something (and that's generally testing)
development.lombardi.com
If programmers were licensed and legally responsible for the code they create, what about large scale projects? When you have several people working on an application, there is no way to say that when the pieces come together, side effects will not occur. As well, a program written for one hardware platform may have hardware specific quirks when moved to another platform (this includes moving to the next version of a chip, motherboard, etc)
I remember from my university days in my computer ethics class a discussion about this. The non-CS people in the course thought we should be licensed, but as they were shown the real uncertainty of programming and ensuring a program does what you want, they tended to back off.
Who would stake their career on a piece of software working when you cannot guarentee all other aspects of the application working as promised. Besides, can you see a company like MS getting rid of the licenses stating 'We take no responsibility for the product you are using, but we retain all rights over it.'
For instance, in the UK you can join the British Computer Society (BCS) which requires various levels of competence for various levels of membership, and all members have to agreee to a 'Code of Conduct' and a 'Code of Practice'...
There are two points I'd like to make.
First, if certification is valuable at all, it is almost certainly not equally valuable for all types of programming. I would really like to see real-time or embedded programming certification, in the same vein as PE's are certified for more traditional engineering. However, I can't see someone writing VB code for a database application really needing to be certified in any real sense.
Second, there are other mechanisms that can serve the same purpose. At my current employer, quality in employees is a top priority. We would rather not fill a position that fill it with a "body". We have a strict, rigorous interview process that weeds out many not having the required skills for the job we perform. Certification might make this a little easier, but my point is, if an employer wants to hire someone, its up to them what standards they want to apply.
Later,
FM
Frank W. Miller
Certification is probably not a great idea, especially as regards open source. Why should someone have to pay money to be certified to write free software? That's what it comes down to.
If quality control is what you're after, open, peer-reviewed source does the job a lot more efficiently.
Assistant Madman wrote: You're missing the point I think. People will spend thousands of dollars to attain a degree so that they can make a nice high return on investment. Having done so, will they write free software? Quite possibly. But people who can't afford to spend the money or don't especially want to make the money coding are an extremely valuable source of free software coding talent, and with mandatory certification we can simply write them off.
What, do we have to register *EVERYONE* nowadays?
Why not register authors, and columnists, and
poets? Is there no freedom anymore?
Get the programmers together and REVIEW THEIR
CODE on a weekly basis. You will know who is
the best programmer. And you will know who is
'certifiable'.
A degree only shows one thing: commitment. That's
not a bad thing to show, but saying it shows
anything else is ludicrous. They learned (maybe)
just enough to zip through.
I will agree that the best programmers I've known
have had degrees; almost NONE of them had degrees
in Computer Science. Often it was Philosophy or
Math or Creative Writing.
Or, as my dad said, get a technical degree in a Master's program; get a liberal arts BA.
_Deirdre
The distinction you make between SW architects and coders is valid, but the presumption that the field is mature enough that we can codify and teach good SW engineering is not. Sure there are a lot of best practices that we all agree should be followed, but are those practices highly conguent with the conventional wisdom of say 1989? Linus was flamed for going with a monolithic kernel, because exactly the institutional types who would oversee licensing knew that only micro kernels made any sense.
Even on more abstract points the pace of change in design methodology has been much faster than any licensing board could keep up with. Actually this is why I like the current cert exams. Nobody expects that a particular ceritification will be worth diddly in five years. They really just work to keep you moving with the field.
As a big establishment institution it is not surprising that the Times prefers to talk to officials and not people who do the work. In my experience programmers are much more quality conscious than either management or customers, who for their own good reasons are cost conscious. To certify programmers without having a "building code" to enforce higher standards would not alter the current situation, but it would remove a a lot of talent from the field. Think about it: mediocre programmers with credentials can find jobs. Lacking credentials, you won't be able to find work without some obvious talent.
I do not need anything further.
I'm sick of all this cert stuff anyway.
If you can do it; do it. If not, buy a book, read it, then code until you get decent at it.
Let your skills speak for themselves.
Romans 10:9-10
I had 2 semesters of data structures. I had a semester of software engineering and programing language theory. I thought language theory would be a joke but after you can see how they are implemented it really helps in picking the right tool for the right job.
As the comment above yours that delt with college making good programmers worse, that is completely not true. I went into college programming with GW basic and using gotos in the most reckless code you'll ever see. Looking back, I don't see how I understood it. There wasn't even a single comment.
My first semester of college got me away from bad habits such as the before mentioned GOTO, GLOBAL variables, lack of comments, etc
Also, we started with C++ so only our first semester was procedural programming. After that, we went strait into structs(not OO but needed for intro), pointers, classes, encapsulation, polymorphism, overriding inherited functions, overloading opperators, templates, linked lists, binary trees, AVL trees, Red Black Trees, 2-3 trees, B trees, heaps, stacks, queues, circular linked lists, doubley linked lists, recursion,
big O computations.
That was just data structures, we then hit software engineering where we went through 3 different paradigms for development. It's amazing how many times you want to change you design. I'm so glad I don't rush in and start writting code the second I want to make something. I used to do that and would spend hours re-writting it after my revelation in the middle of the night.
Sure, I learn a lot from reading books and practice makes perfect of course....
But I AGREE totally. I would not trade my B.S.
in Computer Science for anything. Plus, college was just plain fun. The experience was so well worth it.
Romans 10:9-10
I haven't read the article, but I think there is one fine point that needs clarification. IMNAL, but I think a "certified" engineer who passes applicable tests shows competence in engineering and is aware of building codes and other regulations.
As far as programming goes, what formal codes or regulations are there? I don't think it is regulated. I don't see how it can be regulated. Ideas?
~afniv
"Man könnte froh sein, wenn die Luft so rein wäre wie das Bier"
~afniv
"Man könnte froh sein, wenn die Luft so rein wäre wie das Bier"
Richard von Weizs
What about all of the people out there that bash something cool out for Windows and the Mac OS?
I tell ya, about 80% of the software I use on my Mac would probably go out the door.
Of course, open-source advocates might say the shareware industry is irrelevant under the open-source scheme. But the fact is, shareware scratches a lot of itches for those closed-source OSes (the menubar clock that finally made it into the MacOS started life as a shareware project...).
Jay (=
This proposal came up a few years ago when the Y2K problem started getting media attention.
Certification is great if:
I wonder: Do the nuts that keep bringing this up have the public's best interest at heart or just the legal community that will end up making the most money out of it?
I pay for a driver's license every so often and I can accept that since someone needs to keep track of who's licensed, etc. But... I have to buy license plates for my car each year. If I don't, I lose my license. Do those license plates make me a safer or more responsible driver?
A person goes to college for four years (or two years, hell, does it take four years to learn to use VB :-) ) and spends a ton of money on earning their degree. Let's assume that the University didn't let this person slip by without learning something. Are they going to be a better programmer because the State administers some test and, more importantly (in the State's view), collects their annual fee?
We don't, at least in the state where I live, have recertification of teachers after they earn their degree. In my mind, an incompentant teacher or one that's let their skills slip have the potential to do more damage than a programmer that hasn't kept up with new technologies. The programmer will eventually get fired, the teacher almost has to murder someone to get fired.
This is about money. Not creating better software.
CUR ALLOC 20195.....5804M
Agreed.
Unfortunately, it became trendy for companies to start calling all their programmers at a certain level "Software Engineers" even if they had no formal training in Software Engineering.
Anyone should be allowed to code. But only someone with the training should let themselves be called a Software Engineer.
I certainly wouldn't want programmers without degrees working on an important project.
Bah. A degree is a piece of paper that says 'this person shelled out a bunch of cash and occasionally sat through a class'. Absolutely nothing more. Several of the people I went to University with, (who got their degrees even,) could not program their way out of a wet paper bag that was being held open for them. They've already gone off and been given major programming jobs by people with exactly the attitude you've got, and as a result, one company went bankrupt, and another wound up losing a lot of money for the year, instead of the large profit they would have had if their programs had been done by someone with ability instead of a piece of paper. Also, the absolute best programmer I know of got pissed off with the University (both the politics involved, and the sheer volume of idiots they were churning out) and dropped out to get a job - he was doing quite well the last time I heard from him, and so were the people who hired him, without the piece of paper. What's more, his programming ability did not get improved by going to classes in University in the least. He spent the whole time bored out of his skull, playing tick-tack-toe with the rest of us who already knew the material for the day.
The ability to program isn't just suddenly aquired by sitting around near other people who have it. You've got to work at it, and actually think about what you're doing, always. Some people just can't do that, and they'll never be good programmers. One of my co-workers is a great example of this, he never bothers to check for errors along the way, he won't think about different ways of solving problems - there's only one way, and mentioning anything else gets him angry. Fortunately, I do almost all of the programming in our company. (And while I don't consider HTML to be programming, he has exactly the same problems with it as he has with C/Java/Javascript/VB/anything... and I frequently have to fix his web pages when they develop little quirks from sloppy construction.)
A Code Of Ethics(tm) or Professional Certifications requirements do not address the issue you raised. Syncronys Softcorp engaged in fraud, and hid behind the absurd disclaimers common in commercial software licenses to get away with it. Asuming a Code Of Ethics(tm) or Professional Certification requirement would improve actual coding (I suspect it would not, it would simply hamper such Open Source projects as Linux, since much of the talent -- students -- would suddenly be excluded from taking part BY LAW), all you would have would be a better written program which displayed misleading dials.
The Future of Human Evolution: Autonomy
A Computer Science degree isn't supposed to teach you to program - that is an implementation detail. It concentrates on high-level things like design, which is what the article suggests could be up for certification. They cite Y2K as a design failure.
This is why this article is so PATENTLY absurd. Do you honestly believe that no one (especially later on) questioned the wisdom of using a two-digit year in a date? When the practice first started, wasn't the two-digit year an attempt to address several issues, two of the most salient being cost and storage? At the time, it was a GREAT compromise.
Here's one question I have...how many people who are members of the ACM are or were involved in the practice of using two-digit years in the representation of a date? And, how actively did the ACM, SINCE this practice began, actively campaign against it?
The point is this, and it's not one that hasn't been made already: Systems designers, in looking at all the issues at the time, decided that a two-digit year would be a good compromise based on the availability of scarce resources. This was NOT a display of ineptitude - it was a collective decision, made and accepted by an INDUSTRY. The failure isn't in the decision itself, it's in the blatant refusal of tight-fisted CEO's and managers, more concerned about short-term profitability, to recognize the problem and make the necessary changes over time. Maybe it's the CEOs and managers that ought to be certified!
The analogy to engineers isn't really appropriate. You don't really need a license to work on a project, but you frequently need a license to certify or sign off on a project. I worked in civil engineering for 10 years and while a large number of the engineers that I worked with were professionally certified, a substantial number were not. The ones who were not were generally new to the job market since it takes about five years work experience to even qualify for a P.E. certification.
Also, a substantial amount of work in my former field is done by people without any engineering degree at all, although that does not mean they have no engineering experience.
The cost of using only P.E.s on projects would probably be prohibitive in today's environment and would probably severley tax the available supply. The likely response would be to lower the qualification requirements to increase the supply, thus diluting the pool substantially. Sounds like what is happening in IT now to some degree.
A better analogy would be to say that project managers should be certified.
I know many programmers that are certified.
:)
Or is that certifiable?
--
The Internet is the Suppository of All Knowledge. You get it in the end.
Seems modorators are mainly against certification, please be impartial and moderate these type of intelligent responses/posts too !
- sigs are for wimps.
I see a lot of posts about MS Certification being useless, and some saying certification would expire in 5 years or so. This misses the point. When I went to school for my CS degree, most of the courses went beyond specific technology (computer languages, OS, APIs) and concentrated on a lot of theory.
...A lot of people out there are just coders, they live in their little OS or favorite computer language and hang on to it for most of their careers, others are more rounded and understand the principles no matter what the latest technology fad is currently.
Theory will not change that much (if ever). NP complete problems, finate state automata, algorithm theory, compiler theory, discrete math, general testing and engineering principles, etc. Some of this stuff could be certifiable.
But we need some method of certification just like other professional organizations do, specially for code that affects human life (radiation machines, airtraffic control, military). The certification could be based on the theory and practices of our field, not current technology. This of course would be very difficult to do (such a test), but it's worth a try if we want to advance the field.
BTW
-Flame on ! Johnny Storm, Fanstatic 4.
- sigs are for wimps.
The same can be said for engineering, medicine, law, etc. Only to a greater extent. You can much more easily review a compiler, and the code, than you could the works of other professionals who don't live in a digital world. If an engineer builds a brige and it falls, they might try to argue that it was poor construction, faulty materials, bad maintence, etc. However, even there you have blueprints. If there is a design flaw, it most likely could be spotted by a team of professionals. This is even more true in software. You have the source code, and the binary. These are static things that do not change, and it is far easier to isolate the outside variables.
On another note, the FDA does require certification for software/hardware for medtech devices. These controls and reviews are very stringent. I think this is mostly a good thing.
If one is to say, the programmer is only responsible for his code, not for the compiler - the machine - administration, it is easily enforcible. How long and how many minds did it take to isolate what caused the Challenger to blow up? A bug in the coding could have been tested and run through its paces in a matter of days. In software you are dealing with matters of definition. A given function or routine is supposed to do exactly so. The coder either applies it wrong, or they apply it right. While it is true there may be other factors which may cause a break down that may have been preventible if the programmer had been wary, lets say a bug in the compiler, or in the machine itself. Engineering exists beyond just that of the text book. It simply is not possible to isolate it just to mathematics. Humans created software and compilers, it follows a well defined set of principles. Engineering follows the laws of nature, which we humans are still trying to grapple with to this day.
I don't know what college you people went to! I went to SUNY Stony Brook, and if you are not at least a decent coder you never would have made it through their program. The first year of CS is made up of classes that teach problem solving and basic programming skills. They also teach you data structures and how to implement them properly . From there you go on to Analysis of Algorithms which is a whole class on optimizing. There is Operating Systems, in which you write an OS; Compiler Design, where you write a compiler; etc. Other classes teach you low level things, like assembler and what exactly goes on inside a CPU when it executes instructions. In fact, the only classes I had that dealt heavily with design issues was a two semester software engineering class (CSE 308 and 309). In that class you went through the whole process of writing specs, getting approval, budgeting, time allocation, etc.
My point is that it all depends on the school. A student who couldn't remove white space from a file wouldn't even have been excepted to the comp sci. program (you have to get acceptable grades CSE 113,114,213,214,and 220 before they will even let you into the program) at Stony Brook. People who aren't at least decent coders would never get through those classes.
My personal experience is that if you split programmers into three categories of compentance:
- The best
- Average
- Mediocre to bad
that you will find that #1 is dominated by self taught programmers who have a degree or diploma in something other than computer science, #2 is dominated by programmers with computer science degrees and #3 is a mixture.It's important to note that all the really good programmers that I know have a degree or diploma in SOMETHING although that something is rarely computer science. Almost all of the really good ones have taught themselves programming.
While a good team might catch that issue, bring it to the attention of management, and do something about it, licensing isn't going to create good teams or good channels of communication.
But not even management is "responsible", in my opinion. The sources of Y2K are structural. Software development is usually given less money and time than it would actually require for delivering high quality end products. And management, faced with the decision of paying for redoing a payroll system that still seems to be working OK vs., say, investing in a glitzy new advertising campaign, are nearly forced to do the latter.
Like a lot of infrastructure these days, software is being used far beyond its anticipated lifetime. That's only going to change if the market starts permitting companies to look towards their long term success again, and if employees at those companies have long term job stability (from the CEO on downwards).
In the case of doctors or lawyers, the buyer doesn't even have the skills to make that evaluation themselves. It makes a lot of sense to license doctors or lawyers to ensure minimal competency. The cost of information in that case could be life or liberty. In other cases, society may determine that the costs of licensing are small compared to the costs of forcing everybody to evaluate professionals for themselves.
I happen to agree that for programming, we do not need licensing. But the reason is not that licensing in general is a bad idea, but that the details of the market for programming services are different. Unlike a sick person trying to find a good doctor, a manager of a software development team has both the skills and the power to evaluate candidates for programming positions.
In the engineering field - whence the argument'idea arises, the ASME (I think) is the controlling authority. It is a professional society, not a corp or gov affiliate.
Sort of like the IEEE or ACM in our field. So, a body of these, and other CS entities, would be a good choice to develop the certification criteria.
Also, the Software Engineering Institure as CMU would be a worthy representative, as would the CSAB which accredits most CS curricula out there and so could enforce that correct practices are taught from the onset.
-- What you do today will cost you a day of your life.
In 1995, Syncronys Softcorp released a product called SoftRAM95. It claimed to double RAM, and sold over 600,000 copies at $79.95 per copy.
What the software did was to show some dials on the screen, which sowed how much RAM this software made available.
The point is that the dials SHOWED something, but there was no actual RAM doubling taking place. The dials just REPORTED that there was.
The average Joe consumer had been slipped a placebo.
A Professional Certification would introduce a Code Of Ethics (along with a guarantee of competence) that would keep this sort of thing from ever happening again.
-- What you do today will cost you a day of your life.
Getting SE training in an academic setting is a contradiction in terms. Academia, by it's own definition, is dedicated to pushing the envelope of knowledge - Computer Science as you define it fits there nicely.
But, some pretty good institutions are making an effort lately to provide training in SE - and I hope this will improve the quality of production code that comes out of industry.
CMU, RPI, UCONN are the ones I know about to offer SE programs (grad level) but I'm sure the list is longer, and getting longer still.
But you are also right in saying that SE is still taught by apprenticeship. No amount of time in a lecture hall compares to hands-on production quality code pounding.
I hear, I forget; I see, I remember; I do - I understand.
-- What you do today will cost you a day of your life.
Not every engineer needs to be a professionally licensed one. Only those whose work affects the safety of people, or is Federally funded, or has HUGE money riding on it; or those who are the final authority on the product, need to bear ultimate responsibility for their work - and these are the ones who need to be certified.
The engineers who design nuclear power plants, for example, need not be certified - because the process they are bound to follow already is - and the number of redundant checks on their work is exhaustive.
So it should be with software engineers. People whose scope has a public safety effect, great financial liability, or is tax-payer funded/government contracted, but whose work does not undergo exhaustive and redundant SQA and V&V processes; should certainly be certified.
Note: Professional engineering certification is not the same as a VBA cert, or even a CNE - though the CNE comes close. Professional certification involves sound design principles, conservative estimation methods... Much more abstract concepts than knowing the version of the tool you use.
Certification is public assurance that you are competent to bear the responsibility of the task. If the worst outcome of the failure of the task, is not "that bad" (ie no public safety compromise, no property damage, no POed taxpayers not re-electing the people that gave you the contract) than simple insurance or a disclaimer will do.
This is very hard to achieve in the software context, but I suppose that a simple analogy would be: design methodologies that include - GUARANTEED BOUNDS CHECKING, NO SIDEFFECTS, NO MEMORY LEAKS, FAILSAFE OPERATION, REDUNDANT BUT DIVERSE IMPLEMENTATION OF CRITICAL ALGORITHMS AND SYSTEMS - would qualify one for professional certification (provided these are not language specific and on the core level of the developer's understanding of his/her field).
-- What you do today will cost you a day of your life.
The License of which you speak applies to the medical and legal fields, but not engineering.
A Certification OTOH is a piece of paper that qualifies one to use a particular tool.
What we're talking about here (NYT) is a Certification of Professional Competency, not a License to practice or a Certificate of Tool Awareness, if you will.
The CN{A|E} and MSxx 'certificates' are tool awareness leaflets that mean that an employer doesn't have to worry about you not knowing how to use a particular tool. You take an MSCD and put him in a Linux environment, and you'll see what that paper is worth.
Now, the Certificate of Professional Competency is something else entirely. Any degreed engineer knows about the decomposition of forces, and can tell that a particular design simply will not stand. But a PE will have passed tests to guarantee that his/her designs will not only stand under designed load, but under a variety of additional conditions. Also, a PE's design will FAIL-SAFE, rather than in a spectaculary disastrous manner (Gallopping Girdy comes to mind).
In the context of the software industry, a Certificate of Professional Competency has nothing to do with the development tool or language. It has to do with the robustness of the conceptual design. A PSE would know implicitly what designs are suitable solutions to a particular problem. A PSE certification would give an employer the assurance that this person does good work - and is not (pardon the term) a hack.
The concept of the Professional Certification has been bastardized by companies such as Microsoft, Novel and Sun (Java Cert? PUHLEEZE!) to convince management types that the holders of these leaflets know what they're doing. All these certs mean is that someone paid, sat, and passed.
A PSE would know, through their education and certification process, why MS-Winders is rickety and why X is a monument to great design. A PSE would not ever produce code that locks the machine, leaves a gaping security hole, or shows you a blue screen of death. A PSE would do this by design, and not by a series of fixes, patches and upgrades.
A PSE would not necessarily know Java or C++ or Smalltalk, but rather OOP - inside and out. They would not necessarily know x86 or 680x0, but the crux of ASM.
PSE development, unfortunatelly, does not mesh with OSS. It requires careful review, strong-arm process and centralized development. And for some applications, this is the way to do it.
Now for the olive branch. Many developers have what it takes to be PSE (as I define it), but all PSE's would be - by definition - great developers.
Employers whose projects carry enormous responsibility, would seek out staffs of PSE's, or would put PSE's in crucial locations within the organization, as sanity-checks on the work done.
As for who is in control of the licensing board.. Well, the industry as a whole, as in all others.
-- What you do today will cost you a day of your life.
I prefer to think of programming as more art form than engineering practice -- the inner elegance of a design is how code should be judged, not whether it can "still make coffee after withstanding a load of -10 g's"... Licensure would take a lot of the artistry and enjoyability out of the industry, relegating us to little more than glorified plumbers, repairing the infrastructure of the next century.
:)
Quite frankly, I would say a solid footing in the Liberal Arts contributes significantly more to whether a programmer can understand and meet customer requirements than whether or not he happened to take 2 1/2 years of Scheme as part of his undergraduate CS program at the Punxatawnie Institute of Technology. (I have both a BA and an MS in math, incidentally, and little "formal" training).
I have yet to see a "real world" problem that this notion of licensure would actually address. It looks as if this wants to be a nearsighted approach to addressing the Y2K mythos, but the reality is that (like so many things) when most of the non-Y2K-compliant software still in use was deployed, it (2 digit years) was "not a bug, but a feature" (lower memory consumption, etc., when memory was at a premium and code was cheap).
So, like so many others who have posted on this earlier, I'm going to say "let the free market dictate things, not licensure" -- but for arguably different reasons.
This is my opinion and my opinion only. Incidentally, IANAL.
MOO;IANAL.
There used to be a picture linked here.
I don't really think that certification is the way to go, but I certainly wouldn't want programmers without degrees working on an important project. You can learn a lot by hacking and playing in high school, but there are a lot of things you can only get exposure to by being in a class.
;)
I think we'll see the concepts in Computer Science and Software Engineering start to merge. I just wish I could get that degree when it becomes available.
æeee!
I have a hard time seing how anyone (except those still in high school :P) could believe that. Programming "the same old stuff for 12 years" just doesn't happen. Unless you do nothing but, say, programming forms in visual basic (which hasn't been around _that_ long), every line of code you write is a stepping stone in experience. Programming on that type of project is, more than anything, an excercise in contruction and improvement. Modern technology is faster, but not much more revolutionary, than the technology of several years ago. Technology doesn't completely change every two or three years, it evolves. Probably the worst place to learn about modern technology is in the classroom, because rare ar the schools that stay ahead of the curve. Programming concepts have not changed much decade to decade :), just evolved and improved.
Show me a programmer who is better with 3 years of education than one of 12 years experience on "the same old stuff", and I'll show you a burger-flipper at McDonalds who makes more money than the average rocket scientist.....
I'm a California licensed Civil Engineer. California licenses a variety of different branches of engineering, but only requires a licensed engineer for construction projects. The reasoning behind not requiring, say, a licensed mechanical engineer to design a car, is that the manufacturer takes on the liability. The same is true for software - if it causes harm, the vendor is liable, not the original designer.
Additionally, each construction project is unique, while manfactured products are identical copies which can be tested before releasing for sale - a failure affecting a few units is more likely a material or manufacturing defect than a design flaw. With a building, you don't get much opportunity to test it before selling it.
At some level, this may be an artificial distinction, since some software projects resemble construction projects in their diffuse contract structure, and the impossibility of testing all potential failure modes.
Finally, who would benefit from State-issued licenses for programmers? A programmer who got his license from programming PDP-8 assembler isn't necessarily more qualified than a high-school dropout who never bothered to get a license. State boards will have to be set up, and these will likely be dominated by programmers from the large software houses. One could imagine a Washington State Programmers' License exam which required working knowledge of Microsoft variants of various languages, or a Utah one which required knowledge of creating programs for a NetWare environment.
Those of us who actually have degrees in computer engineering or software engineering have a right to use that title - it represents a substantial investment of time and money. Just because software engineers can't currently use the title "Professional Engineer" doesn't mean that all software engineers are charlatans and dropouts.
It's fairly amusing to see the Y2K problem portrayed as an ethical problem, as if a bunch of weaselly fly-by-night coders were trying to hoodwink the public back in the 60s and 70s. In hindsight it was a poor design, but it fit the design constraints at the time, which were considerably different. It's not an ethical mistake that bridges from the 1930s can't carry modern tractor-trailer trucks, is it? Of course, anyone building a bridge like that nowadays should be criticized, just like anyone who was still writing Y2K-noncompliant software in the last several years (Windows '98, anyone?)
Personally, I don't have any problem with Software Engineering being a professional field jsut like Civil Engineering. Four years of engineering school separates the wheat from the chaff pretty effectively in other engineering disciplines, as it did in my major. Requiring software engineers to pass the EIT or similar standard requirement isn't much more of a step. It would certainly cut down on the hordes of people that read one or two books or get their MCSE and immediately jump into the field. Those of us with real skills have nothing to fear from certification.
Your right to not believe: Americans United for Separation of Church and
It depends on what you're hiring for. If someone is hiring a tech or an admin to run your network, then you certainly have impressive qualifications. But if someone is hiring you to design a network, or to create an entirely new networking system, then you want someone that has training and/or experience in engineering and design. There's a difference between running a system that already exists and designing a new system from the ground up without including design flaws such as the Y2K problem. Good design can be learned entirely from experience, but a good education means that you don't have to make mistakes and learn from them; you can learn from others' mistakes and avoid them entirely. Formal education isn't a complete substitute for industry experience, but it does give you a jump-start in the direction you're headed.
Your right to not believe: Americans United for Separation of Church and
Nope. I am a Chem Eng and wear mine every day. All of the accredited engineering disciplines are eligible (Mech, Elec, Civ, etc.)
The issue of "accredited" engineering disciplines is currently in the spotlight in Canada. You cannot call yourself an engineer in Canada unless you are a registered professional engineer with one of the provincial associations. This is by law and they do prosecute if you are practicing without a license. The main requirements of a P. Eng. is an accredited degree and anywhere from 2-4 years practical experience, depending on the province.
At least one Canadian university is offering a "Software Engineering" program through it's accredited school of engineering. The provincial association is refusing to recognize software engineering as a professional engineering discipline and is threatening to take away the accreditation of the entire department to re-inforce it's point.
I have to say I am mostly in favour of such a move. I take my professional responsibility to society very seriously. Of all the the registered professionals (doctors, lawyers), engineers are the only ones not responsible to an individual but to society as a whole. Our mistakes can affect the lives or standard of living of large groups of people. That's why we carry liability insurance, either corporate or individual. Software engineering, even if it could be somehow licensed, just doesn't have this element of liability and accountability for failure. I reject the argument that software is too complex to assign accountability to an individual. I work in the oil refining industry and everywhere I turn, I see a potential failure point.
Laugh while you can, monkey boy!
The best example of this I've seen is a professor I spoke with back in university, Dr. David Parnas. He was a member of a high profile panel on computing in battle management. He resigned and wrote a number of memos critical of SDI from the perspective that the complex computer systems that would be required to control antimissile systems couldn't be proved to be correct. Since they were essentially single use systems, they wouldn't benefit from day-to-day use to debug them. And of course the consequences of failure were enormous.
To this day, that story remains with me as the most admirable instance of an engineer upholding his or her responsibility to society.
Laugh while you can, monkey boy!
To become a Certified Public Accountant you need a BA in acccounting; two years public or four years private accounting experience; and past a four-part, two day exam. Most of the CPA's that I know took the exam four times before passing. It's a real bear of an exam.
All this rigamarole and we still get bad CPA's.
Really, really bad CPA's.
All that certification does is reassure your client's that you're not a complete idiot.
I'm sure they meant well. So did the makers of Thalidomide.
This is my third year.
I know many superior programmers and many poor programmers and neither has anything to do with what was taught in school.
Programming is art.
Some people have skill and others will struggle with it and never be able to write good code. Writing code is creating, and whenever creativity becomes a requirement, talent prevails over knowledge. Can an artist be certified? True, we can recognize distinctly bad art and good art, but for every task in programming there's a plethora of ways to accomplish it, some quick and dirty, some clean and slow, some rigid, some loose. We can't be "certified" because tests require right answers.
What i disgree with is the notion that college, for the insane amount we pay for it, shouldn't teach good code design. Learning theory is good, but I really think they aught to have a whole course just on good coding design. It's important and one doesn't realize its importance until they get into the field.
-Z
I'm afraid. I'm afraid, Dave. Dave, my mind is going. I can feel it. I can feel it. My mind is going.
Huh? Do you actually think programming has changed in the last 12 years? Just what do you mean by "modern technology"? I'm getting a sinking feeling that you're talking about specific products that didn't exist 12 years ago...
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
Because of this fact.
It is a matter of public protection and trust in some cases. The state was getting burned on way too many projects by fly-by-night programmers.
Although it does not guarantee that licensed software engineers will "be any better," it *DOES* make them MUCH MORE ACCOUNTABLE (e.g. malpractice, etc...)!
-- Bryan "TheBS" Smith
Independent Author, Consultant and Trainer
*Laugh*
Now come on. I cant even name all the idiots I dealt with in college who had no idea how to program. At all. I once had to explain to a grad studnet how to remove white space from a file. In a group project I was working on a person in my group had to explain to others what a hash table is. I dont know ANYONE who learned how to program in college correctly. People I know from college who've gone on to become successful programmers were already good programmers when they got there. People who were not good programmers became worse programmers due to the emphasis on high level design rather than the fundamentals of good programming. In college we spent more time counting the lines in our functions and dealing with the imposed design contraints than we did learning the basics of good programming.
-Rich
And while we're at it, reporters should have to be liscensed as well. What if some crazy freelance reporter decides to say something bad about the state or government?
Praise the Force Field! Praise the Laser Project! Slackware Loon #19830573
Does being certified make it safer? Not if the managers don't support it! And if the managers insist on it, then it would be done that way anyway.
Certification only makes sense if most programmers are operating independantly, and even then it only makes sense if the software license doesn't disclaim responsibility.
I think we've pushed this "anyone can grow up to be president" thing too far.
I would tend to agree with you that the concepts you mention are important. I would disagree that a CS degree is the only, or even the best, way of getting them.
-Solid foundation in programming concepts
The problem with this one is that, from my own experience in a CS/CE program, you don't get a solid foundation. The canonical example is from a class in data structures and algorithms that I was forced to sit through. They spent an entire semester going through the theory behind and analysis of things like sorting algorithms. At the end, you knew everything there was to know about writing and using Quicksort vs. heap sort, and why you'd choose one over the other. Problem is, not once in the entire class did they ever touch on the single most important concept: why you should not be writing either Quicksort or heap sort in a program. In other classes they spent huge amounts of time on the correct ways of doing things to valid data, but not a single class spent any time on how to validate user input or other input data and how to handle invalid data, error conditions and the like. What I found was that, at least at the undergraduate and early post-grad levels, they spent all the time teaching things that were either too exotic to be useful or that you should not be doing yourself, while glossing over the dirty, messy, practical things that keep your code running when it leaves the nice, clean lab where all input is valid and you never run out of memory and enters the real world where input comes from a phone book falling on the keyboard and the disks crater in the middle of a critical database update.
-Knowledge of the processes of software development
Again, the degree programs tend to fail here. They teach the theory fine, but they gloss over or ignore completely the practical application of the processes to actual software projects. There's a world of difference between using a process on a 1000-line class project involving only one programmer, and applying the same process to a quarter-million-line point-of-sale system where you have 15 programmers in 3 groups working on it, the requirements change daily and bugfixes and minor enhancements get thrown in without warning.
-Curiosity and exploration of new technologies
-Passion for the work
-Rigorous and analytical thinking
What I've found most often is that the academic world works to eliminate these rather than teach and strengthen them. Students who embrace these concepts tend to argue with the professor ( and worse yet, prove him to be wrong in the process ), do things that the prof isn't prepared to deal with or doesn't want to deal with, "cheat" by making use of libraries or facilities that they know about but that the prof hasn't mentioned yet, get way ahead of the curriculum and generally be pains because the prof actually has to start thinking instead of just following the lesson plan.
Bah.
The surgeon was using the wrong tool for the job. Show me the spreadsheet which comes with a warranty which says that it will always function correctly. He trusted a piece of equipment which came with an explicit warning (its warranty) which said it could fail at any time. It would be like using a dull knife he found on the street to do brain surgery.
I'm pretty much against licencing of software engineers, but the more I think about it, the more it starts to seem like a good idea. Everyone in this industry _expects_ their products to be crap. That's why there's a Cover Your Ass warranty with every bit of software. Bridge-builders (and heck, toaster builders) can't get away with saying that their product just might not function correctly. Maybe if there was a threat of actual lawsuits or loss of job due to defective products, we could have software packages which are as reliable as a sheet of paper.
For those who think that the software industry is too immature to handle that sort of responsibility, check out the Code of Hammurabi. If you built a house for someone and it fell down and killed their kid, your kid would be put to death. Home builders have been able to handle responsibility since the dawn of civilization. It's about time that we did the same.
-jon
Remember Amalek.
Did he really mean to use the word license instead of certification? If he meant license, he also meant laws to prevent unlicensed programmers. You don't see very many bridges designed by unlicensed engineers now, do you?
An excellent point, but...
I am reminded of a story one of the profs once mentioned during a software engineering class here (at RIT) about a spreadsheet he once worked on.
It seems they got a service call about a crash in the program. He asked the caller how important the software was to the organization--to determine how soon the problem needed fixing, I guess. The caller responded that he was a surgeon who used this software to keep track of patient information, and he was in the midst of open heart surgery.
The moral? Even a spreadsheet can be safety-critical, to the point of human lives depending on it.
(Yes, the problem was solved quickly enough. Yes, the surgeon should not have been relying on the spreadsheet for such important data. That matters little when the problem presented itself, however.)
12 years experience!! It seems that someone with 12 years experience who has always worked on the same old stuff is far less experienced than someone who has been educated for three years or so on modern technology.
You are right that really verifying programs is prohibitively expensive and extensive. Most software projects cannot afford a full-blown verification.
However, if the engineers on the project know a thing or two about how to write code as if it would be verified, it makes the code much easier to read. In my experience, such code is often easy to look at and say "Oh, that's obviously correct".
Then one can verify the most critical parts of the program, and leave the rest to intuition.
I would of course not design a nuclear power plant or missile control system in that way, but for most projects, such an approach would be feasible.
It all boils down to a bit of structure in your code, really. And certifying engineers who can write proper code is a Good Thing.
But then, what do I care what you 'merkins do.
--
--
--
Actually, its not bull at all. In all the other engineering fields you can take a design and, through the correct application of mathematics, prove that it is correct. In a vast majority of cases, thats simply not possible in computer science.
...And this is precisely what we need to change!
:-).
- relies-on-code that relies on the code that happens to have the bug.
:-) world -- if someone is looking for an algorithm (say, something such as a search algorithm) for use in a more-important program. They happen to see something that will do the job in a game. What the hell -- they just grab it, and with a few minor contextual tweaks, transplant it. Hey, it seems to work, no problems yet.
The question we gotta ask ourselves, is why it's not possible to "prove" that a given program is correct. As a sibling comment to this one points out, all programs are built on the foundation and functions of other programs, which themselves are built on top of other programs, and so on... all the way down to the processor firmware (excuse any usage of incorrect terms; I'm strictly a s/w programmer
If there are any problems, it should be possible to trace them to the exact procedure (or combination of procedures) that caused them.
If, for example, a call to my_print(), where:
void my_print( char *my_string[] ) {
____printf( "[Output: %s]", my_string );
}
doesn't work, then we can check for errors in my_print(). If none exist, then we can check to see if the printf() function is working properly. In this case, it shouldn't be (since there is nothing else to cause the error (unless I've screwed up... I'm extremely tired at the moment, and have been using another language recently)). Likewise, if printf() doesn't work, we (or the person who wrote printf() ) can check for errors in printf() itself. Again, if none exist, then they can check any functions (C/Assembly/whatever) that printf() calls.
The process iterates down into the operating system, and eventually (as I said) into the processor code. If no errors are found, the process can be repeated, starting with the compiler. Somewhere, eventually, we can (in theory) find the error.
Now, in the real world, it's not that simple, I agree. But we have to look at why not. Don't give ourselves the cop-out of being able to say, "it's too complex to be able to find the exact problem."
Finding a problem in a piece of code should be a hell of a lot easier than finding a problem in a law of nature.
Yet we are intolerant of faults in brick-and-mortar. Structural/electrical/etc design. But if we find one in software, we are far more likely to shrug our shoulders and say, "oh well."
Ok, I'm exaggerating. A half-decent programmer will do their best to catch all the errors. But that's the crux of the matter. The process is too long, the number of distinct parts (each with a seperate author) too large from the end-user program, down through the language design, the compiler, the shared libraries, the OS API, the OS kernel, the processor API, the microcode (or whatever it's called -- the firmware) that shifts all those little electrical pulses around in the chips.
And a bug anywhere in that chain can easily cause unforseen problems to crop up at a higher level, in some code-that-relies-on-code-that-relies-on-code-that
It's not enough to say or think, "I am a good programmer; I will make sure my code has no bugs," if you can't be sure that every single piece of code that you are depending on is similarly bug-free.
Which is the problem we need to solve and that licensing has the potential to solve.
I've seen the argument that a little game or something doesn't need to be fault-tolerant, that a bug there doesn't matter.
Perhaps not. But what about all the code that it sits on. What about some code that relies on the same low-level function that is essential?
Or even -- and this is especially an issue in the free software/open source (I'm not getting into that argument!
And then something such as Y2K comes along. Maybe not Y2K, but something with a similar effect, and it turns out that this particular algorithm is affected. Oops!
You can see the problem. It stems from the fact that many different pieces of software are inter-connected and all rely on each other -- a bug somewhere in the process can easily propogate through to other pieces, and become harder and harder to track down -- especially when combined with any other bugs.
The Y2K program has highlighted this beautifully. That a particular application won't properly recognize the date is not the problem. The problem is when 2 functions/programs/processes interact which happen to recognize it in different ways.
And all of a sudden, programs that were thought to be "unimportant", definitely non-mission-critical, and basically not worth the time to get every single little bug out, have the potential to cause major problems.
It's the attitude, not the programs themselves.
And the best way to change that attitude (and the resultant potential for hard-to-find bugs somewhere in the system that the "good" programmer can't easily get at) is to have some sort of licensing thing in place.
That way, I can be guaranteed that my programs will work ok, as long as they themselves do not contain any bugs, since I know that the entire foundation that they are built on is ok; built by licensed engineers.
Lemme repeat the previous post, and re-answer it in the context of the above discussion:
Actually, its not bull at all. In all the other engineering fields you can take a design and, through the correct application of mathematics, prove that it is correct. In a vast majority of cases, thats simply not possible in computer science.
The only reason there is a difference, is because programmers are not licensed, or verified in some way that they are competent and will do their utmost best to rid their programs as bug-free as possible. Once (if) such a verification process is in place, it will become a lot easier to "prove" that a program is correct.
--
- Sean
It's a fine line between trolling and karma-whoring... and I think I just crossed it.
- Sean
You don't get a degree in CS to learn a programming language, an Operating System, or a piece of software. The focus of a good CS program are emphasis on algorithms, design patterns and software development processes.
As far as your #1 vs #2, I have found the opposite. People who have not had the rigorous background in the above tend to be those who put in a lot of hours doing things the hard way, with no eye toward overall design. These are the folks who can rock the bits but miss the big picture.
I am not saying that a CS degree will ensure that a programmer will be good, nor am I saying that a degree replaces experience, but what a CS degree from a good program gives is a solid foundation in the fundaments of programming.
The marks of a good programmer are:
-Solid foundation in programming concepts
-Knowledge of the processes of software development
-Curiosity and exploration of new technologies
-Passion for the work
-Rigorous and analytical thinking
Note that I didn't mention stuff like "Mastery of ___ language" or "Proficient knowledge of ____ OS". Those are technical details that in and of themselves, are side effects of what I listed.
I often find that a CS degree makes the difference between a true software engineer and someone who is merely a skilled technician.
e to the i pi equals negative one
Shouldn't you be enrolling in college right now?
e to the i pi equals negative one
Yes, many CS programs are clogged with people who merely want "to work with computers".
Like you, I was programming for, as you said it, *years* before I took a CS class. I hate to date myself, but my first computer was a VIC-20 and I taught myself BASIC on it. From there I too had a steady progression of computers. I was very technically proficient in programming by the time I entered the CS program.
However, it was in that program that I found that programming is more than being able to fire out lines of code to do something. Concepts of software development, such as design patterns, algorithm analysis, software engineering processes, lifecycles, and team programming were ingrained in me.
Just because someone has a CS degree does not mean that they can program worth a damn, nor does an English degree mean a person is worth their weight in sand as a writer. As was said in another post, and I misquote... "A CS degree teaches you the History of programming, so you don't make the same mistakes" (apologies to author, was a good post!) In order for that CS degree to be of help to you, you need to PAY ATTENTION AND LEARN WHAT THEY ARE TEACHING YOU. Figure out what professors are the ones "in the know". Do more than is required in class.
There are a lot of programmers without a CS degree that can get down and dirty with a program, delve into the depths of code and accomplish major feats of programming, and come up successfully from those debugging sessions knowing that they accomplished something worthwhile. I have a lot of respect for these folks, for I too have been there and often need to dive in and hack. But it is these same people who, without the background given in a CS, tend to overcomplicate the design of large systems and end up with an unmanageable mess.
I'm not saying that without a CS degree you can't effectively design a large, complex system. But they have to get that self-discipline and knowledge ouside of a degree program designed to expose those concepts to students.
Generally, if you want to make the leap from being a brilliant hacker/hotdog program writer to a great software architect, you need to get that background imparted through a good CS program.
e to the i pi equals negative one
Let me clarify a few things:
A person who goes through a CS program and pays attention and learns (not just studies to pass the tests, a sore point I have with colleges today) the concepts and materials presented through coursework, upon graduation, is qualified to do almost nothing. All a really good CS program imparts is a good fundamental knowledge of how to program, _in_general_.
You do NOT go to college to learn to program in C, C++, Java, Pascal, Assembly, COBOL, ADA, Javascript, Perl, BASIC, AWK, Lisp, PC Scheme, or any other technical programming skill. Any such skill you possess upon completion of a CS program is a side effect of your education! The point of completing a CS program is to learn how to learn
Think about the name of the degree: Computer Science. The _SCIENCE_ of computing. Generally, programming, and a little broader, Computer Science can be defined as The process of managing complexity.
Throughout the history of computing, the task for programmers has been to evolve tools for handling larger and larger tasks. We have come from flipping switches on room sized hardware to a point where we have languages and tools that abstract high-level GUI application to a few mouse clicks and keystrokes.
Almost every programming language started as someone looking at current tools and saying to themselves, "This is too much work, I can generalize these concepts which take months of coding in this language and aggregate them into almost atomic concepts if I make a new language that is based on this level!" Computer science, the field we *all* work in is constantly advancing, not because we are bored and have nothing better to do, but because we are constantly presented with larger and larger problems to solve.
Many "self-taught" programmers who do not have the benefit of a good CS degree are limited in the scale of complexity that they are able to handle. I'm not saying they are less intelligent, but they tend to lock themselves into a fixed technology layer and solve the problems at that level. They haven't been exposed to the breadth of information that a CS degree should give.
As to those CS grads you mention as being worthless...they would be just as worthless without their degrees. A background in CS can make a good programmer a great programmer, but it can't help someone who just doesn't have the mindset for programming.
A CS degree just helps you _Scale_Up_.
I find that a CS degree, by itself, tells me nothing about the abilities of a person. But, more often than not, its lack points to a possible deficiency in the fundaments.
e to the i pi equals negative one
You are an EE, did you take upper math? In some ways a CS degree could be considered an applied mathematics degree (I happen to have both)
Mathematics teaches rigorous and analytical thinking in ways that are difficult to pick up independently. The final year of a good CS program takes these concepts and applies them further to solving problems through software.
In your *own* example, you mention addressing a problem on an embedded system, and then making a disparaging remark about how CS students didn't know about port addresses or an ISR. Guess what? That is a TECHNICAL skill that is part of programming. On equal measure I could judge you by your ability to design a hierarchical query in SQL to traverse a self-referential table, but I won't, because that too is a necessary technical skill needed to solve a specific programming problem.
It often irks me when people with degrees in EE (and other engineering disciplines) claim to be at the apex of programming skill because they did work like you do. The methods you use for what you do are not easily scaled up to larger problems.
Software development is a discipline where you should start off with a good foundation in the theories of programming and then temper that with experience working under others.
e to the i pi equals negative one
I would argue that certain types of projects demand safety-oriented software engineering, such as computer control for anti-lock brakes, air traffic control, and missile launch mechanisms. I know I would feel better when I fly if I knew that it was absolutely impossible for the air traffic monitoring software to throw a null pointer exception.
If I had a certification today and stopped
programming for 5 years my certif would be worth
nothing because all my experience is forgotten
or outdated.
Bridge technology does not change as fast as
software or computer technology.
There are different arena's one can code in. No one is going to die if their word processor crashes. In such a situation one is free to choose another word processor.
If a service is being contracted for the people from a government and human health issues are at hand then the people have a right to require that the engineer, whether he be a civil engineer or a software engineer, has proven to them that he can complete the task with safety and has the skills to show them the numbers that make it safe.
This is akin to verifying the correctness of code (mathematically proving that it cannot fail), an incredably extensive and expensive process. But sometimes it needs to be done. An exam such as the Professional Engineer exam is an attempt at making sure the people who work on these projects that affect the public know when and how to do this.
Testing code relentlessly is one thing, verifiying it's correctness is another.
They each have their arena.
Moeses
I think the bridge metaphor breaks down pretty quickly...a bridge is a physical thing that can be objectively measured. A bridge goes through several "inspections" by disinterested or hostile others. A bridge is expected to last 50 to 100 years.
:)
Anyone that ever looked at some of the theoretical implications of say proving the "correctness" of a program knows that the objective inspection is basically impossible. The others are obviously outside the realm of progrmaming. So what is the idea behind the certification/license issue?
Are we trying to prevent studip people from writing code? Then we would need to prevent all the various software warehouses from selling a copy of Visual Stupid (you pick) to any and all suits and programmer-wanna-be's. That would be a good thing for several reasons.
If the idea is to give some malcontent reason for a lawsuit, well we already have enough of them to keep the courts busy for the next several millenia.
I like the idea of the guild though...self directed, self fulfilling, able to bring along the journeyman to the level of master with a known process and a mentoring methodology...Yeah I like that idea
It seems to me there are two problems with licensing programs for software engineers, one of which is theoretical and the other practical.
... except whether or not the engineer in question can pass the exam. It says nothing about whether or not the engineer uses safe coding practices, writes programs which are reliable, or is mentally stable (and therefore won't implant dangerous easter eggs). At best, all it is going to prove is that the engineer is familiar with a particular programming idiom and/or API ... which is certainly desirable, but again, is far from sufficient --- especially when you consider that an idiom or an API, for an experienced programmer, is learnable; and it's the ability to learn that is unquantifiable, and mostly untestable.
The practical one first: what does it take to get a license? If it's just passing an examination, then that proves nothing
Then the theoretical problem: one of the things that licensing schemes _since the middle ages_ have been used for is to restrict entry into the labor market. The midieval guilds set up criteria which made it next to impossible for newcomers to get into the market without years of what was essentially slave labor, not for the purpose of protecting the midieval consumer, but for the purpose of protecting the jobs of the guild-members. The modern AMA tends to do the same thing --- schools which license too many new doctors are threatened with having their license to be schools of medicine revoked --- with officially pure motives, of course. How long would it take for a licensing scheme for software engineers, however well motivated to begin with, to degenerate in such a direction?
One of the things that is cool about the software world is that there are next to no artificial barriers: if you have sufficient skill, you can pretty much do what you want. It would not be a good thing to sacrifice that, and build up new barriers to entry into the field, even for an admittably worthwhile goal: the cure would be more of a problem than the disease was.
Or at least that's what this silly little card I carry says I am :)
I could easily see programmers getting certified in the same way as engineers. Just as a quick overview of how this happens -
First you must meet the requirements (4 year degree or 20? years of experience).
Then you take a test.
Then you are a Engineer Intern.
Then you learn from a Professional Engineer for 5+ years.
Then you take the PE exam.
The first test is a general test that covers the most common, but technically difficult, things (or at least this is my rememberence). There were questions you'd expect any (mechanical) engineer to know. Some basic physics, math, etc. There were also a set of ethics questions. There were even a set on project managment and budgeting. You had to study for them, they were very difficult, and personally I needed sever Guinness afterwards.
Now I'm certified to learn from a PE for 5 years to become one. Instead I'm programming. Not every engineer is a PE or Intern. What you need (by the PE rules) is a PE to sign off on any official project. Also you can't bill yourself as an engineer (in public view) unless you have a PE. One other rule is that you can't claim knowledge in areas where you don't have knowledge.
Applying this process to programming, then you would end up with a viable possibility. However remember trivial things aren't nessecarily covered. (i.e. my father built a deck himself, he didn't need a PE to sign off on the design, but he did need a building permit) So putting this together you would end up with the ACM (or appropriate group) putting together a test - difficult covering basic concepts of programming. Passing this makes you a Programmer Intern. You must then work under a Pro. Programmer for 5 years to become one yourself. This would then qualify you to sign off on programs that are considered ummm critical. The definition of critical would need some work. Is a game critical - no. Is a web page critical - probably not. Is the microcde that controls a pace maker critical - YES. Some things start getting hairy - financial systems - maybe they are (banks), maybe not (something I wrote to balance my checkbook). What about OS'? They would have to be certified if someone was going to use this in a critical area.
As for some of the other arguments -
It costs too much - not really in this model, the test (when I took it) was $60. I think $100 for the PE. Not execatly expensive esp if then Pro. Programmers would make bundles (based on PE's making large $$$).
Programming an art - yes and engineering is too. Really it is. But there are still some fundamental concepts in both. The question is what are those fundamental concepts in programming (and I really don't know).
Writing code the same way - silly argument I think. Most cars are signed off by PE's but not too many look the same. Or even have the same design concepts.
Obseletion of Certs - When you get a PE (my understanding) is that the test is more of an intelligence test kinda. It tests how well you know how the real world works, not how the academic one works. This is why the tests focus on basic principles that really haven't changed and how they work in actual projects - you are also expected to stay up to date as part of the PE code. This would be a sticky point in any certification process.
Programmers can't kill people - oh yes we can. A programmer wrote the code for the Space Shuttle's computers. What if that screwed up - thing crashes. Plane's autopilot? Heart monitors? Drug manufacturing lines? Ok games won't kill anyone, neither _should_ operating systems, but programmers can have direct effects on people.
I think it could be a good/nessecary thing if done correctly. The requirements would have to change from those of the PE, but the idea could be made to work I think.
-cpd
The problem is this: a lot of software projects fail. A lot more are way late or don't work.
Writing good software is difficult. We all know that. But there's got to be a way to make better software faster.
My experience, and I'm sure a lot of people will agree, is that the entire process is screwed up. The customer doesn't know what they want, the project manager changes the specs w/o telling the user, ambiguity in requirements, and yes, idiotic programmers. The whole process needs to be changed.
One big advantage of building bridges (for the example) is that it's been done for so long, the building process, from the first glimmer of an idea to the opening, is pretty clear.
THIS is what we need - a clear, well documented process that works and everying buys into, not certification of one role in the entire process.
"It was me against the world, I was sure that I'd win.... but the world fought back, punished me for my sins" - Social D
I don't like the idea at all. First, all certification tests I took (and I took a few) were really stupid and had very little relevance to the actual work being done in this particular field. Basically, you get a thick folder of "preparation materials", you cram for 1 day - 2 weeks, you pass, and then you forget it all and get on with your life.
Second, this is an invitation to get programming highly regulated by everybody under the sun. Government, "self-regulatory organziations", etc., etc. Mucho work for lawyers, mucho hassle for everybody else. Besides, how about a prereq of Master in CompSci in order to be licensed?
Third, most such organizations are basically set u p to raise barriers to entry, thus to make it more difficult to get in, thus to raise the price of services of those already in. Again, lawyers are a classic example. Now to become a lawyer you have to have a J.D. and pass a grueling bar examination (which, again, has little relevance to actual work). The point is to make people who are inside "special" and different from those outside. I doubt very much this would be a good thing for programming.
Kaa
Kaa
Kaa's Law: In any sufficiently large group of people most are idiots.
I really do think that overall the idea of certifying Software Engineers is a good idea. And I think it should be done in a similar manner to the way that Engineers are licensed with the EIT and other such testing. I seem to be the only one that beleives this, so let me justify myself a little bit.
:^) then they can be sued for TCP/IP errors.
If someone goes out and designs software, markets it a market, and then sells it there is no gaurentee that the software will do anything more than sit on the desk in a nice box. If that software is implemented, and then a huge bug comes up the purchaser is SOL. They can bitch, mabye get some press, but they are still screwed out of all the deployment time, training, and purchasing of the product. Now I am not talking about bugs like the 'File' is misspelled on the menu bar, things like the software won't do what it is entended to do. If the software was 'Engineered' there is some responcibility.
What then happens is that the company can be taken to court, and the court decides if the oversite was a resonable one. Usually this starts off with the company justifing why that bug/design feature was there in the first place. Something like "we didn't expect it to work at tempatures over 139F." And if it is a desert rover they would loose, but if it was made to work in Greenland they wouldn't. This should be a similar notion for software. They need to show that they had a reasonable amount of testing in the areas of 'reasonable bugs'. If they neglected to test the TCP/IP stack (Windows
This really comes out very similar to the Lemon Law, discussed previously, but it is handled in a different way.
The other neat thing that happens here is that a specific Software Engineer could loose their license for actions here... So then they could never write software again. Wow, sounds pretty drastic eh? But I think what this does is show people that everything that they do can have perminate consequences. Very perminate ones. I think that in general people need that hanging over their heads.
What will this do to the industry? It will slow down inovation in the industry - that is kinda obvious. I think that as software has become pervasive, and almost required to live today, this needs to happen though. It may take killing a bunch of people to get Washington to look at it, and the industry to accept it, but it will happen. I hope that mabye (just mabye) it could be handle preemptively so that people don't have to die.
How do I think that this should effect free software? I think that it should effect software when it is sold. The idea of Free software should be consittered 'academic', just like people can do 'bridge research' and not worry about being sued. This makes the roles of RedHat, Debian, SuSe et al, even more important. They would have to take the software from the free communities and verify them 'reasonably bug free' by their own standards and then realease them. While this would make the startups that happened there less of a reality, I think it would make the distributions on a whole better.
I welcome your replys, I think I will probally get quite a few...
The first two of these three posts were mangled by the HTML parser. Please delete them (if you have the privs), leaving the third post.
"Whatever happened to fair use?"
-- Duff-Man
We wouldn't want responsible programmers, now would we? Reality wouldn't have it.
I can see it now:
Certification.. here's my degree. I spent more than $50k(US) on it. Now you're asking for more? Screw you.
That group includes doctors, lawyers, engineers, CPAs, etc. They are held to a legal standard of performance that is higher than a 'non-professional' such as a programmer. Are you ready to pay BIG $$$ for Errors & Omissions insurance, or malpractice insurance?
Programming is a craft. It would make more sense to develop an apprentice system. You start as an apprentice, move to journeyman, craftsman, and eventually master. Then your brain rots and you move to management.
When you build a bridge, lives are at stake. That is the reason for the regulation. When you're a programmer, it doesn't make much difference if your end product just happens to crash an end user's machine every 10 minutes. Annoying? Yes. Dangerous? No.
Additionally, when you're done coding, your product is tested for problems. Problems can then be fixed. But once you've built a bridge, that's it. You can't really improve on it.
Programmers can correct each other's work with no trouble whatsoever, but once the bridge is built you're stuck.
Witold
gwu.edu/~chrabasz
witold.org
Requiring a licensed developer to sign off on all work over a certain (high) monetary value would give power to a code of ethics. There is no need for the licensing agency to be at all concerned with who is competent to program, only who has failed to comply with ethical standards such as the Coders Credo. No formal training is required for someone to "act in a manner that is in the best interests of their clients and employer, consistent with the public interest," or to "be fair to and supportive of" his or her colleagues.
It has been suggested that coding in an Open Source environment resembles the current practice of law. In New York, for the most part, the attorneys who lose their licenses to practice do so because they have taken clients' property, not because they do not argue well. I believe that coding practice would benefit from something similar, something beyond a lawsuit-at-a-time that would discourage swindlers.
Professional licensing means death to the GPL. Who wants to spend thousands of dollars to become a professionally licensed or certified programmer in order to write free software?
Pretend there is some witty statement here.
Now I didn't read the article, but being (hopefully) an engineer in traning I feel that all people that wish to be "certified" for anything should take an 8 hour exam (twice) like the FE(aka EIT exam) and must participate in some sort of apprenticeship program like engineering. After going through my first round of that tourture I can tell you it will really show the difference between the people that dabble in coding and the "Profesional Coders"
The main problem with software projects is not bad coders (although they are plentiful too), but bad management.
Managers have very little understanding of both how hard software development really is and the need for maintenance. Managers think in terms of "when will this software be finished". In reality, even a modest project will need probably years of maintenance to bring it to a bug free, reasonably complete state.
That's one area where free software does tend to win out - the author will often maintain it for many many years slowly ironing out the glitches. A lot of proprietry software get's slapped together. When it looks sort of like it works the coder gets shunted onto the next project. (Then he gets fed up and moves onto the next job). Meanwhile the code undergoes severe bit-rot.
I think that there should be a law to force every software that can cause death if buggy to have is source public so every one can see if there is a flaw that can cause this software to kill people.
Even in the case where nobody else than the original producer of the code can change it (i.e. the code not being truly open source) it would be usefull because people can point out the problems and every slashdot reader is aware of the power of peer review in bug hunt (the harder isn't to fix a bug, it is to track it down).
"The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
People who create software where human life is at risk, such as aircraft and health monitors, must be certified. I do *not* want a 2-year VisualBasic programmer working on the cruise-control system for my car as his first C project. And if programmers are becoming harder to hire, especially experienced ones, companies may resort to this.
In general, I don't think certification is needed for work that is not as critical. Even a certified individual can make crappy software, so the only way to stop them is making people who charge money for software ACCOUNTABALE for quality of said software.
If a company builds me a crappy car and it's free, no problem. Make me pay $35,000 for a crappy car and I'll get very angry and wonder what they really did with that $35,000.
But it won't happen, not as long as users are willing to put up with bugs, misfeatures and blatant security holes in commercial products.
Here in Canada engineers who pass through an accredited engineering program receive an Iron Ring just before they graduate. This ring is given in a somewhat secret ceremony and represents the responsibility of being an engineer. Unlike many other professions, engineers often build things which, if they fail, can kill many people. This is the origin of the Iron Ring and the ceremony surrounding it -- and to a lesser extent the requirement to be certified as an engineer.
In the very early 1900s engineers had been building a bridge near Quebec city. While workers were finishing up the bridge it buckled and collapsed, killing around 90 people. 10 years later the second bridge was almost finished, when it too collapsed and killed 11 people.
After an investigation it was determined that both of these disasters were due to faulty engineering. The engineers had not properly calculated the loads and stresses the structure would have to bear and because of this the structures had failed.
The iron from these bridges had been stored in a huge warehouse, and until it was all used up, iron rings were made from its metal. For the past 75 years or so these rings have been given out to graduating engineers to remind them that in practicing their profession they are taking responsibility for people's lives.
I don't know how it works in other places, but here in Canada you have to be a professional engineer to sign off on blueprints to a bridge, or other technical engineering documents. This is just like how you have to be an MD to offer your services as a surgeon, etc.
Whether this sort of certification makes sense for people writing code really depends on what they're doing. Someone who's making a javascript popup on a web page isn't taking people's lives into their hands. Certification for them makes no sense. But what about someone writing a control system for a nuclear power plant, or for an air-traffic control system?
I think certification has its place, and while most programmers can safely say it's unnecessary for their job, other times I think there should be accountability. Who knows, maybe this Y2K stuff is as serious as some people say, and it will be the Quebec Bridge for programmers.
Customers who really, really want code that never crashes usually get pretty close to perfect quality. For example, NASA and a few other organizations require this level of robustness. Also, a lot of embedded systems achieve a high degree of stability.
But most people who buy software -- end users in the case of commercial software or project managers in the case of custom applications -- will settle for code that runs correctly most of the time. Once that level of quality is satisfied, it doesn't matter if there are a few bugs remaining; they can live with those. They'd rather have software that is fast, first to market, standard in their industry, or buzzword-compliant ("internet enabled" seems to be in vogue these days).
I think it's pretty easy for errors to slip through into final versions of software because the priority is on getting the project complete rather than tracking down the last few bugs.
>some folks here compared programmers to some other branches (building trade, ...)
As long as we're making the analogy of bridge builders to programmers, let's take it all the way!
Just as computer systems written in the 1980s and before may fail in the year 2000, so will bridges that were built 20 years ago. Bridges need repaved and repaired every few years to stay in working condition. So does software.
I guess the difference is that Y2K failures will happen suddenly whereas pavement degrades more gracefully. But the point is that bridges built by civil engineers fall apart and need to be fixed, even though the designers are certified and licensed.
Somehow, software is expected to be correct the first time and forever whereas roads, buildings, etc. are expected to require near-constant maintenance to remain in service.
Are we to expect all Open Source contributors to be accredited? Surely not? So what happens when companies feel forced to protect their rears by decreeing that What happens to open source? What happens to "amateurs"? (and we know unpaid code is often far better). The key is that while many OSS coders are equal to their commercial counterparts they may lack this piece of paper.
Software is like sex - you don't need a licence for it (with apologies to Linus)
"So why didn't all those computer professionals do the ethical thing and prevent or blow the whistle on the year 2000 computer problem... "
They DID! But, at the time, it was considered an acceptable trade off. Even now, with as cheap as memory/disk space is, consider this. On mainframe computer systems, with programs written in COBOL and charged with the task of sorting though, say 40-50 million records a day, 2 bytes can add up quite quickly. 2 * 40,000,000 = 80,000,000 EXTRA bytes of data. Harddrives and tape drives for, say Tandem mainframes, aren't near as cheap as they are for PC's. It's a whole different ballgame. And because of this, people carried these habits from the mainframe world to the PC world.
Would certification of programmers early on helped avoid the current Y2K "design flaws"? Nope. The programmers did the most sensible thing (at the time, of course). No one predicted that these systems would still be in use today.
Such a system seems reasonable in the field of software engineering. No one is precluded from working just because they don't have a degree. But at the same time, those who are held responsible, are the ones who have completed graduate coursework in the field. Without trying to start a debate over the merits of graduate school (or lack thereof), I will assert that there is something to be said for formal education. Likewise, the internship period gives people a chance to learn from experiences that would not be possible in academia.
There is an interesting question, however, of how to bootstrap such a system. Automatically license anyone with an MS in Computer Science and 5 years of experience?
No system is going to please everyone, but it seems appropriate to have some form of accreditation. And rather than reinvent the wheel, we should use the practices of other engineering disciples as our examples.
(Note: there is an inherit assumption in all this that writing code is, in fact, an engineering science and not an art form.)
With the examples of engineers, lawyers and doctors, isn't the presumption that an un-licensed practicioner could some how cause you greivous harm (bad engineer = bridge collapses killing hundreds, bad lawyer = innocent defendant goes to jail, is executed, bad doctor = dead patient)?
;-)
And then the control of a license is then intended to promote confidence of the public that bridges won't fall, laywers won't bungle your case, your doctor won't amputate your head?
Have we now elevated practice of software development to this level where we need assurance that the public will be safeguarded from incompetent code that will cause some serious damage? (like your spreadsheet program crashes every time you open another specific app and you must reboot wour win-tel PC, and after this happens the nth time, you jump out a 49th floor window?
As a [former] civil engineer, I am intimately acquanted with the reason that engineers are registered. This is because when a civil engineering project fails, people can get killed. This trickles down into alot of legal responsibility, but that is the heart of the matter. There should be a federal certification/registration process that identifies those capable of handling critical software applications. This would apply to safety and medical software as well as automotive, monitoring, and many others. Keep in mind that the american professional registration project does not require everyone to get registered, just the person that stamps the plans. This person can be (and usually is) employed mainly to review plans. Software kind of works this way now, with Q and A, but I would feel safer if a process was put into place for software that is responsible for my life.
This is not the greatest sig in the world, this is just a tribute.
At my school, the EEs where always whining about the use of the term "software engineer(ing)" (and it was mainly EEs, I guess because they took so many computer classes). And they also tend to have this attitude that programming is easy and anybody can do it with little education. I even heard this from managers at my old co-op job.
And guess what, at my old co-op job, the code written by engineers was abosolute crap! And the EEs that I taught were constantly whining about the workload of CS classes.
Not to pick on EEs particularly (because hey, you can't spell geek without EE!
OTOH, programming is constrained by computability and computational complexity with no fixed primitives (e.g., different processors have different instruction sets, different OSes have different APIs) and where the main analysis technique for large programs is trial and error (I would say testing is at best a disciplined way of performing trial and error). Also, there is no agreement on instruction sets, OSes, or languages (yes there is much similarity, but even Linux needs an LSB). E.g., in US high schools, C++ is currently required for college advanced placement tests. Can you imagine the howling if C++ were required for certification tests?
I find the idea of requiring certification a really sad idea. I am happy to be in programming, because i enjoy doing so, and i have been doing it as a hobby since i was 9 years old (i started on a franklin ace 1000).
I came from a poor working class family, and i couldn't afford to go to college, and without that education, there are many fields that are instantly closed off to me... I would have like to have gone, but i just couldn't. I have been working as a programmer for a local company for the last 3 years. I've done embedded microcontrolled code, i've done windows UI code, i've done database coding. I have always recieved the needed training at work, (usually in the form of a textbook and some time to try stuff out).
I cringe at the idea of regulating this field, because it is one of the few remaining fields where a genuine interrest in the work (and possibly an apprenticeship) can get a job that you can support yourself and a family on. It's one of the few fields that you aren't locked out of instantly if your parents can't afford to send you to college. It's one of the few fields left where even though many people look for those with degrees, if you have enough work experience you can still have a chance.
Loosing this freedom in a blind rush to regulate would be a very sad thing.
---
Play Six Pack Man. I
Where life and limb are at stake, the software must be comprehensively tested. In these cases, no programmer should be trusted to have written bug free code. A physician should be liscensed because his actions (or lack thereof) can lead to irreversible loss. On the other hand, software won't lead to such losses until it is unleashed on the public. There are many opertunities to test it before releasing it in a capacity where lives are at stake.
Crap in, crap out, they say. Will a "liscensed" programmer be less likely to create bugs? Perhaps, if the lisensing requirements relate to techniques in minimizing bugs. But it's probably more important to look at a programmer's past projects rather than his certificates when hiring for such a job.
Perhaps the licensing should be used in the context of software testing, becauase when life and limb are at stake, the testing is more important than the programming (because you can't blindly trust anybody's code in these situations). You write your traffic light controller software to meet a spec. You send the code and the spec to the licensed testers (in house, or a specialized testing group) who then run it through a bunch of tests and then certify it as "safe" or "not safe" with an appropriate insurance policy behind it all.
This would be a huge roadblock for Open Source stuff.. You'd have to prove that everything submitted to an OSS project came from a certified programmer to be taken seriously by corporations.
Plus, given the way Microsoft stacks up against OSS so far, I'd say that the certification idea would do absolutely nothing to get the desired results.
I think you've made a good point here. The average programmer I know is FAR more concerned with quality than the average manager or company executive. It is programmers who write "The Right Thing" with capitalization.
;) -- are nothing more than blatant buzzword-dropping.
As I read the code of conduct, my first thought was, "This is ok with me, but some of my former bosses would have a huge problem with it." The unfortunate reality of this industry is, "We must ship by _____ and we'll fix the bugs in the next update."
It might be a good thing if a programmer could go to a manager and say, "No. I won't compromise. Doing so would violate my Code of Conduct."
Having said all that, I think the article could best be summed up as an attempt by some people to create a new industry for licensing software developers. The frequent references to Year 2000 problems -- "Y2K" to the insiders
Save the whales. Feed the hungry. Free the mallocs.
Wow, a Franklin Ace 1000! That was my SECOND computer -- it was an upgrade from a short-lived original TI 99/4 (chiclet keyboard -- ack).
:)
I LOVED that thing. It was the equivalent of a souped-up Apple II+ with a much better keyboard (IBM Selectric-style with numeric keypad). I remember doing Pascal and 6502 asm on that bad boy....
Oh, I agree with your post completely (back on topic). We have a unique profession where someone who can't afford a college education can still bust their tail, get good, raise a family comfortably, and contribute something really useful. I would hate to see that go away because of Y2K hype and opportunists who see a chance to make a quick buck with "licensing" courses.
Congratulations on your success as a programmer, and thanks for the nostalga hit.
Save the whales. Feed the hungry. Free the mallocs.
For engineers to get a 'license' to build a bridge, they need to go to university.
And if you think they will start building bridges right after that, then stop dreaming.
The same for Software engineers (university term for coders, IMHO), if you wanna build that Airport Information system, you have to go to university and learn your shit first.
What scares me, is the _extremely_ poor quality of Microsoft Education that is out there for free and people can sit in, marvel at MS-proprietary Visual Basic Construction Blocks and actually getting away with this as education....
The idea has been around for a long time but implementing it is the hard part. Well I should say getting widespread acceptance is the hard part.
Computer Science (and, by extension, Software Engineering) is finally beginning to 'gel' as an engineering discipline. That is, we finally have a large body of practices, tools and examples (both good and bad) that can help to guide future projects. This is the very same process that other engineering disciplines (such as CE, EE, ME) went through on their way from an art to a science. Unfortunately, the field of SE has only been around a very small fraction of the time that the other disciplines have. Thus, the growing pains we are experiencing as our field matures is much greater than that expereinced by, say, ME (which has had hundereds of years to sort itself out).
Certification and/or licensing is just the next step in the life of our field. It simply validates and regulates those things that we already know how to do. It does not prevent innovation in new areas of SE and/or programming. Just as there is always room for 'tinkering' and experimentation in electronics, there will always be room for experimentation in programming.
Whether we like it or not, our efforts can have an impact on thousands (if not millions) of lives every day. It is our responsibility to ensure that we have done our best in producing software and systems. In essence: it's time to grow up.
Licenses and review boards, while sometimes providing necessary checks and balances, most often serve simply as 1) good old boy networks, and 2) barriers to entry. I don't believe we need either of those things in the world of software creation.
We already have certification in the "IT" industry. That's one barrier to entry, and I for one feel it has done us absolutely no good and may have even done some harm. Would things be better if coders had to pass some sort of exam to show that they knew what recusion is, how to make a flowchart, when to use global vs. local variables, and so forth before they could legally practice their craft?
How many free software projects would suffer if only licensed coders could produce publicly available software?
How many great home-brewed programs would never come to be if the people who wrote them had to first go pass the coding bar exam?
We don't need licensing in our industry. It will only serve to focus more power into the hands of large corporations, and shut down the two-guys-in-a-garage type of operations that have been pushing the frontiers for the last twenty-five years.
-Joe
BAR Association - Classical Monopoly
Engineers - Ditto
Trade Unions - Nice idea.... Ditto
Trade Associations are nice idea in a trustworthy society, but considering the number of bald-faced liars that exist per square mile in "civilized" countries, I'd say it's a great way to start manipulating other people.
No 1 person or group of people has the right to tell me the value of my work. My valuable creative skills are the judge of my work. My work tells you the level of my skill.
If anything the fundamental, basic identifiers of good programming and design should be taught to people so they at least know how to look for signs that the work was done well.
The first, point, similar to that brought up by a previous poster, is that the ladder of programming difficulty/competency has many rungs, and those on lower rungs don't always realize how many rungs are still above them. It's possible to make very rapid progress learning to program, and the most visible results tend to occur at the earliest stages. So someone just learning sees that in a very short time they've learned to produce something that _looks_ 90% similar to what the pros do, and they think they've learned 90% of what there is to know about programming. They think that a license can't be worth much if they fulfilled 90% of the requirements in a few weeks, and they also have trouble accepting that there are still meaningful distinctions to be made between programmers with more experience than themselves.
;-) Basically I think this view is most commonly held by those who think they're super-studly programmers because they can hack a little JavaScript or whatever but don't do very well when real programming knowledge is required because they don't even understand what the important problems/issues in real programming are. The problem can't be with them, of course, because they're elite, so it must be that the evaluation methods are flawed. I think the real pros are more likely to accept the possibility that software engineers' levels of competence can be evaluated pretty effectively, and concentrate on different arguments against licensing or certification.
The second point is that many posters here seem to be arguing from an unstated belief that it's not possible to evaluate programmer skill in any meaningful way whatsoever. Yes, I know some are presenting arguments in different directions, but the most common seems to be "tests are meaningless". I could be polite in my response to that, but this is slashdot so why bother?
Personally, I don't much like the idea of government regulation and such, and a single written test or series of tests doesn't seem useful to evaluate someone's skills across the whole spectrum of what software engineering encompasses. However, I kind of like the idea of a "guild hall" system in which a local group of "master craftsmen" who are actually familiar with an individual's work (not just coding, but also specification, testing, scheduling, etc.) can confer journeyman status or higher, and in which the _customer_ can decide what their requirements are for involvement or engineers at some level requiring such proof of competence.
Slashdot - News for Herds. Stuff that Splatters.
Certification would be good -- we could reduce the number of programmers, and get paid *even more* than we currently are. We have to get some way to keep companies from hiring those unreliable uncertified programmers, though. Maybe we could get the government to prohibit the practice of programming without a license?
Hey, it works for doctors and lawyers. Why should programmers miss the gravy train???
-russ
Don't piss off The Angry Economist
There is no age regulation to get certified, the thing is who is to set the test? Chances are the test will not be broad enough. Take a look at Unix certification! WTF does that mean? There is nothing as being Unix certified. You can be Solaris certified, after you take $2,500 sun classes, or HPUX certified after you sell an arm and a leg! Hence if there is going to be certification for programming, does that mean C certified , C++ certified? LISP certified? Assembly Certified *gasp* ?? Chances are these tests will not test your logic as a coder, but instead test you and ask you stupid questions, what is object oriented programming, define this and that. Programming is a very complicated stuff, the test will almost have to be in the form of an IQ test. Asking me questions about database programming, when I am unix kernel hacker is irrelvant. Asking me questions about OS internals when all I am is 3d graphics programmer is also not that important.
Certification? YES!
Now? Nope.
Tomorrow? Perhaps.
Discriminating? Yup
Useful? Yeah right, as good as a CS Degree.
The reason certification was brought up was due to the fact, that people should be certified when doing works related to public saftey, the fact is that programmers are lazy by nature, and usually will take the shortest route possibly to make time to Quake and IRC, thus certification will not make the programmers less lazy and more careful, Hrm, unless of course the certification will be taken out if the programmer is found to write dangerous code. HRM!!?? WTF is to say what is a dangerous code? just cuz I say
2 + 2 = 5,
if 2 + 2 = 5 then 2 = 4
doesn't mean it is dangerous, perhaps to your weak undeveloped mind.
In anycase, I give no FUCK, Why? Look at degrees, computer science degrees, what are they worth? Certification or Not, Degree or Not, I care not. I love to code and I will code, if you will not hire me, I will code and put your company out of business.
Bleh, I could write and write and write, but at the moment my brain is in such a unfscked state, that tis better to stop.
I love to Code!
fuck your degree and certification.
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
Many modern economic theorists, particularly those of libertarian persuasion, now believe that licensing is primarily a market response to keep competition down.
.... "
% 5F97%5Fb.html
....
See, for example, "Government Licensing: The Enemy of Employment" by Steven Yates (http://www.self-gov.org/freeman/9607yate.html)
"Not long ago I found myself without a job. The experience offered me some insight into the causes of unemployment in American society. I knew that occupational licensure was both a stumbling block to would-be entrepreneurs and a spur to joblessness because it prices entry into markets out of many people's reach and creates disincentives to hire. I now have firsthand experience of how government bureaucracy systematically blocks individuals' efforts to offer services to others in order to improve their own well-being.
Some states are finding it difficult to implement licensing regs. See, for example, http://www.ij.org/publications/liberty/1997/l%5F6
>> In May, the Institute won the opening round in its challenge to California's cosmetology licensing regime. In Cornwell v. California Board of Barbering and Cosmetology, U.S. district court judge Rudi Brewster in San Diego denied the state's motion to dismiss, letting stand our claims that the licensing regulations violate the due process, equal protection, and the privileges or immunities guarantees of the federal and state constitutions. > Sue A. Blevins is a writer and health policy consultant based in Boston.
>> Executive Summary
>> Nonphysician providers of medical care are in high demand in the United States. But licensure laws and federal regulations limit their scope of practice and restrict access to their services. The result has almost inevitably been less choice and higher prices for consumers.
This is what we have to look forward to if we let the camel's nose into this tent. IMHO YMMV
"A gun is a tool, Marian. No better, no worse than any other tool. An axe, a shovel, or anything." Shane (1953)
Check out the programs at your local junior college. There are certification programs that exisit within the realm of programing. Here, I, an accountant, am half way there for a network administration certification and a third of the way there for a programing certification. Yet, I am still not the person you want to hack code.
Considering that, I don't put much stock in "certified" programers. Oh yeah, and don't for get about the MSCS' out there either.
Ergo, I think the quote is "RUN AWAY! RUN AWAY!"
"Alt-F4 that's for quitting" quoth Dan_Wood
In the short term, shallow view of things, certification WILL make a difference. In the long term, a certification program will only be a dreadnought of a civil program that will only impeede the progress of Computer Science, or Science and Engineering in general.
The way I see it, (And I'm just a lowly geek on the food chain) it's a pandora's box of External Govornment. And as I've illustrated in other responses to other articles, External Government tends to take away the liberties of the Individual, in order to control the individual's lack of self-government.
In otherwords. We DEFINATLY need a certification program, IF (and only IF) there is a lack of integrity in programmers, coders, etc.
Personnally, I would say no. This Y2K issue is a poor example of a lack of integrity in the Computer Science community, since it was "created" well before the PC revolution.
The article does make good points about the internal government of the individual coders, corporations, and users in it's creedo. But the enforcement of that creedo is something that does not belong in an External Sphere. It belongs in the economics of a competative environment. Good code yields good results. Bad code yields nothing, except a waste of time.
Thank you,
*Carlos gets off his soapbox, again.*
*Carlos: Exit Stage Right*
"Geeks, Where would you be without them?"
*Carlos: Exit Stage Right*
"Geeks, Where would you be without them?"
"Got Linux?"
Programming,like reading, is a SKILL; a tool to be used to get the job done. There is no reading certification to ensure that you can read/write documents properly. Programming certification is senseless. Attitude, Willingness, Learning Curve, Experience...those are some of the parameters to screen and balance in programmers.
..if ( *insert deity here* Forbid ) you should die or be maimed in such a terrible way that you could no longer keep working...could someone easily take over your work ?
I have a degree in software engineering, that doesn't automatically make me a nifty programmer, most of you could run circles around me coding...But would you get the job done?...properly?...within budgeted time and costs?
Those are the questions suits ask programmers, and that is probably WHY someone wants a certification...It's a matter of reassurance.
So...If you can convince anyone that you'll get the job done right, there's no need for certification. And if you code just for the kicks of it, stop whining, certification probably won't matter to you anyway.
I am not young enough to know everything. --Sir J.M. Barrie
Some PHBs would love certification so they would have someone to blame if things go wrong. They make a stupid decision, it comes back to haunt them, who do they use as a scapegoat? Joe hacker, with no formal education, or Mr Certification, who BY LAW is supposed to know code?
It's the same reason the PHB types choose M$, they (stupidly) think they can blame (and sue) the NAME company.
BTW, if degrees count for something, I get mine friday (BS Computer Enginnering Technolgy) YAY!
I've seen this argument several times, and it always falls flat on a simple fact. What the authors have in mind is something akin to lawyers, doctors, CPAs, etc., but the industry won't support it. The problem is that holding people to a high standard also requires that they have the final word on their own actions. There's some room for reasonable compromise, of course, but everyone with any real industry experience knows that management is notorious for ordering programmers to ignore what the latter consider critical issues.
:-)
That said, I'm in the ACM and I do follow a code of ethics. The results can only be described as "be careful what you wish for" -- part of my code is that I'll only accept assignments which I feel can be reliably executed by the client... and I've been forced to decertify the entire Microsoft line of operating systems and applications. In some cases I've left existing jobs rather than compromise reliability by porting applications from Unix to NT. No doubt the NYT will now do a followup article on "Prima Donna" programmers.
For every complex problem there is an answer that is clear, simple, and wrong. -- H L Mencken
Certification is simply a way to avoid responsibility for yourself.
A certificate implies that someone has evaluated your skills, and you're adequate for a job. So some moron can hire you without understanding what you can do and what you can't.
But are the certifiers responsible when you can't do the job? No.
Is the person who hired you responsible? No, you are certified so he's OK.
Is anyone responsible? Not really.
So you've spent a lot of time and money becomming certified so some corporate cowards can have some job security. Not a good deal.
Any programmer who wants mandatory certification is just trying to exclude other people so he'll have less competition. That's the whole point of occupational licensing and certification in EVERY profession.
My advice to a smart young programmer is to skip all the formal BS of college and certification and actually BUILD something that's impressive and cutting edge. Put it on your resume. Demo it. You'll get hired by a company. Maybe it won't be a corporate CYA-oriented environment, but maybe that's OK.
And if that doesn't work, get certified by some software company and go get hired anyway.
Stop talking to HR people. They don't know anything. Talk to engineers. They know who is needed and who isn't.
I went looking for a job in Novemberr. Within a few weeks, I had 3 good offers. I have no degree and no certifications. I dropped out of college after 2 years. I never lied in the interviews or on my resume. The offers ranged from $55000-$75000 with stock options.
You may be right about the doing people a disservice, but that's not my experience.
Programming and Engineering are actually quite
similar. As an engineer who has worked with
programmers and worked in MIS, I can say that
the level of creativity required is very similar.
Engineer has its share of drudge work where you
spend most of your time essentially following
building codes and whatever but many engineers,
especially in design and R&D are solving problems
that have never been solved before. This
requires creativity as often there is not one
simple, technical solution. Engineers have to
come up with elegant, efficient, safe, cheap
solutions, something which is not easy and which
does not lend itself to simple techniques. A
good engineering solution doesn't just do the
job, it does it efficiently and elegantly.
Very often, the better design looks good, too.
This is very similar to a programmer tackling
a new program.
Whether licensing is a good or bad thing, it
isn't really any different for mechanical, civil,
electrical, or software engineers. The point
of licensing in Texas (where I work) is to
insure that an engineer is a good knowledge of
the basics and has demonstrated through work
that he can do the job. It tells you that this
engineer has a relevant education (or lots of
experience) and has worked as an engineer for
a certain length of time. Again, the costs and
benefits of licensing apply across the board.
Programming is not fundamentally different,
even though often the culture is different.
As someone else said, give it time... most
engineering disciplines have been around for
hundreds of years while programming is still
very new by comparison.
Bolie IV
Equating "coders" and construction engineers is not the right comparison. The programmer is more akin to the person pouring the concrete per a good blueprint. When I have seen software projects fail, it was traceable to ill-defined requirements, poor system engineering, or inadequate software architecture. What is needed is a better method of defining a blueprint for software.
Most schools do not teach the software lifecycle. We do not need to license people in C, C++, Java, etc. We need to train/certify people in understanding requirements and designing software that meet these requirements (instead of meeting the latest trend or technology). We also need to better define the equivalent of a blueprint for software. We should settle on a standard (e.g. UML although not necessary so o-o geared) and then train/certify people on that standard. This will not be subject to the frequent technology turnover seen for implementation. Part of training must include how to form a test plan based on the requirements. Then the output of the programmers can be "certified" against the requirements, this being the proper test for the programmer's work.
The main failure of MS Windows is to concentrate on "neat" GUI features (a "trend") instead of basic requirements like availability and reliability. There is no word-processing requirement for a help window to grow from/fade to a corner of the window.
The success of Linux starts from the focus on basic requirements. Linus starting writing what he needed, not something he thought someone might consider "neat". The last major requirement for Linux is operability, esp. ease of use for the less technical. The challenge in meeting this is that it is as not much of a requirement for the people implementing it.
That's great. And how is that smart young programmer supposed to actually prove that he knows his stuff? You are doing programmers a huge disservice by telling them that since a BS or MS is the only form of certification programmers have today, and it's one that corporate HR people definitely look for.
I've given up trying to convince HR or even programming managers that I've mastered over twenty computer languages, a comprable number of operating systems and that I generate faster, better, more maintainable code than 95% of the people in the business. Why can't I convince them? Because everyone claims that kind of thing and I have no way to prove that in my case it's true. Moreover, even once you're hired into any kind of team development effort it's nearly impossible for management to tell which programmers are really good and which are being carried by the others.
How can they measure it? Lines of Code? I'm infamous for attacking other peoples code and ripping two-thirds out of it - while still getting the same results.
A common system of certification would allow me to lay it all out in black and white and would allow management to accurately estimate skill-levels and capabilities amoung their staff.
--
Clear, Dark Skies
There are several such "Guilds" - the ACM, the IEEE, to name two.
The problem is that programming is so dominated by "revolutions" and so driven by young people who (a) don't know they exist and, anywate are (b) too busy burning out to see that the guilds could offer them.
--
Clear, Dark Skies
Sounds like you've collected a lot of shit in your life frpm people who assume that your lack of a degree means you lack the skills, too.
Do you see why that is? Say a hiring manager is looking at you and someone else who has a piece of paper that says "I know my shit". So, you've got an impressive resume. So what? So did Jeff Papows, till people discovered how much of it was fake. That hiring manager has no way to tell you really do know what you're doing. The degree might be worthless, but it gives him a security blanket he can cling to while he makes that hiring decision.
--
Clear, Dark Skies
I'm guessing that you don't have any children, do you?
--
Clear, Dark Skies
Hippocrates' version certainly did. The one given by modern universities has apparently been watered down a lot.
--
Clear, Dark Skies
licensing is not generally a good idea...i remember reading capitalism and freedom by good ole Milton Friedman(won nobel prize for economics...libertarian thinker etc...) and he agrees. What happens when you start licensing is a move to central control by the government. You can eventually end up with something like the medical industry where the doctors control everything from how many people graduate to where graduates work. They can control wages this way etc... Aren't free marketers? don't we want to let the free market let schools make a good name or bad names for their graduates...its not like software companies can't test applicants to see if they are qualified. Above all im very wary from letting the government get involved in anything...cause its so hard to get them out...and the gov usually ends up expanding their power.
I always get a slightly puerile giggle out of discussions on 'should so and so be certified'
.. in my opinion the best programmers often are certifiable if not certified already
Just what we need!
can we hav a cert program for garbage truck workers? "Hi I'm a certified post-consumer material hoister!" what's next? a cert program for shoveling dung? Oops I forgot, we already have a Microsoft Cert program...
Save the world! Shoot a MCSE today!
In my opinion, there are a lot of ways in which big businesses and our government is trying to exert control over what's going on in the realm of electronic communication. The reason they are doing this is that they cannot survive if they don't. They realize, on some level, that if there is an easily accessible forum for free communication, a lot of things in society won't work, at least not in the same way. They want to control the production of software. But they want to control the production of a lot of things. They need to protect the entire media. They need to maintain their hold on the methods of distributing information, so we'll keep on buying not only software, but cd's, movies, cars, houses, and everything else. If they don't have control over the media, of which digital media will soon enough be the most important form, they won't be able to tell us what to buy. What good are software companies when people are willing to write free code? But more than that, what good is the recording industry if we can all produce cd's on our computers(and there are plenty of musicians who are just as good as the ones they are forcing on us.) What if small groups of people can produce high-quality full-motion video, and publish it to the world via their websites? And they don't put ads in every ten minutes? We all know that this is the 'information age,' right? What this means is that what's most valuable is information. Look, ads are ways of turning media into money. That means that our system NEEDS media. BAD. And if the internet isn't exactly 'owned,' then things are going to change a lot. A lot of people don't want that. A lot of people do. I do want change. I don't know if you do. But there was a culture that believed that land could not be owned. I think that there is a culture which believes that the intellectual space which we have pieced together shouldn't be owned. This is why I switched away from a MS operating system. I don't want Bill Gates to define what MY intellectual space should be like. I like choices, and not between win95 and 98, either. I want to be able to run my archaic 386 if I want, and not be forced to upgrade to the newest thing just to run my OS. The abacus is still around. Ok, this has really turned into a rant, but the point is that licensing is a check on freedom of information, and I dislike that.
A legal quality guarantee document would be so so important imo: Engineers and architects may build the solid structures that a lot of our lives are based on, but programmers, and everybody else involved in the life cycle of some IT related system should be able to give guarantees, or at least be held responsible if they do a bad job.
We're building the "virtual" structures of the world, and I know that up to say 10 years ago they weren't really that important, every day their importance grows. And with that our responsibility to make them work well also grows.
Maybe the whole Y2K deal could have been dealt with better had the original programmers been involved legally where possible, or rather, it could have been avoided altogether if there had been already a legal framework to go by to do with making calls direct to the bios (surely the job of the OS).
So I'm quite happy that slowly the world of IT is getting some regulations and things in. But it's up to everybody to make sure the regulations are put together well and justly.
Alejandro
I STILL fail to see where one or two real world projects would not give you the same "breadth of information" that you could get from classes.
Yeah its rougher the first time for us self-taught programmers (I laugh now that i think back on my first Novell install). But I think we come up to speed faster because we obviously have "learned how to learn" by sweat and coffee, not spoon-fed to us by someone who "knows better". Real world experience is a harsh teacher, but for some of us, that's the way we learn.
I for one am a self-taught programmer who went back to college for a CS degree. I found it extremely tedious and unrewarding. I used to argue with my "C" teacher about the stupidity of having to put a "break;" statement after each "switch" just to make things interesting.
Anyhow, COBOL class taught me how to code good, tight reports, and i finally read "The Illiad". Otherwise it was a huge waste of time and money. Give me a manual and a week to tinker, and i'll do the semester's coursework from home.
I guess I can sum it up best by saying that all a degree proves is that you can PASS TESTS. No more, no less. It proves nothing about mastery of the material, creative problem solving, or that etherial "nose for understanding systems" that make for a truly productive programmer.
A rebuttal from the one of the unwashed and sheepskin-less code monkeys..
Canter
I think the problem with all the responses here is that most of you are equating designing/developing with coding. There's a difference, you know.
Who would I rather have fixing my brakes? The guy with 10 years experience fixing cars and no tech school degree, not the brand new mechanical engineer.
Who would I rather have design my brakes? The engineer, hands down. Just because someone can build or fix something, doesn't meant they necessarily have the first clue of how it works or how to design it.
I think what the certification would ensure is that the people in charge of design, not coding would be held responsible for it and the coding, much the way that engineers don't draw blueprints or things like that, but when their stamp goes on the plans, they're responsible for them.
If they do, what of Linux? Linus wouldn't have been 'qualified' when he wrote linux, at least according to the article's definition of qualified. Would Linux be moved out for many applications simply because most of the programmers who worked on it were not 'qualified'?
Bill Gates would be qualified, but not Linus (now he probably would, but not when the bulk of Linux was written). Which would you rather have writing your software if your life depended on it?
There is a civil war coming in the United States. Remember which side has most of the guns
Great, now it'll be illegal to write code without a license? I can't change a room in my house without government approval as it is!
There are many thing that this article fails to address. Most software problems / defects are caused by oppresive schedules and poor project management. Are programmers expected to blow this whistle on this? If they do, they'll likely be fired. In that case project managers should be certified as well. Maybe all managers should be certified to prevent impossible development schedules from being cast onto their developers. But these managers are responding to market forces. Maybe all customers should be certified. That would prevent that. But if their customers are responding to their needs. They need to automate their machines. Well maybe there should be another level of certiciation on the engineers that designed these machines. But these engineers are just trying to stay ahead of the market. Awww screw it. Why don't we require everyone to get a certification to simply breate.
Also, engineers routinely work on projects that people trust their lives to. Software developers rarely do that.
___ This sig is in boldface to emphasize its importance!
OK, that's not literally what you said. Close enough.
There's a bit of a problem with that. Namely, people aren't going to care HOW good you are
I don't know if licensing would fix the problem or not
"Somebody exploded a letter-bomb today
That's the real question. It's been my experience that programmers want to put out quality work, but managers and marketing, while giving lip service to quality, want something they can push out the door. And they it NOW. Then, when the inevitable customer complaits follow, they blame it on the technical people. The secret of Linux quality comes from saying "to hell with marketing, it's the product that counts".
What we need is an IT union.
How about the Teamsters.
Certification is garbage. Go to college.
This will become another money making machine just like MS certifications. $3000 for a peice of paper. Who wants that? There should be standarts for coding like layout. It's impossible to impose standarts on algorythms that are used to solve a problem. Some people design good algorythms. some design poor. It's up to employer's IT manader and Senior Programmers to decide where they want to hire particular programmer.
Here's why the bridge argument is flawed. Yes,
engineers are required to be certified to build
bridges. Are engineers required to be certified
to build cars? No.
The same type of logic applies to software
engineering. Software engineers who are
coding for life/death situations must comply
to certain standards (FDA for instance). Is
certification needed for building a word
processor? No. Of course not.
There are attempts to create a certification
at a group level (ISO 9001, CMM for instance).
These are what most places are trying to get
to. Certification at an individual level
is too difficult to build a framework for
currently. (SEI's PSP is an attempt at it,
I understand) Of course, there are large
differences between having metrics and having
skills, but these are at least steps in the
right direction.