top | item 3425942

Could Coding Become the Next Mass Profession?

79 points| zds | 14 years ago |also.roybahat.com

101 comments

order
[+] Nitramp|14 years ago|reply
Citation missing, but I've read a paper that claimed rather convincingly that you need a certain mindset both to be good at programming and to enjoy programming (unsurprisingly, this comes hand in hand).

It's not really problem solving, it's rather a specific kind of structured thinking. It's the attention to detail and the will to think through every aspect of an issue, to find a complete solution. That's also a useful skill outside of software or even engineering (I'd imagine law isn't all that different in that regard), but apparently it's really critical for software engineering. At the same time it's not necessarily linked to general intelligence or problem solving ability or creative thinking, it's just a particular way of approaching problems.

Said lost article had tests showing that only a small fraction of the population thinks this way, something below 10%.

Of course this isn't proven, but it matches with my personal experience. This always makes me very skeptical of things like end user programming, or programming as a mass profession. People without the skill can create programs, in particular in environments, but the results are usually quite fragile and expensive to maintain. "Real" programmers can usually create much greater value at lower cost, so there really isn't much of a point in employing lots of "not really" programmers.

[+] stevecooperorg|14 years ago|reply
I agree with you: what we think of as 'pro' programming -- writing large programs in formal languages and running it past an interpreter/compiler -- is probably only something the few will really get into.

However, there's a couple of exceptions to this idea I'm not sure how to handle.

MS EXCEL : It's a programming experience, of a sort, and is incredibly popular. I think it uses similar skills to writing code, but is just much more 'gentle' on the brain. There's a programming nature in excel formulae;

    =SUM(A3:A14) / COUNT(A3:A14)
if you see what I mean...

BASIC : Back in the 80's, everyone and his dog had a go at BASIC programming. Most of my friends and their dads got their hands dirty typing in programs from magazines. It suggests that getting lots of people involved in simple languages might be feasible.

[+] geebee|14 years ago|reply
I agree, it's both. I remember a donald knuth quote that about 2% of undergraduates have the mental quirks that make them good at programming. He didn't say "intelligence" or "talent", he said "quirks".

That wasn't just false modesty, there are a lot of factors that have to come together for someone to want to be a programmer, and some of them really do seem more like quirks than talents at times.

[+] Stormbringer|14 years ago|reply
Well, that may be true to an extent. The other day I was working with some code that was adequate for most purposes, but didn't meet my rigorous standards (hence: attention to detail and thinking through every aspect of the issue).

So I put on my "old age and treachery" hat, aka my puzzle solving hat, and came up with a better solution one that was:

shorter

simpler

more robust

The experienced programmers I know call this cheating, hence the "old age and treachery" (from "old age and treachery beat youth and beauty every time").

Smarts, puzzle solving and intelligence are all a critical part of that. And that's the thing that is the 10x multiplier that makes all your 'average' (median) programmers look distinctly below 'average' (mean).

[+] benvanderbeek|14 years ago|reply
I was talking to a (print) design friend the other day who's trying to learn to code. It's interesting to explain to a non-programmer what kind of person will/can become a programmer. If you don't love solving problems by digging and automating, then you will never be a programmer. As you say, not because of intelligence but rather desire and enjoyment.
[+] shimsham|14 years ago|reply
Was it Dehnadi and Bornat? (link in other comment)
[+] michaelochurch|14 years ago|reply
I don't remember and wasn't able to find it either, but I know which study you're talking about. There was a professor who gave his intro CS students an exam where they were supposed to interpret code. Of course, most of them had no idea what they were reading. The statement "X = X + 1" is (as a mathematical equation) garbage, even though it's legitimate in a conventional CS context (whereby '=' represents assignment). So almost all of the students interpreted the code incorrectly.

