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

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 34

This is a good question, but I don't think you take the appropriate approach.

The goal of programming is to take advantage of programming languages to be able to talk to the machine, or to put it simply, understand how the machine works to make it do something we want.

Programming languages are there for that and they ease the job a lot, but as computers become more powerful, it is obvious that we can do a lot more thing in the same amount of time, and the problem is different.

You friend maybe meant that tools and libraries available speed up the programmer's task, and he maybe means that "don't reinvent the wheel" applies to most softwares, and thus programmers are just people who reuse existing stuff to deliver the right final application, just making adjustments. It is still a job, and it doesn't mean there are less things to do, because as computers go more powerfuls, you can implement a lot more, not just making it more precise.

When thinking about the future and OOP, there are a lot to think about what is possible considering metaprogramming and AI: I don't think the road of computer languages is really "done" (I'm sure there is still to invent about semantics and programming languages). And to be able to have really smart machines, we would need neural networks, something which is not yet possible with the current computer architectures and power.

When we will come across such smart machines, maybe they will be able to solve programming problems, but for now, there are just softwares that ease solving them, we are still far from automatically solving them completely, and I guess it's more a problem of memory size and bandwidth than a lack of processor power.

share|improve this answer

Computer programs that can observe what humans do on a computer, and then extract the repetitive aspects and automate it. For example, if you always follow a certain direction of thought when you reply on the social network, a computer program will be able to automate that for you.

Computers that can pass the Turing Test to a certain degree (that is, it can initiate and respond to a meaningful dialogue), as long as the human does not use certain tricks to exploit known weaknesses of it.

Similarly, CAPTCHA and other devices used to separate human from computers will eventually be broken one-by-one, but new tests will replace old, broken tests.

Almost every person will know how to "program" a computer to a certain degree, as it becomes part of the elementary education requirements.

The "obsolete-ness" of the STEM education (science, technology, engineering, mathematics) will eventually improve and catch up with the latest knowledge, thanks to community-driven learning systems and online availability of education materials.

The arrival of the golden age of Computer Vision and Natural Language Processing, which leads to the next tech bubbles, followed by their decline, their renewal dubbed "Intelligence 2.0", eventually reaching application maturity.

The everyday work of professional programmers will remain the same, except that there will be more and more domain-specific languages, and tools with finely-divided foci.

share|improve this answer

I expect that we will climb one more abstraction level up, in the sense that we will write programs unaware of the specific physical machines they will run on, or of how many different threads of execution will be needed.

Current examples of this trend include:

  • Google's map/reduce infrastructure
  • Web client programming, where the "proper" way to do things is to avoid having hardware/software requirements but instead try to deduce what functionality to launch by querying the run-time environment (aka graceful degradation).

I expect that this trend will drive a stronger stratification in programming skills, as others have pointed out. Each additional abstraction layer makes it harder to be knowledgeable enough about each layer to make meaningful contributions. Even now you'd have a hard time finding a kernel developer who can write high-quality web applications, or vice versa.

share|improve this answer

Embedded programmers will still be coding in C, maybe C++. ;)

And us crusty old-hands will still be telling newer programmers just getting into embedded architectures to 'read the assembly' to learn it.

share|improve this answer