I think it’s fair to say that I am something of a sceptic when it comes to outsourcing IT. In fact, I wrote my university dissertation on the subject and concluded that it only works for static IT functions (such as running a telephone system) and even then it is not without some significant flaws. It may therefore come as a surprise that I am a recent convert to the potential for outsourcing some of the most dynamic software development undertaken by a company.
The reason for this change of heart is a change in outsourcing itself. My dissertation was based on the outsourcing proposition of the nineties which was typically based on a handshake between a large corporate and an outsourcing giant. A director would decide that their IT department was a black hole for overheads and that the numbers offered by the outsourcing agency were considerably more favourable. They would sign a contract, sit back, and wait for their bottom line to soar. Sadly, many are still waiting.
The traditional model of outsourcing is still out there, and my attitude towards it remains unchanged, however I have recently been introduced to a new way, and it seems much more powerful. New websites offer the ability to find and recruit developers on an individual basis for modules of work as small or large as the hiring company desires. They act like an international IT skills dating agency, allowing overworked IT departments to find underworked professionals from around the world with the exact skills they require for a specific task. The sites offer facilities to ensure that the hired professional can only bill for the time spent working, and that they receive fair payment for that time. This allows both sides to work in a very flexible manner which suits them both. All this is a far cry from the traditional outsourcing model.
You may wonder why, in the title of this blog, I compare outsourcing to a programming language in itself, and for that we need a (VERY) brief walk through the history of programming languages. Originally computers could only be programmed with 1s or 0s but soon this process was simplified with what have since become known as 2nd generation languages, most notably Assembler. From this an additional level of abstraction was added and 3rd generation languages (3GL) such as C were born making programming faster and easier. It is in 3GL that most programming happens today. In the eighties and nineties the idea of 4GL was popular with the intention that for specific areas of operation the programming language could be so abstracted that a non-programmer could do it. There was some success with this which naturally led onto the concept of fifth generation languages (5GL) where a non-programmer sets required constraints and the algorithms are generated for them.
In its truest sense 5GL is heavily rooted in Artificial Intelligence research; however its aspirations are achieved through modern outsourcing techniques. I write tasks into project management software in plain English which a team of remote developers pick off and complete one by one. So I can write “I would like my form to be blue” and – after a short wait – the form is blue. It certainly feels like a fifth generation language to me.
Author: John Kiernander