What separated the (future) successes from the failures was not how accurate their interpretations were, but whether they were consistent. The students who came up with consistent interpretations of these (a priori) meaningless symbols and could rigorously apply them were able to grok programming-- through trial and error, they picked up the actual meanings over time. The ones who weren't consistent, who just didn't "get" that these symbols had rigorous and inflexible meanings, were the ones who failed.

I actually think this style of rigor in thinking can be learned, even for average people, but it takes time. You can't go from zero to fluency in one semester. The problem (of American mediocrity in mathematical thinking, at least over the bottom 90 percentiles) is similar to what comes up in affirmative action debates: we're addressing it 18 years too late. In the US, many students never encounter mathematical proof or computer programming, except among the elite (e.g. USAMO, IMO). These aren't impossibly hard. Bulgarian and Japanese secondary students tackle proofs. Unfortunately, in the U.S., proofs are extremely rare in the secondary curriculum and computer programming is, if offered, an elective.

[+] noduerme|14 years ago|reply
The analogy here to law is spot on. My dad and two brothers were lawyers; I grew up in an environment where getting pancakes for breakfast on Sunday required parsing statements made days earlier and finding contradictions between them and the statements being made now. Learning to think that way, however, is not just another skill in an infinite toolbox of possible skills, all of which are equal and each of which you can be proud of in a touchy-feely way. Learning to think, and talk, and conceive in advance what you'll do next that way is akin to learning the art of war. The adaptation to programming is pretty minor. Programming is mickey mouse lawyering. The beauty of law is that someone's actually right; there's a logic at work, and teasing out the convoluted threads is your job. I can dig it. If I liked people more, I'd do it. But to say it's a preference or a happenstance aptitude, rather than a learned, honed, bludgeoned and beaten-in skill, is to seriously underestimate the people who are good at it.
[+] dasil003|14 years ago|reply
It's an interesting question how much of the population is really capable of becoming productive coders in a professional setting. Certainly we already have a wide class of coders doing things like advanced Excel spreadsheets which require much of the critical thinking required to write general-purpose code, but even there you find that there is a distinct subset of people who really grok it and break through the next level of creative problem-solving ability.

I would argue that unless you can break through that wall where you have the tenacity, will and base knowledge to debug anything that is thrown your way, you will not be employable professionally as a coder because inevitably you will get hung up on something. I'm not sure the obvious outward computer-geek level passion is required, but I certainly think you need a real sense of satisfaction with the problem solving aspect of the job. How much of the population possesses that? I'm not sure, but I'm guessing far less than half.

My prediction instead is that hackers will continue hacking until we achieve artificial intelligence, and then computers themselves will do the heavy lifting and we can all be creative directors. At that point we will have to contend with far more difficult existential issues such as how to structure society and happiness for a species that is evolved from a difficult struggle for survival in a world where automation accounts for every physical need. Maybe philosophy will be the next mass profession.

[+] kls|14 years ago|reply
I think the piece is overly optimistic about the prospects of coding becoming common place. We have dealt with the software crisis since the inception of software and up till now, no one has proposed an even half way plausible plan on how to address it. As such until someone solve the software crisis in a measurable way that can improve the quality and predictability of code. It will remain a craft, as such only the most skilled craftsmen will be of real value, with the less skill providing solutions that are far more expensive to maintain.

As well the for the majority of the population, writing software is just not attractive it's what technical minded people do, which is 10% of the population at best. Couple that with the fact that the industry up until now has not been that attractive to females and you start to see that there are a bunch of technical and cultural issue working against coding becoming the next mass profession.

The majority of people look at a logic puzzle and see frustration, they don't see a challenge that is interesting to solve. The minority that do, have the spark that is needed to code. Figure out how to give everyone that spark, and you may have a flame, but you still have to deal with all the other issues once you get the fire going.

