Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Think of the profession 30 years ago.

When one single guy was able to code a whole computer game alone!

Will offshoring will finally take over? Will languages be so high level than our added value will be reduced to zero? Will it be a profession like lawyer or doctor? Will you still be a programmer?

Please extrapolate and predict based on historical and current trends.

share|improve this question
add comment

closed as not constructive by Jeff Atwood Dec 18 '10 at 12:28

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

34 Answers

up vote 18 down vote accepted

I think there will continue to be an ever growing gap in the skillset amongst developers. Eventually to a point where we have a more pronounced 'caste' system than we do now (ie. assembly programmers talk down to/about web developers).

Historically, specialization has been seen time and again in every sufficiently long-lived field. Medicine is a prime example:

  • It's difficult
  • It requires plenty of schooling
  • But schooling isn't nearly enough to be any good at it
  • Every facet of the development field will have specialists
  • But we'll still have 'GPs' (General Programmers :) )

It's already started to happen.

share|improve this answer
4  
No need to wait 30 years for that. Within 10 years your desktop computer will have like 50 cores. Are you up for parallel programming? –  zneak Oct 6 '10 at 23:38
3  
+1 zneak: I'm up for it and excited for it! –  Steve Evers Oct 7 '10 at 0:51
2  
+1. This has more or less already happened. Think of how meaningless it is to say that a person is "in IT". It's about as meaningful as saying a person is in the "health field" - like everything from an orderly, to a dentist, to a brain surgeon. The spacializations in IT are so huge as to render the idea of being "in IT" pretty much meaningless these days. And development is about as vast as counting everything from a dentist, to a GP, to a podiatrist, to an optician as being "in health care". –  Bobby Tables Oct 18 '10 at 22:24
show 1 more comment

Programmers are problem solvers, not typists.

Just because someone can drag and drop a CRUD app, doesn't mean they can do it correctly, or in the right context. Either way, programmers identify problems and solve them. That's what we do. Most of our time in development is spent thinking about problems and the best way to go about solving them, not typing code. Programming in the future may look a little different, just like we have more advanced IDEs and code generation, but thought, analysis, and critical thinking never goes out of style and will be in-demand far into the future.

share|improve this answer
13  
Well said. There's heaps of stuff which we autogenerate as part of our work as programmers today, which in the past would have been painstakingly written by hand. Like the CRUD plumbing to hook an app up to a database. Doesn't mean there's no programming work to be done, just means that what we are expected to do is more advanced and complicated, now that we don't have to waste as much time with the grunt-work! –  Carson63000 Oct 12 '10 at 0:46
23  
+1 people that still think that programmer will be replaced, are the ones that will be replaced –  user2567 Oct 12 '10 at 5:48
6  
General purpose AI has been a failure, nothing yet produced indicates any real progress towards that goal. –  Winston Ewert Oct 12 '10 at 13:46
3  
@Lie Ryan I don't think any of those indicate movement towards general purpose AI. I think they are all special purpose solutions with nothing indicating a solution to the general AI problem. I.E. we can write software that can do any one thing, but we cannot write software that can do anything. Maybe I'm wrong, but for now I keep my cynicism. –  Winston Ewert Oct 12 '10 at 15:50
3  
If perfect AI is created programming won't be the only job made redundant. –  Gelatin Oct 14 '10 at 16:05
show 16 more comments

Rsteckly, your skepticism is entirely justified. I'm afraid your friend's opinion is almost as badly informed as my dad's 1971 remark: "Computers are a fad. They'll go away in a few years."

Yes, they were saying "programmers will be obsolete" in the 60s - in fact, ever since there were programmers. The reasons have varied, from the advent of compilers in the 50s to SaaS in the last decade. but I've heard that myself many times since my dad made that quip when I first took programming in high school. (One of my personal favorites was that COBOL was going to put all the programmers out of work because business majors could write programs with English-like statements such as ADD ONE TO I instead of i++.)

However, in the real world, every advance in software development tools and methodologies has just created more jobs for programmers. That's because things become possible that weren't before.

I'm not too worried about my career vanishing due to automated software generators. I've mostly worked in C and C++ since 1985, am even now turning down work, and fully expect to be writing code in C-derived languages in 2035. And I'm sure at that point, when I'm 77, some young whippersnapper will be confidently predicting the imminent demise of the programming profession, and I'll shake my cane at him and tell him "Get offa my lawn!"

