On Planning and Architectures

Over the Christmas Holiday, I was back in Northern Illinois visiting friends and family like I always do. Since I grew up in the area, I know it like the back of my hand, but I noticed something else. Even for areas which I had never been or paid much attention to, there was a simple pattern. Check out this map and see if you see it (click for a larger view).

That's right, the entire city (and even the county) is laid out in a very simple grid. Therefore, no matter where you are in the entire county, you have a set of Cartesian coordinates which can pinpoint your location relative to the origin. With the exception of just a few roads, it can be further represented by nearly every road in the county. 9000N designates the road 9 miles north of the origin. Anyone care to guess the distance between 9000N and 6000N?

Alternatively, lets look at one of my favorite intersections here in Northern Virginia (click for a larger view):
This happens to be my favorite because the intersection marked “Ama Valley” is where South and West Glebe go east and south respectively. It gets even more complicated in a few places where a road designated as “south” leads you both east and west in addition to south or when two roads start in parallel and end up crossing one another… And would a second time if one didn't end abruptly. Here in NoVa very few streets go straight in any direction unless they are major highways.

So what's my point in sharing these oddities of city planning? Yes, that's exactly it. One city was planned and the other wasn't. One grew up naturally after a couple hundred years of horse trails, etc while the other came about long after many of the major cities on the East Coast were many decades old.

To be honest, this is how much of the most successful software is developed. It doesn't spring out of nothingness fully formed with an ideal architecture and design. Instead, the first version comes out of natural use from something simpler. It's the second version where everyone can benefit from the lessons learned and the mistakes made. There's no shame in that.

The first version of your ERP (here abbreviating “Everyone Runs my Program”) System can't do everything. You can try to make it “perfect”, but you're going to fail and just annoy most of your users. I've seen this from a few organizations deploying dotProject. They want it to do everything on day one without consideration to what their users actually want.

Instead, look at your predecessors and start small. Look a the lessons you've learned and get a basic plan in place before you begin. The plan does not have to be set in stone, but it should take into account your priorities and resources available. Each step along the way, you can further determine what will and won't work, but most importantly, you can get feedback from your users. Yes, occassionally, you'll have to stop and perform some “revitalization” or refactoring to bring things up to spec and make sure they fit within the revised plan, but you'll find that you end up with a much better product overall.

And a product that people actually use…

Don't bother pointing out that the city pictured – Kankakee, IL – is less than 30k people. Point taken. But I would point out that Chicago, IL – a city of 3M people and home of the Chicago Bears – is laid out in a similar fashion with similar benefits.