The Erosion Of The Status Of Software Developers As Professionals
codemanship.co.uk
codemanship.co.uk
In fact, the largest companies that we work for are frequently lobbying for things that programmers don't support, or actively damage our interests in relation to management.
We're also generally professional middle-class conservative enough that we're anti-union in a way that only people who are members of professional organizations that are at least 100 years old can afford to be. For doctors and lawyers it's easy to ignore cognitive dissonance because the freebies they get are so baked into government that it's hard to remember that people actually had to make a conscious effort to make that happen. There's no reason for programmers to be so complacent.
The transistor isn't even as old as the National Association of Realtors. People in real estate have more clout, baked in advantage, and respect as a member of a profession than anybody can be expected to get by calling themselves a programmer. At least they have to take a test.
What exactly do you understand under freebies [for 100y+ prof org members]?
Interesting point about the older prof members being both anti-union and but joining a prof body. I reckon the two have different functions though. e.g. In my case the only thing I hear from my prof org is messages with a "comply or else" tone. Sure they do set minimum salaries for apprenticeships, but those are so far below market rate that its does even matter. A union in contrast would fit for better work conditions, better pay, better benefits etc.
The only benefit I see is accreditation (admittedly a large benefit)...but that is hardly a freebie (took blood, sweat & many tears).
Doctors, Lawyers, Realtors, etc. have written 90% of the state laws that they are governed under, and most of the federal ones. They've protected themselves against foreign competition, and shielded themselves against liability.
Google, SAP, etc. get sued all the time, though.
The economic dynamics of licensed professions are a bit more complex than either side of the "developers should be professionals" debate really appreciates.
A reasonable amount of lawyering is filling out forms that a 30-year veteran paralegal could do better than someone who just graduated from law school. A physician friend is alarmed by the rise of nurse practitioners, who are perfectly able to diagnose and prescribe medicine for routine ailments. Realtors have gone further by trademarking the very term(TM): https://twitter.com/REALTORS
You can probably think of more examples as well.
It's even more than that: the NAR actually made up the term, so why wouldn't they have it as a trademark? Of course, that makes it a little difficult to be a non-Realtor real estate agent.
Sure, that's by the design of your fellow professionals. It's part of the mechanism for protecting the wages of fully qualified professionals. Unions are often happy enough with much lower apprenticeship wages as well by the way.
The two biggest freebies are also the two traditional markers of the professions: -Self regulation: most misconduct is dealt with by peers under rules set by those peers -Protected entry: lawyers and doctors control how many people can enter those professions and who can call themselves a lawyer or a doctor.
That is one of the primary functions of professional organizations. The idea is that you'd rather self-regulate than have the government all up in your business. Disputes and claims of impropriety can avoid the courts (and the public limelight) and be resolved internally.
The consequence of that is that you actually have to self-regulate, and that your enforcement arm needs to have teeth.
This is how it works in traditional engineering. Most engineering misconduct - short of the catastrophic stuff that makes the evening news - is dealt with internally. For the most part they do a good job of it, which is why they've been able to avoid being outright regulated deeply by the government.
http://en.wikipedia.org/wiki/Institution_of_Electrical_Engin...
Most civil engineers are PEs and they often have to be to do their jobs legally. Mechanical engineers are often PEs. Electrical engineers doing electronics often don't bother (as it isn't legally required for most work) but EEs doing line-voltage and above design work usually have to be.
and its more about "who you know not what you know" to quote my dad
Is this actually illegal in any state, and is it actually enforced in any state? I would bet that 99% of people who have the title "Software Engineer" have not taken those exams, and most have a CS degree.
EDIT: Exam information (pdf):
http://cdn1.ncees.co/wp-content/uploads/2012/11/Exam-specifi...
Not officially, no. I've always liked this line of thinking, though:
http://philip.greenspun.com/ancient-history/professionalism-...
First is the level of informal training that forms the basis for a lot of (good and bad) software developer's knowledge/ability. Certification favors some approved educational requirements. Second is the fact that professional certification is at its strongest when membership/non membership is a pretty decent indicator of competence. IE a certified plumber will instal toilets that consistently flush downward. Will a certified software developer be more likely to improve a client's chances that a project will be delivered and solve the problem its trying to solve?
That said, I can't see a strong objection to a voluntary organization recruiting members and seeing if they can add some value somewhere. Hopefully they don't try to keep all the compilers to themselves.
http://www.realtor.com/advice/what-the-realtor-code-of-ethic...
Realtors established a code of ethics, and made one of the articles in the code to be competent and knowledgeable, and if incapable of a job to turn it down or refer it to someone who can do it. They enforce this with precedents establishing minimal expectations, which are as precedents are flexible as times change.
If your organization actively enforced a 'Programmer code of ethics', and programmers were facing expulsion for being fuckups, I think that's "likely to improve a client's chances that a project will be delivered and solve the problem its trying to solve."
The ultimate problem is that expulsion has to be a real punishment. You can do that through changing laws to make membership actually not voluntary, though it may still be nominally voluntary (like doctors, and lawyers), or to distribute resources for work through the organization (like realtors), or to simply refuse to work with organizations that use people who don't belong to the organization (like actors and stagecraft unions, for example) and to be large enough for that to make a difference.
Incompetents are rarely de-certified in professions that have what are effectively guilds. How nutty do you have to be to appreciate a holdover from the middle ages?
In fact, it is usually the incompetents who seek the protection of guilds and unions. Without them, where would the air of competence come from?
They might actually be asked ... gasp ... to perform some task to prove their competence! When was the last time you asked your lawyer to perform a "legal test"? We get asked to do small code tests and projects to prove our competence all the time.
> There's no test - all you have to do to be a software developer is declare yourself to be one.
Really? No tests? Because there is no bullshit-institutionalized-social-proof crap, we are asked to take a test and prove our mettle before being hired for every job. A genuine filter to get rid of the incompetents. I am thankful every day that I'm not part of a regulated industry.
The question is about programmers being considered professionals, though, not what I'd prefer. I'm happy with my check and my title.
There are plenty.
My point was that in our profession, and it is a profession, it is much more difficult to be incompetent. As a consequence, there are fewer incompetents than in other professions.
In regulated professions, once you get through the door and get certified/licensed/whatever you can then use that as a badge of competency to get work. You can't do that with software development. Nobody cares what certification or degree you have. They want to know if you can code. How wonderful is that?
My point is that I don't buy this. I would trust the average doctor's opinion on a medical subject far more than I would trust the average programmers opinion on a technical subject.
The fact that I am a programmer might have something to do with this, though.
OTOH, apparently programmers can call themselves programmers after a 6 week course in [any random language] even if they only have the barest understanding of what they're doing. Programmers aren't responsible for their mistakes--if they mess up, the client's option is to pay for someone to fix it with no option for recompense.
Nitpick: Until they can practice on their own. They need to practice under supervision for a certain period of time before they can even take the final tests or otherwise receive final certification.
Also, engineers have the "industrial exemption". In most cases, if you work for a company (and thus do not provide services directly to the public) you do not require a license.
> Finally, and probably most importantly, professional are subject to fiduciary obligations to their clients that require a minimum standard of professional conduct--if they mess up, they can (and do) get sued for malpractice.
This I have an issue with; are you claiming that no one who works for a company is a professional? That to be considered a professional you must offer your services directly to the public?
Because performance on a multiple-choice exam equates to competence in the field? Nice one.
> Finally, and probably most importantly, professional are subject to fiduciary obligations to their clients that require a minimum standard of professional conduct--if they mess up, they can (and do) get sued for malpractice.
I have an equal obligation to my clients and can just as easily get sued if I engineer crap.
> OTOH, apparently programmers can call themselves programmers after a 6 week course
I can call myself a surgeon after dissecting a frog, it doesn't make me into one. People call themselves things all the time. So what?
> Programmers aren't responsible for their mistakes--if they mess up, the client's option is to pay for someone to fix it with no option for recompense.
Err... what? My clients pay me by credit card. If the thingie I made doesn't do what it's supposed to, they can and will get a refund from the credit card company.
Try getting a refund from a doctor or a hospital for poor service. I dare you.
And how does testing work? Do you do language-specific tests? Or general CS knowledge tests? And how do CS-knowledge tests apply to HTML/CSS slingers? Or are they not "programmers?" And if you certify by language, what does a company do when it wants to use a different, perhaps more applicable language for a product? Must all their devs be certified first? And what would this do for language development? Would anyone adopt new languages (or even variants) knowing that there are now institutional barriers?
The bulk of accreditation/certification in this context is not a guarantee of your competence, but a guarantee of your professionalism, and to set you up in a system where unprofessional conduct can be punished, and integrity enforced.
The intent of this sort of regulation isn't to make sure everyone is an amazing programmer, but rather that they will operate above-board, be reliable and trustworthy, and recognize the limitations of their own abilities.
The market, via salaries and benefits, will sort out people by ability. The intent here is instead to establish safeties for the demand-side such that they can hire with relative peace of mind, knowing that even if the person sucks at programming, they won't abscond with your codebase, engage in conflicts of interest, etc. And if they do, that there is a strong enough enforcement arm that provides both deterrence and retribution. It is also intended to protect practitioners by guaranteeing that the people investigating and hearing claims of malfeasance are actually skilled enough in the craft to fairly evaluate the claims.
Then, the physics was more or less mastered and the profession split into electrical engineering (the physicists lamented this degradation I'm sure) and applied mathematics.
Then, the math was more or less mastered to a level it could safely be abstracted away and math spun off computer science and software engineering. I'm sure the mathematicians were upset then at the degradation of the profession.
Then, software engineering advanced to the point that ever higher levels of abstraction were present on ever faster computers, no longer did you have to get the logic right _and_ the math perfect for your program to run in acceptable time. And higher level languages emerged, assembly leading to c leading to python and JavaScript. And at every stage there was moaning, and excitement.
Now, we stand on the precipice of the next great division. People can get a reasonably complicated website up by configuring Wordpress or Joomla or Drupal without writing a single line of code. A 14 year old can run a mcafe script at the geek squad counter and get the users computer back in decent shape. We are at the point of adding moderately skilled technicians to our field.
We can piss and moan about the division, or we can recognize that it's part of the process of the industry and vocation maturing.
The engineers at GM aren't bemoaning the fact that "car maintenance gurus (mechanics) don't have to understand the heat displacement of aluminum vs steel"
Having mechanics makes the car industry more efficient and lets the engineers focus on the real hard problems. The same will be true of software, eventually.
Occasionally in the recollections of the really early programmers, we learn that they were hired from the secretarial pool and trained if they had math aptitude. Not from physicists or the PhDs always. I am sure this was very true for the line of business & banking apps.
I made un-researched generalizations based on limited knowledge of the skills possessed by the pioneers in the field.
I agree that it has, at the least, nuanced errors.
But, I try not to let the exact truth get in the way of a good story unless the exact truth is the crux of the argument.
The computer cares not for your platitudes. Fix your shit.
(More specifically, at least put some timelines on your milestones--you overlook, for example, a lot of computer early adoption by banks and insurance companies. A lot. See Burroughs et al.)
(These feel-good stories only serve to further undermine our profession.)
Are any of the field divisions I mentioned inaccurate? Or is it the chronology youre objecting to?
This isn't a feel good story, it is a parable. My entire point could be rephrased in a more hostile fashion as: It is not presently feasible to be an expert in every aspect of computing, so why is further division of the field a bad thing?
The problem with the parable is that it didn't read like a parable, and instead read like a layman's explanation of history--were it more clear or disclaimed, I doubt any of us would've taken offense.
No harm done. Have a good one.
If you feel my level of detail takes away from my goal of providing a relatable parable, please let me know how.
- Computers became commercialized around 1952-54. Immediately prior to that, physicists hired programmers for the clerk work of coding up their problems (interesting note: they usually were women. You can find the story online of the programmers who worked with von Neumann. It's very interesting).
- Business adoption was pretty good! In fact, by the late 60s, software was exhibiting its standard characteristics - buggy, late, expensive, hard to control. See the NATO conference on software engineering, 1968.
- In the early 60s, dynamic languages came about in the form of Lisp. This did not take off until, AFAIK, Perl started making headway in the 90s.
- Cobol, Fortran, and others that I don't remember were standard in the 50s & 60s. And everywhere. These preceded the foundation of computer science as an academic discipline, which became institutionalized in 1969, give or take.
- Where did these business developers come from? I don't have job ads, but in my readings from the journals of the times, academic work seems to have gone on fairly apart from the line of business development.
I think they are interesting details, for sure, but I don't see exactly why you think they're relevant on a first order approximation.
But let's face it: the more extroverted among us are jealous of the "social media gurus" who are waving their hands on the television stations and spewing garbage opinions. They didn't work for engineering degrees like we did, but their words are still heeded more than ours, even though it's just hot air.
Imagine what the world would have been like if the internet had existed when the automobile was introduced. I'm sure that the automotive engineers would be bemoaning the fake experts just are we are now. But the automotible did not make everyone's voices heard.
The very nature of our field means that we create technology that makes it possible for the loudest voices to carry the most weight, even if they don't know what they're talking about. It's the bitter pill we have to swallow.
Lack of ability to evaluate competence means the loudest peacocks at the quickie-oil-change shop proclaim themselves gods gift to automotive engineering. They get laughed at a lot, but they also collect a lot of undeserved money.
Another trend is a profound lack of abstract thinking ability especially as regards problem solving. This is best seen as "this nuclear aircraft carrier has a GUI and a tablet app, therefore it requires no training, education, intelligence, or experience to operate".
I make a lot of money cleaning up after people dumb enough to believe those two general lines of thinking, so I'm not entirely bothered. We have a lot of carnival showmen, but as long as I'm making stacks of cash cleaning up after them, I'm not all that bothered. It is kind of silly though.
The thing is it's like tax preparation: most people should probably be able to do it themselves, but once you want something interesting done you're going to need a professional. If all you develop as a software developer is monkey patching stuff together, then yes, you're in trouble, either from normal people, or from the products of other developers. However, the fun part of the job has always been being able to punch through big piles of crap to find ways to radically simplify what's going on in order to get an apparently magical improvement. That part is an art, and isn't going away in a hurry.
Fact is, it's extremely likely you've been taken advantage of, financially at some point, for your skills. It's an ugly reality, but I'm betting it has happened to a lot of people, or is happening. There are people who love nothing more than to take advantage of information asymmetries to extract disproportionate amounts of value from you.
I'm having a hard time thinking of any downsides to professionalizing. It cements our place in society, makes it a 'thing' for laypeople to ascribe importance to (however idiotic that concept is), which starts a feedback loop of expecting respect, both personally and professionally.
Well, if you are a real professional then a complaint can result in your being struck off and it being legally impossible for you to work in that area again.
I really don't see how (or indeed why) that model could be applied to general software development or why it would be in any way desirable.
NB: It might be applicable in very small niche areas - safety critical systems etc.
Will any of the NOW hacks who hacked phones have a problem getting a new job NO.
Was Rupert Murdoch stripped of his newspapers as a result of the NOW scandal NO
And such systems are certified (in various ways, depending on the exact nature of the system). It'd be a waste of time and energy to certify an iPhone game.
So rather than certifying the software developer, certify the software, as needed. That way you can work on safety-critical jet software by day, and crank out cheesy, untested mobile entertainment software by night.
FAA personnel (or more frequently, trained FAA representatives within the avionics company) conduct reviews to ensure that the software is in fact being developed according to the prescribed methods, including requirements capture, coding standards, configuration management, verification, etc. Software is tested in simulation environments, and in partial hardware setups, and eventually on actual airplanes, before receiving FAA sign-off.
Sort of, but not really (here in the US anyways). Usually first complaints get you a slap on the wrist, and even things that rightfully ought to get you kicked out (e.g. attorneys mishandling escrow accounts) frequently don't result in much more than a fine.
Basically, you really need to fuck up to be kicked out of a professional organization. A similar level of fuck up by a software engineer would probably result in them being similarly unemployable. This isn't necessarily a good thing (professional enforcement probably ought to be more aggressive), but the risk is overstated by these organizations, in part as a justification for their existence.
However, that doesn't mean it will stop. Imagine what it was like to be a scribe; you were a craftsman, who cared about the details of your work, had the intuition and experience to anticipate how your work would change in the future, and to understand subtle nuances lost on the illiterate.
What happened to the scribes? As literacy matured, and became widespread, they were out of a job. And it wasn't because they somehow became bad at their work. It was because they became obsolete.
Now, I'm not arguing this will happen quickly, and it may look different, but I can't help but look around and see how much more accessible basic programming has become (tryruby.org and all the others). Slowly, very slowly, more people are becoming literate.
They're not experts, and they may never be experts. But all of a sudden these people are experiencing an ability to see their ideas become reality, and more importantly, they're experiencing a new way to think. This is exactly what happened when people became literate, and the scribes disappeared.
Figure out a way to ride this wave, and you'll never be obsolete.
This feels so true at every business and academic institution I've worked for.
My last CIO was a lawyer....
Honestly, any other profession would love to have it as easy as we have it. A surgeon doesn't get to mount the backup after a surgery fails. The engineers of the Mississippi river bridge couldn't checkout a standing bridge from their git repo. When a physicist wants to study particle physics, she can't download her own, personal LHC and start smashing protons. CEO's don't get separate development and testing companies where they can try out their business plans before it gets promoted to the actual corporation.
Compared to everything else I do at work, programming is by far the easiest task. It's also the easiest to learn. Yes, a lot of those programers are pretty terrible, but there's a lot of terrible drivers, too.
> A surgeon doesn't get to mount the backup after a surgery fails. The engineers of the Mississippi river bridge couldn't checkout a standing bridge from their git repo. When a physicist wants to study particle physics, she can't download her own, personal LHC and start smashing protons. CEO's don't get separate development and testing companies where they can try out their business plans before it gets promoted to the actual corporation.
You don't get these things either, unless you do the hard work to learn them and integrate them into your process. This isn't easy. Some of us are lucky enough to work in shops with this stuff already integrated, but for the rest of us we have to do it ourselves.
At my job, my biggest codebase was split up into three repos, with a lot of nasty and brittle glue code written to make deployment work. It took a solid week's worth of after-hours work to get rid of all that brokeness and make deployment sane again.
The advantages tooling brings to software development are often silently lost, only to be found out when your cloud provider loses your server and none of your backups work, and spinning up a new server from the repo takes, if you're lucky, all weekend to get working.
The thing is, what actually happens is that this individual, working at their full capacity will produce much more software, much faster than they could bridges. That doesn't mean that their job is easier in practice, because in both cases the individual will stretch themselves to do the best they can.
"People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines."
Tech doesn't value code because everyone knows it. There are tons of fields where your skills are still treated with Godlike reverence.
Cogent points: there is dilution of the coder's message (code is hard; skills are needed) by the fire hose of media including the internet.
So much of the public perception of programming has gone from "ooh, you do what? I have no idea how that works!" to "oh, you do that? Anyone can do that."
The world runs on software. Just think about it and it should be clear what are the necessary steps to take.
However I think the author fails to make the argument though that just because some 14 year old can learn JavaScript quickly with a service like codeschool, that means I could hire that kid to replace a senior level programmer with a deep understanding of design patterns, data structures, algorithms, etc. The claim to me states understanding a basic script is all you need to write large scale, complex software. I do not know about everyone else, but I picked up coding pretty quickly and picked up everything else about software over years of patient study so this seems suspect to me.
Software is not just about code, to focus on that makes our job look easy.
I also have some problems with the "credentials = professionalism" argument, but many others in the thread have addressed it.
Setting aside what is best for programmers and their "status," it seems to me that what business needs are hundreds of thousands of employees that have at least enough of a programming background that they can automate some of their most mundane and repetitive tasks. I used to work in finance and I would sometimes wander through the rows of analysts and account managers copying and pasting spreadsheet data and making charts and presentations deep into the night. It is time to stop that insanity, to expose everyone to enough programming so that concepts like loops and if/then statements are understandable.
I took a course a few years ago on an "enterprise" development tool and asked a question about how the sample code mapped to fields in the database. The disappointing answer was that I "didn't need to worry about that" because that is something that the database engineers and deployment engineers would handle. Apparently I was supposed to be grateful that my role had been compartmentalized. Now programmers identify themselves as "Language X Developers," or even by their project roles, e.g. "Implementation Manager," "Software Architect."
It is time to be a bit more bold. I am a Programmer. Capital P, full stop. Any language, any system, any project, any time.
Meanwhile wannabe "software engineers" are copy-pasting together web applications that store the personal information of millions of people without the slightest thought behind security or proper design.
We collectively wonder why there aren't more programmers... maybe the problem has never been a lack of education, but a lack of prestige and respect.
I'm sorry but I don't consider this to be a very compelling argument.
With this level of evidence it would be just as easy to argue that programmers today are given a higher status, and not looked down upon as geeky, despite the fact that it's easier than ever to learn about and become a programmer.
Sad to see this happening, but (unfortunately) being politic is more important in this century than used to be before.
Nowadays all the wannabees think installing a metric ton of shit from npm or the gem equivalents makes them a super productive brogrammer rock star developer. They have a single page website that requires gigabytes of javascript from fourty external locations to run a basic blog. They spend all day on github, but are borderline code unaware.
They argue lack of generics in go is good.
They are what the business and clients see, and that is why the people paying for software services end up labelling us all as muppets.
http://www.theonion.com/articles/sociologist-considers-own-b...
By and large I think having demonstrated skills in software development (and truthfully this means less that you can point to years of experience -- which may be 1 year of experience 20 times, or 20 years of experience -- or pieces of paper and demand respect) is just enormously powerful right now. I am incredibly, enormously grateful for the position I am in, and that my aptitudes as a child happened to bring me into the fold of something that ended up being one of the few careers where you can write your own meal ticket.
(redacted probably irrelevant comment)
EDIT: Part of the reason for this confusion may well be cultural. I am a US developer, and have heard similar "I get no respect" type rants from Canadian developers... often shocked by the pay and respect they can demand just a bit south.