Chapter 6
Clues from the World of computer programming
An Object oriented software product
Before moving on from the technical area of computer programming, let's use it a little more to see what affect it has on the programmers themselves and the system designers who have to organise the work of the programmers. Bear in mind though that what is being applied here to programmers can be mapped across to any area of technical expertise.
A computer software system can be visualised as little modules of computer code, each designed by a different programmer. Expanding the boundary of each of the software objects you can visualise each object as a virtual object consisting of the code and the programmer: together forming a complete virtual object separate from the rest of the world but connected to it by communication links.
Treating a programmer as part of the object that he or she designs would allow the system designer to be able effectively speak to the objects (via the human part of the object), telling the object what function it had to do when it received messages from other objects. Any non functioning of an object, or, alterations to its performance could be discussed on a human to human level. This then describes a system that consists of objects with two levels of communication. One at the programmed response level, the other at a human to human level.
With such a system, a system designer doesn't have to be concerned with any technical low level detail at all. The designer can treat each object like a black box that needs to perform one or more functions within an interacting system. If there is a problem the system designer doesn't have to worry about the cause of the problem, he or she just informs the human part of the object to fix the problem so as to respond appropriately to messages from other objects. It either works or it doesn't work. If it doesn't then the complete object should be eliminated from the system in some way. If necessary along with the programmer.
The advantage of taking the principle of object oriented design literally, applying it to the programmers as well as to the modules that they design, is that the programmer need not be part of any regulatory regime. The programmers needn't conform. The programmers can be free to concentrate in speciality areas of programming where their services can be made available to many different system designers.
This also frees up the system designer, they will not have worry about setting and checking details. They would be able to select programmers only on the basis of the kind of modules they needed and how well they did their job. They wouldn't have to have to worry about the styles, knowledge or competence of the programmers that created them. This attitude is not a product of the Industrial Age, it is particular the very different information age: the age of communication.
For the programmers part, they can work more efficiently, supplying a better product because they can concentrate all their efforts into speciality niches instead of having to be a jack of all trades and master of none. They won't have to spend time to superficially learn some new field as they changed around to different aspects of the products design. Probably they might spend much time experimenting with new techniques or even in new areas of expertise, but, in the professional application of their skill ands knowledge they can confine themselves only to the areas where they are truly expert. In this way they can build solid reputations for themselves based upon effective and efficient professionalism that ensures a job well done and gives good value.
Of course, the Industrial Age way will work to some extent, but, this will not be appropriate in the fast changing, competitive world of the Internet. A designer for an e-business or e-commerce solution who has to work with a set team of improvisers with a limited knowledge base is going to be handicapped when competing against a designer who can call on the services of a large assortment of specialists that can be assembled and configured on the fly. Notice again there is this same emphasis of communication with people rather than on the technology.
Viability of breaking up a project into small objects
In the traditional world of the Industrial Age, it was not practical to think in terms of breaking projects up into small modules. With the limitations of Industrial Age communications, it wasn't possible to call on the services of a wide variety of specialists and hire their services for perhaps only a few days or weeks at a time.
For the technical specialists themselves it wasn't viable to work for many different organisations for short periods because such a way of working would see them having to have more clients than they could realistically hope to find. Not only that, most work in an Industrial Age environment usually necessitates a physical presence, restricting a client base to within a fairly local area.
In the environment of the Internet all this has changed dramatically. Most e-business and e-commerce projects do not require the physical presence of the programmers and media creators. Almost all communications can be handled via the Web. Code modules can be transferred as email attachments. Web pages, graphic designs and animations can be demonstrated, discussed and modified by using a web site as a virtual screen that can be reproduced simultaneously in different studios separated by hundreds even thousands of miles.
Both system designers and specialists will not be restricted to dealing only locally. Systems designers can have the whole planet to source for technical expertise. Technical experts, for their part, can comb the planet for clients, using discussion groups and personal email contacts to rapidly and inexpensively spread the word of the availability of their expertise.
A suitable strategy of a system designer would be to make sure they had scores, maybe hundreds of specialist designers to call upon to meld together into a system of small virtual objects. In their turn, programmers and media designers could endeavor to build up a large number of clients who would occasional have need of their particular specialities.
All it takes for this to work is for system designers, programmers and media creators to have a suitable communication strategy to get enough contacts to satisfy their needs. The system designers need to build up a pool of talented experts that can be called upon to create appropriate modules. The programmers and media creators need to build suitably sized client bases to ensure their specialist services are constantly in demand.
Building contact lists is not something that can be done by flicking through yellow pages. It takes time. It requires a strategy: Credibility has to be established and a word of mouth operation put into effect. Once again we see it re-emphasised that the key to success in the world of e-business and e-commerce is going to be reliant upon effective communication with people rather than mastering the technology itself.