Software Creation Mystery -

Can Computers Beat Human Programmers? Part 5. Future of human programmers

Part 1. Gaining processing power
Part 2. Becoming intelligent
Part 3. Interacting with humans
Part 4. Building useful programs
Part 5. Future of human programmers

Computers don’t retire, overreact and complain. They could in minutes get all the knowledge accumulated by other computers. They could work 24 hours without making stupid mistakes. They make more and more human jobs obsolete. It is inevitable, computers will replace programmers in many areas. Even more, if Strong AI, capable of reasoning and understanding meaning, will appear, programming as a profession will be almost eliminated (at least coding part). Customers will be able to describe their needs directly to a computer. Computer AI will be translating these specifications to machine code (and stronger AI will require less formal specifications) and relentlessly building the software system.

Does it mean that that at the some point in the future software developers will no longer be needed? It could be true, if customers could specify exactly what they need and can effectively collaborate with AI to build the system. But things are not so simple, especially with non-trivial problems and humans (assuming that customers and users will be still humans). There are three roles that software specialists could play in the future even with powerful computer programming AI.

  1. Translators
    Customers often have difficulties describing what they need, lack knowledge of how to interact with computers to get solution right. Not all of them can formulate concepts and ideas suitable for consumption by AI. Software developers could be effective partners in discovering, refining and translating customers needs for computer AI.
  2. Innovators
    Many of the best human achievements are the product of intuition, irrationality and ability to go beyond rules and established theories. Coming up with novel, breakthrough and beautiful solutions is one of the most exciting parts of the software development. Indeed, effective and most useful software systems require creativity, innovation and aesthetics. Left brain thinking, purely rational and logical, is not enough for building these solutions, especially for human users. Can computers acquire these abilities, break encoded rules and become better than intuitive and creative human programmers? It is a big question.
  3. Advisers
    Every system have some purpose and fits into some context. Customers will require people who understand the big picture: problem domain, emerging concepts and IT environment. People, who still understand how computers operate and what is possible and makes sense. People, who can answer ‘Why’ and ‘What’ solutions are required in addition to ‘How’ to implement them.

Present and Future

Daniel H. Pink in his excellent book A Whole New Mind writes:

“Programmers will have to master different aptitudes, relying more on creativity than competence, more on tacit knowledge than technical manuals, and more on fashioning the big picture than sweating the details.”

We’ll need to supplement our well developed high-tech abilities with high touch, which:

“involves the ability to create artistic and emotional beauty, to detect patterns and opportunities, to craft a satisfying narrative, and to combine seemingly unrelated ideas into a novel intervention. High touch involves the ability to emphasize, to understand the subtleties of human interaction, to find joy in one’s self and to elicit it in others, and to stretch beyond the quotidian, in pursuit of purpose and meaning.”

Modern trends in programming are not in the areas of enhancing sophistication of building software systems, but in making easier to manipulate and understand these systems by humans. Complexity of the modern software systems and problem domains makes software development difficult endeavor for our relatively small, delicate and easy to confuse brains. Programmers have challenges to transparently represent customers ideas in the software code and avoid complications specific to technical platforms. Effective software teams try to overcome disconnect between technical and business perspectives on the system:

  • use agile practices focused on speed, business value and rapid feedback from customers
  • apply Domain Driven Design and Domain Specific Languages for representing customer ideas and concepts
  • develop with high level languages suited for describing programming logic closer to human language (Ruby, C#)
  • write automated executable specifications for describing and testing domain logic (Fit, Test and Behavior Driven Development)
  • leverage existing commercial and open source solutions to bring business value faster and concentrate on core problems instead of spending effort on secondary.

Alex Iskold in The Future of Software Development says

Equipped with a modern programming language, great libraries, and agile methods, a couple of smart guys in the garage can get things done much better and faster than an army of mediocre developers.

I believe – the future software teams will be powerful small units (similar to special forces in army) of diverse highly capable professionals. Remaining software developers will be domain experts, professional communicator and creative innovators understanding well both business and technology.

Computer Science will be attractive again and people will value profession of the software developer as prestigious and one of the most important for human civilization progress.

Interesting Resources:
A Whole New Mind, Daniel H. Pink
The Future of Software Development, Alex Iskold
The Extinction of Programmers, Hans-Eric Gronlund

AddThis Social Bookmark Button AddThis Feed Button


[…] some day, they reach their goal. It sounds awesome, no doubt about it, even more, I can imagine it: high-speed big machines creating algorithms to resolve complex problems in a bunch of nanoseconds. Some of you could be thinking: […]

Pingback by Searching for the good programmer Howto « Cibertito’s Weblog | April 26, 2009 12:41 pm

[…] y quizás algún día, lo logren. Suena genial, sin duda alguna, es más, puedo imaginarlo: enormes maquinas de alto desempeño creando algoritmos para resolver problemas complejos en un puñado de nanosegundos. Algunos de ustedes podrían estar […]

Pingback by En busca del HowTo del buen programador « Cibertito’s Weblog | April 27, 2009 4:20 pm

This blog have little value without you and your comments, thoughts and discussions. Please, leave your comments. You are welcome to debate and criticize any idea, but, please, don't attack other people. Thanks for your contribution!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Subscribe without commenting

Software Creation Mystery -
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .