|
|
We do actually have such a thing in the UK.
It's called the Institution of Analysts & Programmers and has been around for about 45 years or so.
You can visit them here IAP About Page
There are membership level minimum requirements and a code of conduct for members.
There is also a guaranteed indemnity for employers/clients if they use the services of such a member up to £2M.
Membership is not limited to UK resident's either it's an internationally recognised body and anyone, anywhere in the world can apply to become a member.
Just thought I would bring this to everyone's attention, as I agree we need standards, responsibilities and accountability for bad programmers and software engineers who can cause mayhem in the world by not being 'professional' ones.
|
|
|
|
|
I'm not a professional programmer, but I worked for personal projects starting with assembly in the 90s, then C, more recently Python and Web technologies. This "occupation" helped me in other professional projects (not related to software, I'm a medical doctor) and allowed me (intelectually) to develop a well structured way of thinking. Talking about "professional associations", should a law prevent (or discourage) people from learning how to program or to make their own programs, tailored for their needs?
For me, a computer is a tool and everyone must have the right (== liberty) to use it full-power (meaning programming, that's what it was built for, not just for watching Netflix or Facebook). I've seen very good programs made by passioned self-taught individuals and bad programs made by "professional" programmers.
By the way, what about the Open Source programs? There are a few made by non-professional programmers, but not that bad. How could one "certify" such programs? And what about the use of Open Source in public institutions?
|
|
|
|
|
Nothing about a professional society should prevent you from learning to program, just as nothing should prevent you from testing yourself for a fever and taking an aspirin to reduce it. But just as with medicine, there is a point where the public has an interest in certifying the quality of practitioners. That point comes when a practitioner wants to be paid for their expertise, and wants to prescribe the most powerful and problematic treatments, that require experience and knowledge to administer.
|
|
|
|
|
I agree with you in that software for critical missions or services should be verified and/or certified by competent developers, but (no offense intended) an aspirin is - compared to the medical arsenal - what a MS-DOS .BAT file is for software development. Are there only small tools to be left to "power users"? A "professional association" model would not push companies to distribute programming tools only to "certified" developers and then, in a positive reaction of some kind, few and few will become computer-programming-literates and the liberty of thinking (and inventing things) will suffer?
Oh, but there's the Open Source ... May I ask what do you think about it? What should be done with the huge code-sharing resources available or, more general, with "the" Open Source? There are, I think, critical applications based upon (sites hosted with Apache Web Server, ...).
Someone working as non-professional developer should not get payed for his/her knowledge/effort (I didn't write "expertise" as I'm talking about a non-professional). Or a model like ActiveState or RedHat - where a community of developers makes software that the company selects and certifies - would be more acceptable?
|
|
|
|
|
As you must be well aware, there are a whole range of medical professionals, from medics and paramedics, to nurses, to LNPs, to general practitioners, to specialist medical doctors. There are many spaces between taking an aspirin and performing brain surgery.
I would not be in favor of, nor would it even be possible, to limit the availability of development tools to only the most specialized software developers. People would still be free to learn and to tinker. I think software written by uncertified developers should even be allowed for sale, as long as this was disclosed, though you could make me believe that certain kinds of software should only be produced for sale by certified developers and organizations.
I think liability for defective software should become an important part of this future. But I think that people who give software away for free, and disclose that it was done by uncertified developers could be made immune. Then developers of software for sale and users of free software would have to think clearly about whether open-source code was of good quality. If so, then including it would be OK. If not... maybe they should find the code somewhere else. Hopefully standards of care would become embedded in the liability law, and things wouldn't really be too much different than they are today. One might even make a business around uncertified software as long as the software was given away.
|
|
|
|
|
I agree. Thank you for your answer.
|
|
|
|
|
gggustafson wrote: I firmly believe that programmers should be held accountable for their mistakes (witness the Boeing 737 Max disasters).
This sentence speaks volumes and proves that we should NOT follow you. First, it while there were certainly some mistakes, the programmers should NOT be blamed as they had to work with incomplete sensor data.
Second, just how to you hold them responsible?? And if you hold them responsible for major loss of money then they should also reap the reward. Sorry - I don't buy the argument from you any more from "Uncle Bob." I will take the financial risk commensurate with the amount of reward. I am an intelligent programmer.
gggustafson wrote: I continue to be fluent in multiple computer programming languages (e.g., C#, C, Ada, FORTRAN, COBOL, and Pascal). I have programmed within Windows, UNIX, Linux, VxWorks, as well as others too old and long ago to mention.
Yes, you are a legend in your mind. My experience is that polygon programmers drag the crap from each language into the other. They ignore language features and seek to build GOF patterns into what the language already provides.
gggustafson wrote: I believe that it's time to organize a programmers' association that can provide certification and other benefits not available to programmers today. For example: a stable retirement fund, not affected by the continuous movement of programmers from one job to another; job protection from any number of ills that plague our profession; career guidance and referrals; legal assistance in the case it was needed; and any number of other services. Of course, there would be a cost but, hopefully, a well-spent cost.
This sounds like a union called by something else. That you believe that this magical unicorn exists confirms my earlier belief that I wouldn't recommend hiring you. We can ignore just how you certify someone across so many languages used today for a moment and consider how you ensure continuous movement and job protection. There is only one way and that is to force employers to ignore their hiring practices now and accept that daddy union knows best. Unions are fighting for their continued existence as many people realize that a strike will likely cost them more than the difference will ever make up in their life. (This is even true for the youngest.)
I am with Code Project and think this is a bad idea. I don't believe in magical unicorns.
|
|
|
|
|
It's an interesting discussion. I believe the industry *could* do a better job policing itself; however the problem domain is so broad and complex that I think it's nigh impossible. That said, the original poster shot his argument in the foot when he cited the Boeing 737 Max issue - this was not a software failure but a systems engineering failure (IMHO - I've not read the IEEE writeup, next on my list).
You do make an excellent point about people who claim to be programmers, and all they know how to do is drive a keyboard. I trace this ROT back to the .COM era when so many people were slamming web sites that anyone who knew html was called a "programmer". I believe this cancer still plagues the industry.
But when you think about how we develop software today, I'm not sure we can really corral the cat herd. How are you going to certify all of the 3rd party software used in today's applications? Open source? I think the system would grind to a halt trying to use the "professional" model across the industry.
The real problem, and some have alluded to it, is cost. A long time ago, I worked as a pure EE designing circuit boards. One of my mentors was an old salt by the name of Frosty - tall gangly guy, very passionate about his work, licensed professional engineer. He had come up with a design and submitted the paperwork to management. They sent it back, as he had not applied his PE stamp on it. He told them to pound sand - that cost money if they were willing to pay. They didn't, so he didn't. It was an interesting standoff (lots of yelling and profanity).
If you want someone to accept risk, it's going to cost you. Boeing accepts this risk and essentially indemnifies its employees. If this were demanded of me, I'd double my rate and purchase a LOT of insurance. Just think about how many times you've been told by management to "ship it, we'll fix it later."
As for pensions, etc, that's easily handled by a simple professional organization. Given your age (and mine), I suggest looking into AARP or Amac (American retirement groups).
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|
|
I'm not unsympathetic to the points you've raised, but every time this issue comes up, I see the same two problems with it:
- Outside of safety-critical industries, the market (of companies who hire programmers and/or need custom software created) just doesn't care. In some countries, "software engineer" is a protected title and requires specific education and licensing. The net result? Companies choosing job titles other than "software engineer". Trying to compel all programmers to be part of a professional association would give companies a huge incentive to try to create all of their software using methods that you'd call 'not programming'. We'd end up in a universe where all business software is cobbled together using things like VBA and PowerApps. And I don't mean to knock VBA and PowerApps. Whether or not they count as real programming, they're often the quickest/fastest way to solve a problem, and like it or not, those are the metrics that most businesses care about. Given the old choice of 'fast, cheap, good - pick two', customers overwhelmingly prefer 'done cheap, delivered fast'.
- Even though the idea of professional programmer standards is appealing, it's almost impossible to be an advocate of these ideas without sounding like a jaded old fart who's trying to circle the wagons and keep out the dirty hippies and the hoi polloi with their disgusting VBAs and JavaScripts. I'm not sure even there's even a good way to combat this perception.
Now, there *are* a subset of companies who care deeply about quality. Why not just try to focus on selling yourself to those companies, since they already understand the value you provide? On the flip side, there are lots of companies for whom the kind of quality you want just wouldn't provide them any competitive advantage. If quality programming is your primary concern, spending too much time worrying about people who don't (and will never) care about it will only cost you your sanity.
I do wish you the best of luck in your endeavour, though.
|
|
|
|
|
Try to imagine Amazon.com, cobbled together from VBA and PowerApps.Imagine Call of Duty, built from VBA and PowerApps. The consumer marketplace is not insensitive to quality, and companies are not insensitive to reality. The effect of a Professional Developer association would on cost and on jobs would be marginal.
It's not necessary for every programmer to belong to the association. It's only needed for some senior decision makers to belong, and for the company to sign on to the code of behavior. Of course, these are the folks who make the big bucks, and the big decisions, so it's always possible that most programmers will want to belong.
|
|
|
|
|
If this thing gets established, please unsubscribe me from your mailing list in advance. Thanks.
Edit: FORTRAN is a crappy language. That information is for free.
modified 20-Oct-19 21:02pm.
|
|
|
|
|
What a disgusting premise! The computing industry has been a major boom because people can get into it and develop what their imaginations can create. Stifling this with BS licenses and then ensuing regulatory legislation that would not be far behind would slam the brakes on this.
What a ridiculous comment that people using higher level programming languages aren't programmers - such a narrow point of view. Do you really need to dig into the depths of C to write a front end application heavy in reporting functions? With your experience you should know and see that certain languages are better suited for different tasks. This kind of elitist mindset is one good reason for not having certifications and regulations.
Any manager worth their salt who is in charge of hiring can cipher out a skilled programmer vs a newbie or someone that knows enough to "look" good - but are not capable of the job at hand - and "technical currency" can then be determined. If they are a junior level programmer - then pay them as such - and pay a senior level programmer accordingly. Experience and actual knowledge do matter - but a license DOES NOT guarantee the quality of either of these.
I have spent the last few years substantially remodeling my house. I have studied local and state building code, building standards for residential building code, electrical/plumbing codes, studied architectural and structural engineering, etc... to make sure it is done right. What I have learned is that MANY of the local builders who are certified/licensed in many cases don't know what they are doing and/or are intentionally doing poor work. I see their projects, in progress and completed, and can point out the flaws with will cause problems in the short and/or long term - yet they are licensed and I am not.
My wife is a teacher - requiring college degrees, licensing, passing of licensing tests, etc... and we could both write you a book on the stupidity that manages to make its way into the classroom.
Licensing only puts barriers in the way for those interested in going into the field and eliminates great talent that will go in another direction instead of hopping though the red tape hoops. Sure you may filter low quality programmers out - but at such great expenses. Protected industries are insane and should be abolished across this county/world. An look at the education system. I have reviewed so many Computer Science degrees from multiple colleges where the amount of programming, the level of difficulty, and real world use is abysmal. In so many of these college tracts - a person coming out of them can't even write a simple program to produce a printed report. Surface level BS - but they think because they have that degree, and are told that they are now professionals - they think they are - but really!?!?
I have a programming degree - but I was self taught before that. The degree was for job purposes only. I learned almost nothing new in the process and in many cases taught the professors more than I learned. Those PhD's heading up the classes/department couldn't preform real world application of the theory they 'teach'. I ran into a complicated problem at a job shortly after graduating and I approached the PhD head of the department (who became a friend while working on my degree) and she had no clue as it didn't fit the clean theory world she worked in. I also have 5 or so certifications - some thing there. It may show you can get through some classes and that you can grasp the concepts, but that doesn't mean you can take it into real world and succeed. I scored high on my certification exams and on my programming degree - but saw other that didn't but managed to pass - and then on paper - what's the difference between them and me? Again, licensing, degrees, certifications are not the answer.
And as to holding programmers legally liable - that's a can of worms that makes my head want to explode. One, if a programmer did something wrong in their code and it resulted in deaths - do you honestly believe that the courts are not able to touch them now? BS! Of course they can. If a programmer writes code that causes major financial issues - if they are working for that company - they will be fired. Who would be ultimately responsible in that case anyway - the employer themselves - so, what - sues themselves? If the programmer is working as a contractor or for an IT company and they did the work for the company that took the loss - they could sue them. If their contracts don't allow that - then who's fault is that? Don't sign stupid contracts.
I have always likened computer work - hardware, software, programming, etc... in total to the to being a doctor of the human body. There is an insane amount to know, many working parts, many integrated and interrelated parts, different stages of development, many systems involved, etc... Even medical specialists, who are not elitist self deluded snobs, know they don't know it all and there is more to learn. How many doctors are successfully sued for medical mistakes and are found guilty? By number - probably a lot - by percent - very small. It's very difficult to prove they made an egregious error worthy of a winnable suite vs unforeseeable circumstances. And yes, I know they are licensed - but my point is that even so - even if they make mistakes - proving it and doing something about it are another matter (and yes, I have MANY stories of the incompetence of those licensed PhD doctors as well). How much testing should be done before being good enough? What about when your code is fine - but a CPU flaw is at the root of the failure? Could that have been figured out via testing? By REALLY DEEP testing? At what point could the programmer still take the blame even though his code SHOULD have been fine?
What responsibility does the customer of the code have - should they just assume it works and run with it without their own testing? Should they assume it will work as stated and not have any backups of critical records, systems, etc...?
How many serious programs have hundreds of thousands of lines of code - and even millions? Who is responsible? Many developers creating interrelated code/calls. If the code is 'correct' - but to incorrect specs - do they still get nailed because they should have tested it enough to figure that out and get the specs updated by those above them? What about the project manager? If they developed the specs that failed - should they be nailed - or the expert licensed programmer that didn't get the project manger to correct the specs after testing exposed the issue - or if the programmer didn't test enough to pick up on the incorrect spec? Who's at fault?
How about open source code? Write some code and put it out there for people to use, learn from, etc... but has a flaw - go after the programmer/group who put it out for free? It could still cause injury, death, monetary/resource/time loses. Or book authors... I have yet to read a book on coding that didn't have errors in the code in the book. How many thousand page long books do you think you can find that don't have spelling errors, grammar errors, incorrect concepts, etc (syntax errors, logic error, etc...) THAT is a major reason why going after programmers is a difficult venture (no that it can't be done now) - but that it is difficult to pin it on one persons and even if you could - intent also matters. And again - what would licensing have to do with stopping this or to make it any easier to pin failures on the right person(s).
Blah, blah, blah.
Or, how about people be able to learn, write, and put out code that is within their capabilities to produce - with the users of the software making sure it meets their needs and works (via testing). And, companies employing competent managers that can find programmers of the skill level they truly need - and fire them if someone manages to wiggle through the initial interviews and interview tests. Licensing proves nothing. Let freedom be the basis of this industry to promote new minds, new ventures, new ideas, etc...
|
|
|
|
|
Did I say license?
Gus Gustafson
|
|
|
|
|
Certification with an argument for imposing consequences sounds like licensing to me or already close to the next step to get there. It's a moving line. Open the door, and the next person fights for the next step. Doesn't answer my concerns and points in any case.
Plus - there are certifications for software development/software engineering - I suppose you just don't like them? Maybe for some of the reasons I point out?
|
|
|
|
|
Very pertinent answer, I think (I can't give 2 upvotes...). As a medical "specialist" I can only agree with you that self-learning values the most, we must all have licenses (in order to practice). As a self-taught "developer" I can say the same thing. Freedom is the key for any developer/creator/inventor. Checking and/or testing is the key for any user/client, starting by not clicking on any "Download Here" link on any obscure page.
|
|
|
|
|
Quote: I have reviewed so many Computer Science degrees from multiple colleges where the amount of programming, the level of difficulty, and real world use is abysmal.
I think you proved his point.
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|
|
I never said I disagree that there are too many 'programmers' out there that don't what the heck they are doing. I also made the point the many of the PhD experts our there don't have a clue either. Who do you think will head up this organization? Elitists that have a clue too many time.
I tried to explain this to my young adult son who likes the idea of permits and oversight. He thinks (as many do) that this protects the interests of the individual. No. It makes the individual ignorant and gives them reason to relegate the responsibility to know about the issue at hand to the 'expert'. How many people know how to properly build a house, run electrical, etc...? It's all regulated, licensed, etc... So people get complacent and simply assume that the 'professional' doing the work for them will do it professionally. Or, that the inspectors are actually doing a real inspection based on their own 'professional' knowledge. It's all smoke and mirrors and in the end a money scheme.
Again, any competent professional manager can get this out of applicants for their programming staff and they would be negligent if they only gave credence to a certification or license. But, the tendency will be for them to do just that. In the case of customers - learn about it so they can make an educated choice - or have their own trusted IT source help them - but again - they should not simply hire a programmer under contract or a company with a programming staff blindly and taking certifications as the end all.
|
|
|
|
|
In a word - No.
The type of organization you describe is called a trade union. What we've seen over the decades as that although unions, regardless of why they started, eventually become barriers to entry for competitors.
I'm not opposed to distinguishing between a programmer and a software engineer, with the latter being required to have additional skills to ensure robust and bug free software. But requiring programmers to belong to a union would make it impossible for the mom & pop store to create a web-site. Not at first but it's a guarantee this would happen, simply because of human nature.
|
|
|
|
|
obermd wrote: requiring programmers to belong to a union would make it impossible for the mom & pop store to create a web-site. Because there are no non-union shops. Give me a break.
|
|
|
|
|
I have no problem erecting barriers to entry into the programming workspace. I have seen the junk code produced by incompetent "programmers" who are only interested in the paycheck and who work for managers for whom the bottom-line is the only measurement of success.
Gus Gustafson
|
|
|
|
|
I see no barriers to "programming".
I see a barrier to B.S.
And there's nothing wrong with a "code of ethics".
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|
|
How does a certification erect a barrier to entry into the programming workspace - wouldn't that be the function of a license vs a certification?
And two, who are you are to tell business who they should ignore, who they should hire, or what standards they should be looking for - you are very linear here. I get your point about what you have an issue with - but why is it your call? People do have different reasons for why they hire - and you seem content to put them into a box. What if they are a small startup and they can't afford senior developers - but have a new idea of a solution that they way to put out. Maybe they need a functional beta to get more venture capital to justify hiring better developers. It's not black or white.
If you have your own business - then you set your own hiring practices. If your competitions hires incompetents - they will fail, you will succeed and they will go away. Free markets - you know...
|
|
|
|
|
You're assuming "senior developers" are expensive.
If I can't stand the job, pay is irrelevant.
I see (some kind of cert) as protecting the "consumer" (not the developer).
Certs are NOT a problem for "cheap customers". I say the opposite: it helps in some way to narrow the field when you're shopping.
My customers have been "lucky" because they had no IT department; no one to second-guess me. I delivered the goods because that's who I am, even though most had no clue who and what they were getting involved with.
Yes, some "cred" would make them feel a little easier ... even when there's not a lot of money at stake.
But in the end, it will make no difference because "users don't know what you don't know".
But at least "I know what I know" (and what I didn't).
And certification, in my experience, is not about reciting some obscure op codes.
It's also about problem-solving, managing, risk assessment, thinking ... you know: "soft" skills.
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|
|
Generally 'senior developers' are more expensive.
I think you misunderstood - or I didn't say it well - but I don't believe 'Certs' protect anyone - especially the customer. I believe it gives them a feeling of false security that leads them to abdicate their own responsibility to look into the topic enough on their own to be able to ask smart questions and to have proper expectations of an employee or a contractor - which too often leads to bad ends.
There are too many people with degrees, certifications, licenses, whatever - that do not truly have the skillset to do what they claim. So long as these titles carry weight - people will not take the responsibility to make sure they can actually do the job. The 'title' says it all for them - or at least too much.
The employer or customer hiring a contractor - whether it is programming, IT, house repairs, etc... needs to be competent enough on the subject at hand to know what seems legit, to have an idea when things are going sideways, and what to do when and if that happens, how to setup internal policies for firing and/or when to break the contract and move on, etc...
|
|
|
|
|