Sunday, July 26, 2009

Software Development: Moving from Art to Science

Have you read Moneyball? The book is about how Billy Beane, the general manager of the Oakland Athletics, revolutionized the way we evaluate baseball players in order to create better teams with less money (maximize quality while minimize cost). The premise is that the collective wisdom in baseball is based on antiquated statistics that were defined a hundred years ago based on what was easy to measure rather than what could be measured; baseball management was living in the 19th century. Billy Beane believed that by using 21st century statistical analysis, he could create a far better team with far less money. When he put his ideas to the test, his team became one of the best in baseball with one of the lowest team salaries in the game.

I believe in software development, we are still living with antiquated and immature metrics and that there has to be a better way. Let me give you an example. Take project estimation and staffing. In a professional services firm you often have to bid on projects without any idea of who will be on the development team if you win the bid. So what do you do? You decompose the project into discrete tasks, assign time estimates for task completion, do a resource leveling and determine project duration and cost all while using some notion of an 'average' developer. Weeks or months go by before you are notified that you have won the bid and then you begin staffing the project. Here is where the challenge begins.

When you did your task estimates, you assumed you would use an average developer but what metric(s) did you use for the classification? Assume for a minute that you have a team that specializes in the technology you bid, is an average developer a Junior Developer or a Senior Developer? We all know that there is a great range in developer skills yet how do we rank these skills? Is a developer a 10 or a 1 and what would a 10 or a 1 mean? If you bid the project for an average person, is average a 5, a 7 or an 8? Does it take into account quality, clarity and supportability of code or the maturity of the developer?

Actually, how we typically judge a developer is highly subjective, it is with titles like Junior Developer, Developer or Senior Developer. Within each job class, we may have salary bands and the bands may reflect relative skill level or they may reflect different managerial judgment. What is needed is a more accurate measure of a developers skill set. What is needed is a productivity rank for each developer.

Let me walk you through an albeit contrived example to show you the complexity of the problem and the need for a better solution. Let's assume that you have devised a way to grade a developer and have determined that there are 10 different productivity levels. I've often heard that a great developer could be as much as 10 times more efficient than a bad developer, so let's assume that the levels are relatively incremental and that an average developer is defined as a 5. This looks something like:

Mapping Developer Skill Levels from 1 to 10
Now, let's overlay on top of this a typical classification scheme ranging from a junior developer to a senior architect. I'll add a second Y axis for costs an will add in a notional curve for salary and billing rates.

Software job titles do not always equate to skill level
So for a constant level of effort for a project, you can then staff the project in many ways. For example:

Staffing depends on skill level
Here, the base resource, ranging in capabilities from a 4 to an 8, is augmented with additional staff to complete the work. Mix 1 adds four additional junior resources (rated 3) while Mix 2 leverages five trainees (level 1's), and two junior resources (level 2 and level 4). Mix 3 suggest that the effort could be completed by 2 slightly better than average developers (level 6), while Mix 4 and 5 look at using more senior resources teamed with a junior resource. As the different mixes imply, there are many different ways to staff the same level of effort. A challenge for project managers is that the task breakdown likely lists this effort as 2.5 FTE (Full Time Equivalent). Without knowing the skill set of the staff, 2.5 is a meaningless number. If you put 3 resources on to the project who were all 3's you would not have enough ability to complete the project. Of course, we typically blame the manager in this situation for clearly (s)he had a enough resources (3 being great than 2.5) to deliver on schedule.

Without knowing the productivity factor for your developers, it is dubious to say a task is 2.5FTE and even harder to staff it simply as 2.5 FTE. It is even harder to assure you have the right mix to optimize your gross margins vs. code quality. In the above example, I've put some relative numbers to the task based on the graph:

relative margin sheet by skill level
For this cost structure, I've created a nominal Fixed Bid as the median of all the bid prices. Gross margin is calculated as a percentage of the bid price. I've also computed relative average bill rates and total man hours (as a percent of the 'standard' which I've used as Mix 3).

Gross margin varies by staffing mix as does average bill rates and man hours
For the same project and the same level of effort, you can have a 4x increase in man hours and average bill rates. Gross margins are optimal with senior resources though as Mix 4 indicates, there are tradeoffs that help with average bill rates and man hours vs. gross margin.

Though it pains me to say it, software development is still more art than science. Without accurate productivity ratings for each developer, the industry will continually struggle to fill projects defined by FTE.

How does your company resolve this? What metrics do you use to ensure accurate staffing?

Wednesday, July 15, 2009

An American Working in an Indian Company - Part 2

In an earlier article, An American Working in an Indian Company - Part 1, I talked about the first half of a presentation the CEO gave to me to prepare me for working with the staff in India. The second half of the presentation focused on communication differences. Taking the time to understand these differences can really improve your ability to work offshore.

The discussion on communication differences was largely based on the work done by Edward T. Hall in Silent Language.The basic concept is that much of our communication is non-verbal which consistently follows cultural and linguistic patterns, just as spoken and written communication does. The major difference in non-verbal communication is that it is mostly subconscious. A real challenge in working with people from a different culture is that non-verbal communication is hard to pick-up. This is even harder when all the communication is virtual. Even with a high quality VTC, it is hard to see the nuances of non-verbal communication and it is even harder if you do not know what to look for.

The presentation covered three principle categories of communication differences:
  • Spatial Factors
  • Time Formats
  • Context Levels
Spatial Factors
Spatial factors are territorial or personal. In the US we all have our own territory, like our office. Our personal office is a static space, it is our space, it is the place we go to get away from everyone else in the office. Our office creates a sense of 'home' and we can feel violated if we find someone in our office unexpectedly. In India, there is very little sense of territorial space. Offices are more open and people share spaces more frequently. In the US, you can read people by examining how they set up their office (their territorial space). Do they have their back to the doorway or do they face the entrance? Do they have space for visitors to stand or sit (shared space) and where is it in proximity to where they sit? In India, there is a lower sense of importance on territorial space and hence it is harder to read peoples preferences. There is a good summary of this online at Haverford College.

Personal space, and the size of ones' personal space, also differs greatly and this can really create communication challenges. We all have our own opinions on the appropriate distance we should be from one another when we talk. We have an outer space for communication and an inner space for intimacy. If someone gets too close we feel they are threatening, dominating, or worse, that they have inappropriate intentions. Similarly, if someone is too far away we feel they are standoffish and have a lack of interest. We in the US have a very rigid definition of our personal space and, relatively speaking, it tends to be very large. In India, this space is much smaller and is much less rigid.

My first experience with 'violations' to my personal space happened on my first trip to India. I was on a plane, flying from Amsterdam to Hyderabad. I was one of three or four non-Indian's on the plane. When I started to put my luggage in the overhead, I noticed that I got bumped 3 or 4 times by people walking by. I was pretty taken aback as not one of them apologized. I though about this as the flight progressed and when the flight landed I decided to watch the other passengers to see how they interacted. Sure enough, everyone stood up at the same time and tried to grab their luggage. Everyone jockeyed for position and tried to stand in the aisle. I was surprised at how close everyone stood to each other. When a plane lands in the US most of the people with an aisle seat will stand up, but the rest of the people will wait for the aisle to clear before they stand. We require more personal space and therefore give each other a wider berth.

When I went to the office the next day and met with the staff, I was told I should use an executive's office because he was out for the week but after I sat there for a few minutes, I felt uncomfortable setting up shop in someone's space so I moved to a conference room and made that home for the week. I got a lot of odd looks and realized later that my sense of territorial space was at odds with the staffs and that I had made a mistake by claiming the conference room. To them it looked like I wanted more space while to me, it was simply that I didn't want to violate someone else's space.

Time Formats
Time formats describe how we work based on how we view time. Are we always on a tight schedule and watch the clock, or do we feel time is renewable allowing us to make time for what is currently important? The former is monochronic while the latter is polychronic. In the US, we tend to be monochronic and India tends to be polychronic. This creates a significant cultural challenge. In the US, we like to create a plan, divide it into discrete tasks, assign the tasks, focus on each task and complete them one at a time so that we achieve our deadlines, which are set in stone. In India, plans change all the time so they work on many tasks at once, often ignoring prioritization, they expect interruptions and distractions, and treat deadlines more line guidelines.

I can remember working on our first major account. We had 40 people on the project and the customer had requested slightly aggressive deadlines. I had impressed on the project manager the importance of the account and I walked him through the culture presentation so that he would understand the customer better. The project manager took this to heart and really focused the team in India, stressing the importance of meeting our dates. At first, the team was supportive but as the project progressed, the pace and the commitment needed to complete the project on schedule really started to frustrate them. They kept asking for extensions and couldn't understand why more time could not be granted. The project manager wanted to ensure we hit the dates and started working the team harder and the resentment grew. Though we hit all of our deadlines, the team, to a person, asked that we fire the project manager. From my perspective, he did a great job, but I had to really fight for him with the senior management team in India. In the end, we lost him for the team refused to work with him again. The result of his efforts helped us land a larger piece of follow-on work with the same customer. So what was appreciated in the US cost him his job in India.

Context Levels
When we talk, the context level implies how much background or additional information we give in our discussions to make sure we are aligned. Communication can be classified as highly contextual, in which case much is assumed to be understood and little needs to be said, to less contextual in which case less is understood so more must be said. The US is a low context culture while India is a high context culture. This means that in general, Americans tend to over communicate while Indians, in general, under communicate.

I learned about context the hard way. We had a customer in the construction insurance space and I brought a team from India to work with the customer on requirements. The team had experience working on insurance projects so I didn't think to prep the customer in any special way. In the requirements meeting, the customer focused on all the hard and complex issues that they felt had to be done right. The team did a good job of capturing the requirements for the complex scenarios and then went back to India and began the development. The project was only a three month engagement About two months in to it we showed the customer a beta version. That was when things began to unravel. The team actually had gotten almost every complex case right, but they had omitted, or gotten wrong, all of the simple cases. Needless to day, the customer got very frustrated. They could not understand how we had missed all the simple scenarios while at the same time we had the complex ones correct. I was also at a loss. The reason the team missed all of the basics was because they didn't have the context to work from; insurance in India is simply too different from the US. They had assumed that there were only complex cases. One engineer commented that I had told him that Americans over communicate everything and that the customer never mentioned the simple cases, so they never thought to ask.

Communication is hard enough when you sit next to each other and have the same cultural background. When your customer (or provider) sits 12,000 miles away, communication becomes much more challenging. Taking the time to understand the cultural differences in communication styles can really improve your ability to communicate and to successfully work together.

Monday, June 29, 2009

Defining a Service Quality Strategy - Closing Gap 1

To understand customer expectations you have to talk to your past, present and future customers. If your company can afford it, this means doing a market survey or hiring a market research team, but if you’re a startup or a small business, this may be cost prohibitive. So what can you do on your own to try to get a realistic picture of what your customers want? There are a number of online tools and sites that can help get an accurate picture so you can build a service quality strategy. Here's what you should try to determine:
  1. How do your customers want to communicate?
  2. Where do they want to communicate?
  3. How do you capture what they are saying?
  4. What do you do with the results?
How do your customers want to communicate
Depending on the kind of service you provide you'll need to understand how your customers use technology in order to determine how to reach them.

Charlene Li and Josh Bernoff, in the book Groundswell, outline a process for identifying the technology preferences for your customers. Technographics LadderThe context for the book is to help you develop the right web content and tools to satisfy your customers technology use to keep them on your site however you can use this profile to help determinee how and where to communicate with your customers. The methodology focuses on technology behaviors; it represents the range of technology uses on a ladder, which they call a Social Technnographics Ladder.

Customers range from Inactives, which do not participate in most online technologies (Geoffrey Moore's Laggards) to Creators, which are highly active, creating web content, publishing blogs and multimedia content for general consumption (think Moore's Technology Enthusiasts). Understanding where your customer base fits within the ladder will help you determine how to reach them. General technographic data for different demographics is provided on their site. You'll want to refine this generic profile to your specific market.


It should be noted that there is overlap within the categories so the totals will exceed 100%.

Where do they want to communicate and how do you capture what they are saying?
Once you have defined the technology profile of your customer base, you can then create a targeted communication plan. Here are some ideas for the different profiles.

Spectators
The vast majority of your customers will likely be Spectators who are readers of information. This group views blogs and web sites, but is less likely to leave comments or start discussions. So how can you communicate with them? You could try to do surveys and ratings. Surveying via a questionnaire may be an effective channel. iPerceptions 4Q is a set of 4 basic questions you can ask your readers: Why are you here? Was the visit successful? If not then why not? Did you have a good site experience at least? These 4 questions answer the basic questions like what was the customer's primary purpose for coming to your site, what was their task completion rate, if they didn't find what they wanted, you've given them the chance to explain why not, and finally you have a customer satisfaction score for the overall web experience. Other tools and other companies with similar offerings provide more in-depth and targeted questioning. Here is a non-exhaustive list of sites to consider:Another interesting site is GetSatisfaction. This is more of a comprehensive customer support site, connecting your customers and employees together to answer questions and comments. This site also supports a feedback mechanism. The beauty of this site is that it is a SaaS so you can integrate the customer interaction right into your own site.

Joiners
Communicating with Joiners is a lot harder than any other group. The reason for this is that most communities that Joiners join are private and search does not reach into these communities. To connect with joiners on social networking sites you'll have to create accounts on sites like My Space, Facebook, and LinkedIn. Joining these sites is easy; getting enough brand awareness to have a conversation with your customers is a bit harder.

Alternatively you can create a private community to connect with joiners, but again, this can take time to build up a following. Ning is an interesting site that allows you to create an online social website. Other sites include:There are some emerging search capabilities within the social networking sites. Microsoft has an agreement with Facebook but I haven't seen this yet. You can also hire third parties to manually search social sites for you. Again, it is useful to know what your customers are saying, but it is much harder to engage them in this space in conversation.

Collectors
Communication with collectors tends to be one way; you can see what they have marked for sharing or what they have tagged or subscribed to.

Social news services like Reddit, Buzzup and Digg are sites where users post links to sites, news, blogs, etc, that they like. A post acts like a vote and the more votes an article gets, the more importance is assigned to it. These sites have search capabilities and often, as in the case of Digg, you can create an RSS feed from the search results. This allows you to create a feed on your keywords or your company name. Articles on Digg can be commented on and users can even rate the comments. Digg has a reply capability so you can also reply directly to your customers.Social tagging sites like delicious allow you to create bookmarks to sites. The more bookmarks, the more popular the site is thought to be. Bookmarked have tags and the tags give you an indication of how people categorize the bookmark. Bookmarks can also have descriptions which again may reveal what customers are thinking. You can create feeds from search results in delicious so you can also track updates by tag or company name.

Critics
Critics like to react to online material through comments and discussions. To better support comments on your site, you could use a commenting service like Disqus. The focus of this tool is to better support discussions. It provides a better commenting mechanism than most blog or websites via nested comments and user profiles, and it provides consolidation for commentors, allowing them to see all their comments, across many sites, in one consolidated place. Enhancing the user experience will allow you to capture more comments and ultimately get more feedback. An emerging technology that looks promising is Wave. Wave allows you to create web base discussions that supports multiple discussion forums. A conversation that begins on a blog can also have discussion entries from LinkedIn or Facebook. Wave supports a single version of the discussion thread so no matter where the comments are added, you'll see one continuous thread of discussion.

Not all customers will leave comments. Another technique is to employ a rating system. Something as simple as Thumbs Up or Down to a question will give you basic feedback. As an example, I've connected my blog to Outbrain to allow my readers to provide content rating on each article. Though I'd prefer they left comments, I'd still like to get feedback to see if I'm connecting with the content, so I've formed the question around a rating for the content itself. You could easily provide a rating system for specific questions to gain insights and feedback on customer satisfaction. Similar sites include:Creators
Creators like to create their own content on blogs or websites. Some creators are also influencers and can wield immense online power. Getting noticed by an influencer can mean being written up or interviewed on popular online blogs or featured on web sites. Creators typically drive traffic to or away from your site, so identifying and interacting with creators can be tricky.

There are a number of sites that allow you to search blogs. Many of these tools will show you trending information for blog posts so you can see what is popular and what is not. These sites include:There are also a number of online tools that rank and stack creators. PostRank looks at a blog post and ranks it based on different engagement sources. The more sources of engagement an article has, the higher the ranking. PostRank looks at tracebacks, views, comments, diggs, reddits, bookmarks, tweets, blips and other engagement content. To get an idea for traffic flow or popularity at a site level, you can look at Technorati, BlogPulse and TNS Cymfony.
What do you do with the results
So, armed with a technology profile for your customer base, you've created a communication plan that focuses on where and how to communicate and where and how to monitor your customer's online behaviors and discussions. You've gotten different forms of input, from customer surveys and feedback forms, online comments, tags and blog articles to get an accurate picture of customer expectation and potentially customer perception of your company. So what? What do you do next? You need to define your service quality strategy so that your organization can create the service standards needed to exceed customer expectations.

The service quality strategy is really a balancing act between what you can afford to do, what you can do, what you competition is doing, and what your customers wants you to do. Using the input you've gleaned from your customer interactions, you'll need to determine what are the most important service attributes your customers are looking for. Fishbone diagrams and MECE analysis are good tools to get to route causes, or in this case core desires. You should also gather what information you can about your competition's service successes and failures to see if they have vulnerabilities in service delivery. Your service quality strategy should address your customer expectations and align them with your strengths and weaknesses. It should look for and attack competitor vulnerabilities for service differentiation and it should fit within your organizational capabilities.

Understanding customer expectations is the first step in delivering true quality service. The next step is converting your service quality strategy to quality standards that the organization can execute.

Wednesday, June 17, 2009

Delivering Quality Service - Managing Gap 1

In my previous post, I talked about Delivering Quality Service. There are four areas where a service provider can make mistakes that increase the gap between customer expectations and perceptions. The first area, or gap, is when the management's perception of customer expectation is wrong. This gap is created when the executive team misjudges customer expectation. Typically, this occurs under the following circumstances:
  • There is a lack of market research
  • The management team ignores the market research results.
  • There is poor communication between field level resources and the senior team
  • There are too many layers between the senior management team and the customer.
Many senior executive's work solely on intuition. This can be dangerous. Intuition is often based on anecdotal evidence that risks looking at too small a population to be accurate. One executive told me that he wasn't worried about quality because they hadn't received many complaints. I emailed him a study that showed that only 6% of unsatisfied customers actually complain directly to an organization; 94% simply leave frustrated. This was before social networking sites and online opinion sites became prevalent however the study highlighted that market research was needed to get a complete picture of customer expectations. Market research, as simple as customer surveys or as complex as customer focus groups, ensures you are listening to your customers and that they have a say in defining your quality standards.

Even with market research, management can still be off if they chose to ignore it, or to disbelieve it. I've seen this happen under different circumstances. The first was when an executive was hired away from a larger firm with a similar service offering. He believed he knew enough from working in the space for 20 years to indicate our research was wrong. He missed the fact that customers have different service expectations from a large firm than they do for a startup. Though the expectations were similar, they differed enough that he widened the gap.


Management may also ignore the data altogether if it contradicts their personal beliefs. I once presented a senior exec with some analysis on poor customer satisfaction ratings and the root cause analysis pointed at our value proposition. Customers felt that our price was too high for the quality of the services we provided. The executive believed that our projects were less expensive than others and assumed that the customers were pressuring us for price reductions. Because our services was offered on a Time & Materials basis, when he put more resources on the projects to improve the quality, he also increased the cost to the customer. The affect was ugly and we lost a few customers before we revisited this.

Sometimes management simply doesn't have all the input they need to set the right quality goals for the organization. Poor internal communication can widen the gap between expectation and perception. I was consulting to a firm where the messenger was always shot. Guess what, messages soon stopped flowing. It was hard to believe but the executive team became more and more insulated and over time the organization suffered. Customers were giving their sales reps and field reps input on quality concerns but these never made it back to the senior team.

This can also be caused when the organization has too many layers between the customer and the senior management team. I once had a problem with a desktop application. After using the product for years, I started getting an unrecoverable application exception on startup so I called customer support to log the problem. In order to talk to a live person, I had to pay a fee ($20 or so) but the fee was refundable if the problem was determined to be a product defect, so I paid the fee and talked to a rep. He told me to open the application without any data. When it started, he said that the application was fine but that my data was bad so I would have to pay the fee. After arguing for quite some time that an application crash is a defect, independent of data, he passed me off to a call supervisor, who passed me to the shift supervisor. The next day I called back and talked with their manager, who passed me off to his, who passed me off to the office of the CTO who passed me off to the Quality Lead who then told me that she hated dealing with "software types' because we thought we knew it all, and hung up on me. Incredulous, I searched the web for the name of every executive that I could find at the company. I then tried every permutation of email addresses I could think of and sent them all a blistering complaint. Only one exec ever replied, the VP of Marketing. He told me that management had cracked down on the organization for not charging customers enough for support, and he could now see that the organization had taken this to an unhealthy extreme. With all the layers in management, he had never gotten the feedback that they had gone too far and was not able to guide his company in the right direction. To his credit, he actually sent me a personal check for $20 because he thought it would be too hard to get a reimbursement. Clearly this guy got it, but he had too many layers between himself and his customer to see the problem firsthand.

To avoid pointing the organization in the wrong direction, the senior management team has to do its homework and talk with customers about their quality expectations. Through the use of market research and direct communications, the senior team has to remain close enough to the customer to minimize the gap between what they think the customer wants and what the customer thinks they want.

Friday, June 12, 2009

Delivering Quality Service

At MIT we had a course called Management of Supply Networks that had a couple of lectures on Service Quality. At the time, I can remember thinking that the material was rather esoteric. I was expecting the course to talk about logistics, measurement and analytics and instead we got into concepts and mental models. There were a couple of optional text books which I bought but given the class, I never really read. I'm a book junkie so the books have lived in my library ever since.

Balancing Customer Perceptins and ExpectationsRecently, I had a customer hire my firm to help improve their customer satisfaction rating. They were ranked last in a JDPower's poll and felt they had to improve their customer satisfaction rating even though they were technically a regional monopoly and customers could not change providers. I got out my notes from class and I skimmed some of the books I had on the shelf to prepare for the engagement. That's when I started to get what the professor was teaching in class. One of the lectures was a summary of the book, Delivering Quality Service: Balancing Customer Perceptions and Expectations by Valarie A. Zeithaml, A. Parasuraman and Leonard L. Berry. As I skimmed the book, I realized that it had a useful framework. The framework helped outline that service quality is not just about delivering quality service; it's about exceeding customer expectations. Since that engagement, I've relied on this book many times. If you are interested in improving your service quality, I'd highly recommend reading it.

Customer satisfaction is the difference between a customer's expectations of a service and their perceptions of what was delivered. Having high customer satisfaction ratings simply means you've exceed your customer's expectations, it does not mean that you've delivered great service.

Let me give you an example. If you look at the American Customer Satisfaction Index for Southwest Airlines and United Airlines, you'll see that they score an 81 and a 56 out of 100 respectively. Southwest got the highest score of any US Airline in 2009 and United had the lowest. Yet if you look at Skytrax, which measures the quality of airline service, you'll see that Southwest and United are both given 3 stars ratings (equivalent of Fair). They have the same quality ranking and yet have vastly different customer satisfaction scores because their customers have different expectations.

A customer enters an engagement with an expectation of service quality. They form their expectations by personal experiences with other vendors, things they hear about word-of-mouth (like your reputation), performing online research, and their own personal take on service quality. When Southwest started to offer service 38 years ago, they decided to compete strictly on price. United has a much longer history, being founded back in the early days of aviation. They were there when flying on a plane was a life changing experience. Customers grew to expect higher quality service. So though both airlines have the same quality ranking, they differ in customer satisfaction because one exceeds its customer's expectations and one does not. The starting point to improving customer satisfaction then is to look at customer expectations.

Understanding customer expectation allows you to focus on cost affective delivery that exceeds expectation. There are four categories where a provider can make mistakes that increase the gap between customer expectations and perceptions:
  1. Management's perception of customer expectation is wrong
  2. The translation of management's perceptions into service quality specifications is flawed
  3. The way in which the organization is executing to the specifications is off
  4. Or external communications with the customer are wrong
I'll look more at these next.