Subscribe

The decade of development

By eWeek
Johannesburg, 21 Jan 2010

Last decade, known by many as the naughties or noughties, set the stage for a number of key software development trends. Here are some of the hottest of those trends and resulting challenges developers will face in the next 10 years.

Initially, the goal of this piece was to come up with a 'Top 10' list, naming the top 10 software development advancements of the past decade. But the list quickly grew to well over 10 items, and contributions from trusted industry friends and sources saw the number grow further. So this list will feature many more than 10 key trends in software development over that past 10 years, and will be delivered in two parts.

The list is in no particular order or ranking, other than featuring SOA first because it became a big deal early in the decade. Other than that the list is not ranked chronologically or in order of importance.

1. Web services/SOA

The first technology trend of the noughties is that of service-oriented architecture (SOA), which burst onto the scene in the early part of the decade and made things crazy for a while. SOA defines how to integrate widely disparate applications for a world that is Web-based and uses multiple implementation platforms. Springing from the foundation of the pioneering Web services standardisation efforts of Microsoft and IBM, SOA became a big buzzword early in the decade, prompting many ads and marketing campaigns to include the term 'SOA'. Some companies, such as SOA Software, changed their names to reflect the significance of the term and technology on the solutions of IT issues of the day. Originally named Digital Evolution, the company changed its name to SOA Software and claimed the URL: www.soa.com. However, IBM has perhaps been the most successful at monetising its involvement in the SOA craze, by focusing its WebSphere middleware line at the SOA world, encouraging customers to start pilot SOA projects, and mobilising its massive services arm to help take customers beyond the pilot phase.

As the trustworthy creator of Java, Sun's James Gosling, says, one of his observations for the decade is:

"Distributed computing has become the norm. It's not just 'SOA' - the specific architecture based on XML that was popularised in the middle of the decade - it's 'SOA', the general term for service-oriented architectures that include techniques like REST and raw sockets."

Dion Almaer, co-founder of Ajaxian.com and co-director of developer relations at Palm, said: "SOA bombed at first. WS-* was the EJB [Enterprise JavaBeans] of Web services and no one cared. However, SOA is back with the emergence of rich clients on the Web. But instead of being WS-* SOA, it is just simple REST services."

2. The rise of open source software (OSS)

Open Source Software reached critical mass in the decade of the noughties. The open source model caught on like wild fire among developers and quickly became adopted by entrepreneurs looking to build companies by providing services for these OSS technologies. And it worked. Marc Fleury founded JBoss around the JBoss application server and later sold the company to Red Hat for more than $350 million. Rod Johnson founded SpringSource around the open source Spring Framework, and last year sold it to VMware for $420 million. VCs saw an opportunity and began to get behind the best and the brightest. And organisations such as the Apache Software Foundation (ASF) and the Eclipse Foundation sprang up to, among other things, foster community involvement in various open source projects. Although the ASF was founded in 1999, it saw some of its best days in the noughties.

Open source software had such an impact on the industry and on software development that tightly-closed Microsoft was forced to acknowledge it. After initially trying to ignore and then show hostility to OSS, Microsoft had to come to grips with the reality of OSS and create its own (mostly) open source community, CodePlex. Microsoft has since spun out the idea of its CodePlex project hosting effort into the CodePlex Foundation.

Several factors led to the emergence of open source software, including that developers often felt they could hack their own solutions and were sick of seeing vendors slap an up to 80% mark-up on proprietary systems. Not to mention that it was a way to tweak Microsoft and keep some money from going into Bill's pocket.

However, another factor was that the industry didn't need the kind of innovation in proprietary software it did when the problem for customers was all about automating previously manual processes. Now that the problem is about improving what we already have, the existing software vendors don't have a business model for that. Open source does - one of the ways you improve a product is reduce its cost, in this case by sharing the R&D.

David Heinemeier Hansson, creator of the popular Ruby on Rails Web development framework, told eWEEK he believes the noughties were the decade of: "The dominance of open source: The entire stack is now free and most people only look at commercial alternatives for very specialised setups." Although "shops trapped with Microsoft are the exception," he added.

