Archive for July, 2008

Four Simple Truths that Undermine Software Architecture

Monday, July 28th, 2008

The obsession with architecture in software development is straining credibility to the extent of absurdity. There are serious problems with the notion of architecture as used in the software development community.

1. The Architecture Layer is Arbitrary.

The software design is the totality of design choices that have been made, where a design choice assigns a specific property to the design artifact. We can separate these choices into levels of abstraction to promote cognitive economy. When we chose to call one of these levels the architecture layer, we divide design decisions on an arbitrary, undefinable line, labeling some “high-level” and others “low-level.” Creating this false dichotomy can blind us to the true nature of the task and our solution, and hide the fact that…

2. All Design Levels are Interconnected

Whatever way you divide your design decisions into levels, these levels are all still interconnected. Decisions at one level can affect decisions at other levels. Therefore, if you ignore “low-level” considerations while designing at the Architecture level, your design may be horribly flawed.

For more on this point, see Steve Reeves’ essay, Code as Design.

3. Architecture Diagrams Are NOT the Spec

For reasons I do not understand, software developers talk about architecture diagrams as if they are the system specification. Drawing an analogy to engineering, they argue that their diagrams are the blueprints, and programmers are the construction workers who build the product from the blueprints.

Programmers = construction workers is a false analogy
.

Construction workers don’t make design decisions. Programmers do. If the spec were so complete that it were machine executable, we wouldn’t need programmers at all. But it’s not, so we do. Programmers are designers. The code is the spec. The compiler is the construction worker. Architecture diagrams are just analytical models to assist the programmers.

4. Top-down Design is Idealistic

While not all architecture is derived from a top-down process, architecture is central to top-down design. In my own experience (obviously I can’t generalize, but take this as you will) the people who most advocate architecture are the same people who advocate top-down design, and the two ideas are closely linked for them.
Top down design can’t work, not even in principle, if you don’t fully understand the problem you’re trying to solve.

If you simultaneously understand the problem at hand, and the forces and variables you have to manipulate to solve that problem, and the relationship between the problem and those forces and variables, then you can derive a solution systematically from the top down. Unfortunately, this never really happens outside toy problems and math class. In the real world, we have to figure things out as we go, and this need for discovery undermines the validity of a top-down strategy.

Conclusion

In summary, the concept of software architecture is not wrong as much as divorced from the reality of development. At its core, architecture is an arbitrary, false dichotomy that obscures a multilayer design into two fuzzy, aggregate layers, obfuscating the complex network of interdependencies and encouraging a doomed top-down strategy, while masquerading as specification – a role for which it is manifestly inadequate.

Related articles: Service Oriented Architecture is your Ticket to Hell

Note: If you are a tech-savvy writer with a nose for B.S. and you’re interested in writing a column for The War on Bullshit, please leave a comment and we’ll get back to you.

Four reasons China will own you, soon

Thursday, July 24th, 2008

A lot of folks are watching the escalation in terrorism along the Pakistani-Afghani border, the growing tension between Iran and Israel, and the pronounced anti-Americanism the world over, and they fear war. There is a movement of doomspeakers who believe our end is coming - or at least some turbulent years - where we will be forced to continue fighting in the Middle East.

I’m not one of them. Here’s what I’m afraid of: innovation. I don’t fear us being attacked by disorganized fundamental religious nuts from the desert; I fear a much quieter and more subtle threat. America may fall, but it won’t be through force of arms; we’ll just be left in the dust technologically and then methodically bought out by Eastern Asia. Don’t believe me? Here’s a few reasons why Eastern Asia, in particular China, will own your ass soon.

4. Eastern Asia has more meat.

They simply have so many people in parts of Eastern Asia, that they don’t have to worry about preserving the life and good health of their workforce. They can just replace them. Same goes for military might. Allied military leaders during World War II thought the Russians were bad, sending legions of cannon fodder until the bodies just piled up and they had to climb over them to keep attacking. There are enough people in China that their top 25% in just about any field outnumber the U.S. and Canada combined. There’s no shortage of muscle and meat in the Far East.

3. China has a lot of damn money.

