"The NHS will last as long as there are folk left with the faith to fight for it"
Aneurin Bevan

Monday, 24 September 2012

Citizen Coders

This article is interesting:
Speaking to Government Computing, [Tim] Kelsey [Director of information at NHS Commissioning Board] said: "We want to help people to innovate and make best use of the data that is running through the veins of the health service, taking a leaf out of the very accessible and brilliant campaign launched by Code for America."
As a software developer and someone who has spent 20 years writing books, magazine articles and training courses (and spoken at conferences and given hands-on courses) on how to programme, I have some interest in this area. I am a C++/C# programmer and before the .NET framework was released I developed Windows applications using the Windows SDK (which is a library that gives you access to just about every feature of Windows). At conferences there would always be a discussion, either officially (as a panel discussion as part of the conference), or unofficially (in the conference hotel bars), of which was better: VB (Visual Basic) or C++. Clearly C++ is better, but I was always willing to take part in a good natured discussion with VB developers to prove them wrong.

There was always one point that I would concede: VB3 was the reason why Windows 3.1 became popular. VB3 was a drag and drop environment where basic components of a program (visual controls like buttons and list boxes, or functional collections of code like timers or database access) were packaged as visual objects that you could drag from the toolbox of controls and drop on the window (or Form) that you were developing. You then wrote a small amount of code to connect the objects together: handle the user clicking on the button to read data from the database and put it in the list box. In C++ I would have tens or hundreds times more code to write to do the same thing because the Windows SDK gives fine grain access to functionality. This makes SDK development very flexible, but you had to write a lot of code.

When VB3 was released it became very easy to write software for Windows, and almost overnight huge numbers of applications appeared as shareware or freeware. Business were also keen to use VB since it was easy to teach developers and it took much less time to develop a VB application than a C++ application. At that time (93/94) I taught both VB3 and C++ courses. The VB3 courses were three days to learn both the language and the objects that you could use. The C++ courses were two five day courses: one course to learn the language and the other to learn the library (Windows SDK or a C++ library called MFC). The cost per day was also cheaper: the company I worked for charged two thirds the C++ daily rate for me to teach a VB3 course. Consequently, for every C++ course I taught I taught five VB3 courses.

VB3 meant that there was a huge number of applications and this meant that somewhere, if you could find it, was one that did exactly what you wanted. The problem was that, as a hobbyist language, the quality of most applications was poor. They were bug ridden and the user interfaces were not designed with (dare I say it) any taste. Since it was so easy to make a form background shocking pink and all the text italic putrescent green, people did.

VB3 applications only ran on Windows so people bought Windows computers and, for the fairly reasonable cost of the VB development environment, they could be creating applications within days. Or, if they did not want to develop code themselves, people could find somewhere on bulletin boards or in the classified ads of computer magazines, a VB3 application that would do what they wanted. The popularity of Windows 3.1 came from VB3.

Tim Kelsey's idea is similar, he plans "to launch a 'mass training programme' in basic data coding across health and social care with the aim of creating thousands of applications to open access to NHS data". He does not say what language or framework will be used, nor how the "mass training programme" would be carried out (hint: I can recommend an excellent developer to author and delivery the training). However, I am somewhat cautious. Developing useful apps comes in two parts: having the idea and developing the code. As a developer I am skilled at the latter. The thousands of "doctor, manager or patients" that Kelsey identifies, are skilled at the former.

I am always in favour of training people new skills (hint: and looking for a job right now!) but it has to be done in an economic way. If a surgeon had an idea of a robotic surgical instrument would he go back to university and take an electronics degree so that he could design the device himself? No, the surgeon would find someone who could design the device and explain the idea to the engineer. The important point is to get the new, innovative ideas to the people who have the skills to implement them. The implication that you can teach anyone to programme an innovative idea is also rather demeaning to skilled developers: it implies that there is no skill in development. However, as with VB3 applications, it will fairly rapidly become apparent that there is a lot of skill in developing and this will show in the quality of the applications created. I suspect that the idea to train thousands of people in "basic programming" will result in thousands of very basic, buggy applications and the challenge would be to trawl through them all to find the one that does something innovative and is reliable.

A more powerful idea would be to get the ideas people to connect with the coding people. Create a virtual "dating agency", a website where a "doctor, manager or patients" can post their ideas and developers can take up those ideas and produce a working application. I would go one step further. I think such a website should also include a toolkit that developers would have to use. Such a toolkit would ensure that all the applications had the same look and feel and would be compliant with standards of reliability and accessibility. This would ensure that all patients (regardless of their disability or their mother tongue) could use any application created with the toolkit.

And just in case I've been too subtle: I am available at reasonable rates to help design such a programme.

1 comment:

  1. Speaking as a surgeon and self-taught (Very) amateur programmer in Visual Basic... I found that a very interesting article.

    And you're completely right. One of my great annoyances is that so much of the clinical software that is forced on us is unfit for purpose. And, of course ridiculously expensive. I don't know if you're familiar with PACS but it is genuinely very good. But it is also unique. And could be improved if someone who writes the software talked to people who have to use it.

    Clinically useful software can only begin with front-line staff explaining what they need and how they need to interact with it. And then a good developer is needed to make it reliable and secure. Oh and yes, the consistency of interface would be much appreciated also.


    P.S. The last trust I worked for until quite recently only THIS year replaced a Telnet-based system. Sadly what they replaced it with isn't very good...