The goal of any language is to describe something-- to provide a map to some underlying territory, as S.I. Hayakawa once said. Accounting representations of business relationships and transactions are no different. This paper will argue that our accounting models are quite inadequate and propose some areas for improvement.

To begin with, I take it on faith that there is only one real universe with objective, verifiable phenomena. Human language continually evolves to describe it. Accounting is a form of language.

Over the last few thousand years humanity has devised our present sequences of noises (syllables) to transmit pertinent messages. Amazingly, modern society has gotten to this stage where we are stringing thousands of rapidfire sounds, "da dum ta bop chi " , to describe reality. This, in spite of the fact that the universe is multidimensional, immediate, and spatial, not sequential. And in spite of the fact that our syllables derive from so many flawed concepts from earlier centuries.  The moon was a very big deal to these people, the reproductive organs and so forth.

I believe we are now seeing a new language emerge which is more descriptive, useful and integrated than human language.

Database designers have done excellent work over the last 20 years based on the recognition that "nouns" and "adjectives" exist in the universe, and designing systems based on "tables" and "columns" to represent "entities" and "attributes". The SQL language contained their "verbs". Every database vendor surrendered to this reality, or went out of business. 

The database programmers achieved a language and methodologies which are really passive and descriptive, in the realm of cognition or apprehending the universe. But building on these necessary foundations, object oriented programmers in the 1990s have achieved a remarkable new stage of evolution, in devising a framework for action. Again, modelling the noun, adjective and verb. OOP Object oriented programming uses objects, properties and methods in pieces of executable software. It is uncanny.   XML provides the best framework for expression ever devised.

As the peculiarities and inaccuracies of language are gradually reduced, there is less fun and excitement, to be sure. If you ever want to see people excited to the point of agitation, look at your primitive tribes, drug users, and other people with inaccurate cosmologies. 

It has often been said that the history of capitalism is the mining and exploitation and ultimately, depletion of the world's reserves of ignorance. Certain kinds of ignorance exist-- a culture's propensity to work or obey without conscious decision, propensity to macho competition, adherence to a puritan work ethic, etc. Every possible economic spread that can be derived by exploiting these characteristics will be utilized until people wise up and stop behaving that way.

Similarly, the history of software development could be viewed as a mining and depletion of business advantage from information gaps. Like arbitrage, software is fueled by differences in available facts across space and time, or differences in the ability to analyze such facts. Software is the discovery of ever more accurate algorithms to model the universe and its actions. As successive layers of software become increasingly accurate, the economic spreads in the more primitive layers become too low to support lots of separate programmers. Thus, software development usually follows a kind of progression into increasingly particular, away from the general. In doing so, it destroys the high price structures of knowledge or information in those markets.

Implications of modern programming languages on the knowledge professions

There is a systematic automation occurring at the lower levels of all information and knowledge industries.  Once the simpler things can be done by machines, the professional must move to higher layers in the value chain, or retire from the market.  The encapsulation of professional knowledge in structures like XML unleashes a torrent of automation, analogous to The End of History and the Last Man.  It is like the automation of the textile industry or the steel mills.

Software will replace manual accounting, physical money, and the professions of accounting, tax and auditing. The accounting profession will only exist within a context of globally networked transactions being executed at nearly zero cost between businesses, retailers and individuals. The value added by CPAs, if any, will be in business consulting much as we see it today in the small business market, but much more personal and analytical, helping individuals and businesses achieve workable methods of interacting, implementing systems within which they can operate effectively, settling with other complex actors in the software environment.  There will be roles installing newer systems and teaching others how to use them.

There will be an explosion in the complexity of the trade environment. We are seeing a large-scale conversion from big employee labor forces to outsourcing of all kinds. This is natural and more efficient in many respects. The next development will be the emergence of more and more networks of service providers or outsources. The whole economy ultimately will be reduced to individuals, and partnerships of individuals, splitting allocations of all sorts of costs and revenue streams. You don't see this today only because the software isn't there yet. But that is what the economy really is, and therefore, that is what the software will become.

It seems to me that an awful lot of software is being simultaneously written to track, manage, buy and sell everything in the physical or economic environment. Every physical thing or process is being catalogued as to its identity which sets it apart from other things, and its various attributes. Broad segments of society are being required by economic forces to inquire very carefully into what really is happening, in order to build software, in order to compete in the economy. The most relevant adjectives are being enumerated, and what makes things tick is being coded by a thousand programmers into software objects to create software which is useful in daily life as well as in business.

This explosion in software creation seems to follow an inexorable trend from diversity towards similarity in software designs for the major, most commonplace applications. The root cause for the similarity is not mutual mimicry by programmers, of each other's work. Rather, the software hews closer and closer to the underlying reality until the process is relatively complete and no further economic gains can be mined with easy improvements in the software.

