What they really should be doing is creating useful systems and services while spending (or wasting) as little time as possible writing code. To make coding easier and development time shorter, the trend has always been one of building layers of abstraction over existing ones. Think about it.
Evolution of programming models
Assembly language gave a friendlier face to raw machine code. High-level languages (BASIC, COBOL, and C) were supposed to be an even more human-readable script to work with. But soon, large projects of linear code became unmanageable, and so Object-Oriented Programming techniques were developed to create abstract interfaces to systems. Each little program was thought of as an independent object. The idea, that we should be able to use and reuse objects across applications without having to rewrite the code (thus saving time and effort), paved the way for the Component Model. Examples of specific implementations were COM and JavaBeans.
With the advent of distributed computing, components that were scattered across the network were tied together using middleware technology. Popular distributed component implementations included CORBA over IIOP, Enterprise JavaBeans over RMI, and DCOM.
Web services architecture
Just when we thought there wasn't going to be any more innovation in programming, along came Web services -- a new software model that doesn't simply extend existing models but reinvents everything from scratch, addressing software application architecture within the context of the Internet. Web services allow Web sites to programatically expose their functions to other Web sites or applications (on the desktop, palmtop, or wherever).
Example of sulking systems
To understand why this is useful, put yourself in my shoes: My bank tells me that I can pay my cellphone bills through any of its ATMs. That's so convenient, I say to myself. But when I go there, I find that I have to punch in the account number that my cellphone service provider (CSP) has assigned to me. I also have to enter the billing amount. If I feed in these inputs correctly, the amount will be credited into the CSP's account with the bank, and will be reflected in the next billing cycle a month later.
So what's the problem?
If I have already used my ATM card to authenticate myself, why do I have to go through a second round of authentication by entering the CSP-provided account number? By the same logic, the ATM should also be able to detect my current billing amount. However, the problem is that the bank's computers don't talk to those at the CSP's side. In fact, they don't even know each other exist.
In the Web services architecture model, a single authentication at the ATM will suffice to programmatically connnect my office PC, mobile phone, or palmtop, the bank's transaction software to the CSP's billing service, determine the billing amount, and settle the transaction upon receiving my confirmation. I can also opt for an instant receipt sent to me by email or SMS.
These applications aren't school-boy fantasies. In the last one year, software majors have provided many brands of Web service development platforms: Microsoft .NET, Sun Open Net Environment (Sun ONE), and Oracle Dynamic Services, to name a few. The past few days have witnessed the fruits of the effort.
Microsoft recently launched HailStorm in Mumbai and gave its partners -- Infosys, Mastek, NIIT, Satyam, TCS, and Wipro -- an opportunity to demonstrate some neat prototypes that made use of HailStorm Web services.
If you don't like the word "prototype", IBM claimed to have stolen a march on Sun and Microsoft by launching what it calls production-ready software for building Web services.
Web services will spawn a new genre of applications, especially in the area of mobile commerce. With the proliferation of smarter cellular phones and PDAs, there is a need to introduce services that will enable users get critical and timely information whereever they are, and on whichever device they choose to use. Users will pay money to become truly productive.
HailStorm is a collection of Web services over which developers can build applications. Microsoft Passport is the single-login authentication system that is recognised by all HailStorm services. It saves the time and effort involved in creating a new sign-in process for every application. Therefore, myApplicationSettings (one of the 14 initially-introduced HailStorm services) can remember a user's PC settings and reproduce it on any other system as soon as s/he is authenticated by Passport.
Opportunities for developers
HailStorm is Microsoft's brand of ready-to-use Web services created using .NET tools to perform tasks such as notifying devices or locating users. It is likely that Microsoft will charge companies whose developers build applications over HailStorm. However, a company can also choose to develop its own brand of Web services (perhaps using the same .NET tools) and sell them to other developers. This is similar to the choice you have between using MS Office and StarOffice. You don't have to pay Microsoft (or anyone else) for the latter even if you use it on a Windows PC.
Web services use the Simple Object Access Protocol (SOAP) to connect to each other. This is akin to HTTP that connects browsers and Web applications. The fact that SOAP is XML at the core, and that it is an open W3C standard adopted by all platforms, means it should be possible to easily build bridges across Web services, irrespective of whether they were created on .NET or Sun ONE. Interestingly, SOAP was developed by Microsoft and submitted to the W3C for approval. Sun realised only later the benefit of going with the crowd. After initially calling it "pure hype with no value", they changed their tune to "a good starting point for XML messaging."
Thus, the promised ease of development and the prospect of interoperability makes the use and development of Web services a new opportunity. Developers can build customised Web services for clients, such as my cellular service provider who needs a way of letting my bank's ATM know how much I owe them.
Undoubtedly, morning has broken for Web services. For software developers, a new day has dawned.