Grady Booch has a career in software stretching back over 30 years.
The IBM Research software engineering chief scientist even has a development methodology — the Booch Method — named after him and he was a co-creator of the Unified Modeling Language (UML) while at Rational software. Who better, then, to turn to for a perspective on changes in the software landscape?
With the advent of multicore processors, an influx of new tools and the looming issue of how best to deal with big data, software development is not the beast it once was. Alongside those changes are the growth of the internet and cloud services. ZDNet UK asked Booch for his take on where software's been and where it's going.
Q: You're known by some as the software developers' software developer. How does the landscape of the web and development compare with four years ago when ZDNet UK last caught up with you?
A: If you look at the nature of software development, it has certainly exploded as the result of two things. One is the growth of web centric-based platforms and the second is the growth of the internet of things.
By the web-centric software development I mean in the beginning days of the web, when everyone was exploring what they could do, we were building on the naked web itself, which didn't have a lot of functionality. What has happened over the subsequent years — the past decade or so — is the growth of middleware for the web itself. We have the emergence of the semantic web, a rich set of Ajax-like things one can do, and domain-specific platforms that have a web-centric nature to them.
There are outwardly social-facing platforms such as Facebook and Google. In both cases there are a variety of fascinating APIs around which people can build things, thus you see the various apps that go into the Facebook world and the explosion of things around Google Maps. What that is evidence of are growing levels of abstraction of that middleware, that's then built upon the web.
That's one phenomenon that has happened and has reached a richness of capabilities. There's also stability in that market now. Individual operating systems are relatively immaterial these days, but it's really building on that infrastructure specifically for a domain that has caused lots and lots of software development.
The other factor that has changed software development is the explosion of the internet of things, and I include in that the explosion of mobile devices — smartphones, which in my opinion are hardly phones, they happen to be mobile computers that have the ability to do phone calls — and with the movement toward cars becoming, in effect, IP nodes.
That's the publicly visible piece of the internet of things. So we have all of these devices that are intelligent. But it's not just those things. It's the invisible things, such as thermostats in buildings, power meters, the moving parts of various buildings, cars, warehouses.
We have tens of millions, if not billions, of devices that are now connected to the web and there's a lot of software to be built around those.
All these automated things mean we have tens of millions, if not billions, of devices that are now connected to the web and there's a lot of software to be built around those. Right now the work that's happening is in enabling those devices. There's a lot of activity there.
Another is big data. We're talking about the generation of petabytes of data potentially. So being able to sift through that to make meaning where much of it's noise. But there're elements of gold within it, so people are panning for that. There's going to be a lot of development there. That's why [IBM's] Watson is so interesting, because it represents a very different take at looking at big data.
Are there specific issues facing programmers today in tackling these tasks?
The downside is that methodologically, tool-wise and language-wise, it's still going to be awfully hard to develop software. It's not going to get any easier. I see nothing on the horizon that's going to give a material change in the way we develop software.
Is there anything that could create that material change?
I'm not sure that anything can give us a real state change in developing software, and frankly it's an intellectually labour-intensive activity. Historically, the only way we have been able to tackle the growing complexity of software development is by...