At first, all of the programs are too narrow, and nothing integrates with anything else, and everything is locked up by secrecy, superstition, and copyright. Even at this stage, however, any given software application will tend to have very similar entities and attributes, and perform similar actions. The nouns, and the selections of actions, that they model may be identical even though the variables are of different names. The attributes discovered by 1000 programmers cannot be very different, for the same vertical market software, can they?

This whole software exercise is a historic process. It is quite analogous to the development of human languages and semantics. Similarly, it will be driven inexorably towards that single, optimal language which most closely reflects the phenomenal universe. We are talking about natural science here, not creativity. This is determinism. There is only one phenomenal universe, and there can really be only one logical representation of it.

It is true that we've already got fifty computer programming languages and operating systems, right? However, there is only one fastest algorithm to execute any given action. There are a finite number of necessary actions for any computer, such as reading or writing a series of data to or from a given device. which engineers have pretty much agreed upon, otherwise their companies have gone out of business. So let's cut the bull. The shortest language for representing these Operating System functions would be to assign numbers to them, link these to the scientific best algorithm, and get on with life. There is not that much difference between a Pentium, an Alpha, a PowerPC, a Sparc. There is not that much difference between Solaris, NT, Linux, OS/2.

Further rant on standards: we long ago decided in this country that 110 volts A/C was good enough. You don't hear people starting electric companies, offering 50 volts, or 2000 volts. You don't hear vendors whining to the Department of Justice, that it's unfair the market won't buy their suite of 300-volt household appliances. Similarly, nobody ever proved that 110 was better, and vendors don't have to pay royalties to some inventor who first "thought of the idea" of using 110 volts.

I would admit that an entirely separate machine technology may exist to be discovered, which would execute code more effectively than today's machines, or support languages yet undreamed of, which model the universe more purely. However, this is rather irrelevant since we have machines adequate to run today's programming languages, and our computer languages are becoming a very pure medium for describing the real universe. In other words, when a better computer is built, it will have to run the best existing logical models of the universe. A practical person will not lose momentum, worrying whether the hardware or operating system will change.

Where we are today, is a million programs that increasingly do the same things with similar user interfaces and internal functions.

Where we are today, is a million separate programs with very limited ability to interact from each other. The biggest battle raging in computers is the battle over what "standards" and technologies will be used by pieces of software, to communicate with other local or remote software. But the competing standards for interoperability, CORBA, DCOM, etc. are very similar, and growing more similar every day-- they have to surrender to the existing object languages, which in turn, must surrender to objective reality in the phenomenal universe.

Modelling the money system:  the experience of Duality

Money is one of the most perplexing topics, reviled by philosophers and clerics. Yet, to successfully write software about money, you must get to the roots of what people are really doing with money. Programmers never go here.

Your understanding and comfort level with money will be similar to your comfort level with the experience of duality itself. Personally, I've reached some equanimity in relation to money, with these memes:

In the beginning of awareness, there is a perfect and nondual awareness.  The foundations and bibles of various religions talk about this initial state of consciousness as "the word", or "Om" etc... These are really metaphors, for the experience of the human mind.  It is  highly recommended, to understand what these people are talking about, and to understand the word "Duality".   Duality is the awareness of differences which is intrinsic to ordinary waking consciousness.  This is the Subject-Object experience, the experience of Ego.   Out of the awareness of differences, eventually, arise preferences.  Eastern philosophy calls these "desires" or "attachments". Perhaps Genesis does too-- in the "knowledge of good and evil".

Clearly human beings have desires, lots of them.  These are continually increasing and decreasing in relative priority, and they control the outcomes of buying/selling decisions in often fickle ways.  Money is the interface for the expression of desire.  

Accounting is the discipline of modelling and recording those decisions when they reach the point of manifesting as a transaction between the self and other.  The key thing to understand is that accounting software reflects an underlying reality which is asymettrical and ego-centric.  To be perfectly symettrical, the model would include the Subject and Object symettrically.  But such models have never taken root even in distributed systems, because each of the actors is still modelling duality: Assets minus Liabilities equals my equity.  Nobody cares whether the other guy is satisfied with a transaction, and nobody is remotely interested in an accurate entity/relationship diagram of the whole system.

Implications for Accountants


Double entry accounting has certainly proven a durable metaphor for reflecting economic transactions. Perhaps this is somehow related to Karma. Nothing is free.  The third law of thermodynamics states that every action has an equal and opposite reaction. Accounting is Newtonian: you record an asset only if you can record the related liability.   I bet this model is here to stay.  For our lifetimes, anyway.

Recording the obvious half of any transaction is easy, for example, some cash has gone out the window. Double-entry forces the bookkeeper to record the other half of the story: the offsetting liability, asset, etc. connected with it. The balance sheet is a snapshot of the company's karmic balance in the marketplace.

There is a great improvement in the accuracy and the usefulness of the accounting system (the model of reality) by going beyond simply recording one's change in position into a list, and taking the further step of identifying the other party and recording HIS change in position into a 2nd list.

The network is here, today

