Importance of Social Norms in Product Development

August 4th, 2008

I first read about Market Norms and Social Norms in Dan Ariely’s Predictably Irrational. This concept is well elaborated by Dan in chapter 4 titled “the cost of social norms”. This post extends this idea and explains how one should leverage social norms in software product development.

Let me start by explaining Market Norms and Social Norms. Social norm is behavior that we exhibit when we are obliged to do something. For example, when your friend asks you to help him move his furniture, this comes under social norm. You don’t get any immediate benefit on doing this, expect for the simple pleasure of helping someone. If you meet not so well known neighbor and he says is willing you pay you money for moving his furniture, this comes into market norm. These are two completely different scenarios. Whenever you talk about money, you are in market norms. The way a person reacts to market norms is completely different from the way one reacts to social norms. Mixing social norm and market norm can be dangerous depending on the situation. For example, if your very close friend happens to say that he will willing to pay you for moving his furniture, you would be offended by this. In this case your close friend is trying to offer money for a social norm, which is unacceptable to you. On the other hand, if you boss asks you to work for one month without a pay, you will be offended by that too. The reason – market norm is completely driven by money. The main motivation in market norm is money. The motivation is social norm is many – responsibility, respect, obligation, etc. Dan in his book says we live in market norms and social norms in parallel. He also stresses that social norms are extremely powerful. One example, is open source software that is largely build by developers driven by social norms.

Lets now talk about Product Development where people are more often than not driven by market norms (at least in most of the companies). One key aspect of product development is quality. You can hire the most expensive programmers/testers to build high quality software. High quality comes at high price. Many may argue saying that high price need not necessarily mean high quality. Agreed, but usually high price does imply high quality. All we are talking about in this example is market norms – expensive programmers/testers. You can also achieve nearly similar quality with lesser cost. This can be done by factoring a little social norm into the market norm. Say you hire less expensive programmers/testers and add a little social norm to the situation. You can do this via empowering the programmers by giving them more freedom and by making them feel more responsible. This way, the programmers will be obliged to live up to their expectation and do the little extra to ensure they do their best. Adding social norm to the market norm can do wonders. The amount of social norm that you should factor into market norms needs to be carefully decided. Too much can be dangerous and can have other side effects.

Many companies are factoring social norms into market norms. This is done in many ways, like pampering employees with various benefits, flexible working hours, working from home, etc. One key factor that helps factoring social norms into market norms is the flat organization structure. A flat organization means many employees report to a single manager. This drives micro management out and ensures that employees are empowered to make their decisions. Once employees realize that enormous trust and responsibility has been given to them, they are immediately pushed to social norms. They become obliged to live up to their expectations. Factoring too much social norm into market norms can backfire. During periods of lay offs it becomes extremely difficult to lay off when social norms are high. Ideally, a good mix of social and market norms must be achieved and doing that is an art.

There are several software development methodologies that are used today and each has its own benefits. Ideally speaking, a software development methodology should try to factor in social norms. Agile Development Methodology is one such methodology. Thanks to Shreekar Inamdar for introducing Agile. In Agile, developers are empowered to make their decisions, thereby bringing social norms into market norms. This is definitely one of the reason why Agile is so popular. There are enormous benefits of using Agile for which I will dedicate a separate post later.

Ironically, both Flat organizations and Agile are used several famous and popular IT majors. They are obviously trying to harness the power of social norms, probably implicitly.

Hardwares and Softwares

June 6th, 2008

I have been using open source and free software for a decade now. I thought its time to dedicate a post to them. I amVenkat\'s PC often asked which is the best software to do this or do that. In this post you will find the list of softwares that I use regularly and can’t do without. This post also includes the hardware which is equally important. I am not evangelizing any product or company. I am just posting what I thought was enormously useful and made a difference to me:

The Hardware

My home PC has been an AMD for the past 5 years. I currently use a AMD Athlon X2 with 6 gigs of RAM. It has a 19inch Viewsonic and three network cards. I also have a Wifi Router and a UPS which gives me around 20 minutes of backup. I use the Dell SK-8115 USB keyboard.
I hate carrying big laptops, so my latest buy is Asus Eee PC 4G which runs Xandros. I use this when traveling.

Softwares

