Thursday, December 28, 2006

Handling attrition in SME

I have come across a few instances where a large number of employees from a division quit within a short time. Though I didn't face the problem myself as a boss, I was part of the group that quit once - just once. The reasons range from better job market to low morale. Here are some thoughts on what the management can do about it.

1. When a key person or more than one person from a team quits, stop; think if you are doing anything wrong. The person might be leaving for any reason - the management needs to take the employee's reason with a pinch of salt. Rarely employees tell you what is wrong with you. They tend to be nice and usually lie.
2. Some of the mistakes that management end up doing are - share the work done by the employee who left among the remaining ones, putting more pressure on these members to complete the work and pressurizing HR to recruit more.
  • Sharing work is fine as long as the time allotted for completion is extended appropriately.
  • Giving pressure would happen involuntarily as management would like the project to complete on time or sales maintains the pace. In instances where possible, extending the deadlines or relaxing the targets would be the right thing to do.
  • Pressurizing HR without ensuring that the team is adequately staffed and skilled will cause more unhappiness in the HR team. Soon you will be seeing an exodus from HR. The first thing to do is to help HR ramp up on the skills and resources or begin outsourcing some of the recruitment activities.
These mistakes help in worsening the situation.

3. In divisions where the attrition is high, find out if the working conditions are normal. Smaller organizations do not have a process to address employee grievances. In many small organizations, employees don't have a chance to complain about their bosses with a confidence that they will be listened to and addressed. In cases, where a single boss micro-manages everything and there is no hierarchy, no employee would tell the boss that the conditions aren't right. Especially in cases, where the top manager is involved in every employee's daily tasks, there is no chance for an impartial observation of the situation.

4. It is comforting to list all external factors like good job market as reasons for people leaving. It just ensures that your ego stays unhurt. So, just be aware of this tendency and be reasonable in including such factors.

5. If the problems point to poor working conditions like office space, facilities, timings or accessibility, be sincere in addressing them. Speak to the employees that the situations can be addressed. If possible, involve them in a solution - like help find a bigger place, suggest timings. If the problems point to a person, work on informing the person of his / her shortcomings and help in improving on those.

The most difficult part in handling the attrition is - seeing your shortcomings and addressing them. I'll try to locate a few who managed it and write about them in the next few months.

Tuesday, December 26, 2006

Technical Writing and all such talks

Technical writings and software documentation

It seems Naveen, Ari and Shivan won't get to a conclusion. For relatively small SME projects, following a good coding habit is the most essential requirement. The cost of documenting the project could be too prohibitive for the SME. Consultants can give a value for the money by just following standards as per the language and environment.

This makes it imperative for the developers to be disciplined on whatever they are doing; that doesn't come right away when you work for small projects. It is like a circle, where bigger projects bring in discipline - developers have to gain experience with smaller projects to enter bigger ones - smaller projects need discipline (more than bigger projects where minor deviation from standards here and there won't matter much).

Tough cycle to break; but will try that!

Friday, December 22, 2006

Traffic lights coming down in city

Traffic lights coming down in city

Chennai added a large number of traffic lights and cops in the last 12 months - An indication that we are becoming less considerate to other road-users!

Tips for reading other person's code

Tips for reading other person's code

More from a maintenance guy's experience.

1. Concentrate on code and take the comments with a pinch of salt. Often you will encounter comments that were not updated when code got updated.
2. Try writing down your understanding of the code, taking one chunk at a time. A chunk typically consists of a program construct like if...else block, or a loop or a function. This way you can reconstruct the algorithm, especially if the code wasn't structured.

Thursday, December 21, 2006

Hype about IITs

IITians, do something for Indian education is right on target. There is no doubt that the students who enter IITs are the smartest ones in the country. The question is, what value does IIT add to these students during the best part of their life. Success stories of IITians becoming entrepreneurs and good scientists typically have chapter where the person spent 2 years at Stanford or MIT or Harvard or other great universities in US, after their B.Tech at IIT.

