Back in ancient times and right up until relatively recently (mid 1400s) scribes were used to copy important documents for kings, queens and other nobility. It’s hard to imagine that most people couldn’t write back then, and I suspect (but can’t find any hard facts) that many many people still had difficulties writing until the beginning of the 1900s.
However, the job of a scribe became almost redundant overnight with the invention of moveable type. At this point we began to see a power shift, as documents were easily copied and translated, and distributed to the masses. Obviously there was still the hurdle of learning to read, but now many important documents were available to more than just a handful of people – prior to this reading such documents was limited to the nobility and the clergy.
Moveable type was the most popular form of distributing documents and information right up to the modern day. However, with the advent of computers and the internet, this has changed for good.
Today we find less and less people reading books, but instead we mindfully overdose ourselves on blogs and social networking sites. This information exchange only serves to benefit each and every one of us, as now we can observe opinions that are not dependent on the views of an editor whom we share little to nothing in common.
It’s easy to see how jobs have transformed over the centuries, once coveted jobs are now in the hands of “amateurs”; who to their credit provide content that is more pertinent to the interested party. So where does this leave us as software developers? How will our roles stand up with the future in mind?
If we think back to what I said earlier, about how not too long ago most people couldn’t even write, and consider that the computer was out of reach, both financially and physically, of most people, but now both these things are the norm in society. So just as everyone learned to write, is everyone going to learn to program?
OK, you may be thinking that a field like mathematics has been around a long long time, and that not everyone is competent in even basic mathematics. However, let’s face facts, a general programming task is nowhere near a difficult as even high-school level mathematics. That’s not to say there does not exist difficult computing tasks; in fact I’m hoping to convince you of the opposite.
Is it that crazy to think that one day people will program a computer in the same vein as we read and write English (insert your native tongue here)? I don’t think so. Programming is not really that difficult (doing it well is as difficult as writing beautifully in English, and that has never stoped people writing, look at me). Just as blogs and the internet pulled down the barrier for each and every one of us to write and be heard, I feel it’s only a matter of time before programming computers becomes something more akin to what many will do in everyday life.
If we look closely the first steps are underway. People are using HTML, CSS and JavaScript as if they were everyday things. They may be doing them under the veil of certain tools, but the “non-programmers” are programming. They may not even know they are doing it, and the ability to make more complex applications is only going to get easier.
For example, consider writing a database application for an online bicycle shop using CakePHP (something I have experience of, hence the inclusion). You have to know almost nothing about using a database to create this application. OK, you may say that scaling and optimising these things takes a “professional”, but at the rate we are pushing the technology, this barrier may not be there on 5-10 years time – consider the cloud computing environments as a step in this direction.
What I’m not saying here is that all computing is easy. There are still problems that are difficult to solve and require much much more than simply following a fixed set of instructions. Indeed, this is the domain where us developers must start focusing.
There may be many readers out there that think this is all nonsense and that programming computers is always going to be an elite occupation. Just tell that to the scribes, journalists and the media presenters/organisations, whose occupations have either vanished or are suffering severe contraction. Many of these occupations never seen it coming (or refused to see it coming) and done nothing – but just remember how quick this actually happened to each group. Do you want to be in the same position?
Elite occupation??? Maybe it’s perceived to be elite, but the reality is very different, with code generators, and companies that use India for cheap code monkeys. That’s the future. Sadly.
Programming is doomed, unless of course you need help with NP completeness problems!?
BTW an article you referred to, on joeonsoftware site about Java. Java shouldn’t be taught at Uni. It should be C, and include pointers, just to reduce the number of code monkeys out there, and help us peeps suffering in Scotland. I guess journalists will have similar feelings about the internet?!
Like the blog Gregg.
OK, maybe not elite per say, but we see ourselves as a skill that needs training, with a degree almost always expected.
We should move forward though, I would never want that to stop progress – that would be awful. It’s just going to be important to keep up with technology, whatever that may throw at us. We shouldn’t look back in anger!
I would say sure, menial programming tasks performed by junior developers such as data retrieval and insertion applications however there is no way the average joe is going to be able to understand and implement architecture for pretty much anything beyond that.
Where I currently am there was a constant need of building out web forms for data collection so we built an application where the marketing guys can now create these forms through a simple web app.
So now we have non-programmers basically doing tasks that were done by programmers. However can anyone honestly say that the average joe will be able to write the application we built for the average joe? Not very likely and even that application isn’t as complex as kernel, driver and low level socket development.
Some of the easy & mundane workloads will be taken by the average joe and that is a wonderful thing. I know most of us would much rather work on something that requires some serious brain power.
Hi Gregory, thanks for the response. I agree with what you are saying, the problem is that many programmers’ jobs are essentially just those menial tasks – in fact many of the people that I can think of work on just these things. That is, apps that read/write information to a database with little algorithmic work or thought. However, at one point in time these tasks required a seasoned developer to complete, but frameworks, libraries, etc have evolved to the point of making such tasks trivial – they even create the architecture for you. It doesn’t seem as if it would be too complex to create an application like twitter.
Sure, there are always going to be applications that are beyond the average Joe – in the same way that serious investigative journalism is beyond an amateur blogger. All the same, the industry is surely going to see a serious contraction at some point due to non-programmers programming. I think this is far from being a bad thing though because, as you say, you would hope that good developers would rather be working on the tasks that consume more than the average amount of brain power.
However, just as tools were created to move the above menial tasks to the realm of the average Joe, can we really be certain that technology will not ensure this is the case for more and more complex tasks? I dunno? We can only wait and see.
I enjoyed this article Gregg,well I understood what you were saying which for a Luddite reading your blog is something.I think more lay people are exploring computers now.I mean you used to have to pay someone to set up a website for you now it it seems more accessible and at times free.
Hi Peter, thankfully I have finally produced something that was beneficial to non-programmers! And I’m pretty sure that things are only going to get easier for people to create content and businesses.