Tag Archives: coding

Gosling on Electrical Engineers

James Gosling may use emacs, but apart from that, he’s clearly not stupid:

computers were showing up in all kinds of embedded devices, like TVs, VCRs, elevators, locomotives and cellphones and all that. But it was all being done by electrical engineers and they were all reinventing computer science in the most crazy, retro backward way…. They were inventing network protocols that were just laughably stupid.

Problems with ObamaCare

Quite apart from the wisdom of interfering with great swaths of the economy to create new entitlements, there is the practical matter of making it work. And that’s proving to be a problem for people working on the Obamacare web site at HealthCare.gov:

The better way to do things is a school of software development called Agile — it’s been around since the 1950s, was basically codified in the early 2000s, now has a whole non-profit devoted to it, and is the dominant form of software design in teams. Rather than moving from one static stage to the next, it emphasizes constant iteration and testing, with prototypes building on prototypes so the endpoint is something that works. The only problem, from a government perspective, is that you need to be comfortable with not knowing exactly that they will look like.

Yes. Just because a type of software development got us to the moon (back when 1K of RAM was a lot) doesn’t mean it’s the right approach to use in the 1990s. Or especially the 2010’s.

That’s one lesson from software development. Here are some others:

1) avoid building centralized systems. The mainframe has given way to minicomputers and PCs then a client-server world and now a web of devices, browsers, and various types of service providers. Web 2.0, baby.

Where does a centralized “Five Year Plan” approach to governing fit in a world of decentralized independent actors?

2) have the right type of abstraction. A spinning metal disk has nothing in common with a USB stick nor with an internet connection, but I can save a file on any one of them with the same program. That’s because there is an abstraction called a file system, and my word processor doesn’t really care what the hardware looks like: it can be silicon, magnetic disks, or something in the cloud. Software drivers for each type of hardware present a common interface that makes them all look the same to the word processor.

A centralized approach to governing doesn’t permit there to be appropriate abstractions. A mix of federal, state, and local governments, with large and small commercial and nonprofit organizations, allows you to have abstraction. Each one does what it needs to do and only that.