share|improve this answer
11  
+1 COBOL + Business Majors = WTF++; –  Morgan Herlocker Oct 12 '10 at 4:32
12  
I shudder to think what shape our economy would be in if bankers wrote the software used in the financial services industry. –  Huperniketes Oct 12 '10 at 7:28
13  
+1 for telling people to get off your lawn! –  dr Hannibal Lecter Oct 12 '10 at 8:17
show 1 more comment

Weren't they saying stuff like that in the 60s? We never got there, and likely never will. It takes a certain mind to precisely decompose problems to such a degree that they can be expressed algorithmically. The programmer's ability is this precision, and this will always be required even with some fancy abstraction that hides the precision that any unique bit of software requires.

Practically speaking, the abstractions of "development-free" development tools generally only address small subsets of the programmers domain. When moving to larger scale problems, these frameworks become inhibiting, and the only way to express the design of one's program is with a set of symbols that is sufficiently large to describe it. Generally, a programming language is the best choice when you reach this point.

share|improve this answer
5  
+1 for the second paragraph. There' always the trade off of "instant app generation" abilities and flexibility. Companies' needs can be vastly different. –  Ryan Hayes Oct 12 '10 at 0:28
1  
I wish more programmers had that certain mind to be able to decompose problems... –  dash-tom-bang Oct 12 '10 at 22:27
add comment

Programming is not disappearing, it's just evolving.

In the 60s they said programmers were going to disappear BECAUSE the idea of programmer was tied to the one of "board". The boards were about to disappear, hence they said programmers were too.

In the 80s they said programmers were going to disappear BECAUSE the idea of programmer was tied to the one of assembler. Usage of assembler was about to disappear, hence they said programmers were too.

In the 90s they said programmers were going to disappear BECAUSE the idea of programmer was tied to the one of writer of desktop applications. Desktop applications development was being automated by new powerful IDEs, writing programs using a pure text editor was about to disappear, hence they said programmers were too.

In the XXs they will say programmers will be going to disappear BECAUSE the idea of programmer will be tied to the YY idea. When YY will be about to disappear/change, they'll say programmer will be, too.

We will not disappear. We will just debug different crap :)

share|improve this answer
3  
+1 for the last sentence. My kind of humor... –  Paperjam Oct 12 '10 at 16:39
1  
Yep. Love the last sentence. Sums it all up nicely. +1 –  spender Oct 13 '10 at 0:12
show 1 more comment

I'm pretty sure that if you ask this question to a roomful of programmers (i.e. here), the answers are all going to say "YES!"

The hidden question is, Why do non-programmers persist in thinking that programming will become obsolete?

Allow me to quote Bob Murphy, who hit the nail on the head but didn't really expand on this point:

One of my personal favorites was that COBOL was going to put all the programmers out of work because business majors could write programs with English-like statements such as ADD ONE TO I instead of i++.

Putting on my armchair psychologist hat, there are a few cognitive biases at work here, most notably the focusing effect and a lot of wishful thinking. You could argue that there's even a bit of Dunning-Kruger in there. To make some sense of all this jargon:

  • Non-programmers, and especially those without aptitude for programming, have no understanding of what actually goes on inside a programmer's brain. At the extreme end, you have people who only understand "work" as manual labour.

  • Being largely blind to the mental processes, they fixate (focus/anchor) on the one physical process that they can see: code. They place an incredibly disproportionate weight on the relatively trivial task of writing code. They assume that this is the entire job, or at least the Hard Part, and that anyone who understands all of the different code words can write it. This line of thinking is largely responsible for the Hollywood representation of "hacking" (SEND SPIKE anyone?).

  • Thus assuming that they know all there is to know about programming, even if they can't actually do it themselves (see Dunning-Kruger), they become incensed that such a simple process could be so expensive and error-prone and look for ways to reduce expenses and headaches.

  • Unsurprisingly, they fixate on activities that abstract away the "coding" aspect and, through much wishful thinking, assume that it is going to make programmers obsolete and that they'll be able to save a ton of cash.

  • Sometimes, if we're lucky, their endeavours - despite being useless to the general business community - actually turn out to be useful to the programming community and get co-opted as productivity-enhancing tools.

