Let's get serious
The following message is of my personal view points and not of my employer.
The underdeveloped software industry and the enterprise
This letter is intended for the serious, connected audience. If you don't know what it means by connected, try disconnecting yourself from the network and see what happen. (If you still know know what it means then you can excuse yourself from reading on.) The fact of the matter is, we're connected to each other either directly or indirectly, wired or wiredless, like it or not. Since we're a connected whole, we better know what's being transported in the information highway. Another words, you need to be able to define the information you create or to be able to interpret information you receive intentionary or accidentally, to allow a meaningful communication.
Yes, communication is all about passing on information. Another words, improperly defined and/or misinterpreted information leads to breakdowm on communication. What's the purpose of communication anyway, in a working environment? To get job done mostly. Ya, that's the routine part. What I'm interesting in is the the process of communication and the information it generates before the production phase. The problem definition and modeling proceess that is. Methodology, attitude, culture, social politics, are factors that we deal with one way or another in the problem context. Each and everyone of them are significant in itself. Here, we focus on a different issue. Here, we focus on seeing problem by it's purpose not by it's solution.
A lot of time, in the process of solving a problem, we treat solution of the problem as an end itself rather than as fulfillment to it's purpose. Hence we have two approaches to the problem resolution: project-oriented and service-oriented. The first see the problem as an isolated one while the latter treats the problem as an integrated part of a larger problem. Another words, project-orientation in problem solving are inherently inward looking while service-orientation in problem solving is forward looking. As pointed out earlier, we're a connected whole, except for the trivial ones, any resulting solution of problems affects more than the context that it defines directly or indirectly.
What that mean is we need to have a well-defined purpose of the problem and to provide a service-oriention interface of it's integrated part to it's external system as solution. By well-defined problem, I mean the problem must be a self-contained one to be model. Modeling is a necessary step to capture the behavior of the problem and it's purpose to the external system. We need to start looking into the service nature of the problem to allow a more natural integration of the soluition to the system. Another words, treat each business process as a service to the next.
What's the point? You might ask? If you look into it deeper and in a larger context like modeling enterprise business processes, you see that the project-based approach to problem resolution leads to a closed, inward looking system. Another words, there is no easy way to get information in and out of the system unless otherwise provided by the closed application. Such system is hard to scale, hard to integrate, and even hard to maintain, for the system is the sum of it's parts as a whole rather than it's integrated parts as a whole.
So service is the key to allow a more natural integration of the systems around us. We're not alone after all. Unfortunately I don't see that happens in software development. In fact, software development in Taiwan are project-oriented. Both the client and solution provider approach the problem as an end of itself. There is no coincidence that the software is an underdeveloped industry in Taiwan. The truth is, business needs software to materialize it's processes and to compete in the industry. And software developer needs business to grow it's solution scope. Why don't we see the integration between the two? Where is the partnership between the two? The only thing that connects the two is the project itself. The end of the project is ultimately the end of relationship. To me, that's a serious problem to both the business and the software industry as a whole. Every solution is an isolated one and an end of itself. Where is the growth factor?
Are we ready to start the dialog of a service-oriented solution?
NOTE: This is a message I sent on 2003/11/28 to my colleague and all the friends that I've worked with outside of the company. I repost it here without any editing as a reminder to myself what I believe in software development.