Archive for the ‘open source’ Category

Importance of Social Norms in Product Development

Monday, 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

Friday, 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

Virtualization using VirtualBox – Simultaneously running 5 operating systems

Sunday, 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 )