Grady Booch, chief scientist for software engineering at IBM Research and co-author of the Unified Modelling Language (UML), said: "Whereas most early open source projects were just rehashing older commercial things, we've seen real innovation of late (e.g. Hadoop) that has produced major subsystems that contribute to a lot of production systems."

3. The Web becomes the number one development platform.

That's right; the last decade saw the Web become the primary platform for development. Among other technologies, Palm's WebOS plays this out to the hilt. Palm's WebOS is a mobile platform built from the ground up to combine standard technology, innovation and integration. At its core, WebOS leverages several industry-standard technologies, including Web technologies such as CSS, XHTML and JavaScript.

Hansson said: "The Web becomes the number one software platform: RIA [rich Internet application], this, RIA, that. The regular Web has proven to be the number one software platform despite all the dooms mongering."

Added Booch: "Google is on the rise, and they have in effect contributed to creating the next development platform, but I'd add folks like Facebook and even Salesforce, the net being that operating systems have become a commodity, and the Web is the new development platform that emerged during the noughties."

4. The emergence of Web frameworks

With the Web as the development platform, the need for Web development frameworks became paramount. This is where Ruby on Rails caught steam and started to roll and along at a fast clip. Then came others like Django and JBoss Seam to name a few. Says Hansson: "Before this decade, almost everyone was rolling their own home-brew frameworks. Today very few bother. I'd like to think that Rails played a big part in this."

5. Web 2.0

Spawned by the blossoming of Web services and the underlying foundation of SOA, the Web 2.0 craze hit by the middle of the decade and has been at the heart of all kinds of new computing paradigms and start-ups with new business models. The term is commonly associated with Web applications that facilitate interactive information sharing, interoperability, user-centred design, and collaboration on the World Wide Web. Examples of Web 2.0 include Web-based communities, hosted services, Web applications, social networking sites, video-sharing sites, wikis, blogs, mashups, and folksonomies. Tim O'Reilly is credited with having coined the term Web 2.0.

6. Simple beats complex

Although the noughties saw its share of complex systems - as systems began to scale to enormous proportions (which will be part of the next instalment of this series) - the decade can also be viewed as one where simple solutions easily beat out complex ones. For instance, Hansson said: "Simple beats complex: Ruby over Java, Rails over J2EE, REST over SOAP, etc, etc. Complexity fell out of fashion."

7. The rise of scripting/dynamic languages

The past decade saw the use of dynamic languages grow significantly, with both Sun and Microsoft vying to add dynamic language support to the Java Virtual Machine (JVM) and .NET's Common Language Runtime, respectively. Microsoft produced its IronPython and IronRuby implementations of Python and Ruby, and Sun adopted the JRuby and Jython technology. Languages such as PHP, Perl, Ruby, Python, Groovy, and especially JavaScript are totally in vogue.

Asked about another type of programming (which will be part of another instalment), Booch said: "I'd suggest the rise of scripting languages - PHP, Perl, Ruby, and of course JavaScript - coupled with XML leading us to things like AJAX [Asynchronous JavaScript and XML] and Dojo as a more important advancement, for that has fuelled so much innovation and has been the centre of so much contemporary programming."

8. The developer community bifurcates

The previous decade was one of empowerment for developers - for the "uber-developers who build tools for others to use, for the programming wizards who use those tools to build software systems, as well as for dabblers, power users and just plain folk who need to put together a quick solution for themselves or their small team.

Thus, Sun's Gosling said one observation about the past decade is that:

"The community strongly bifurcates into hackers and engineers: hackers prioritise slapping stuff together as fast as possible; engineers take more time and concentrate much more on scalability, reliability and performance."

Although some might see a disparaging comment there, it was not meant as such. Several of the factors below actually lead to this, such as the rise of scripting languages and frameworks and tools aimed at enabling folks like designers and line-of-business staff to create applications - perhaps as mashups.

9. Heterogeneity rules

During the past decade it became clear the development world was going to be heterogeneous, despite there being shops that did .NET or Java development. In the end, the systems all had to work together. During the 1990s the industry still believed that a single general purpose programming language might emerge that everyone would use. This was the initial promise of Java, and Microsoft appeared to have similar ambitions for VB. A big-time software architect friend argues that the world has changed - his and other major organisations can no longer afford to play the Java versus .NET game.