IITians when they come of out their B.Tech often have an air of justifiable superiority complex that prevents them from being normal. This gets normalized when they go to US, see that there are others including Indians from other schools who are at least as smart as IITians are.

In addition to getting into serious competition with Chinese and other Asian universities, IITs should also get into research in education, humanities and basic science.

Tuesday, December 19, 2006

Crystal Version 9.0 - Demystified

My earlier post was about the issues with Crystal. I guess I'm fairly clear now. For the sake of the unfortunate IT folks who struggle with Crystal Reports here is my understanding of the product.

1. There are two flavors of Crystal Reports (even with-in Crystal 9.0). One is the full version where you get to design the reports with Crystal and the other one is a stripped down version where you design in Visual Studio.NET environment.

2. If you developers build the reports either way, you have the option of delivering the all the dependent Crystal binaries along with your application. Again, you have the two options. One: Build an installable with merge modules downloaded from Business Objects web-site. Two: Have users download the redistributable available on Business Objects web-site. Either way, you need to pass the key code to your users. In case of merge modules, the key-code must be specified as a property of the license.msmx. In case of redistributable, the key-code of your Crystal registration must be used at the time of installation. I'm sure Crystal validates the key-codes against the product versions mentioned in the earlier point.

3. Another issue that vexes the users is the login information. Developers are often insensitive to the differences between the development and production environments. The login information gets saved with the crystal report and Crystal is known for using this information inappropriately. Check out the documentation on the 68MB service packs Business Objects offers for Crystal Reports.

To prevent Crystal from using the login information stored with the report, it must be passed explicitly to the report at run-time. The sample code is as follows:

TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;

// Loop through every table in the report.
for (i=0;i == myReportDocument.Database.Tables.Count - 1;i++)
{
// Set the connection information for the current table.
logOnInfo.ConnectionInfo.ServerName = db_server;
logOnInfo.ConnectionInfo.DatabaseName = db_dbname;
logOnInfo.ConnectionInfo.UserID = db_user;
logOnInfo.ConnectionInfo.Password = db_pwd;
myReportDocument.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
}

Monday, December 18, 2006

Crystal, Installshied, OLE and all the problems

I tried running a web application delivered by a vendor. Crystal Reports began acting crazy. The vendor failed to deliver the right merge modules. So, I downloaded the redistributable, got the key code from the vendor (with an error and guessed the right one). The error message changed; after a number of hours of search, began downloading the service pack for Crystal 9.0.

The pain here is, the redistributable is about 25M and the service pack is 68M. After multiple aborted attempts to download and a final good download, I bump into an install shied problem where the error message indicates that the type library is not there!

It took someone with 15 years of experience with software to progress this far. Who said software makes life easy!

Wednesday, December 06, 2006

Google: Gmail - Calendar Integration

You have reasons to be paranoid on what all Google does with your email.

I was having an email conversation with a contact to schedule a meeting. I used Gmail. As the email thread grew, on the right side navigation Gmail shows links to add this to the calendar. When I clicked on the link, Google had pre-filled some of the fields like date, location. If I had used a different time format, Google would have picked that one too.

It is nice to know that Google does so much for better user experience. At the same time, I am a bit uneasy with the parsing of my mail content. I guess Google WILL parse the email for ad-sense and such money making features.

Is there a way I can tell Google not to parse my mails or show context sensitive ads on the right side?

Tuesday, December 05, 2006

Differing views of managing software requirements

I hope this is doesn't become a habit that I bitch about non-technical people, though I may have intentions to do so.

Coming to the topic of my opinion, there are two views of software development.

i. Build the perfect system handling extreme cases though the extreme cases will not be encountered for the next couple of years. Consider a service aggregation where multiple service providers sign up. Users can choose the services that they are interested in and pay for it. If the business is not yet ready to bring in multiple service provider for the same service (say payroll), it makes no sense to build the software up-front to handle features like the priority, pricing etc.,
The business must be a very powerful one to get such multiple service providers sign up with them. If that is the case, why should the software be designed for it up-front. When the business spends the efforts to rope in multiple providers, the logic for the priority and pricing will have to be reviewed and changed as there will be a better understanding of the problem.

