Skip to content

Programming in 2027?

What will programming be like in the year 2027? Will there be any programmers, or will everyone be a programmer? What programming languages and methodologies will we be using? How will teams of programmers do their work? What changes in our world will affect programming? Will climate change or advances in technology and education set a new course for programming along the way to 2027? Will economic and geographic changes affect programming? How can One Laptop Per Child change the world of programming by 2027? 

At the Software (Shareware) Industry Conference 2007, last week in Denver, Michael Lehman (Microsoft MicroISV evangelist), told me about James Martin’s 21st Century School at Oxford University, founded in 2005, is encouraging students and faculty to focus on future challenges.  “The goal of the School is to develop strategies for responding to the most serious problems, some of which even have the potential to threaten the future of humanity itself. At the same time, we also seek to harness the most promising opportunities facing the world in the new century.”  In his recent book, James Martin, The Meaning of the 21st Century, Riverhead Hardcover (August 3, 2006), examines issues and challenges we face. The school program exhists to help train the next generation kids to be the leaders in a changed world. Software technology will play a large role in our future.

How will programming evolve beyond the objects, functions, components, interfaces, contracts, web services, mashups, and rich internet application architectures that we are using today? Concurrent programming will definitely be available in every computer and device with the rise of the multi-core processors. At the recent JAX India conference, Neal Ford, ThoughtWorker and Meme Wrangler at ThoughtWorks, compared human and business domain specific languages from different industries in one of his sessions. At Starbucks for example, you can hear customers order coffee using the Starbucks domain language. Try ordering a "Venti Mocha Half-Caf No-Whip Ristretto Extra Hot" and see what you get. Could the programming language and IDE of the future integrate hundreds of domain specific languages and services?

Should we all move (back) to Smalltalk and Squeak programming with its affinity for real world programming, workspaces, persistance, state, objects and more that have been refined over the past 35+ years? Alan Kay’s quote, "The best way to predict the future is to invent it" should be the guiding light for all of us. Alan Kay and his team are pursuing wonderful research at the Viewpoints Research Institute.  The focus of the institure is to "to improve powerful ideas education for the world’s children and to advance the state of systems research and personal computing".

How can everything with software talk to everything? What protocol(s), what interfaces, and what interactions will be needed.  Is Roy Fielding’s REST all that we will need as a network-based software architecture? How can we automate everything? MDA outlines ways of transforming models into lots of other forms. Intentional Programming attempts to xxx. How can we easily transform thoughts, ideas, intentions, and brain activity into running programs?

I’m doing a keynote at the November EclipseWorld 2007 conference, November 6-8, in Reston Virginia. I’m looking for as many "Programming in 2027" thoughts, wacky (or not) ideas, “out there predictions“, and critical issues as you can post in blog comments or send via email to davidi@codegear.com. If I mention your post or email in my keynote, and you’re at the conference, I’ll buy you dinner.

{ 10 } Comments

  1. John Jacobson | July 17, 2007 at 4:43 pm | Permalink

    Going back to 1987 and comparing programming then with now leads one to the conclusion that not much will change. Some geniuses will come up with great new ways to program that will largely be ignored by the corporations that pay programmers’ salaries, and programmers will whine about how they always have to learn a new language, though nothing truly new will have happened in the meantime in terms of new languages.

    Programming languages seem a lot like religions. They don’t really change, only the names of things are different. Everyone thinks their favorite is the only logical choice. Programmer form irrational attachments to all these distinctions without a difference.

    Programmer pay will probably soar for the higher levels of experience and drop for the lower, as demand increases for programmers that actually know what they are doing.

  2. Joao | July 17, 2007 at 6:13 pm | Permalink

    I do not think one laptop per child is going to change programming. A small number of children from devloping countries might become hackers because of everyone having a $100 computer all of a sudden. But the real change for that will be political; they will access international news and information. That is why this is so important.

    But on to your question: in 2027 everyone needs to learn to program, or at least understand the potential of what a computer can solve. Otherwise, no one can know know when automation could fix a problem they’ve had. So the language does not matter, it is a *way of thinking*.

    If you are going to teach, students just have to be having fun and realize the ideas. Think of Logo (I know, it’s old) or Toontalk for that:

    http://www.toontalk.com/english/edtech.htm

    Squeak is for adults only—too confusing—I know Java well but still don’t get Smalltalk. As cool as Squeak is, I wish they would give this up, no one understands it.

    For serious engineers, I don’t think text files is how programming should work in 2027!! Imagine writing your graphics in postscript by hand instead of using Flash; that is what it is like to code right now and it’s a mess. For solving this, I like Intentional Programming that you mention ("xxx", did you not finish your post?). Vapor seemingly but this is where I’ve gotten excited:

    http://youtube.com/watch?v=tSnnfUj1XCQ

    To summarise the long video quickly for you: better features emerge if there is a structured understanding in the editor. Great idea but still no product to buy, some academics used it and there are books.

    What will the future look like for a programmer? Experts will always use what’s best, you don’t need to worry about them. It’s the kids who are learning to become experts, that’s what the focus should be. In 20 years let’s hope it works out that they are smarter than us, and have mastered the basic understanding of algorithms!

  3. daniel | July 17, 2007 at 6:51 pm | Permalink

    cool… thanks di

    you are always great!

    d ;-)

  4. David Howes | July 18, 2007 at 1:57 am | Permalink

    My predictions for 2027:

    ————————

    1. Nick Hodges will still be pointing out that people were predicting

    Delphi’s death since the 1990’s.

    2. People will be complaining that Lightspeed Software (the new

    company name CodeGear adopted to convince people it had changed after

    its disasterous Delphi 2025 release) is behind MS in it’s support for

    the DirectThought API.

    3. Linux will be ‘almost ready’ to challenge Windows on the desktop.

    4. C Johnston will have an entry in Guinness for the ‘highest number of

    negative comments made against a single product’ in history.

    On a serious note, I think the future will actually see the start of a

    de-skilling of computing at the mainstream level. Codegears eco is a

    step towards ‘programming free’ business model construction which is

    likely to become the norm. An interesting possiblity is the extension of

    the use of neural nets. Already self adapting neural nets are used in

    business for fairly mudane tasks such as credit scoring. Could they also

    ‘learn’ to make use of prebuilt software components in order to construct

    and adapt software applications including UI based ones. In other words

    having constructed an application could they monitor how users interacted

    with it and then tweak it based on usage patterns etc.

  5. daniel | July 18, 2007 at 6:22 am | Permalink

    1. What will programming be like in the year 2027?

    Almost the same as today, except that functional programming will have the infrastructure to replace what we call by "debugging" today. An new combination of "componentness" based on new design patterns for descriptive languages / functional programming will be the de facto. A small elite of "science priests" will work on this infrastructure - the rest of programmers will focus on their problem’s domain specific needs.

    2. Will there be any programmers, or will everyone be a programmer?

    Just like today, many peope will call themselves by "programmers". In 20 years, this will get even higher. However, instead of creating "code" for a platform or another, they will just plug their specific functionality into exciting frameworks, way beyond abstracting the OS, networking, etc (kinda like what java/.net do today) - talking about specific frameworks… One thing is there to stay "good/clean code requires discipline and skills, both formal and practical". good code runs smoothly, bug free (almost from scratch) and it’s extendible, scalable, re-factorable, with minimum maintanace efforts (if not zero). Good code, isn’t and will never be achievable by average joe, simply because the barrier of entry is actuall super high! (if you’re using delphi 2007 in a spaggety vb1 style, this would not really help you to get any better…)

    3. What programming languages and methodologies will we be using?

    Mostly the same, except that, like I said, new emmerging desing patterns for functional programming (and I am NOT talking Lisp here… I am talking about an upcoming wave of lisp style language constructs/extensions to imperative languages like c#, c++, delphi, java, etc). Unlike today, there will be a lot of specialized frameworks, these functionalo-component will gracefully plug into. big software houses will maintain these frameworks and there will be open source as well, in a strange symbiosis which i would rather not describe in here…

    3. How will teams of programmers do their work?

    Same as today. This has not been changed for the last known 10,000 years, and it’s very unlikely to change in the next 20. Colaboration aids will exist, via specialized frameworks’ colaboration api(s) but beyond that, since the brains of homo sappiens sappiens is the same, the work (done using this brain) will not fundamentally change (however, the lipsteak on top of all that will…)

    4. What changes in our world will affect programming?

    If I was you, I would ask the reverse… "How will programming affect our world, as we know it today?" That is the question… In 20 years, not majorly, in 120 years, trust me, you really don’t wanna know (not that it’s bad on anything…)

    5. Will climate change or advances in technology and education set a new course for programming along the way to 2027? Will economic and geographic changes affect programming?

    I cannot answer this question here.

    6. How can One Laptop Per Child change the world of programming by 2027?

    Statistically, at planetary scale, will not affect anything in any way… Sorry about that… The initiative will not lost, but will exist and generate "special cases" (see "the foundation series - Assimov")

    I wish I had more time to spend with you folks, but I have to run now… all the Best 2U David & Co :-)

    Regards,

    d

  6. Daniel Fields | July 18, 2007 at 9:38 pm | Permalink

    I also believe that very little will change in 20 years. I think you will see the emergence of a new class of end-user tools that will allow average people to construct very simple applications that integrate with office productivity suites. This will allow them to build personal applications without the help of a programmer as we know it. This new class of tools will be often abused and mis-used in the same sense that MS Access and Excel are today, but the resulting applications will be much more powerful. This will eliminate the low-hanging fruit for the lowest level of programmers, but mission critical applictions will always require a much higher skill set. The tools at that level will have improved enough to make large development teams unneccessary. Your ideas about empowering individual developers are exactly what will move us in this direction. This will also change the role played by quality control teams. They will become testers and feature evaluators, but they will only spend a small portion of their time looking for defects because the new high-level tools will eliminate errors made by under-skilled developers. Hopefully, this trend will also eliviate the alphabet soup of standards and technologies that exisit today. I personally believe that the new languages and standards that we see today are an attempt to decrease the required skill level neccessary to produce quality software. While that is a good goal it will never be able to replace complex application requirements. Dumbing things down does not change requirements, it only fools people into thinking that it can.

  7. HS | July 18, 2007 at 10:08 pm | Permalink

    "What amazing things will programmers be doing in 2027".

    I think David I shows a bit of innocent naiveté here.

    That’s largely an irrelevant question.

    I agree with most of the comments.

    On the whole, programming will become marginalized and low cost commodity. Programmers will become bit players in the larger picture.

    Most of the great programs have already been written. Most of the difficult solvable problems have been solved. In other words, programming as a stand alone discipline has lost relevance.

    The future is a lot of CRUD work.

    And most of the new technologies will only have marginal impact on the bottom line.

  8. Jon Revelos | July 19, 2007 at 6:28 am | Permalink

    HS writes:

    >>Most of the great programs have already been written. Most of the difficult problems have been solved…

    This reminds me of a couple of quotes…

    The first is attributed to Charles H. Duell, Commissioner of the US Office of Patents in 1899:

    "Everything that can be invented has been invented."

    The second, I believe is from Charles Handy:

    "Most of us prefer to walk backward into the future - a posture which may be uncomfortable, but which at least allows us to keep on looking at familiar things as long as we can."

    Predicting the future is difficult business, especially in these exponentially accellerating time (thanks, Mr. Kurzweil), but I’m guessing the degree of change (technological, at least) between now and 2027 will dwarf the change we’ve experience between 1987 and today.

    But, as Dennis Miller used to say, "That’s just my opinion. I could be wrong."

  9. HS | July 20, 2007 at 3:27 am | Permalink

    I think the evolution of the automobile industry serves a useful analogy.

    What has truly changed during the last 20 years?

    Cars still look the same.

    Cars still drive the same.

    You can use the car for pretty much the same things.

    Todays cars are marginally safer or more environmentally sound perhaps, but apart from that it’s truly become a predictable commodity, and noone expect future automobiles to "revolutionise the world".

    (in terms of mass adoption of alternative fuels, call me a sceptic)

  10. Vaclav Cechura | July 31, 2007 at 7:23 am | Permalink

    For me this all is missing the point (except the funny notes by David Howes). I would like to see a goal - a really challenging goal - for programmers in 2027:

    All the software engineering bussiness should be REDESINGED from scratch so that the end-user can get a legal WARRANTY of functionality of the software.

    (The older I grow the more I get frustrated with a $2000 software that is unstable, buggy in basic functionality end gets never fixed, because in a year or two there has to be a new version released full of "new" features/bugs. And more to that now you can buy something named "Software Assurance" (assurance of what?))

Post a Comment

Your email is never published nor shared. Required fields are marked *
Close