Of course, most of us spotted the error all the way back at bullet point #2 above. But for the sake of those who have trouble articulating it, I will elaborate:

The mechanical act of writing code is actually one of the least difficult tasks a programmer must do. The real difficulties lie in:

  • Interpreting requirements that are vague, ambiguous, conflicting, incorrect, or impossible;
  • Determining edge conditions and exceptions, and how they should be handled;
  • Breaking the project requirements down into a series of components;
  • Further breaking down the components into a series of subcomponents, and so on;
  • Working out how, specifically, all of the [sub]components will interact;
  • Optimizing the design for maintainability, testability, adaptability, and performance;
  • Analyzing bug reports to determine the cause (but generated apps will be perfect, right?)

Simply put, this is a sentient process that simply cannot be replicated by a machine. The mechanical act of writing code, sure, that can be automated, and has been; many of us use code-generation facilities on a regular basis, like generating a proxy to a web service or classes for a database schema. The rest of it is design; to repeat the analogy we've all heard and used so many times, programmers are the software equivalent of architects and foremen in the construction world; all of the actual construction work is already being done by the computer.

Well, maybe not all, but certainly most. We can always improve and are improving upon the labour-intensive aspects of programming, one great example today being the state of ORMs. They're not perfect, but they've gotten pretty damn good. On the other hand, if we can't even rely on "simple" programmer-assisting tools like ORMs to do exactly the right thing 100% of the time, then there is virtually no hope of using an automated tool to create an entire application, unless said application does practically nothing.

People who say that programmers are becoming obsolete generally believe that you just need to write a detailed enough specification so that the computer can interpret it and produce a full-fledged product. Of course, that "specification" would have to be in a standard form in order to eliminate all possible ambiguities. And it would have to use a specific syntax, in order to avoid all of the problems associated with natural-language processing. And what do you call a formal syntax for fully-describing the specifications of a software product? A programming language. And who is going to write the "specifications" for this language? Programmers!

share|improve this answer
show 2 more comments

Automatic: Ok so i want to input this list and get the first word of everyline. Ok it doesnt know what i want so i have to say give me everything before the first tab. Ok done simple enough

What if you have a speadsheet with first, middle and last name. Easy enough ask it for column row 1 and 3. Great now i want to email them, so i'll ask it to email this letter to everyone. But now i want to personalize it with their name. Yeah there will be an option or template for that.

But now... How do i email people who has NOT bought an HD tv but has spent $2000 5-10years ago but not <5 years and has bought something from our gadgets section ignoring people who only buy in other sections (such as furniture). Complicated GUI maybe?

Now lets have each person that clicks a special link to our site report how many times its been clicked and by who. Also lets have the site tell us what day and time people usually click our links

Now where is that button that lets me get their name, auto replace the text in my email and have the site email me the time everyone clicked their link. Theres no button for that? How the heck do i modify the website or give it that info. How the heck do i template the email?

This is stupid. Someone else should do this. I am only here to write ads

Problem solving is not everyones thing. Sure it make sense to us, but does the process of writing successful ads make sense to you?

What if a problem wants the report and has no website. Like have the email email you back when someone clicked it. Why ISNT there an option for that? Theres tons of missing information as well as someone not knowing what they want.

-edit- oh and did you realize i was just talking about writing an email and asking it to tell me when my customer clicked it. Thats suppose to be simple, right? but it has got to have......

share|improve this answer
2  
Like the example, puts it into perspective. –  billy.bob Oct 12 '10 at 9:46
add comment

When programmers are obsolete, so everyone else will be. As soon as an automated system can program other automated systems and reason as a programmer would, solving problems and implementing those solutions, what purpose has man? None. Welcome Skynet, the future is yours.

share|improve this answer
add comment

The place I work has experimented with moving reporting duties over to business people. Basically, they are using Crystal Reports to churn out some business data. Last I heard, the business person in charge tried it for a week, utterly failed, and then the reporting went back to the programmers. Crystal Reports is more or less code free (there is the Crystal Syntax for basic boolean operations), but good luck to anyone who wants to use it without any knowledge of data structures or the patience of a programmer. (Some may say that programmers are impatient, but anyone who can work with Crystal successfully is patient by definition IMHO).

