Could Coding Become the Next Mass Profession?
also.roybahat.com
also.roybahat.com
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.
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.
Is there an example of expectations changing around programming or automation, specifically? Programming, as opposed to computer literacy.
I suppose what I'm wondering is, why is there such a barrier to programming? People are more and more comfortable with complex apps, but not really more liable to fire up some kind of text editor... It's quite a jump to make on your own, I think -- say, going from Excel formulae to VBA macros, or using a WYSIWYG HTML editor to coding JavaScript.
1. Set an alarm on a phone
...
4. Basic Excel formulae
5. Excel Wizard
...
7. JavaScript copy-paste coder
...
10. Professional programmer
The original post suggested that there are more and more incentives for people to push themselves up the ladder. I don't think it'll necessarily mean a whole segment of people people jump from 2 to 10; rather, I think peopel trying to get an edge in the job market could shift up a bit, taking the distribution higher. So Excel users will become Excel wizards, word processor users become HTML coders, etcOur society has grown to be incredibly complex. Imagine taking your great-great-great-great-great-grandfather and dropping him in modern times today and asking him to fill out the forms to get a drivers license, prepare his own taxes, set the clock on your dvd player, or send an email on an iPhone.
I guess my point is that the "common" man is pretty capable of feats that would be considered extremely technical from a historic vantage point.
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).
Call what cheating? You haven't described anything that could even remotely be called cheating.
The law is not written in a formal language (in the mathematical/philosophical sense), and interpretation/semantics is not derivable from its representation in text; meanings derive from squishy brains responding to the text.
Having said that, I find it to be a very apt analogy; the idea behind "rule of law" is an aspiration that the law should be more like mathematics or programming rather than an ad hoc collection of rulers' decisions.
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.
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.
Actually it could be perfectly valid, depending on the context.
For example, if + denotes the boolean AND and 1 is true, then X = 1.
"We now report that after six experiments, involving more than 500 students at six institutions in three countries, the predictive effect of our test has failed to live up to that early promise. We discuss the strength of the effects that have been observed and the reasons for some apparent failures of prediction."
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.
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.
Then you look at the code of the people who are attracted to coding, and 'capable' of it and pale in fear of how bad the code is (even if it works).
Not everybody back then were smiths though, just like not everyone today will be programmers. Programming definitely has a great impact on society (like smithing did), but if you consider the incredibly important impact that farmers have, they hardly even compare.
Common, have you ever tried to plant something?
THAT is difficult!
Any profession could become a mass profession.
I have a small grain farm and also develop software professionally. I find software development is the easier of the two, personally.
Problems in software all go back to the rules of computational theory. It's not exactly easy, but the space is fairly limited and can be understood with some effort.
Problems in farming are all over the map. Sometimes you have to engineer a new piece of equipment to get you out of a jam, other times you're dealing with biology, medicine, mechanical work, sales, you name it, you probably have to deal with it. And you need a solution now. By tomorrow, your profits for the year will be gone.
True, although, technically speaking, that work still exists. The programmer just delegates it to the computer instead of having people do it. There is no reason why you couldn't have an assembly line of humans hand-compiling your programs, if you really wanted to. Once you give them the basic rules, they can set forth and complete any task that you ask of them. It is just repetition at that point.
Farming is quickly going in the same direction. The delegatable jobs are, more and more, being done by machines.
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.
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.
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.
I think most people today think school is suppose to teach them F(x) so that they can just go out in the world and apply F(X) over and over and make a living. They are missing the point that they need to be creating F(x), G(x), etc...
Of course, this also means there is a definite, clear feeling of accomplishment and progress.
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...
MDA, Software factories, etc., are imho the way to go, but unfortunately, there is strong resistance in the current generation to "ceremonial" architectures and methodologies (which are /unfortunately/ a requirement for that to happen, in my opinion).
A lot of the really bad practices that hit us with long-term costs come from this era... and a lot of the misconceptions we have about programmers being nerdy anti-social types come from those personality tests, because they didn't test whether you'd be a good programmer... they tested whether you would sit in a production line and push buttons repetitively without talking to others.
So... no, I don't think that a return to the factory model is the solution. It's been tried and it really did not work. I think that software is big enough of a shift that it warrants removing the traditional business hierarchies and ceremonies of authority, and to create a new model that is not the old factory model.
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 :-)
It actually sucks in a lot of ways because talking about work is an ice breaker, even for people that don't like talking about their work. For me, somebody asking about my work just adds another relational barrier.
As you say I am interested in how other industries solve problems, particular how technology is being applied to help (or hinder) their workflow. Often people who work in other industries just accept workflow processes for how they are and aren't really interested in thinking about how they could be improved. Not that someone working at a big company really has the power to enact these kinds of changes but they are interesting to discuss.
How many people in other industries blog about their profession in their own time? And not just about their day to day, but about new things they've found or interesting things they've figured out.
People want to go home and leave work at the office, but it's not at all uncommon for a programmer or developer to carry on in their spare time, working on their own stuff. You probably started off your career as a hobby in the first place.
Sometimes it can be hard to switch off when plenty of other people manage it fine. It seems almost implausible to imagine a fellow colleague who wasn't interested. I also think that specialist journalism is another profession that almost expects 'extra-curricular' interest in the field.
Well this behavior isn't limited to those involved with software development. I'd say that this is the case for any profession that involves the formulation and then creation of content, ideas, products etc.
Take this guy for example: http://www.slate.com/articles/arts/culturebox/2012/01/the_be...
A lot of other fields necessitate a customer in order to perform, such as medicine.
Mathematician, without hesitation.
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.
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.
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.
Consider, let's say, manufacturing. We have pretty much nailed down the details of how to automate a factory. Still, we do not see that the world manufacturing has been dominated by the most technologically advanced countries. When you automate, you have to pay upfront for your robots (with a ROI measured in years). With human operators, you defer payment until after you have collected the benefits of their labor (in terms of finished product inventory, not revenue). Not that it has not been tried, car companies tried to pull it off in the 70's, because in the books it looks like the robot is an asset, while the payroll is a liability. But they all discovered the hard way that cash is king and have been struggling with imminent bankruptcy ever since.
Instead, the big powerhouses are less advanced countries with large pools of young workers and weak labor laws. There a manufacturer can get started with much less capital and pay as it goes, instead of building these huge, high-maintenance, illiquid capital investments. And when the market shifts (and it always does) they can retool an pivot much faster too.
Apply the same logic to economic activities where bussiness processes are not throughly documented or even understood (like crafts and professions), or those which depend on contingent uncontrollable factors (like agriculture), and you will see that the idea of a fully automated society is beyond human reach.
Maybe if we manage to build a super-intelligence to solve all these problems for us, we may have a chance, or maybe there are fundamental limits that just cannot be overcome. But in either case, as of today, I think this is more science-fiction than actual science.
I agree that not all workers will end up being programmers, but a shift towards automation is inevitable as routine human labor will eventually be too costly and inefficient, regardless of the location. China is already starting to show signs of rising labor costs due to an improving economy and a shortage of labor. I would bet against human labor in the long run, as counting on lax labor laws and a population of workers who are willing to tolerate abject poverty as a method for keeping production costs down seems like an unsustainable solution.
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.
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.
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.
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...
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.
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.
Any time a resource becomes less scarce, it's value drops.
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.
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?
> What would make coding obsolete?
Nothing except full blown AI.
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.
I was hoping to drive home the point that while coding is the "it" thing right now, eventually someone will build a framework that makes having a technical background moot (similar to the power YouTube has given to the home movie producer or music artist).
I think you may be right in regards to the retail prediction. Amazon is going to continue to absorb the majority of retail sales, especially as baby boomers (the highest spending demographic in history) completes the retirement cycle and diminishes disposable income in the market.
People like to be lawyers and study business more instead of becoming programmers.
Which program is that?
And I don't mean that everyone should be able to understand assembly. I'd almost be happy if the average person can understand what makes a comma-delimited file parsable by Excel. Seriously...try asking someone who is not in the computing field about that.
Certainly "coding" will increasingly become prevalent in more and more professions. But that says little about whether the coding equivalent of "chefs" will be more numerous or not.
It's as much the ability to find the dots as it is being able to connect the dots to make a usable picture.
I think some of the more basic, entry level, spec-based maybe development could become available for the masses, but until we do a better job of training people to engage and develop both heir creative artist and creative scientist, I'm not sure.
I'm a mid-level coder. I bill $100-$150/hr. freelance. I specialize in cleaning up the messes left by the Indians and Romanians they hired the first time. I turn their disaster into a functional app, or website, on time and on budget (a budget about six times what they thought they'd be paying, but still not enough for the aggravation). It's a hellishly difficult job that makes me want to pull my hair out by the roots; but I'm good at what I do.
I DIDN'T go to college, and I never took a class in programming. And yet there are only one or two other guys in the world I'd trust to work on my code. So all of this, really, is bullshit. It's nice, but it's a lie. Either you're born with the kind of screwed up brain I have, that lets you see through the code, or you're not. They can commodify everything and turn everyone into a product, but they can't make more of us.
This is a little off topic, but this statistic is a bit disingenuous. The stat implies that Americans are dumb because they can't locate a country on a map, despite the fact that we are heavily engaged with that country. However knowledge of foreign policy and of geography are two different domains. A person could read an article a day about the Iraq war without ever looking at a map of the mid east.
Yeah. And I wouldn't trust the foreign policy knowledge of such a person.
A person not interested in checking out for himself the geography of the place of war, and even the culture and history of the enemies, is just an idiot being force-fed news stories.
Yes, but not because they are dumb.
It's because you're NOT really at war with Iraq, and I mean not in the sense that other countries are at war.
What happens is that your central government sends some (paid) troops to fight 10,000 miles away. And they fight some states with minimal arsenals, tiny air-force etc, or tribal/urban guerrillas. Now, besides the families and friends of your troops, this "war" doesn't affect the general population at all. There are no counter-measures or attacks by the enemy in your soil, no adverse effects on economy (except some overspending), etc.
So people in the US, from Idaho to New Orleans, could care less if there is a war happening or not. Even the "support our troops" is mostly a goodwill/political statement, a self-adhesive ribbon for your car, not a matter of life and death.
Now, what happens when two countries go to an actual war, historically, is much more grave: hundreds of thousands (or even millions) die, their cities are bombed, there is compulsory drafting, thousands of refuges, food shortages and a huge toil on the nation's economy. You haven't see any such war, at least since WWII (and even that one you fought with minimum impact, --with the exception of Pearl Harbor--, thanks to the US's convenient distance from Germany/Japan).