Operating Systems
My home PC has been running opensuse for the past 3 years. It currently runs opensuse 10.3 x86-64 with kernel recompiled. I also have Slackware 12 dual booted. Through Virtualbox I run a whole lot of other operating systems.
My Eee PC 4G runs Xandos. I previously had a phone running Symbian Series 60v3, now I have a Windows Mobile 6 :( .

The Web Browser
Goes without saying, I currently use Firefox 3.0. Konqueror sometimes.

Instant Messengers
Pidgin and Skype for Linux.

Office Tools
Open Office suite – primarily Open Office Writer. Dia for flow charts and diagrams.

Image Manupulation
GIMP

Virtualization
Virtualbox

Email Client
Thunderbird and Google Apps for my domain TechProtocol.com.

Text Editor
Vi, JEdit and gedit

IDEs
Netbeans and Eclipse

Compliers
GCC and Java

Search
Google and Grep

FTP
Filezilla

Download
Azureus and DownThemAll! (extension for Firefox)

Remote Access
TightVNC and SSH

Viewers
KPDF

Document Creation
LaTeX

Blog
Wordpress

Multimedia

Xine and MPlayer. Amarok for Music.

CD/DVD Burning
K3B

System Management
Yast

Six Degrees of Separation 2.0 and Product Development 2.0

April 28th, 2008

Six Degrees of Separation refers to the idea that every person on earth is connected to every other person on earth by a chain that is not longer than six. For example, George Bush and the person reading this post are connected through a chain not longer than six. So, the person reading this blog, knows person A, who knows B, who in turn knows C, who in turn knows D, who in turn knows E, who knows in turn knows George Bush. As you may guess, there are no empirical proofs for this. However, there have been several experiments conducted in the past which tell us that six is the average length of the chain. You can read more about Six Degrees of Separation on Wikipedia.

The idea of six degrees of separation dates back to early 1900s. Those were the days when most people did not have access to tele-communication. Lets keep phone and mobiles aside, today, Internet has played a very important role in connecting people worldwide and social networks have helped enormously. So it possible that six degrees of separation has come to down to five or maybe even four. We should analyze popular social networks like Facebook (add the “Six Degrees of Separation” application on facebook) or orkut to figure out what the right degree is today. I would probably like to call this new degree – Six Degrees of Separation 2.0.

Now, the idea of this post is not to coin a new term, but to elaborate its importance in today’s product development organization. Yes, I am talking about the application of Six Degrees of Separation to large organizations. Let me elaborate with an example. Consider a small organization, of say, about 20 people. The average degree of separation would be 1 or at the maximum 2. As the size of the organization increases, the degrees of separation increase up to a maximum of 6. More often than not, information in a large organization is spread over people and not the corporate internet. When one needs help, they end up calling the friends they know. This is called phone-a-friend model as pointed out by David Haimes in this post (which actually motivated me to write this post). This is a very interesting model used in every other product development organization. Its important for product development organization to use Web 2.0 to create internet portals or something that will encapsulate the information that people have into a non people dependent form – say for example blogs, forms and mailing lists. This is called Product Development 2.0. Read David’s post for more information on this.

In any product development organization, phone-a-friend model of working is very important and attributes to a great deal of productivity. Employee productivity is higher when there is a good network within the organization. Yes, you can also argue that employee productivity decreases when they know too many people. But Six Degrees of Separation is not about knowing too many people, its about the length of the chain. The lower the length the easier is the information to access and thereby increasing productivity. Its important to measure the average degrees of separation within your organization. A very low degree and a very high degree are both equally bad. I don’t have to explain why a very high degree of separation is not good. However, what I need to explain is why a low degree is bad or rather not advisable. The main reason is that, for a large organizations, a low degree of separation like 1 or 2 is practically impossible to achieve. And even if you try to achieve that, you will end ensuring that your employees spend a good amount on time on communication, thereby reducing their productivity. I would say a degree of 3 is very optimum and a degree of 4 is easily achievable to have an efficient organization. So, what do you do to ensure that you have an optimum degree of separation in your organization? Social networks, collaboration tools, blogs, instant messengers, etc. An internal social network not only helps in reducing the degree, but also can be used to measure and improve. Degrees of Separation is on of the key components of Product Development 2.0.

Till date, degrees of separation wasn’t really something that has been consciously tried out in the organizations. But if you think about it, that is something we have been trying to achieve implicitly. What I tried to portray is one point of view, of how the idea of degrees of separation can be used to improve productivity. Imagine what you can achieve when you reduce the combined degrees of separation of your employees and customers together. Imagine the possibilities with Product Development 2.0.

Virtualization using VirtualBox – Simultaneously running 5 operating systems

April 20th, 2008

I have been experimenting with VirtualBox for the past 3 months. My experience so far has been good. VirtualBox is simple to configure and use. VirtualBox OSE is definitely something you don’t want to try out. Its very buggy. However, the licensed version shipped with the installer is good. The best part of VirtualBox is that the images are very portable. My friend installed Solaris on his mac using VirtualBox and I had to copy the image to get it running on my x86-64. Sweet.

VirtualBox performs well. I have a AMD Athlon X2 x86-64 with 6 gigs of RAM. I was able to run 5 operating systems simultaneously on my openSuse 10.3 guest with VirtualBox installed. Check out the screenshots at the end of this post. Absolutely no performance lag. Everything worked smoothly. I could burn a DVD and play some music on my guest with the 5 operating systems running. Many would attribute this to the hardware configuration. However, I give equal credit to the hardware and the software.

Apart from the above, I have also tried running legacy operating systems on VirtualBox, like Slackware 96. For Slackware 96, Installation started but then it conked. Had some luck with Red Hat 5.2, but the installation hung at the last stages. Planning to try out BeOS and OS2Warp in the near future. The other interesting thing that I tried was the nested virtual machine installation. Installed Windows XP on openSuse 10.3 x86-64 host. Then installed Virtual Box on Windows XP and then tried Ubuntu with Windows XP as guest. The installation did not start. Not sure why. Will give this a try again. If anyone got any of this working, let me know.

The following screenshots show VirtualBox on openSuse 10.3 x86-64 host with 5 guest operating systems running simultaneously – Ulteo, Mandriva, Open Solaris, Slackware and Windows XP.

Running 5 operating systems simulataneously on VirtualBox

VirtualBox on openSuse 10.3 x86-64

(Click on the images to enlarge )

Self Support 2.0

March 24th, 2008

I use Linux extensively and whenever I run into trouble I use google for help. More often than not the information I need is available on forums, blogs and group emails (usually in that order). Most of the time, if not always, I end up finding solutions and solving problems on my own without taking expertise’s help. By doing this, I have managed to perform complex tasks on my own. For example, I managed to fix a bug (on my own) in a C code without actually knowing the code thoroughly. I have learned and used several products this way. This not only saves time and money, but also improves efficiency. This also reduces the learning curve. The ability to find information easily and use that to solve your problem is Self Support 2.0. Help 2.0 can be used here instead of Self Support 2.0, but the word Support is very important. For Self Support 2.0 you don’t pay any support charges. Your cost is zero. Self Support 2.0 is not limited to using Google to find your information, but searching, no doubt, plays an important role. This post is to illustrate the importance of Self Support 2.0 for any product development organization.

The success of Self Support 2.0 depends on how much information is available and how well accessible they are. Self Support quotient can be used to measure how well Self Support is for a particular product. Note, just placing documents/readmes/etc on the internet will not increase your Self Support quotient. That is where blogging, internet, web 2.0, etc comes into play. Blogging is one of the key factors for the success of Self Support 2.0. I can explain why maybe in another post, later. Self Support 2.0 is critical for any product development organization. Say, for example, an ERP company wants to sell their product. One of the key factors (often discussed widely) is how much cost goes into support and for hiring engineers to implement the product. Now here is where my theory comes into play, the cost of engineering or support is inversely proportional to the amount of Self Support 2.0 quotient the product has. So if a product has lot of information available widely on the internet and is accessible via Self Support 2.0, then the cost of engineering/support is low. Well, I can’t prove this, but if you think about it, it happens to be true. Take for example, Java professional are cheaper than Oracle Applications professionals. People might argue that this depends on demand supply. Yes, no doubt, but if there is something which is easy to learn then the learning curve is low. You can train your existing resources in no time to learn new products.

Self Support 2.0 will not replace the traditional Support, but will supplement it. 1 to 1 Support is definitely need for any enterprise class production environment. No doubt on that. But the value of Self Support 2.0 should not be underestimated. If I can get the information I need in 10 minutes by Google search, I won’t spend 1 hour just to log a service request. Which means I can learn quicker, and when I can learn quicker it means lower training costs, and in long term a win win situation for everybody – product development company, clients, developers, etc. More often than not, developers don’t have access to Support or cannot afford it (unless of course the company they work for has access to support). What do they do then? They either ditch the product or use something that is easy to learn. One of the reasons Eclipse is widely successfully is because Self Support 2.0 quotient for Eclipse is high. Try this exercise out – starting trying out JDeveloper and Eclipse. Both are more or less same in terms of basic features. You will soon decide to use Eclipse because you find information about it easily available – Self Support quotient is high. One may argue that Eclipse has plenty of plugins which makes tasks easy. True, but since people found Eclipse easy to use or information about it easily available, they build lot of plugins for it. Evangelism comes out of high Self Support 2.0 quotient. In the long term, Self Support 2.0 reduces engineering costs which is a key in the IT/ITeS industry as major costs are associated to engineering.

Many will disagree with me, but in the years to come, Self Support 2.0 will be more valuable than the traditional Support. Self Support 2.0 fosters Evangelism which is important for wide acceptance of a product. Again, I am not saying traditional support will be eliminated, but Self Support will be important for a product’s overall success in the future.

To summarize, the success of product depends on Self Support 2.0. In order to have an edge over others, product development companies should ensure that Self Support 2.0 quotient of their product is high.