share|improve this answer
add comment

... he thinks programming will become completely automated in several years.

IMO, he is wrong. People have been predicting this kind of thing since the 1960's. It hasn't happened, and probably won't happen during your professional lifetime.

What is happening is that programming is gradually bootstrap to higher levels of abstraction, with low level fiddly / boring / tedious programming tasks being performed using generators.

So in 5 or 10 years time you may find that most programmers don't write DAO classes, don't fiddle around with HTML and CSS, and so on. But there will still be programmers who figure out what needs to be done to get the computer to do tasks for normal folks. And programmers will still need to do application-specific programming in more or less conventional programming languages, because, for instance

  • no generator designer can possibly anticipate the functional of all organization, and
  • some problems are too hard to do automatically.

As an example of the latter, we don't know how to build generators that will automatically produce efficient, scalable systems.

The other factor in this equation is that as software technology (e.g. generators) gets better, we are constantly pushing to do bigger and more complicated things with it. So, where in the 60's we implemented payroll systems, etc in COBOL, now we use MYOB or SAP to implement these and a myriad of other standard business apps. But we are now building systems that do things way, way beyond that.

Maybe in 50 years time, computers will be intelligent and won't need to be explicitly told what to do and how to do it.

share|improve this answer
add comment

I think in the long term, as hardware capabilities evolve (e.g. massive parallelism and millions of cores) programming languages will move away from "telling the computer what to do" and move towards "describe the problem, and the computer will compile a solution" - that is, less imperative and more functional.

A good compiler can be programmed to translate something into effective machine code that takes advantage of your hardware if it knows what the program is. It's a lot harder if it needs to infer things about the program from what it does.

share|improve this answer
4  
Except that 'describing the problem' in sufficient detail, will be no different than programming the solution. –  Steve Evers Oct 5 '10 at 22:34
1  
@SnOrfus: Sometimes, describing the requirements of the problem is simpler, clearer and more concise than specifying the solution, granted you have a system that can understand the requirements you specified. E.g. in C#, declarative: var underagePeople = people.Where(person => person.Age < 18); vs imperative: var underagePeople = new List<Person>(); foreach (var person in people) if (person.Age > 18) underagePeople.Add(person); –  Allon Guralnek Dec 18 '10 at 11:09
show 3 more comments

In 30 years, programmers will need to know Quantum Programming in languages like Peter Selinger's QPL. They'll need a good understanding of Physics (esp. Quantum Mechanics), Math (esp. Fourier and Functional Analysis, particularly the Hadamard transform), and functional programming (like Haskell). The bit will be out, and the qubit will be in.

share|improve this answer
1  
I suspect qubits and QC will for many decades remain very specialized. QC will have its place, perhaps (i hope) in the massive physics simulations like weather prediction and processing radio astronomy data, but won't ever be as economical as plain on/off bits for general computing. –  DarenW Oct 7 '10 at 3:25
1  
For the foreseeable future (and thirty years counts here), quantum computers will be far more expensive to build and run than conventional computers, and they don't offer that many advantages. There are important algorithms that can only be run on quantum computers, but most of the time you'll be better off with regular bits. Besides, there really won't be that many people available with a good understanding of QM and the math you mention. –  David Thornley Oct 18 '10 at 21:49
show 2 more comments

That the job of programming can theorically be automated (especially on easy things) - yes. There's aldready a lot of code generator and I see that automatic code generation is probably a hot topic for the future.

In a few years? I don't think so.

That it will make programmer totally obsolete? I don't think so. We will need highly competent programmer to write the program to automate it anyway. Lots of code monkey could be made redundant though.

That it will happen before the automatisation of a ton of other high-paying job? I don't think so either.

What's your friends job exactly?

share|improve this answer
show 14 more comments

"No silver bullet" essay by Brooks (also included in 2nd edition of "The Mythical Man Month") says that no single technology/method/process/idea can bring 10 times productivity in programming within a decade. This has held true since the very beginning till now. He explores various technologies/ideas that promises to bring in such productivity like AI, OOP, Automatic Programming/Code Generation etc and explains why they cannot bring in 10 times productivity within a decade. How can one eliminate programming completely, when we are still struggling to increase productivity?

share|improve this answer
add comment

It is 2011 and just about every programmer I knows still has to parse strings.

If we still have to parse strings I don't think programming goes away anytime soon.

share|improve this answer
add comment

My crystal ball says that after 30 years from now:

  • Multicore would be the norm.
  • All softwares will be massively parallelized.
  • Programmers would have embraced immutability. Mutability will be the new goto.
  • Functional programming would be the major paradigm.
  • Data flow machines would have become popular.
  • Programmers would still be the most arrogant animals on the planet. :D
share|improve this answer
add comment

Yes!

You can be sure that as soon as Google perfects the technology to automate web site evaluation., it will turn its prodigious energies to this problem.

share|improve this answer
1  
I believe in PigeonRank and why can't this be expanded to programming. The marketing big wigs do consider programmers as "typists". –  Nickz Oct 12 '10 at 22:40
show 1 more comment

Salaries are declining?! No one told my boss yet, apparently, so keep quiet about it! ;-)

share|improve this answer
add comment

To put it short: "Programmers will soon be obsolete" is a meme which basically goes along the lines with "there is nothing new to invent anymore". And I really hope nobody here thinks the latter.

share|improve this answer
add comment

Automation is about rules, reality is about exceptions. That's why programmers (and business analysts) need to analyze each project "from scratch" (at least to some extent).

When you look at how programming evolved in the last years, all the things that got automated are about rules. They take some workload off from the programmer when it's about rules, leaving it up to him to code the logic for exceptions. That's why you often need to adapt auto-generated code to fit your very requirements.

We could say, the art of programming is processing the exceptions to a set of logic rules, so that a framework, library, compiler or the CPU can apply those rules to support the business.

In short: There will always be a need for someone who asks for and points out the exceptions, transforms them into rules for whatever fancy automated code-generating system they will be using, and I'll call these people "programmers".

share|improve this answer
add comment

As programmers, we all know that a computer can only do what it is told. Who's going to be telling it what to do?

share|improve this answer
add comment

In the 1950s, assemblers were built to automate programming. In 1959, COBOL appeared, with the promise of eliminating programmers from business applications. People have been predicting the end of programmers for over sixty years now, and so far it hasn't come true.

What has happened is that the job has changed. Given COBOL instead of machine language, programmers could do more business applications, and with the falling price of computers it became possible for more enterprises to get computers and more functions to be automated.

In the 1980s, there was a belief that so-called fourth-generation languages would eliminate much of the need for programmers. These languages were special-purpose, and generally either couldn't or shouldn't (think Excel macros before VBA) be used for general programming. I watched a minicomputer acquisition that was supposed to do magical things with quarter time from a business analyst wind up with four full-time programmers and a backlog.

The real breakthrough of the time was shrinkwrap software, which a customer would buy and tailor his or her business procedures around. Lots of businesses bought into that, but didn't wind up laying off programmers.

Nowadays, code generators and wizards are nice, but they're simply compilers, taking some sort of source code (whether text or dialog box entry) and compile it to a high-level language. Like all forms of automatic programming, they translate one set of discrete inputs to a lower-level output form, requiring something very like a programmer to create the discrete inputs.

One thing that has happened is that programmers have become far more efficient. If there was a fixed need for programming, then, yes, there would be fewer programmers. Instead, the demand continues because there's always more work to be done. On the reasonable premise that there isn't a limited amount of programming that needs to be done and then nothing more to do, programmers will be in demand for the next sixty years also. I don't know what languages and tools they'll be using, but they'll be there.

share|improve this answer
add comment

I think Ryan Hayes said it all "Programmers are problem solvers, not typists." 4GL was meant to replace 3GL and remove programmers. " the term 4GL was first used formally by James Martin in his 1982 book Applications Development Without Programmers". 4GL was around in the late 60s and 70s.Today it's a 3GL programming world, and there no sign of 4GL or anything else. Perhaps in the future most programmers will only be analytical problem solvers however they'll always be a market for low-level programming.

share|improve this answer
add comment

30 years ago there was no Internet.

You think anybody from back then could imagine anything like this site?

The same may happen again...

share|improve this answer
add comment