ii. I am fine with an approach where you treat software as an evolving beast. Address the requirements that would be useful right away for which the efforts are proportional to the effects. In web lingo, what is the cost per click - if you were to measure the cost in developers' time. If there is a reasonable doubt that a feature will be useless for 50% of the users, it makes sense to drop it and focus on something more important.

Often I come across bosses, mostly non-technical who want to take the first approach. I would bet that less than 10% of such over engineering done ahead of time is useful.

Friday, December 01, 2006

I'm impressed

Tata Sky Satellite Television

It is not uncommon that the gadget you get for a few thousands fails in the first couple of months. The remote for Tata Sky Digicomp failed at my place. May be it is typical of cheap Chinese products.

But Tata Sky did well to attend to the complaint. The technical support girl who answered me was trained to say, "Don't worry Sir!" very well. She repeated it some 10-15 times in a 5 minute call. And they promptly arranged for someone to visit us and fix the problem.

In less than 24 hours the engineer from Tata Sky came with a replacement remote and closed the issue. I'm impressed with their customer support, but still wish that they go for a more reliable partner for supplying Digicomp and remotes.

Problem with Chinese gadgets aren't unfamiliar. Couple of months ago, I had a problem with the Coship set-top box customized for the cable operator SCV. SCV being a monopoly in Chennai doesn't have much to claim as customer support. I was to carry the box to a place about 15 Km from my place. They work only on week days and 9 AM to 5 PM and so I had to postpone till I have a day off to visit them. I went with my father and waited at a hot car shed. There were a bunch of engineers around each table attending some 10 customers each simultaneously. It was chaotic. Then they wanted me to pay Rs 1000 for fixing it and asked me to come back later as they do not have the components. I promptly dumped the box and moved to Tata Sky.

The difference between SCV and Tata Sky is the same as the difference between Kalanidhi Maran and Ratan Tata. May be it is the same as the patriarchs of respective families - Karunanidhi and JRD Tata - that is the difference between monopoly and professionalism.

Thursday, November 30, 2006

Technology Companies - Do you need technical sales executive?

I come across employees with non-technical role, in a technology organization who are not even slightly technically inclined. Some examples:

- One executive is responsible for sales through some specific pages on an e-commerce site. Being a sales executive, he found no reason to be technically inclined. Every time, I ask him to open the page, he will go back to an email (no google desktop used here) to locate the mail and go to the page. He gets doubly confused between a QA Server and a production server URLs.

- A Manager banned IM for his team as he was not comfortable using IM. I prefer IM for short 2 line conversation. If a conversation extends beyond two lines, I would pick up the phone or walk up to the other person and discuss.

- Another executive who was responsible for product merchandising and accounting of sales needed a techy to do the formula for her monthly reports in Excel. She wouldn't sign up for classes and took the easy route to the solution by asking for help.

- A senior manager consistently sends out documents with spelling errors for commonly used words and doesn't care to hit F7 before saving the document.

- A top guy asks the people around for my mobile number everytime he needs to talk to me.

When these people are hired, they are not obviously hired for their technical skills. They are expected to do what they are hired for - namely sales or business development. But since the organization is technical (where considerable sale happens through e-commerce), their lack of interest in picking up these skills adversely affects the technology team.

It is necessary for the technical team to help out these people for smooth running of the organization. This affects the planned activities for the team. Technical team is expected to be more responsible in figuring out what to do when software requirements are not clear. This affects the overall quality of software and timely delivery. Overall, the team that is responsible for innovation is expected to play technical support role.

I hope this is a problem specific to only Indian technology companies that have a sizable number non-technical employees.

Wednesday, November 22, 2006