[+] agscala|14 years ago|reply
I agree, and also I'd like to add something. While it's not really an attractive job to many people, it's also relatively difficult for most people. Farming is different in that it's easy for anyone to do (it's just manual labor). Realistically, you can't expect a large portion of the population to be capable of programming.
[+] swalsh|14 years ago|reply
This is of course assuming that programming in the future is exactly what programming today is. I find that hard to believe.

I'm sure that the edge of the programming will still have a similar feeling. However the vast majority of applications are pretty simple. I wouldn't be surprised if we see the process of creating those applications become dead simple, any person with a high school education can do it, and will do it. In fact it will probably become a part of the educational process... the way my education involved creating powerpoint slides, my kids will learn to make simple db queries (not necessarily in code) that can be accessed by a simple user interface made in a vb like environment.

[+] moocow01|14 years ago|reply
I think the shortage of software development skills really has to do with the lack of there being enough people who get impassioned with this kind of stuff. When I step out of my bubble I realize that its really difficult to find cultural-personality fits for what building software requires. Most people are just not like 'us' for better or worse. Most people don't get giddy over implementing a new algorithm or building an elegant framework, etc. etc. and probably never will.

Here is an exercise... flip the table and think if our industry was going away and you needed to find a job in a completely new industry/job role. Personally for me about 95% of the things I can think of make me want to immediately throw up... sales, medicine, advertising, law etc. - no thanks they are just not me. I've known people who have transitioned into tech from other industries chasing the money here... they are usually gone within a year or 2.

The other problem is despite all the crap about "I learned to code in 2 months" it is a really long haul to become good. Probably similar to becoming a good author or painter.

Lastly, it is quite well known that some people in software can have a lot of economic problems as they get older not to mention some of the cultural problems in tech in certain places that have been well covered here. I guess the point being that I think its really really difficult to do software development if your not genuinely excited about doing the day-to-day stuff.

[+] kenjackson|14 years ago|reply
I think the shortage of software development skills really has to do with the lack of there being enough people who get impassioned with this kind of stuff.

I was at a party recently I was asking someone about their work. I was really interested in how they solved certain problems, etc... We were probably only talking a minute or so when she says, "Can we not talk about my job and ask me about my car or some great meal I've had?" So I apologized and we talked about other things.

But it did get me thinking that at a random party I'd be happy to talk about my job/industry/etc... While I have a lot of interests, I don't think I've ever thought, "I'm tired of talking about programming or technology". Usually when I stop talking about it, it's for the sake of those around me :-)

[+] capkutay|14 years ago|reply
"When I step out of my bubble I realize that its really difficult to find cultural-personality fits for what building software requires."

I absolutely agree with this statement. When programming, you'll always hit brick walls; times when you're stuck and feel like there's nothing you can do about it. That's when your genuine interest in programming and serious attention to detail must get you past the hurdles. It's not something you can just learn in an Apress book or nettut.

[+] mahyarm|14 years ago|reply
Actually law and medicine would be interesting to me if it wasn't for all the hazing rituals and the down right sociopathic evil of the entire justice system. Law and accounting reminded me of learning a codebase when I took a few classes in them at university.
[+] gmartres|14 years ago|reply
Here is an exercise... flip the table and think if our industry was going away and you needed to find a job in a completely new industry/job role.

Mathematician, without hesitation.

[+] eternalban|14 years ago|reply
"Most people are just not like 'us' for better or worse. Most people don't get giddy over running implementing a new algorithm or building an elegant framework, etc..."

The question is if commodity software development -- you know, yet another 'book keeping' CRUD app -- requires any serious algorithm much less "new" ones. Serious creative mind workers are generally outliers, regardless of the field.

Programmers: http://atomictoasters.com/wp-content/uploads/2010/12/Telepho...

[+] digitailor|14 years ago|reply
"Better, because writing code is a creative act which can be done with or without a traditional (antiquated?) office-based job, and can create enormous personal and economic value."

This article emphasizes making, which I think is important. It reminds me of my great-grandfather, who came to the US from Poland and started a clothing manufacturing business (that still exists to this day). I learned to make custom-tailored clothing by being in the business.

There was an opportunity back then for anyone willing to learn to make something and sell it. There simply aren't too many of these kind of opportunities today. Coding is definitely one of them. All I have learned from tailoring- the act of making something from scratch- has helped me as a developer. And vice versa.

"Most academic training is focused on teaching students theory, not practice."

The maker type of entrepreneurship requires a practical, work-based education, and college doesn't always provide for that. You learn to make by doing. It's circular: You learn to make by making. The resources for learning to code are readily available, and anyone willing to start making their own projects can teach themselves.

Another thing school can't teach you is what to make. This is where learning to code comes in: if you have experience with something else, you can code tools for that something else.

[+] prophetjohn|14 years ago|reply
I have to seriously doubt this. Being good at programming requires a very similar type of brain as the one required to be good at mathematics. The argument is often "if only programming were to become standard curriculum which everyone is required to learn in some capacity, more people would be programming-literate."

Mathematics, in some level, has been required at all levels of education for quite some time and yet very few people can become proficient at anything at the college algebra level or above. If programming were to become as commonplace in our education system as math is, I believe you would see much the same thing. Many people would be able to memorize enough rules to get through the basics, but once it comes time to show that these basic concepts are understood in the form of applying them to more advanced concepts, you're going to see more people failing to get by, just as you do in anything other than basic math classes.

I certainly couldn't imagine a career becoming mainstream that requires mid-level calculus, or even algebra, and certainly not advanced analysis and proofing. By the same token, I find it hard to believe that any profession that requires understanding more than basic computer science concepts (simple looping and conditionals, no OO) will become mainstream. However programming today (writing a Rails app) is significantly different than it was 10 years ago (writing massive programs in C/assembly), so it's possible that programming becomes much easier than it currently is.

[+] qdog|14 years ago|reply
Chemistry, Engineering, Mathematics, etc. all existed before coding. So far, the number of people willing to do hard 'mental' tasks has been pretty low. More than a few people I have known haven't gotten into working with their brain that much until later in life, once they decide that the types of jobs generally available to the unskilled aren't what they want to do.

3 months to learn to code Java? I shudder to think of think kind of code those places produce.

Maybe people can learn to make database queries maybe, but most problems I've been asked to solve quickly morph and start requiring a lot more to get working, even to accomplish tasks that seem 'simple' on the surface.

If coding was simple to learn, UML->code would work flawlessly (as in a tool that generates code from UML). I don't think this has proven to be the case.

[+] zyb09|14 years ago|reply
Of course! It's gonna be THE profession. I imaging in the future more and more things will be doable in 'software'. For example, manufacturing factories will be so automated and full of robots, that you can actually start building assembly lines in pure code. Subway & Railroad systems will drive completely by them self, controlled by code. Container ships & harbours might operate someday purely driven by software. Bottom line: Demand for coders is gonna explode and someday all we need is just coders.
[+] moocow01|14 years ago|reply
Sorry but I have to completely disagree that someday all we will need is just coders. Code is just a way of getting a computer to do something specific. So what should a computer do? Usually a computer should do something identified as valuable. So who figures out what is valuable? Typically everyone else... business people, researchers, administrators, doctors, analysts, etc. Having just a bunch of coders would be essentially worthless in that we will always need people in other roles to figure out how different techniques can be applied in different fields. After that is identified, the coders can then get to work on figuring out how to get a computer to do it.
[+] floppydisk|14 years ago|reply
Unlike prior shifts in national economies, coding--good coding at least--does not lend itself to the application of mass labor unlike manufacturing. In the prior mentioned shifts, hunter/gatherer --> agrarian and agrarian --> industrial, you could teach someone to do one or two repetitive jobs without consequence to the rest of the system. Every night at 5, shovel hay from loft to stall or every time a piece from machine A emerges, screw this knobby on and insert into machine B at a 45 degree angle. I would posit that coding requires far more awareness of the greater system as a whole. Changes made in one branch of the code will have a rippling effect throughout the system.
[+] gexla|14 years ago|reply
Nope, never a mass profession. Here's why.

1. This partially depends on which area of programming you are talking about. The web development industry is not an area which sees mass hiring. Most web development shops are small teams or one man shops. Running a web development shop is very hard because you have to make a living from running your business as opposed to punching a clock at work. Web development is difficult enough, add all that is required to make a living off it and that cuts the number of people who are able to make it by quite a bit. The article mentions Elance and Odesk jobs which pay "$15 to $20 or more per hour" but the only people who are able to make a living off those wages are living in low wage companies. In the U.S. you might as well be flipping burgers rather than attempting to live as a freelancer at those rates.

The same could largely be said for startups, mobile apps, etc.

2. How many coders does companies such as Google and Facebook have compared to the peak of companies such as Ford? Coding is not and never will be the sort of mass employment industry as manufacturing has been.

3. Coding requires a great deal of self motivation to learn and keep up with. Most people aren't willing to put in the effort that this requires. I learn by doing and I have never had the patience for books, classroom learning or even tutorials. Most people can't pick this stuff up without the sort of structured learning environment which doesn't work well for learning how to code. The number of people who are willing to put in this effort is likely the same percentage of people who are coders today.

4. The labor crunch in the coding industry is not just a crunch of people who know how to code, but rather a crunch for coders who are near the top. The industry could find plenty of people if they are looking for mediocre developers, but that's not where the jobs are going.

5. Knowing the basics of coding for working magic in spreadsheets isn't the same as being handed the keys to commit code to the crown jewels of the company. No matter how many people who know how to code and no matter what the basic expectations are for prospective employees, there won't ever be a significant increase in the number of people who are able to write the code which drives the company.

If the industry needs more coders, then probably the best solution at this point is to be more open to remote developers. That will increase the pool available. Education will also increase the pool, but not on a massive scale.

[+] rpwilcox|14 years ago|reply
> but rather a crunch for coders who are near the top. The industry could find plenty of people if they are looking for mediocre developers, but that's not where the jobs are going.

Exactly: to me the talent "crunch" seems to be for: Rockstar/ninja programmers will 10 years experience that live in the SF Bay area.

... and then they wonder why they can't find people.

[+] jcizzle|14 years ago|reply
I don't think programming in its current form will become similar to unskilled labor. The important part about the examples at the beginning of the article (construction, factory workers) is that there were engineers (smart experts) behind the innovation that simplified a task so that an unskilled laborer could do it.

Can programming become so dumbed down that anyone could do it? Sure, there are plenty of tools out there that are "App Makers" for whatever platform/genre you want. But are those tools churning out apps that make a company? I haven't seen one.

The thing about software is that it is a ton of small pieces put together to create something new and unique. Factory workers put together a ton of small pieces, but to create something that has already been invented. A car, for example, has a specification created by smart people and put together by unskilled workers and machines.

[+] brikis98|14 years ago|reply
My guess is that in the next few decades, not knowing how to code will be equivalent to being illiterate. This doesn't mean everyone will get paid to write code, but I suspect there will be far more programmers in the future than now.

Of course, coding in and of itself is likely to change dramatically, as languages will gradually support higher and higher levels of abstraction, making programming more and more approachable for the average person. But no matter what the code looks like, a strong grasp of logic, problem solving, and how software works will probably become a fundamental skill in society.

http://www.quora.com/Does-the-computer-programming-professio...

[+] groby_b|14 years ago|reply
Coding? Maybe. Actually developing new software? No.

What is the difference? "Coding" is applying the tools you have to solve a problem that is in an already solved class of problems. (I.e. use VB to slap a quick UI on a database)

Developing new software often means solving a new class of problem.

There's nothing wrong with that distinction - coding certainly has value. But it's an important one to keep in mind. Both for your career, and for businesses that employ one or the other kind of developer.

But I'd argue that "coding" as outlined above is more the new literacy than the new profession. It is an ability you will need to get any job done well.

[+] ZoltonVonMises|14 years ago|reply
I certainly hope it does not become the next mass profession. I don't understand people that want everyone to learn to code. Its simple supply and demand, friends. As the supply of coders goes up, demand for my services go down.
[+] danso|14 years ago|reply
Maybe that would be the case in other professions...but as a coder, I would LOVE to have more people involved in it. I think programming is one of those areas in which a rising tide lifts all boats.

I find that most of my time is either dumbing things down (i.e. printing the output of a relational database into a flat spreadsheet or worse, a PDF) for those who barely understand basic Excel or attempting to parse such dumbed-down information from other systems. If it were status quo in this world to understand the concept of delimitation and meta-data, my ability to create even more compelling applications, visualizations, and analyses would be greatly multiplied.

[+] nradov|14 years ago|reply
Sure there is room for more people to become software developers, but let's not use the word 'profession'.

Quote from Steve McConnell:

——————————

According to legal precedents, a profession has:[1]

· A requirement for extensive learning and training

· A code of ethics imposing standards higher than those normally tolerated in the marketplace

· A disciplinary system for professionals who breach the code

· A primary emphasis on social responsibility over strictly individual gain, and a corresponding duty of its members to behave as members of a disciplined and honorable profession

· A prerequisite of a license prior to admission to practice

——————————

http://www.stevemcconnell.com/psd/06-novumorganum.htm

Software development in general hardly meets those qualifications. There are plenty of professional software developers, but software development is not a profession. This is a critical distinction, not just semantics.

[+] contextfree|14 years ago|reply
If programming (or CS concepts) were to become part of common literacy, that wouldn't necessarily mean programming qua profession would be the next mass profession. Writing is part of common literacy, but professional writers aren't a huge portion of the population. There are a lot more people who write in the course of their work in some other profession, though.
[+] philwelch|14 years ago|reply
There are a lot of people who program in the course of their work in some other profession. Most engineers can hack some Matlab, at least. But the bar is much higher--most engineering professions are at least as intellectually challenging as programming.
[+] BrokerChange|14 years ago|reply
Farming became obsolete because of economies of scale.

Factory work became obsolete because of economies of scale.

Manufacturing became obsolete because of economies of scale.

What do you think is our generation's economy of scale?

I think the near future will involve making it possible for anyone, even those without a technical background, to quickly build beautiful internet products.

What do you think is the next big leap? What would make coding obsolete?

[+] jbester|14 years ago|reply
Obsolete is a strong word. What happens in these industries is that they get split into the high-end (organic farming, small order manufacturing) and the mass-production low-end. Yes in many ways margin have fallen but overall production has gone up, way up.

That being said - retail seems to be our generation's victim. In the last decade, we've replaced media consumables with digital equivalents. This alone has mostly killed music, book, and movie rental stores. It's not just retail stores but retail services - tax prep, insurance, and financial services. Some of this took place in the 90's, but it continued in the 00's and it will continue in the 10's.

[+] damian2000|14 years ago|reply
The big thing when I was studying 20 years ago was "CASE" tools - computer aided software engineering tools, 4GLs (fourth generation languages) and later UML - these were going to make developers job nothing more than designing pretty diagrams in a tool which spit out the nicely polished code at the end. Nothing has come of any of these technologies. If anything the coding landscape has become more fragmented and difficult than ever before - just look at the plethora of Web Development Languages, JavaScript, ObjectiveC and the fact that C/C++ is still the most popular language out there.
[+] gnaritas|14 years ago|reply
None of those things became obsolete, they just moved to cheaper labor pools.

> What would make coding obsolete?

Nothing except full blown AI.

[+] drumdance|14 years ago|reply
I think there are certain skills that strongly overlap. I never studied programming, but I did study music. I've seen that pattern many times. So perhaps students at music schools should consider developing secondary skills in coding. I certainly wish I had done that.
[+] mycodebreaks|14 years ago|reply
This is a tough job, most people don't want it.

People like to be lawyers and study business more instead of becoming programmers.