I have a few programmer friends that look at this very bleakly, that we are essentially coding ourselves from relevance by creating so many tools that negate coding. I do not necessarily share this view.

share|improve this answer
1  
A compiler is such a tool (so you don't have to write assembly). Not many compilers put programmers out of business... –  user1249 Oct 17 '10 at 12:19
show 2 more comments

If the tools get to where they can do more complex stuff automatically, we'll still need programmers to put those components together into yet even more complex interacting systems. Every tool that programmers have thus far developed to make programming easier has increased the total amount of work programmers have to do, directly or indirectly.

share|improve this answer
show 1 more comment

I suppose, programming business mainly has been consolidated inside such big corporations as Google and MS last decade. All the stuff used to be developed by different small group of programmers last years is captured inside big companies now, so yes, programming business will gradually go away. But this is the case not only in programming, but in many other areas as well, as a result of globalization. Partly I agree with the opinion at http://programmers.stackexchange.com/questions/11153/will-programmers-be-around-in-a-few-years/11156#11156

share|improve this answer
add comment

From the beginning the trend is to automate more and more programming stuff, from manually setting actual switches to making holes in a piece of paper, to type assembly instructions, to type code which will result in assembly, to generate code from a nice UML diagram, ...

Anyway, there is a step that will never be automated: gathering the user needs and translating them correctly in something to feed programming automatons.

And don't forget that there is almost always losses between what the user actually needs and what he expresses, between what he says and what the gatherer understands, and between this understanding and formalisation.

share|improve this answer
add comment

Automatic programming does exist even today, this field is advancing very rapidly. I've used it to some extent. But I do not programmers will go away, they will probably always be needed - no matter what.

Even if the automatic programming systems gets so advanced that they can solve any problem, there must be a very logical thinking man or woman - a programmer - there who can define the problem with logical statements, and they must also define a function that tells the computer when it has hit the sweet spot.

So we will stick around unless people start thinking straight and speaking Lojban to the AI.


EDIT: Did I forgot that this is going to need tremendous of processing power? Some stuff actually goes faster to solve today with automatic programming, others it is not worth it as an programmer is way much faster.

Automatic programming is best used where it is hard to define a solution but easy to define when the problem is solved. Note that I say when it is solved and not to define the problem.

Basically the computer is using very much brute force to solve a problem, whilst a programmer thinks out a way to solve the problem. Of course the search time is minimized because a programmer defines a function that measures how close to the solution the generated algorithm is.

In order for an automatic programming system to be able to program anything and everything on its own, it must:

  1. Have a way to automatically be able to define a fitness function (based on what someone tells it).
  2. Understand some kind of language that a human can use that is logical (a programming language for an example, or maybe Lojban). A non-logical language would probably be too unpractical.
  3. Have a great reference of every function it is never going to need, and probably a way to improve on that, as there is ought to be bugs there.
  4. Be totally bug-free, or else we are placing us on a security risk when giving a program such much knowledge and responsibility if there is no one standing and watching over its shoulder.
  5. Have a tremendous amount of processing power, I'm really stressing this one, right. I really mean it.
  6. And everything else I've forgot, please fill in for me.

It would probably take another 150 years before that system is available, probably then all would speak Lojban because people were sick of misunderstanding each other ;)

But the question is, would we be ready? Fear for the unknown is a big part of being human, and it is not something that is that easy to get rid of. Some of us are more open than others, I'll not say that I'm perfect on that point either. Maybe more than others, and less than others (I've been afraid of going outside of my known programming paradigms, but I've broken loose and started to learn a language that does stuff different).

What I mean is that people are going to be afraid of that they will accidentally create SkyNet or the HAL computers that turned on humans, SkyNet thinking that humans are parasites and HAL though that the crew was risking the mission. HALs top priority was to make sure that the mission were successful, when its priority one should have been the crews safety.

Even tough it could be possible to get all this things right who would want to do it? Programmers would not want to make their replacement; Unless of course it would mean that everybody would live in an Utopian world and only do the things they like and have food automatically served on the table.

I would want to travel to other planets and galaxies (if that were possible).

share|improve this answer
add comment

This is exactly what my father (first generation programmer) said to me, when I told him I would study computer science 25 years ago.

share|improve this answer
add comment