Joel on Software

Joel on Software

Agreed for most part. Except that the restart button is essential. Even with a restart option I wait nervously every time I need to reboot the server in Virginia remotely from Chennai, India.

Tuesday, November 21, 2006

Outsourcing Software Development

No, we are not getting into the debate on offshoring or bangaloring a job. Let's talk about the quality of consulting companies in general.

I had worked on either side of outsourcing. It is common for consulting companies to bid low and jack up the cost as the project progresses. It is like the Chennai auto guys demanding more when you are nearing the destination. The Biz Dev team doesn't care about correctness of estimate just as the developer does not care about the correctness of code.

I come across problems that could have been nicely sorted out had the developers been a bit enterprising in looking out for solution in search engines. Because of such a quality of developers, both the parties face loss. The consulting company's loss is low billed time as against the actual time taken by the developers to solve the problem. Customer's loss is on lost opportunity or on living with non-optimal systems.

Consulting companies have a tight grip on Internet access and do not encourage its people to look out for solutions by others. Customers get an illusion that the work is progressing faster by cutting down on wasteful browsing or chats.

Google Co-op - Custom Search Engine

Google Co-op - Custom Search Engine

Looks like Google is going over-board on Search integration just like MS did with their OS integration with IE. Somehow I get a feeling that this is similar to the failed ideas like Active Desktop, push technology, HTML like interface for desktop folders etc.,

Google involvement in every aspect of the web can soon become a pain and a number of such initiatives are bound to be failures. I just hope Google doesn't become a web equivalent of MS.

Monotony can be just as bad as monopoly.

Wednesday, October 18, 2006

Web 2.0 SOA and other jargons

The latest one is Servable Web - another term with red wavy underline. I am trying to figure out how this is different or related to other jargons of yesteryears namely web service and Service Oriented architecture. I hope I'll understand the need for such new terminology before I retire.

I would like a web service for de-bulling articles on all these jargons.

Friday, October 13, 2006

A farce called "Local Body Elections" in Tamil Nadu

The election started peacefully. All rich people of my locality decided to stay in-doors. I fished out the identity cards from a pile of junk in my book-shelf. Armed with the power of identity cards, my wife and I went to the polling booth. No video coverage for our visit to the booth as we are not celebrities yet and we had no intention of creating news there.

There were some 10 people in front of us, none of them seem to be from our area. They obviously are impersonating someone in our area. The agents of the candidates were sitting in a corner of the room, obviously aware of the impersonations happening on each party's behalf. The staff manning booth didn't ask for identity cards for any of the impersonators. My wife and I questioned the officers on why they allowed those with no identity cards. We didn't get a reply. They probably were too scared to ask for them.

When coming out of the polling station, a lady from our area was complaining about the presence of unruly elements in the area. Another helpless responsible citizen, I thought. The two policemen outside the station were mere watchers. One of them had a very big mustache to hide his fear. He might be more scared of the roaming rowdies than of the complaining citizens like us.

Long live our democracy.

No Silver Bullet:

No Silver Bullet:

It is obvious for someone like me who spent a good part of his career on programming.

We can take just one aspect of programming - type safety.

We start with C, get worried about the lack of type safety. C++ didn't help much in that part, but allowed for encapsulation for modeling objects. Java went over-board on the type checking and became a pain for simpler operations. For some thing as simple as a Http post, there may be a need to create a few objects and their inner objects and so on. My conclusion is, choose a language that will allow you to do what you want to do. This means, the decision maker has to have good knowledge on the strengths and weaknesses of the languages and platforms.

I still come across non-technical managers who want a design that can accommodate everything. For example, my boss wants a DB design that will allow for storing detailed information of products and also have a general solution. He suggested something like a place-holder for everything - in case of a mobile phone the place holder will hold the technology information (CDMA / GSM), for digital camera it might hold information like physical dimension. Fortunately I could explain the complexity in searching, comparing products with a design like that and stop at that. I am suggesting a mix of generalization and specification. If you want to focus on search and comparison, go for the details. If you want to just dump the data for display purposes go for a general place-holder.

