Thursday, September 18, 2008

Bad Data Architecture

What is data architecture? Simply, it's data design. Same as you would design anything else in the world, you can also design data. Since you can design something, people like to add fancy words, like architecture, to make the activity sound important and impressive. In this case, designing and architecting data are basically the same thing.

With any design, there are pros and cons, and also it is easier to spot bad design over good design. It most cases you don't notice good design. It works for you or the consumer and is not a distraction and is not confusing. You don't have to think about the implementation to understand why it was done a certain way. If it is natural, the design is likely good, makes sense and allows you to carry on with your normal business. Basically, the design is not getting in the way when it is good. It doesn't require rules, definitions and instructions.

So what is bad data architecture?

You'll know it when you see it. It will feel awkward, you'll have to read documentation, you'll have to search on Google for answers. When table names don't imply the storage of specific content, the architecture is bad. When field names are generic, the architecture is bad. When the contents of fields (the value) are codes for more clearly defined words, the architecture is bad.

The table name should define the purpose of the container. The field names should spell out the attributes of that container. You should know what does in the table and how to populate the fields from their names only, or at least have a general idea of how to do this. If not, the architecture is bad.

Why is this architecture bad? Because data gets old. We keep it. We hang on to it. Software does not get old, or as old as data. Software updates, upgrades, is decommissioned, is uninstalled, is swapped for something else. Data moved between software. You need to understand data beyond and outside the context of the software currently using it.

Friday, September 5, 2008

Data Modeling With MySQL Workbench

I wanted to throw a pitch for MySQL Workbench. I had to do a lot of data modeling at my old job, and today I had to do a little more. At my previous job, a lot of money was spend to generate ERDs and centralize the modeling metadata throughout the enterprise. Regardless, if you need something quick to do data design, check out this tool. It may seem specific for MySQL, but it is likely your SQL will work across platforms. Or if your objective is to just demonstrate an idea quickly, check this out as well.

Wednesday, September 3, 2008

The New Delicious

If you use Delicious, you might have noticed the new user interface:

Oh happy day — the new Delicious is here

I think the overall changes look nice. A clean fresh look always helps attract new users. But I really miss the ability to navigate the tag structure completely in text with slashes and plus signs in the application tag form. Now the current tag location is not text, but an image indicating the current location. Then if you want to add another tag, you just type in next to the current and it combines it. I also can't back up with this functionality by just clearing the text and hitting enter. I have to click now. Plus signs were much more fun.

See Also:

If I Knew Then What I Know Now

I was looking at code I wrote not more then a few months ago, and I was amazed at how differently I would have written it today based on what I learned from the first time I wrote it. Then it got me thinking, what about all the code I've written way before then? All the code at my previous job, in college, in high school (yes I was writing software in high school), and in my spare time (hobby projects). I am sure all this code could stand some clean up, some re-organization, apply some standards, whatever. But I don't have the time.

Even a few days ago I passed on some code I did for a project for a Grid Computing course I took less then a year ago. At the time, I was rapidly writing this application to get it submitted for a project deadline. I never went back to clean it up. Looking at if after I shared it recently, I wondered how that reflected on me. Do people expect any software I've ever written to reflect my current abilities?

I sure hope not. Again, if you are sharing something, I guess it might be expected that the code be up to date. But I hope people are intelligent enough that programming skills are constantly evolving. You are never at the top of your game, or at your peek. You can always get better.

I hope that somehow all the code of my life will constantly show improvement. I think for that reason, I won't be updating any old code for the sake of style and clean up. If it works, its fine. It will give me something to look back on, like old photographs, to see how I've changed.

Share on Twitter