1. the process of formulating generalized ideas or concepts by extracting common qualities from specific examples
2. the act of withdrawing or removing
1. Difficult to understand; abstruse
No matter the extent of a persons’ genius, the scope of their intellectual reach, all of us have finite brain power. The storage and processing our brains can do is limited, however impressively large those limits are for some. And so to deal with the complex world we have built we use abstractions to blur away, or conceal, the complexity that lies underneath what we are working on or thinking about. We see this in everyday life, in things as simple as a car dashboard, showing us a simplified readout of the status of the operations of the engine and the systems that support it. But while abstraction is useful, vital really, in smoothing out the bewildering complexity of modern life, that it conceals what undergirds it can make it a tool of deception, rather than clarity.
Consider how abstraction is used in technology, programming in particular. At a low level, a CPU has a set of instructions that is offers to operate on various data registers. And though they might be similar, every processor, or at least every processor vendor, will provide a different instruction set. A programmer that programs in that low level instruction set, or assembly language, will need to be very aware of the particulars of the CPU architecture, and exert a lot of effort making sure that they are properly moving the right data to the right areas of the CPU. And their program will only work on computers with the specific CPU they built their assembly language program for.
Now enter higher level programming languages and compilers. Programming languages, particularly those considered object oriented, allow the programmer to focus on the data structures and the algorithms that operate on them, rather than the particularities of a specific CPU instruction set. The programmer can even come up with their own data types and structures if they like. The compiler then turns the higher level program into the machine language that the CPU will ultimately read. And notice that you will only need one compiler for every type of CPU as well. You can write a program once in a higher level language, and as long as there is a compiler written for it, it can be run any any CPU. This allows for incredibly more complex, and useful, software to be written.
Abstraction is also critical to computer networking. Sending a packet halfway around the world and back may take only 100 milliseconds or so, but it is a hugely complex endeavor. The jouney will most likely utilize a plethora of disparate technologies like DSL, DOCSIS, SONET, Metro Ethernet, MPLS, and possibly a host of others. To help manage the complexity is the OSI layered model, lower levels, and higher levels, are “black boxes” whose operation is abstracted from those not working directly within them. Someone writing a program that sends IP packets to and fro does not care, does not need to care, about what transport technology is being used, whether it is DSL, a cable modem, Frame Relay, or Ethernet. So too, the developers of Ethernet did not need to care about the particulars of the higher level protocols that their technology will transport, whether it be IP, IPX, or IPv6. In this way, the modularity and abstractions involved allow the millions of nodes that make up the global Internet to interoperate. There is no one who knows the particulars of all the technologies found on the Internet, nor does there need to be, as long as their points of conjuncture are well defined, the internal working of connected pieces can be kept pleasantly blurry.
Now compare that usefulness with how abstraction has been used in the world of finance, specifically with Collaterlized Debt Obligations (CDOs), those financial weapons of mass destruction responsible for so much recent economic destruction. Put simply, they are a collection of underlying debt instruments, such as home mortgages, globbed together or “securitiezed” into a single unit (though with tranches) that kinda look like a bond that pays an attractive rate of interest. They get maddeningly complex, with CDOs containing other CDOs (CDO²), and yes, CDOs containing CDOs containing CDOs (CDO³), and something called a synthetic CDO, which I honestly don’t understand but which seems to have a tenuous hold on anything that could be called reality.
The upshot is that the mass of underlying loans is abstracted away into the CDO, a AAA rating and nice return are all that are meant to be seen, not the festering meat hidden inside of shitty, poorly documented loans made to people who were unlikely to be able to pay them off unless the housing market continued to skyrocket. Ostensibly this abstraction spread out the risk of the underlying mortgages, but in reality it just concealed, and fobbed off, the huge risk of all the sketchy mortgages onto the CDO investors.
And sometimes it looks like the CDOs may have even been meant to fail. Take the famous case of Abacus 2007-AC1, a CDO deal set up by Goldman Sachs that collapsed almost as it got started. It was alleged that hedge fund runner John Paulson had some hand in picking the underlying residential mortgage backed securities, designing them to maximize losses from a housing collapse. He had bet against the CDO you see, and made a fortune when it crashed. In the end the SEC brought a suit against Goldman Sachs, which was settled for $550 million, though Goldman admitted to no wrongdoing.
The whole mess is pretty neatly illustrated by the artwork accompanying this Rolling Stone article by Matt Taibbi. A chef is pushing rats and other sundry parts into a meat grinder, while out the other end pumps ground red meat in the shape of AAA (the highest credit rating, or good as gold). How to detect a product is tainted if the underlying bits are abstracted away, all ground up?
Which I suppose is all a roundabout way of saying that the abstractions we use to build and interact with a hugely complex world can be used as a helpful tools or as means of deception. So why is it you can feel pretty relaxed trusting the code form the public repository you downloaded and incorporated into the program you are writing, but as far as that CDO or other exotic structured financial product you are perusing…well a phrase like caveat emptor doesn’t even begin to capture the dangers lurking beneath the fine print?
For starters the code in the repository is completely transparent, you can look through every line of code if you care to, you may even contribute by improving it if you’re so inclined. Then there is the reality of communities built around learning, sharing, and contributing to a code base that allows for the incremental development of more complex, sophisticated, and useful software.
Contrast that with financial engineers whose role model is Gordon Gekko. Men, who when they are not collaborating with their competitors to rig LIBOR or bids on municipal bonds, are gleefully slitting their throats. Fine fellows like Fabrice Tourre, a former VP at Goldman Sachs and player in the Abacus deal mentioned above. The SEC brought civil charges against him because of that deal and he was found liable by a jury on six of seven charged in August. Emails to his girlfriend helpfully reveal his psychology:
More and more leverage in the system. The whole building is about to collapse anytime now?.?.?.? Only potential survivor, the fabulous Fab standing in the middle of all these complex, highly leveraged, exotic trades he created without necessarily understanding all of the implications of those monstrosities!!!
Anyway, not feeling too guilty about this, the real purpose of my job is to make capital markets more efficient and ultimately provide the U.S. consumer with more efficient ways to leverage and finance himself, so there is a humble, noble, and ethical reason for my job :) amazing how good I am in convincing myself !!!
The boilerplate mumbling justification about making capital markets “more efficient” is by the book, but the end bit does reveal a touch more self awareness than I would have given his type credit for. Anyway, as important as regulation and regulators are, I don’t see a technocratic solution to the problem. People like the Fabulous Fab will never be constrained by rules, and in fact the more rules, the more complex the rules, the more fissures and cracks to be found and exploited. To get a feeling for how difficult it can be to investigate and prosecute financial crimes, have a read of this recent Matt Taibbi blog post.
There just appear to be far too many people focused on making capital markets more…efficient, on exploiting the dizzying complexities of the modern world, particularly the world of finance, to engineer massive wealth for themselves…and not a whole lot for anyone else. As opposed to people who build and hone things that actually improve lives. I’m not sure of the answer, but it’s a fundamental problem that doesn’t speak well to who we’ve become.
Complexity is (almost always) the Enemy
The Frog and the Scorpion