To sum up - yes - there is no silver bullet.

Thursday, October 12, 2006

Google Docs & Spreadsheets

Google Docs & Spreadsheets

Hmmmm - What else is remaining?
Presentation? Not really as it is not that commonly used application.
Online Image Editors - It is probably in the pipeline. With Ajax it should be cool to develop such applications.

My personal wish would be an online accounting package for home and small business owners.

Wednesday, October 11, 2006

Southern Railway - online reservation

Southern Railway - online reservation

The railway ministry must be really craving for money - look at the number of ads in this page. Without Firefox adblock, this page looks quite a mess.

The chance of getting a quality click from a person trying to reserve the tickets from this already slow web-site is close to remote. But advertisers must be paying a fortune to Google and to Railways to get their ads on this popular page.

Monday, October 09, 2006

The disconnect between reality and marketing...

We had another round of discussion on sending newsletters aka spam. This will be followed by a few rounds of discussion on why some newsletters get into the Spam / Bulk mail folder and some don't.

I ran out of energy to explain the marketing, sales and other non-technical people on why these mails land in the Bulk folder. Little do they realize that there are people smarter than them writing good programs to read the intention of the mailer. While email is a cheap and effective mode of spreading news about product information, promotions etc., depending upon emails to change the sales pattern is plain stupidity.

Having a web site with good navigation, tools to easily search for products, a good fulfillment process are the keys to the a successful e-commerce site. Spam mails are not.

I get newsletters from eBay and I always hit the delete button. I wonder if any of our sales guys think on how they deal with the newsletter mails they get.

Monday, September 04, 2006

Jataka Tales of Modern Times

World's 18th largest shoe maker Supreme Shoes Inc decided to outsource an important software development project to India's 23rd largest consulting company You Pay For It Tech. It took a few months to get past the initial contract. The investor of Supreme Shoes was away on vacation and then he went on a business trip before getting all the facts and costs of the project cleared up. You Pay for It agreed to do the project for $10K. The contract allowed both the parties to revise the cost, scope on a set of agreed parameters. Top techies from You Pay For It visited Supreme Shoes factory to do a system study. Techies from Supreme Shoes visited You Pay For It to explain the project further. At the end of one month, a new Project Manager assigned for this project at YPFI said, that it would cost close to $18K. The techies from SS where shocked and asked the YPFI to review it.

Senior techies from YPFI intervened and settled the price at $12K, hoping that SS would agree to it. The PM may be right in his estimate based on his IFPUG and other models of software estimation. But YPFI Top management was keen on getting the project and do what ever it takes to do the project.

By the time the project started, the senior techies of YPFI who were involved in the system study moved out to other projects and companies. YPFI had this new PM and a bunch of new developers assigned for this project. The project, as expected took everyone time to almost twice of what was originally planned. Now the cost was coming to about $18K. YPFI decided to take this up with SS to have them pay as per the new cost.

SS sent its dumb technical person to evaluate on why the cost went high. YPFI insisted that there were changes in the scope and SS disagreed. The dumb techy acknowledged that YPFI had to do more to implement the initially agreed requirements. Mr. Sam the smart CEO of SS decided to resolve the impasse.

Though he didn't like the dumb techie's observation, he wanted to play by the contract but allow for some feasible concession. YPFI wanted to play by the contract too, but they were disadvantaged as no requirements changed. They argued that the requirements changed and failed the argument. In a fit of rage, YPFI's top negotiator gave up and agreed for $12K. Mr. Sam was happy. YPFI could have taken up the dump techie's observation and could have demanded more for the fair increase in the effort. Their ego didn't allow them to accept an error from their side.

Moral of the story: If you are greedy and egoistic, you can't use the help of anybody.

