Were we ever considered professionals? There's no test - all you have to do to be a software developer is declare yourself to be one. There's no overarching professional organization or boards, therefore incompetents aren't de-certified and national lobbying isn't coherent.
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.
> There's no overarching professional organization or boards, therefore incompetents aren't de-certified and national lobbying isn't coherent.
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.
Lawyers, doctors, and engineers are all required to pass tests before they can practice. They prove their competence before they can even begin working in the field. Furthermore, they are required to take continuing education classes for the duration of their professional careers. 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.
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.
> Lawyers, doctors, and engineers are all required to pass tests before they can practice. They prove their competence before they can even begin working in the field.
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.
> Lawyers, doctors, and engineers are all required to pass tests before they can practice.
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?
I don't know what you do for a living, but as a programmer, I meet incompetents who should be expelled from the profession all of the time. Aside from incompetence, I don't want to share a profession with programmers who would help create a surveillance state for the NSA, any more than the medical profession should tolerate doctors who work for torturers.
The question is about programmers being considered professionals, though, not what I'd prefer. I'm happy with my check and my title.
My point wasn't that there are no incompetent programmers.
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?
>there are fewer incompetents than in other professions.
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.
There are a bunch of reasons why strict membership would be problematic.
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.
Realtors certify through a moral test rather than a professional one. The test is simply a way to define a minimum standard, and a way to expel immoral incompetents.
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.
There's no test - all you have to do to be a software developer is declare yourself to be one. There's no overarching professional organization or boards, therefore incompetents aren't de-certified and national lobbying isn't coherent.
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?
None of the above. If you look at professional self-regulation in traditional engineering, the focus isn't on competence. There is usually a very mild verification of basic fundamentals. In our world that'd probably translate into "what is an array"?
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.
Actually there is. If you are a software developer, you are skill laborer. If you are software engineer - you have the PE / FE exams. In some states its even illegal to call yourself a softare engineer (or [insert word here] engineer, without having an "engineering" degree. Secondly, the major problem to start out with is the proper business definitions / rules for which the software is designed for. Because software devs/*neers have a more "generalized" tool building education (either/or work experience / degree education), the understsanding has to come from both sides - we explore the capabilities and compare that to the process you are trying to map for your industry. But I digress ...
> If you are software engineer - you have the PE / FE exams. In some states its even illegal to call yourself a softare engineer...
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.
Searching for that I found that the Software Engineering exam for PEs was introduced in 2013. I doubt that any states require it yet, if they do it's probably a provisional thing (way too many people that should qualify that won't because they haven't taken the exam yet, that's time and money to get certified, be stupid to require it after only 1 year of availability).
Then let me clarify. Software Engineering PE / SE was before the certification (as you state) known primarily as Eletrical Engineers with Computer Science concentrations. My university only offered a CSE specific degree in the last 10 years (I believe, anyway).
The issue is that you don't need to be chartered professional software engineer to get virtually any programming job. That isn't true for other engineering professions.
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.
Not really I worked at a top 5 civil consultancy and the majority of engineers where not chartered it takes quite a few years of professional work to achieve that status.
and its more about "who you know not what you know" to quote my dad
I am not an engineer, but have a good friend who is an engineer doing nuclear reaction cooling systems. He worked in the industry for close to ten years before getting his PE, and only did it because his employer asked him to (I believe it helped them get a contract). Based on my conversations with other engineers, other industries (ME, EE, CE) seem to operate in the same way--some employers don't require the exam at all, others may push to have employees take it within some period of time after hire.
Right, because PEs usually play out in higher-level industrial "type" projects. Government, I think requires PE/FE in a lot of situations. The other part of this, is that you take the PE/FE exam TWICE when you leave college. One is right after college, and then you work under a PE for 5 years (if I'm not correct) as a "mentor" then take it again after 5 years. You have to be registered under this PE, as well. The certification is like the other applied engineering disciplines - where it says you are accountable for what you make. But you already seem to know this from side conversations.
True but a lot stop or drop out as did I did I started as the mech eng professional apprentice doing day release - I also looked at going down the experience route for the BCS but they keep changing the rules and did not seem to do anything worth while.
>the freebies they get are so baked into government
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).
> "e.g. In my case the only thing I hear from my prof org is messages with a "comply or else" tone."
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.
>What exactly do you understand under freebies [for 100y+ prof org members]?
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.
Not only foreign competition, but domestic competition as well. This is how successful cartels operate.
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
>Realtors have gone further by trademarking the very term(TM)
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.
Without necessarily disagreeing with your point, it's interesting to note that software developers bear almost zero liability in practice for all the buggy software they write, while even big name law firms get sued, and lose, regularly on malpractice claims. If Microsoft was as "protected" from malpractice as lawyers are, they would've been sued out of existence for Windows 95/98/ME.
The core problem here is the legal system allowing software companies to successfully disclaim all liability for their software products. Traditional manufacturers can and do get sued over defects in their products.
One of the benefits of being unprofessional, I guess, is that the products of our labor are generally considered products of the corporation we work for rather than us as individuals.
Google, SAP, etc, get sued for things like breach of contract, patent infringement, etc. A lawyer or doctor can get sued for his or her work not meeting the expected standard. Imagine the following bug: a variable can take on values of RED, GREEN, and BLUE. You write a switch statement that fails to consider BLUE. Your product crashes, causing your user $5 million in business losses. You get sued for software malpractice, for failure to consider an obvious alternative case.
Well I wasn't really suggesting it as a good thing necessarily. I like the spirit that ethical/competency self-regulation instills in the legal profession, but I'm not sure whether the ultimate market impact is a good thing or not. On one hand, I think the financial industry has suffered from a lack of such regulation (e.g. Goldman advising clients to buy certain products while taking an adverse position themselves). On the other hand, the potential liability and need for insurance creates barriers to entry, driving up prices. Given the staggering potential losses from software, professional malpractice insurance probably wouldn't be cheap. But on the third, alien, hand, I think licensure also has a downward effect on the cost of legal services, by making lawyers more fungible than they would otherwise be (in the absence of licensure, the market might come to rely on an even rarer signal of credibility).
The economic dynamics of licensed professions are a bit more complex than either side of the "developers should be professionals" debate really appreciates.
>The only benefit I see is accreditation (admittedly a large benefit)...but that is hardly a freebie (took blood, sweat & many tears).
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.
To write software, you used to have to be a physiscist. Or a least a mathematician with a deep understanding of why the registers were working.
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.
I don't think your history is really quite correct in its nuance. Programming as an actual trade emerged quickly in the 50s. The 60s saw the rise of computer science degrees, often coming from either the Math or the EE side. During the 50s and 60s, the computers had tons of people working with FORTRAN/COBOL (& others) to churn out business code. This accelerated in the 70s. There were armies of basic programmers out there. It only takes flipping through Dijikstra to realize that these people were not super well trained.
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'm sorry, but the truth desperately matters in your account. Timelines are very important in understanding how knowledge flows from group to group and from generation to generation. In particular, these things need to be highlighted:
- 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.
How do these differences change the crux? We are in the process of the industry splitting into technicians and developers and this is overall a good thing?
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, 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.)
I think I gave an account of history that is accurate enough on a first order approximation, and it is history as parable to come sideways until I got to the key point of: specialization is a good thing.
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?
You could've made that point and probably gotten a decent enough discussion out of it, no harm done.
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.
It really isn't that hard to do basic research to test your assumptions. If you don't do it for us, at least do it for yourself. A good story is all of accurate, insightful and entertaining. Yours is mainly the latter, lack of accuracy relegates the insight you were hoping to convey to bullshit.
It is not hard. But it is also not justified by a cost benefit analysis of the situation (this is after all a comment thread on hn). I gave a historical parable about not getting high and mighty when the industry advances its abstractions to the point where less years of study are needed to efficiently build things.
If you feel my level of detail takes away from my goal of providing a relatable parable, please let me know how.
Two general trends I've seen since the 80s. Not entirely different than your observations, but a little different.
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.
Adding 'technicians' is not a bad thing, because like you said it lets us focus on the real problems. The 14 year olds can configure their blogs and fix peoples' computers while we write the software to send spaceships to Mars.
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.
I remember seeing a documentary on ford where craftsmen who built non-interchangeable-parts cars bemoaned the loss of craftsmanship in the assembly line method. Bitching and moaning about progress finds a way, even with the most rudimentary of tech.
"assembly leading to c leading to python and JavaScript" - it sometimes baffles me why people decided that basic code quality doesn't matter any more and we ended up with script-like languages... Definitely a strong contributor to the subj problem. If the dev world went the OCAML way we could maintain a stronger professional image...
London definitely has an exaggerated case of this (Nathan Barley really is far too close to home regarding the way he treats Pingu), but it's happening everywhere.
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.
Why do developers resist being professionalized? Are we really all so naive to think that the world will grovel at our feet for the rest of time?
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.
"I'm having a hard time thinking of any downsides to professionalizing"
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.
NB: It might be applicable in very small niche areas - safety critical systems etc.
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.
For example, in the United States, the Federal Aviation Administration is responsible for reviewing and signing off on aircraft systems. Documents DO-178B (and now DO-178C) describe the overall methods by which software that runs in avionics systems needs to be developed.
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.
It depends what you mean by "very hard" - a quick google suggests that in 2012 over 40 doctors were struck off in the UK and I suspect that the number for lawyers struck off or where they had their firm closed would probably be rather higher.
Journalists are only professionals in the same way hookers are. As Baldwin said “Power without responsibility — the prerogative of the harlot throughout the ages.”
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
Stephen Glass tried to get into the California Bar Association but was rejected, probably because of his past history as a reporter for The New Republic. Don't know what that has to do with either hookers or Rupert Murdoch.
> 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.
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.
Scribe is a lovely choice. The modern equivalent might be editor. They are now essentially unemployable with the advent of word processors, which make everyone think they can write. Thus all the illiterate menus, signs, fliers that pervade our world.
"If you're ambitious and good at office politics and self-promotion, it's entirely possible - maybe even easier - to pass from junior programmer to executive management without actually passing through a stage of technical competence. It's a sort of turbo-charged Peter Principle that operates in the software industry."
This feels so true at every business and academic institution I've worked for.
Honestly, the reason that programming is getting a reputation for being easy is because it is easy. That's entirely the point of computer programming. If writing a program was harder than doing it by hand, we would just do it by hand.
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.
Programming is easy in the sense that you can get huge results from modest effort. So a clever, hard-working individual can quickly build software much faster than that same individual can build a bridge.
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.
I think Zed Shaw nailed it with respect to this topic:
"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.
It's not hard to see at least some of the angles it probably comes from. It's popular for politicians to bank on things like "everyone should learn to code" for publicity; outsourcing makes development look like a cheap commodity and a second thought; bottom of the barrel "website in a night" generators are crap, but they're cheap and easy, and most people can't tell the difference; websites like codeacademy present the image of a skillset you can pick up effectively in your downtime.
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."
So reading this it seems the primary argument against programming as a professional career is that entry level programming is becoming more accessible to a wider audience.
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.
I agree with you, but I think that "entry level programming" is unfortunately much further away from the general public. I can still roll over to my Apple //e, reach around and flick the power switch, and be right into a BASIC prompt so that I can start typing in commands. Writing a game in the mid-80s meant a text adventure that would eventually be printed out and published in magazine. The first game that I ever bought was "Ultima" and it came on a floppy inside a resealable gallon kitchen bag. I talk to middle school students all the time that want to know how to code their first FPS before they have even got Hello World up and running.
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'm sorry, but this sounds like sour grapes. If you build software, you're an exogenic source of that erosion too. You've created tools that have made it easier for the next person to contribute. This practice makes software development unique and exciting. There are plenty of competent and incompetent engineers and self-taught developers alike. The currency of expertise is not exclusive to post-secondary accredited programmers. It's earned with results and hard work.
I wonder if any of this is related to the growing hyper-specialization in the industry. When my dad finished grad school in engineering he did a lot of work in military radio communications and engineers were expected to be able to design all of the equipment (including certifying the plans for the transmission towers) and get the entire system working. Being a "programmer" used to mean something similar, we took responsibility for getting everything done.
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.
His only evidence of this so-called erosion of status is that anecdotally some non-technical folks got management jobs in tech companies and some journalists were ignorant about programming.
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.
<i>If you're ambitious and good at office politics and self-promotion, it's entirely possible - maybe even easier - to pass from junior programmer to executive management without actually passing through a stage of technical competence.</i>
Sad to see this happening, but (unfortunately) being politic is more important in this century than used to be before.
In the old days people thought about design, the wrote software, they supported their product.
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.
As he posits some may conclude, it does just read like bitter sour grapes...yet I've been professionally programming since 1995. Is someone casting their own lot as the lot of the world?
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.
Couldn't agree more (and wonderful link). The article was so disconnected from my reality as to be confusing.
(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.
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.