To give you an idea, here’s the top four economies in the world: the United States, Japan, Germany and China, in that order. But here’s the difference between China and the the rest of us: they are rapidly growing. While the United States’ GDP has continued steadily to grow in small increments, China’s GDP growth in 2007 was 11.4%, compared to our 2.2%.

There is also the concern of public debt. The US owes about 9 trillion dollars to the rest of the world, mainly China. I’m not as strong on economics as Kavan, perhaps, but these are disturbing trends to see. China expands, while we stagnate. Wonderful.

2. We are a bunch of lazy hedonists who have forgotten how to do anything.

Just think about this: Steve in Oklahoma thinks guitar is real damn cool. He goes to a friend’s house, picks up his guitar, and realizes whoa, this crap’s hard. I’m not gonna learn this. Instead, he gets his parents to buy him Guitar Hero and becomes a master of the little-plastic-Fisher-Price-pseudoguitar-thingy. Meanwhile, in China, Steve’s counterpart isn’t playing guitar or Guitar Hero. He’s probably working in the factory that produces Guitar Hero, making the brainrot American kids consume on a daily basis.

How many 16-year-olds do you see anymore working to pay for their car, or trying to save money to go to college in a few short years? Not too damn many. Half our citizenry doesn’t ever have a source of employment before finishing their B.A. - paid for by mommy and daddy.

This is not the case in Eastern Asia. Reading census data from the People’s Republic is an interesting thing; one thing you may notice is that when the labor force is examined, it is from age 15 and up. That’s because 15 is the age these people start working. I’m not for shipping our kids off to the mines at 12, but you know what? Take away the video games, make them mow the damn lawn, and for God’s sake don’t give them some stupid idea that they should never have to work before graduating college.

1. Wal-Mart is gonna sell us out.

When was the last time something you bought at Wal-Mart said “Made in America” on it? Probably a long time ago, since about 70% of products sold at Wal-Mart are made in China. According to another report, Wal-Mart has exported about 1.5 million jobs to China. How are they an American company? So one of our country’s largest employers isn’t even remotely American anymore, great. You might think I’m a nutso conspiracy theorist, but picture this and tell me it’s not frightening: straw rice-field hats on smiley faces.

McCain thinks the Iraq war is Noble? NOBLE?

Monday, July 21st, 2008

This week John McCain called the war in Iraq a “noble cause.” Noble? NOBLE?!?!

Let me get this straight:

1. The CIA helps Saddam Hussein take over Iraq, starting in 1963.
2. The CIA creates Al Qaeda to give the Russians trouble in Afghanistan.
3. The US spearheaded the United Nations effort to contain Iraq through embargoes, impoverishing the populace and slowly eroding Iraq’s infrastructure.
4. Through the UN, the United States pressures Iraq about their military, Iraq cooperates and dismantles all their rockets, missiles, antiaircraft guns and basically anything they can use to fight a modern war.
5. A bunch of guys from Saudi Arabia fly planes into the World Trade Center.
6. The Bush administration lets Al Qaeda go.
7. Instead, the Bush administration fabricates evidence of nuclear weapons in Iraq to distract a public that can’t tell the difference between Iraqi and Saudi Arabian terrorists. Nevermind the hypocrisy of a country with nuclear weapons telling another country not to develop nuclear weapons.
8. The United States declares an unprovoked war on Iraq, a sovereign nation that has committed no act of war.
9. Since Iraq dismantled most of its military trying to cooperate with the United Nations, it is incapable of fighting back and is quickly conquered.
10. The Bush administration then brands anyone who resists them in Iraq “terrorists and other extremists,” denies them prisoner of war status, tortures them and leaves them to rot, without trial, in George Bush’s floating S&M Dungeon*.
11. Meanwhile, the leaders of Al Qaeda are laughing their asses off in a palace in Saudi Arabia somewhere. (Osama bin Laden is a senior citizen on dialysis. He is not hiding in a cave in Afghanistan. This is another lie.)
12. John McCain calls the Iraq war a “noble cause.”

Invading and conquering a country that has not attacked you and has endeavored to cooperate with your ever less reasonable demands, is not honorable or noble, it’s unpatriotic, cowardly, evil, reprehensible and Hitler-esque. Fuck you John McCain.

*thanks to John Oliver for this phrase.