|
And one more facetious thought - maybe we should focus on creating a professional licensing organization that licenses people who want to create professional licensing organizations. I mean, if you setup one of these organizations improperly or do it under the wrong premises or reasons- it could cause HUGE problems within that industry. So, only those who have a proper license should be able to propose creating them. The specific words, phrases, concepts, legalities, etc... especially when flaws/failures could cost money/time/resources, indirectly cause injuries, death, etc... are a serious concern. Only seasoned, elite, professional licensing organization creators should be involved in such things.
|
|
|
|
|
Gus...
Like you I have spent decades as a professional software developer. And I have used many languages, finally specializing in C# and VB.NET since 2001 when the Microsoft .NET Framework development environments were commercially released.
However, I am not sure that certification is the way to go. Certification implies testing, which is short lived at best and useless at its worst.
Various coding boot camps have performed a similar function in terms of certification and it has been found that such graduates only have a cursory knowledge of what they claim to know from such training.
I have to agree with the commenter here that suggested a union but there are issues here as well. The Freelancer's Union attempted to be such an organization for the growing "freelance economy" (which was just a new word for exploitation). They appeared to have a good start but quickly eroded as they became more or less another insurance company peddling Obama Care medical programs, all of which were questionable in quality.
As it regards your observations on the Boeing 737 Max aircraft, there is nothing to indicate that any programmers were at fault. This was clearly a management decision to hide issues that resulted from the extension of a design with additional attributes the original design was not meant to support.
As usual, stupid management made a very stupid and dangerous decision, not the developers.
The deterioration of software development quality in the United States has many factors. However, the major ones can be categorized as the following...
1...
Corporate outsourcing of IT positions to reduce costs while lowering quality and flooding the US professional IT market with low-cost foreign workers that are willing to be exploited by degenerate management to the detriment of US citizens
2..
Increasingly, degenerate technical management that has been increasingly politicized to the point of ueslessness
3..
Vendor promotions of increasing complexity in development products, which has seriously weakened the inherent knowledge bases in the various communities
4...
Constant iterations of software, which add only questionable capabilities in lieu of the basic sets of features the majority of developers require or use
5...
The promotion of cloud-based services, which inherently reduce security for the purposes of allowing such companies as Amazon and others to make more money without advancing anything that safer individual, corporate run IT organizations could provide
6...
A major degeneration in the parenting and teaching of the younger generations that on the one hand are being coddled to death to the point that many young people are nothing more than vegetables while being taught in such a way in the many school systems to understand the world around them in a very restricted manner without any emphasis on critical thinking or the need to resolve their own problems on their own
The list could go on but you get the point...
The professional, technical environment today is too fraught with impediments to make an organization substantial enough to accmomodate the needs of professional developers and software engineers.
However, if one were to proceed with such an endeavor, it would have to be well planned out with multiple facets such as viable medical insurance programs, training capabilities, and legal assistance for professionals who run into issues on the job caused by management.
As a result, in my view such an organization would require to offer far more than just certification, which as I mentioned earlier is questionable at best...
Steve Naidamast
Sr. Software Engineer
Black Falcon Software, Inc.
blackfalconsoftware@outlook.com
|
|
|
|
|
Somewhere along the line the concept of certification became embedded. I do not espouse certification. Rather I espouse something more in the line of an apprentice-journeyman-master approach - like blacksmiths who also create something out of a simple piece of iron.
To the younger programmers who object remember: you maybe earning $90K today but there is always someone coming out of college who can do your job for $75K. And guess who management hires? You have no protection! You have no one looking out for your interests!
Gus Gustafson
|
|
|
|
|
And if that person coming out of college can actually do the SAME job at $75k - they why should your employer pay you $90k? They pay you $90K because you have more experience - are presumably faster at getting a complex project done and able to develop solutions that the newbie can't because they simply don't have the experience - not because you are a familiar fixture in the office. If your employer cannot see that - do you want to work for them? Should you maybe be looking for another job - or maybe branching out on your own? This is common to most any job. I have done IT work for decades. I can track down and resolve issues faster than newbies that don't have the same level of experience. When I have had customers or employers that couldn't understand that - I moved on. Yes - you can 'fire' your customers too
|
|
|
|
|
Some thoughts for a professional organization
- Membership must be voluntary. There must be a place for people who choose not to belong, or who could not meet the demands of the certification process.
- The association's core product would be a code of ethics, binding on both individual and corporate members, with some cost (at least losing their membership) for ethical failures.
- To become and remain relevant, there would have to be some advantage to belonging, both for individuals and for corporations.
- The association could provide voluntary certifications. If the certifications were valuable, companies would come to expect them, and would perhaps even send employees to obtain them. There are existing certifications which the association could adopt initially. Maybe the association could put their brand approval on other groups' certifications.
- Along with certification, the association would have a role in providing education with certification as the end goal. As with certification, there is courseware that the association could adopt initially. Providing education leading to certification could become a powerful tool for pointing the industry in a positive direction.
- Like a labor union, the association could come to have a collective bargaining role, perhaps not for wages, but for working conditions. Some of this could happen through ethical rules about how to treat workers. If I was planning such an association, I would wait to roll out collective bargaining until there had been some uptake of the basic idea. (Bwah ha ha).
- Like a traditional union hall with members sitting around waiting for work, the association could maintain a market of freelancers who were certified by the association, or a collection of resumes. ACM makes a somewhat weak and pathetic attempt at this, but their heart isn't in it because they are run by academics.
|
|
|
|
|
Got mine first try. Computer grads; not so much.
Certificate in Data Processing - Wikipedia
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
|
|
|
|
|
Quote: What bothers me about programming today is the number of people who claim to be programmers but who are not. These wannabes claim to be programmers but when you look at a wannabe's accomplishments, they usually include applications that are written in a macro language (such as VBA) and that are usually trivial and unfocused. We need a word to describe this class of people who are intelligent enough to pretend to program without actually programming. In many other career paths, they would be called apprentices.
Can we look at a programmer as someone who breaks a given task into steps and instructions for a computer to follow? How big a program does it have to be to make a programmer? I don't have quite your years, but VBA and xbase (Clipper & FoxPro) before, have been good to me. I have an MS Access database with ~20 users that has been working for ~20 years now.
We have code at so many layers, imbedded systems to UI candy.
Is writing SQL, coding? RegEx, does that count?
|
|
|
|
|
If you can actually produce something useful, with a "minimum" of defects, that someone else can maintain, then I think you can call yourself a programmer; regardless of the platform.
That does not (automatically) qualify you to program a pace maker or a flight control system with all the IF's and ELSE's.
"Developing" is not the same as programming (or "coding").
I am a software "developer".
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
|
|
|
|
|
These are self imposed titles. A programmer is a programmer is a programmer. You can claim developer is better but a programmer is a developer is a programmer. Same thing. As much as the OP wants it to be engineer, or whatever. I have programmed for years on my own. Never employed as a programmer - but I am proficient enough that I am not really concerned about what language you'd like me to use (unless some technical specification makes in insane to make it work). I've gotten to a point a long time ago that it's just translation and what pre-exiting functions/classes/etc.. you have to work with. But, I also have a wide variety of knowledge to bring to the table that many programmers don't. Such as - my high end background in IT and business systems gives me a lot of knowledge about operating systems, servers (web/mail/database/routing/etc), security models, networking/network security, database design/implementation/security/tuning, accounting systems, double entry bookkeeping and accounting, tax code, legal issues (business, government, etc). Many computer languages: direct hex editing; various assemblers, COBOL, BASICs, PASCALs, Cs, C++s, SQLs, DDLs, VB(DOS)/VB(Windows)/VB.NET, C#, Java, JavaScript, VBScript, HTML, CSS, XML, etc., etc. and I've programed across many of these boundaries. Currently writing a billing system for a County Government using C#, Azure SQL Server, with some web components. Also, a mostly finished custom air handler control system using RaspberryPi with Python, MQTT, as well as designing the circuit board and components for a small datacenter I own and run.
However - don't worry about keeping all the code locked in my head. I know what I want to do - the general structure that I need to develop, the security concerns, the bookkeeping side of it all, the web server and security side of it all and I simply look up what I don't recall (which is a lot - specific syntax, data types, even finding the commands/classes/etc... that I want to utilize. Makes me a bit slower - but there's very little I can't develop. I even wrote 3D graphics rotation systems back in the early 80's on my Apple II - and my own multi-language complier. BUT - I doubt I would pass a programmer certification test - as they are typically very specific in what they want you to know off the top of your head - like about some language syntax or command use. Who cares - look it up. That's what the docs are for - and google But - should I be an apprentice? Or be excluded for working for a business as a programmer/coder/whatever you want to call it?
I think the employer/customer needs to take the time to know what they need in a programmer. Interview them. Figure out if they can do what they say they can - and then decide. Relying on licenses, certifications, titles, etc is the lazy persons way out of knowing what they actually need and having enough knowledge to see if that is who they have in front of them.
|
|
|
|
|
I think you expect too much from your "average" customer in terms of vetting a "programmer".
Makes about as much sense as me making a medical diagnosis, which didn't involve just an "aspirin".
There are "laws" to protect the consumer. Same difference.
And when I talk of "developing", that includes:
Scope / problem definition
User requirements analysis
Current system analysis
Preliminary / detail design
Presenting, gaining acceptance
Planning, estimating and allocating resources
Executing, monitoring and controlling
Unit, integration and system testing
User training and acceptance testing
Documentation
Turnover to production / maintenance.
Oh, and "programming".
And I have to carry $2,000,000 in "liability insurance". There's my "cred".
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
modified 25-Jun-19 18:53pm.
|
|
|
|
|
And you honestly think because the customer see that a programmers has a cert that they are then vetted?
And yes - if you have a medical condition - do you not make some effort to figure out what it could be, or after going to a doctor - research their conclusions or get a second opinion if a serious issue? Due diligence...
Your list is fine - and doesn't define anything that is not programming. You don't just set down and start plunking the keyboard. You have to define the problem, figure out requirements, da, da, da... I learned nearly 40 years ago that your list is the basic steps of software development/programming. One in the same. Smaller programs may allow skipping some of this - especially when designing for your own purposes - as you are the end user and know what you want to do and so on. But if your are doing it for someone else - and you want to do a good job - what part of this do you leave out?
Maybe you make the distinction that someone hired to write code (a 'programmer') based on the specs given to them after a systems analyst has had at the project, and the user interface design team has worked up their parts, and the project manger has distributed the work amongst the 'programmers' - that these 'programmers' are not developers? I think any 'programmer' should always be a developer if that is your distinction. I don't think I have ever met anyone - self trained, college trained, etc... that looks at programming so narrowly. 'Development' is inherently part of programming in my view. Having a team to split the work load over doesn't absolve the 'programmers' from knowing, understanding, and participating in the overall process. If that's how some handle it - then I think this is poor managements and not taking advantage of the full resources of their programmers/developers/engineers. In my opinion - these are all programmers/software developers/software engineers - whatever - its just a matter of entry level, junior, senior rankings of whatever you want to call them. People are always playing with names. I don't want to be a janitor - I want to be the custodial engineer, or I don't want to be a secretary, I want to be the Front Desk Executive. Same here. We have a department at the state that calls their people that know how to change settings in their tax system software - programmers. Their administrator is the DBA. Names, names, names...
|
|
|
|
|
Many years ago, at a social event, I was introduced to an attractive woman. She asked me what I did for a living and I responded that I was a "software developer". She then asked me some questions and when I could not answer any to her satisfaction, she said that I couldn't be a very good software developer. After further discussion, I found that software, in her mind was clothing. Since then I always reply "computer software developer".
Gus Gustafson
|
|
|
|
|
I hear you.
Depending on the audience, I am, not necessarily in that order:
computer programmer
programmer-analyst
software developer
IT consultant
IT contractor
the computer guy
self-employed
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 intended that professional programmers (i.e.,those who are paid) who use VBA ever think that I am putting them down. VBA is a language that, in the hands of a knowledgeable programmer, can do magic with a spreadsheet. When I used VBA in my complaint about wannabes, I was using an example. I could have used PHP. Sorry for the misunderstanding.
Regards,
Gus Gustafson
|
|
|
|
|
Understood.
I deal with haters at the wrok place, so a little thin skinned on the issue.
|
|
|
|
|
Script kiddies, in other words.
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
|
|
|
|
|
Please see my reply to Andrew L. Meador, below.
Regards,
Gus Gustafson
|
|
|
|
|
While I agree with your reasoning (it astounds me what calls itself a programmer these days), collective bargaining is not the answer - and that's one of the undesired outcomes of becoming part of a professional association.
I know what I'm talking about. In the early 90s (yeah, before you looked up stuff on the internet) I was an up-and-coming Ada programmer with General Electric. Whether I wanted to be or not I was represented by ASPEP (Association of Scientific and Professional Engineering Personnel). Apart from the monthly sub-par (free!) Prime Rib dinner to discuss... whatever, there was nothing positive about the experience unless you were the sort to not really apply ones-self.
ANY kind of reward system is GONE! Everybody gets a raise, so no one gets a decent raise. Management tends to love this because you can't appeal to them directly or you get something like "Sorry, the union says blah blah blah, and there is nothing I can do about it." or "You know, if it were up to me I'd give you a huge raise, you deserve it, but the union...".
I can see you have the best of intentions and you didn't explicitly use the term "union" but that's what "professional associations" inevitably become. Then they become an organism whose sole drive is to exist and procreate. I've been there and there is no "union" in ASPEP either.
Vote No!
|
|
|
|
|
Collective bargaining was never intended. A Code of Ethics; monetary benefits (retirement, insurance, health care, etc.), legal assistance, mediation, etc. was what I had in mind. But the original post was a call for not a proposal for (as noted by another reply-er much work would have to go into the organizing and publicizing)
As an aside, I've been looking up stuff on the "internet" since the early 70's. Only it was called ARPANET.
Regards,
Gus Gustafson
|
|
|
|
|
I intended to mention previously that I agree with you on goals, 100%. But these things get out of hand. The next thing you know the guy who barely phones it in is being promoted just because he's been there too long or you're on strike because there isn't enough tartar sauce to cover the mandated 7 fish sticks for lunch in the cafeteria. And who doesn't like a little on their chips as well...
I only want to emphasize caution because I was part of a system that was too old and established to be changed or removed. To say that no one worth their salt was for it would be unfair because I worked with some truly exceptional software engineers who thought it was a fine idea. But it left me with the impression that there were limits to where my hard work could take me.
To your aside, perhaps I should have use the term "world wide web", but ARPANET, man you are older than me!
|
|
|
|
|
I am older than most. My partner says I'm "older than rock".
Gus Gustafson
|
|
|
|
|
Your post makes a lot of sense. You may be interested to look at the 'British Computer Society' in the UK. They accept qualified people from around the world into membership.
Also, in the USA, there is the 'Association for Computing Machinery'. I enjoy the articles in their journal and they keep me in touch with what is going on in technology. Also, they provide access to online training courses, books and have a comprehensive digital library.
Both of the above fulfil the role of learned societies rather than trade unions but I don't believe any competent programmer, software/systems designer, etc., has need of a trade union. Generally, because of their knowledge and experience, they can walk away from bad employers with the knowledge they will be picked up by some other company.
|
|
|
|
|
In 1990 I was invited to a membership review committee by the ACM. I had been a critic of the organization for its failure to address the problems facing the production programmer. Yes, the Special Interest Groups had the occasional useful-to-a-production-programmer article (especially the SIGPLAN). But the vast majority of the publications (Journal, Communication, Review, etc.) were aimed at a more academic audience. ACM did not recognize the problem and I discontinued my membership two years later.
So although ACM has some useful offerings, they come with a price too high.
Thanks for your thoughts.
Gus Gustafson
|
|
|
|
|
I believe the call is raising a very important concern.
While it is true that fault can come from management, but a programmer sitting on a desk may not have the right defense to say 'no' to things that he or she is asked to certain things which do not necessarily is ethical. An association could also make a programmer stronger so that he/she can defend in reference to ethical standards set by the professional association and with the existence of such association, programmers may not be proactively working on the 'unethical' things within the software. Uncle (Bob) Martin would also agree as he has been talking about a need for professionalism for some time now. HEre is the link about Uncle (Bob) Martin's call for professionalism Robert C. Martin (Uncle Bob) - Demanding Professionalism in Software Development – Zaneta Baran[^]
|
|
|
|
|
|