Categories
Software Architect

Great content creates great systems

I have seen my fair share of initiatives focus endlessly on requirements, design, development, security & maintenance but not on the actual point of the system – the data. This is especially true in content-based systems in which the data is information delivered as unstructured or semi-structured content. Great content means the difference between a system that is hollow and one that is relevant.

Content is king. Content is the network. Content is theinterface. In an increasingly interconnected world, content quality is rapidly becoming the difference between success and failure. FaceBook vs. Orkut /Google vs. Cuil / NetFlix vs. BlockbusterOnline…. the list is endless where battles have been won and lost on the content battlefield. One could argue that content-related aspects are not the software architect’s problem – but I think the next decade will certainly disprove that.

Part of the design process for a new system should be devoted assessing content inventory. Designing an effective domain/object/data model is not enough.

Analyze all available content and assess its value on the following criteria:

  • Is there enough content available? If not, how do we attain critical mass?
  • Is the content fresh enough? If not, how do we improve delivery rates?
  • Have all possible content channels been explored? RSS feeds, Email, Paper Forms are all channels.
  • Are there effective input streams built to facilitate the continual delivery of this content into the system? It’s one thing to identify valuable content, but another thing altogether to harvest it regularly.

Make no mistake, the success of a system depends on its content. Spend a healthy part of the design process to assess the value of your content. If your findings are less than satisfactory then that’s a red flag and the stakeholders must be advised about. I have seen many systems that fulfill all contractual obligations, meet every requirement and still fail because this fairly obvious aspect was ignored. Great content creates great systems.

'Coz sharing is caring
Categories
Software Architect

Avoid “Good Ideas”

Good ideas kill projects. Sometimes it’s a quick death, but often it’s a slow, lingering death caused by missed milestones and a spiraling bug count.

You know the kinds of good ideas I’m talking about: Tempting, no-brainer, innocent-looking, couldn’t-possibly-hurt-to-try sorts of ideas. They usually occur to someone on the team about halfway through a project when everything seems to be going fine. Stories and tasks are getting knocked off at a good pace, initial testing is going well, and the rollout date looks solid. Life is good.

Someone has a “good idea,” you acquiesce, and suddenly you are re-fitting a new version of Hibernate into your project to take advantage of the latest features, or implementing AJAX in some of your web pages because the developer showed the user how cool it is, or even re-visiting the database design to utilize XML features of the RDBMS. You tell the project manager you need a few weeks to implement this “good idea,” but it ends up impacting more code than originally anticipated, and your schedule starts to slip. Plus, by letting in the first “good idea,” you’ve allowed the proverbial camel’s nose in the tent, and soon the good ideas are coming out of the woodwork and it becomes harder to say no (and the camel is soon sleeping in your bed).

The really insidious thing about “good ideas” is that they are “good.” Everyone can recognize and reject “bad” ideas out of hand – It’s the good ones that slip through and cause trouble with scope, complexity, and sheer wasted effort incorporating something into the application that isn’t necessary to meet the business need.

Here are some key phrases to look for:

  • “Wouldn’t it be cool if …” Really, any sentence with the word “cool” in it is a danger signal.
  • “Hey, they just released version XXX of the YYY framework. We ought to upgrade!”
  • “You know, we really should re-factor XXX as long as we are working on ZZZ …”
  • “That XXX technology is really powerful! Maybe we could use it on …”
  • “Hey, <yournamehere>, I’ve been thinking about the design and I have an idea!”

Okay, okay, maybe I’m being a bit too cynical with that last one. But keep watching out for “good ideas” that can kill your project.

'Coz sharing is caring