Besides, during the previous decade we saw a shift away from proprietary software vendors leading the way with innovation, new features, new technologies, and new solutions. The balance has shifted to open source projects and to the large Web sites such as Google, eBay, Amazon, Facebook and others to reinvent computing for the new century. The vendors appear to be stuck in last century's battle over the hearts and minds of developers. The Java vs. .NET battles have not died down in their minds, even though perpetuating that mentality is probably the last thing on the customers' minds, according to an architect friend. Perhaps the most glaring example of the failure here is Web services. This started out as a very simple definition of an XML message with an XML-based interface and data definition. But the vendors could not allow XML to be "the thing you develop", since that was not aligned with either Java or .NET. It still had to be Java and .NET that took prominence in the integrated development environments (IDEs). The Web services standards took a beating as a result and ended up being overly complex, bloated and proprietary as a result.

Moreover, we are seeing the big Web sites tell the big software vendors that their enterprise products just don't cut it. Google, Amazon, eBay etc. are not using application servers or .NET or relational databases. Their requirements are just not served by these 'mainframe-centric' product designs. They need new designs for commodity data centres that are always up and for environments not under control (i.e. not in the glass house).

10. The emergence of team development (and the rise of Agile development)

The folks at IBM's Rational software unit had the right idea from the start. They set out to create a complete platform for teams of developers to work together to design, develop and maintain software. And the software they helped folks build was serious stuff - complex systems, embedded systems, scientific and defence solutions and more. In short, they fostered the creation of mission-critical systems. Rational wasn't alone; companies like MKS, Serena, Borland, Telelogic, TechExcel, Compuware, BMC, CA, Genuitec, CollabNet, Atlassian and ThoughtWorks came in to get a piece of the so-called application life cycle management (ALM) market by providing tools and solutions to help development teams work better together. And IBM later acquired Telelogic to add to its portfolio. ALM tools typically include requirements, development, collaboration, metrics, and reporting components, among other parts.

However, nothing defined the past decade as one focused on team development more than Microsoft's entry into the ALM space with its delivery of Visual Studio Team System (VSTS) and Microsoft Team Foundation Server (TFS). Former Microsoft executive Rick LaPlante fulfilled his vision of taking Microsoft into ALM before retiring from the company. In a 2005 interview with eWEEK about Visual Studio 2005 and VSTS, Microsoft CEO Steve Ballmer said Microsoft initially looked at acquiring Rational itself, but decided to pass on it and deliver an ALM solution of its own.

Asked in that interview whether Microsoft would be able to transform the team development space with its lower price, higher volume approach, Ballmer said:

"I'll be shocked if we don't have super-high market share within a year. I'll just be shocked. If you take a look at the total number of customers that these high-end development suites have, it's tiny."

Microsoft hasn't shared its sales numbers for VSTS and TFS, but the company has been aggressive in adding to its product, including support for Agile development. A new version of the Microsoft team technology will be available with Visual Studio 2010, expected in April. Meanwhile, IBM Rational delivered Jazz, its super-ALM platform for collaborative software delivery. Also, companies like Atlassian and ThoughtWorks come into the ALM space with software-as-a-service (SaaS)-based ALM solutions.

The decade of the noughties also witnessed the emergence of Agile development. Agile software development is the term used to describe software development methodologies (such as Scrum) based on iterative development, where requirements and solutions evolve through collaboration between self-organising cross-functional teams.

In the past decade, "Agile became the standard," Hansson said. "In the '90s it was still somewhat respectable to say you were doing waterfall development. Today it's a joke."

"As for a more intense focus on team development, I'd reframe that to say the pendulum has swung to more agile processes," Booch said. "With the global economic pressures that have led to global development - and I mean more than just outsourcing to India and China - and then coupled with the nature of lots of development on the edges of systems, a la scripting, this has fuelled incremental and iterative development styles."

Gosling gets to it cleanly and simply, saying: "Teams go global: It's common for teams to span geographical regions and time zones. Skype, chat and 'forge' sites make it all work. Also, the industry goes global. Software developers can build viable companies based anywhere in the world."

That's it for Part 1 of this look at 'the decade of development'. Come back to next week to see Part 2, and what was left out.

Share