Friday, December 28, 2007

Everybody needs to wear sunscreen

This is a very interesting video about a positive outlook towards life. Enjoy.

Wednesday, December 12, 2007

Social Graph for the Enterprise

Social Graphs are the rage these days, and for a good reason. My manager, Ajith (LinkedIn), commented that he was not entirely sold on the concept of the social graph for the enterprise. Whenever the topic of social graph comes up, people immediately bring Orkut or Facebook in their minds. They are social networking applications, which use the social graph as an element of their infrastructure. Enterprises may not need applications like SuperPoke or iLike but they can build much richer applications by using social graphs as one of its platform services. I would even go to the extent of saying that the social graph is an essential piece of the information infrastructure that IT must provide. This is my bit of free advice for the CIOs.

IT always catches up a little later with the management and organization practices. Organizations have been experimenting and implementing matrix organizational structures for over 20 years. However, every employee table that I've ever seen has only one column for Manager. I wonder what could be the reason for that?

Most transnational organizations, prefer matrix structures to promote autonomy and to focus on regional strategies. Furthermore, the advances in IT in the enterprise has enabled managers to have a much wider span and has resulted in considerable reduction in the height of the organizations. When I say height, I mean the number of hierarchical levels in an organization. Organizations in business which demand creativity like software development or advertising, generally are much flatter than the older manufacturing firms following the organizational models created during the Industrial revolution. So the flatter organizations would have culture/values which promote interaction, entrepreneurship and transparency. Unfortunately, today's enterprises do not have the requisite IT infrastructure to foster such a knowledge community. Majority of the organizations do not yet have internal blogs or wikis. Even if they do, the level of awareness and the participation is abysmally low.

Let us assume a case of project management in a matrix organization. Every project has a project owner and each project creates a wealth of knowledge for the organization. Most of this information lies as word documents or excel files in a file share. Every developer/engineer working on the project could potentially be reporting to two/more people, his line manager and his functional manager, who would usually be the project sponsor. Further, if the organization employs a 360 degree feedback and appraisal system, we would need to identify his peers in every project that he had ever participated in. The current X.500 based directory servers like Active Directory or NDS provide the tools and infrastructure for a hierarchical organization. This necessitates that the project management system holds information about projects, its members, its sponsor and so on and this system is usually a closed system. Of course, it could provide certain integration possibilities using BAPIs, RFCs or web services but the information about the relationships is essentially in the system.

Let us see how the system evolves, if we have the Social Graph as an underlying infrastructure component. The social graph contains information about users, networks and groups. It has restful APIs to perform CRUD operations on each of these. Users can belong to multiple groups but can belong only to one network at a time. The network can be seen as an SBU/LoB or a division providing shared services. All the changes are timestamped and can be undone. This is essential for the integrity of the system. In addition to users, networks and groups, the social graph infrastructure could allow applications to park objects, permissions and authorization information along with the same. Let us visualize how a project management system can be built using this infrastructure alongside couple of other applications.

We could have weblog and wiki applications. Weblog application can provide permissions to comment or edit/create a blog to particular user or group. It can even restrict the visibility of the blog to some networks or groups. It can use the ATOM publishing protocol to enable RSS readers and third party authoring applications to integrate. We can do the same for Wiki pages. In fact, the comments module can be a separate application which can be mashed up with both blog objects and wiki page objects. We can then have a profile application, which provides profile pages to users, groups and applications. Profile can have the appropriate information about the group including the details such as the Blogs, Wikis and their corresponding RSS feeds that the user/group would like to expose. We could have RESTful web services exposed on each of these applications.

Now the project management system can create groups for each of the project and can add the appropriate members. It can setup a project wiki with the appropriate permission set and setup a project blog and create a profile page of the project. The project management system can now improve collaboration by assigning and tracking work packages.

You can observe that you develop small focussed functional modules which can be mashed up easily using the social graphs as the underlying infrastructure. I don't mean to say that the social graph is the silver bullet for organization's knowledge management issues. But it is about time that we acknowledge that we are trying to shoe-horn a tree when the problem actually mandates a graph.

This was supposed to be a mail to Ajith. But I thought it would be better off as a blog entry. Just a way of saving keystrokes. :-)