This story didn't end here. The super techie of SS drove his bike in a rain and got his laptop computer soaked in a bagful of pure water. SS spent $1K to have the laptop replaced. SS continues to spend on unplanned and unwanted tasks and objects.

More of the story: By bargaining you probably don't pay one vendor, but you end up losing your money elsewhere. This is called Karma.

Monday, May 22, 2006

Bannerghatta National Park Vs Bannerghatta Road

I recently visited Bannerghatta National Park and went for a safari ride in an enclosed van. Everything was perfect, it was sunny, the animals were visible and we could take a few good pictures of the animals. Towards the end of the safari, the van splutted and stopped. The driver's attempts to restart the engine caused the van to shake but not start. We were in the middle of some 6-7 grown up tigers. One of them was white. The tourists began giving advices - that reminded me that everyone is getting used to the Windows way of life. Restart.

After sometime, the driver picked up some courage, stopped one of the vans that passed by and jumped into it. His task was to arrange for alternate transport for the stranded tourists.

Slowly the folks in the van began losing patience. The tigers got a bit curious and came close the van. All of a sudden the sunny weather felt very sultry. Kids started crying; mothers and grandmothers began panicking. Other vans passing by, had tourists who were more keen on taking pictures of the tigers than offering any help. Finally the driver brought a more spacious van with forest office folks in it.

The resuce van was parked closed to ours and tourists started jumping into it through the driver's seat of the stranded van. Couple of tigers started coming closer and wanted to take part in some action. Operation transfer was stopped and the rescue van was started to chase away the tigers. Still a few tourists were there in the stranded van. By this time, the weather got cooler and it seemed it would start raining soon.

The forest office guys jumped off the van, picked up some stones and threw at the tigers. The tigers scampered like stray dogs and the transfer operation resumed. As the last tourist boarded the rescue van, it started raining.

It was about one hour of thrill. We returned to Bangalore that evening.

The next day, I was at Bannerghatta Road - the long one that connects Bangalore with the National Park. I had to cross the road to pick up some gifts for my relatives. As I was half-way through, a moped came from nowhere and almost knocked me down. The tigers we saw the earlier day seem far too tame as compared to the rider of the moped.

Bannerghatta road is more thrilling than the national park.

Saturday, February 18, 2006

UI Design

I began reading Joel's article on great design. The question is, who can do a good design for a software. There is this argument that techies are the worst UI designers. I feel non-techies are no different. To prove the point, here is a frustrating argument I had with a business head on usability and relevance of messages.

He wanted a descriptive message on every error user makes in data entry. In a user registration page, if the user entered an email address without an @ sign, we were giving a message as 'The email address isn't valid.'. The same message would be shown if the validation fails for the standard pattern matching for email address.

His argument was, if the program knows what is incorrect in the value, why the hell can't we give a more helpful message - like 'You missed the @ sign in your email address.' He wanted a message that is similar to the following one.
'The email address you entered is invalid. The reasons could be one of more of the following:
The address doesn't have an @ sign.
The address doesn't end with standard domain names like .com, .net etc.,
The address has invalid characters like comma, semi-colon etc.,'

I'm sure he will still have issues with "etc" and want it to be replaced by the actual values. In that case, our program management team will spend the next month composing the error messages for user registration page.

Thursday, January 19, 2006

Google Pack

It is a common problem that Google tries to solve. The solution is probably not a high-tech one, but no doubt it is useful.

Sometime last year, there was a hard-disk crash on my computer. I began restoring the OS and other basic software; then I realized how much of a problem it is to keep your computer up-to-date. Without the latest service packs, firewalls and anti-virus software, it took lessthan five minutes for a trojan to get to my machine. I ended up spending a few nights on cleaning up my machine, download require software and their service packs.

I pride myself as someone fairly informed on the problems and solutions on a Windows system. I used to think that it must be a terrible experience for a non-computer savvy person to keep a computer up-to-date in this age of trojans and viruses. I hope Google Pack would help such technology challanged people.

Earlier Posts