So lately I have been thinking of true service oriented development/programming. Of course, SOA and web services are excellent. Allow easy reuse of code and true distributed applications. But with SODA, you solely develop using services. SODA/SOP ends up very use when you are aggregating services together and transforming. What ends up being cumbersome is when you use a tool like WebLogic's WLI or webMethods or similar SODA work benches to assemble applications and code business and presentation logic in these design tools.

So you end up with some sort of proprietary store of business/presentation logic that can be accessed using SOAP. In and of itself, it could be worse. But if you spend thousands of hours assembling an application in webMethods and 5 years from now want to use some other tool or runtime, good luck.

Remember back in the 90s when 5GLs were talking about how easy it is to build client server (and eventually web apps) using tools like Informix, Oracle Forms, PowerBuilder, Clarion, maybe even VB? Ever try to port or maintain one of those apps? Ever try to figure out why someone's Forms app is performing poorly because they WYSIWYG'd their way to a crappy app? It's unpleasant. Any time you program in some super high level language it's only good for the first 90% of the functionality. That last 10% takes a lot of time and custom code and this 90% differentiates you from your competitors.

There's another dark side. I recently learned that COBOL is not free. If you want to run COBOL programs you must pay Fujitsu or MicroFocus or IBM or somebody for your runtime licenses. Not just for IDEs, but just to run a language. As someone who grew up with C and Java, this was surprising to me. Even Microsoft doesn't charge for the VB/C# runtime.

So if your app is coded in some 5GL SODA tool, you must pay the vendor, forever. So as long as your app exists you will be paying someone just to run your newly constructed services. This is bad if you now want to sell your $1MM system to smaller companies as $50k packages as you're saddled with a big license fee.

What's the alternative? This is a bit tricky and I don't have the answer. But I think if you get your business logic coded in something like C or Java or Perl, you can run in many free runtimes and operating systems. There are several open source projects to expose code as web services. Axis is pretty mature and is great for exposing Java objects as web services.

Sure you lose your fancy design tool, but you gain the flexibility to embed your code anywhere and 10 years from now you can use the same logic units in whatever the new SOAP is in 2016.

So the SODA tools demo great. If you have a simple app that just needs to call a service and show some data, go to town. But if you have a complex application with hundreds of screens and thousands of services, think about the future and design with tools that are easy to code in, maintain and debug.