How wonderful it would be if each receivable asset we recorded in relation to our customers were simultaneously recorded on their books as a liability. Half of the bookkeeping work in the world would be eliminated, in one stroke. The mechanisms for authorizing each side of the transaction would need to be stronger than today's mechanisms. But when I book an invoice, why shouldn't it appear in their payables, as an incoming bill? I would like to see all my bills magically appear in my accounting system. It would save a lot of work.

Do we really need double entry accounting, these days? With a computer there is no issue of arithmetic errors. The explosive popularity of Quickbooks, for example, seems to suggest that a graphical user interface with a picture of a check on it, is a better language for describing an economic transaction, for most people. Is accounting destined to become a multimedia application? The universe is spatial and immediate. Only multimedia can represent that.

Before they GUI us out of existence, maybe we all better take pause and reflect on whether we are serving the needs of small business, with our clinging to double-entry accounting, the traditional BS and Income Statement, etc.

Maybe what we really need is a collection of lists, and a collection of software to manage each of them for what they really are, software which models the cash account, the receivables, the equipment account and the properties and methods which apply for each of these accounts. These software objects would expose their properties and methods to authorized parties to transactions, out on the internet.

The key point I would like to make, is that CPAs and programmers have got a long ways to go, in designing accounting software which actually resembles today's economy, and business environment. We need to fundamentally understand and communicate why we are insisting that our clients maintain these peculiar double-entry books in today's fashion. But much more importantly, even if the whole Ledger metaphor is retained, we need to wake up and recognize that the software needs to be extended to incorporate the rest of the picture that exists in the business, and to connect with the other party on each transaction. Most businesses operate much more efficiently using software particular to their industry. This software needs to be broadened to the point that the economic aspects (i.e. debits and credits) of everything the business does are "posted to the ledger". A large fraction of the data entry or processing happening, has economic consequences and we need to capture these, and ultimately reconcile them with the other party.

As long as CPAs insist the Ledger is their turf, and the accounting system is a special kind of closed software environment, which is somehow separate from the rest of the enterprise model, they are really causing a lot of damage to the effectiveness and integration of the client and wider economy.

In my own opinion CPAs should get our heads out of the sand and provide more tangible economic value on this, provide some leadership. For example, start working on a grass-roots payments and settlements system to eliminate the totally useless, mechanical activities of settling accounts payable, accounts receivable, and payroll which are still being done with the vile and loathsome paper checks and invoices.

CPAs and small business are making a terrible mistake by leaving the question of online transactions to the banks and credit card companies, because these industries have no interest in helping humanity to simplify billing or collection. They have no intention of constructing anything resembling an efficient network for commerce. Instead, their finest minds are busy weaving webs to maximize fee income. To misinform us as to what the real entities and relationships are. To outright prohibit us from settling directly with each other! Every weapon of FUD is thrown at us, to exploit our fears that somebody will steal our money or our secrets. The congress prohibits Americans from standardizing on 128 bit encryption, knowing full well that foreign vendors already provide it. We're not allowed to have safe cybercash wallets!

I call this the "Hydroelectric theory of transaction processing" --erect as high a dam as can possibly be engineered, to create as much pent up force as possible. Block any alternatives. People will be so desperate to settle their transactions that they will gladly go thru the turbines of the banking system and turn the dynamos of profits.

Financial institutions know that there is rather limited role for them, really, in settlements transactions--we should be settling directly with each other across some kind of network, with some better languages to describe our identies, our mutual balances, and our mutual transactions. A decentrallized network which is composed of ordinary, $500 computers running in any retail shop, with ordinary freeware Linux with 128 bit encryption within some agreed-upon standard.

CPAs are also making a terrible mistake by leaving the design of online commerce entirely to geek programmers. Programmers are fairly clueless to financial systems and the tremendous need for integration that exists. Let me give you an example. There are numerous digital cash technologies emerging, all with fantastically elaborate encryption and validation systems. But none of them enables you to encode your account receivable code in your money, when you send it to a vendor. There is no user-defined cargo space in any of these money because they are designed in a vacuum. The big 5 CPA firms, the big EDI firms and the Banks agree: let business choke trying to account for and administer these digital money, creating more hydroelectric power for us.

Business owners, harassed for generations by their accountants, always tell the programmer to "Butt out" of the accounting system, debits and credits, audit trail and all that bunk. CPAs were the cause of this mess and CPAs are really the only party who can put out the message, that the accounting system needs to be profoundly interconnected with the internet and with the company's business system. We can handle the internal control and security issues, working together with programmers and software vendors.

CPAs also need to tell congress to stop the needless complexity of the tax laws. How did we ever get so gutless, that we put up with all these useless Alt Min Tax, section 754, 77 baskets of foreign income, different phaseout formulas for every kind of deduction or credit, and other complete exercises in fantasy put out by lawyers in Washington DC? The congress doesn't have the brains of a rabbit. Brains the size of a cashew. Greatest deliberative body? hummphh.


(long pause) ...say, what were we talking about, anyway?

Todd Boyle CPA --Kirkland WA-- tboyle@rosehill.net