Tuesday, July 08, 2008

Migrating existing product to new platform

Some time there are need to provide existing product on different platform. It could be because of many reasons e.g. capturing of new segment of market, leverage capability missing in exiting platform etc. In all cases building product on new platform comes with its own risk along with intended benefits. If the exercise is not managed properly it can lead to delay in completion or even failure which can eat some of the intended benefit. This seems little odd in the sense you already have product and you just need to replicate it on new platform. In order to minimize the risk, following needs to be kept in mind in addition of usual best practice of project management.

  1. Feature Document – This just like any project where you need requirement document before you start. So check if you have a good reference document which describes the features and its relationship with other features in the existing product. Many times, it’s not available. Remember, help document of product can be useful but not sufficient for the purpose. If it’s not available then it’s very important that you have it first before start of the development. Don’t assume product itself as reference because if you fall prey to it and ask developer to use it as reference, then it completely depends on individual developer ability and desire to find all the facet of a feature and accordingly new implementation can be incomplete or faulty. While capturing the feature behavior, special attention should be given to inter-relationship among features. This is place where chances are high to miss the certain behavior. Another important in my opinion, is to keep the document more bullet point than story telling. This stage is already gone while building the feature first time. Here requirement is to create replica. So it’s should less open to interpretation. Also, temptation to fix bugs while creating feature should be guarded because otherwise you would soon be on path where there is goal post.
  2. Platform readiness - This is very important. Be sure your team is ready to work on platform. I am talking about the people who will actually code. Unless, people who are going to code has good understanding, chances are there that technology will be used in a way that would result in may issue like performance, scalability etc. A standard dilemma in such scenario is to know when people are ready. In my opinion there is no trick, but manager can use his judgment in this regard. One good way to deal with this would to build small prototype using all the capability intended to be leveraged. Here important thing to remember is that prototype should be built by people who will actually code rather than someone outside team. In fact if possible, prototype should be split into small-small prototype and distribute among all the team members to give then opportunity to gain experience on the new platform.
  3. Buffer - If technology is rarely used outside your company then it might be good idea to have buffer. Attrition is reality in IT industry. If you are embarking on project involving technology for which it’s difficult to hire people from outside, it make sense to have buffer. Otherwise if unfortunately few people who got trained on the technology leaves, your project will be delayed because most likely you have to train new people from start than quickly hiring from outside to fill in the gap.
  4. Milestone - It is very important that we have clear-cut milestone in such project. If possible have feature wise milestone. Because we already have product to compare with and document to build the feature using new technology, it should be possible to set clear-cut milestone. In absence of it, it would be very tough to gauge the progress and direction.
  5. Validation - This as important as for any project. Having good test case is must. Random testing will not do the job. Because it’s very easy to miss some scenario and if failed to catch bugs before releasing to customer, it will be more embarrassing than bug found in new features. Because customer has been using those features and they don’t expect bugs in existing features (I don’t mean that they expect in new feature) but I have observed that outrage is higher in such cases. It will be even more if some features are added based on some customer feedback and he find it not working or missing or same bugs reappearing in the new version which got fixed after being reported by the customer.

Tuesday, January 29, 2008

Identity

Identity is a very intersting thing. It bring people closer and at the same time it drive them part. A person can have many identity depending on context (location, time etc). An identity can be formed on the basis of just one atribute or property or even combination of many, a entity can have infinite number of identity. What is basis of identity? What is fundamental to identity - similarity or dissimilarity? Both similarity and dis-similarity are like two sides of same coin. If its head then its not tail and vioce versa. Similarly if two things are similar then they are not dis-similar and vice versa.

I think our ability to make differentiation is at the core of creating identity. If we can not differentiate between two things, then its essentailly the same as we have no way to tell there are two different things are there. Say I have two jars of water, one from river Kaveri and another from Godavari. Both of them have their own identity. They are different. Now lets mix them together. Assuming there is no difference in colour etc. its not possible to differentiate between two. So they are just water, having single identity different from non-water entity. We can have another identity for the same, water from kaveri and Godaveri, which is different from water from Ganga. Again this identity is based on creating a differentiation.

So it seeems to me identity is fundamentally a dissive force. But why do we need the identity? Can't we live without having identity? Lets assume there is only one identity for every one. Then immediate challenge comes of how to refer to a particular one when entity is not present and we can not refer by pointing fingure. Similary suppose we want to discuss something about a group, who has special access to a system, we will have to take names of each one. But agian name is idenity. So problem is how to refer them. To me it seems that, community and idenity are so closely related that one can not exist in the absence of other. Given the large number of challenges comming in our daily life in absence of idenity, it's a must for the society, in fact its good.

But given the numerous conflict based on community and identity some time it appears that if we eliminate the concept of identity, conflict can be avoided. But, if we observe closely, people of same community, having same idenity in certain context, fight each for the same resources. So there should be something else which is responsible for the conflict other than identity. Its only exploited by some one for their advantage. Root to all our conflict lies in our inflexibility, respect for right of others etc. Strange thing is that all of these are know to us, but we are still not able to manage the conflict.

Thursday, January 17, 2008

Mobile for illiterate Indian Villagers

I was trying to train my mom how to use a mobile phone. But I was facing lots of difficulties because she is illiterate and had not dealt much with machine or gadget. This inspired me to think of mobile which will be suitable for such persons. Considering that, there are considerable number of population in India are still functionally illiterate, it might be worth spending time thinking about it (I can’t do more than this).

Here are the challenges I faced:

  1. Making call - Because she can’t read, she is not able to search the person she wants to call.
  2. Adding new number – Again because she can not recognize numbers and letters, she is not able add new numbers in mobile address book.

If I have to create a mobile phone for illiterate villagers of India, I would have the following functionality. I am only considering the basic utility mobile which will let them make and receive call and may be allow doing few extra things.

  1. Photo based address book – It will allow searching person (one-by-one) based on picture rather than name.
    1. Voice based Address book – If a voice name can be recorded against a number, it would be great i.e. as you select a number while searching mobile will speak the name of the person. This can be very useful if for some reason, display start malfunctioning. But still photo would be required, because two persons can have same name.
    2. Voice recorder - Now if voice name is allowed to be stored in address book then it means that, phone should also have voice recorder.
  2. Camera – Seems luxury but required, if phone address book is photo based. This will allow people to take a photo and then add mobile number of the person and save.
  3. Symbol based keypad – Now because illiterate can’t read, standard keypad will not work. We would need the keys with symbol on the top.
    1. Layering the keys - Again here care should be give so that symbols are one layer below a transparent layer on keys so that its does not get erased quickly.
  4. Voice feedback to key pressed – A voice feedback should be given about the key pressed in local language. For example - if key ‘2’ is pressed is should sound ‘Do’ in Hindi. It will be useful while adding new contact.
  5. Speaker - Because of feature 4, a speaker would also be needed.
  6. Start and End Call button - There should be distinct two separate buttons to make a call and end the call. It’s easier to remember two keys for the two functions rather that same key for two functions based on state of the mobile.
  7. Easy scroll button - Its must because target audience can not make quick search by typing names. They will have to depend on frequent scrolling.
  8. Long battery life – Given erratic and even absent electricity in our village, having long battery life would be very essential.
    1. Mechanical charger - Again, having some other means of charging (other than standard) the battery, say solar or mechanical (like dynamo etc) would be very handy.
  9. Water and shock proof- We can not expect villager to take lots of care for their mobile. It will be used and abused. It has to be strong and robust. It should be water and shock proof given the nature of work performed in villages. Special care needs to be given to the display screen because if it breaks, whole mobile will become useless.
    1. Safety glass cover – A replaceable safety glass cover just like wrist watch used to have for the display can be very useful
  10. Call Bill – In village, people tend to share the resources. Even mobile phone can be shared. But it costs to make a call and even small amount is important for people in village. I have seen people fighting to reduce the fare by 50 paisa while traveling. To address this situation, mobile should announce the amount at the end of call. It will enable them to share the mobile without loosing money.
  11. Torch – It’s not mandatory but very useful feature given the lighting in village streets. It also very useful given the limited hour of electricity supply or no supply at all.

Wednesday, September 05, 2007

Human Capability Maturity

According to me there are four categories of people. Every one of us lies in to all these four categories for different skills. But dominant characteristic will decides individual category. I think moving from analyzer to actor/creator is difficult and from actor/creator to spiritual is even more difficult. Our current society prepare us to become analyzer and informer.

  1. Informer – Such persons has lots of information. Something like live encyclopedia. You have very high chances of getting the latest information from such persons. Their expertise is not limited to one field but rather many fields. Although they are bestowed with very good memory but not necessarily with great (every one has some) great amount of analytical ability. They normally don’t form their opinion based on analysis but rather based on their preferred experts. I think people like quiz master will qualify for such categorization.
  1. Analyzer – Such person are very good at analyzing data, finding trends (even hidden one), making logical conclusion. They can create theories, form their own opinion based on their own analysis. Professors, scientist, Guru, critics, consultant etc. will fall into this category. Even though they have capability to see through data, derive conclusions, they find it difficult to act or arrange necessary resources to act on these results. Although many of them influence the action of those who will act on these results.
  1. Actor/Creator – Such person may not have great deal of information or create theories but one who acts. Even though these people find it difficult provide theories behind their actions, they understand things intuitively. Such person need not be formally educated. Leaders, Entrepreneur, painter, musicians etc. will fall in this category. Such people might have strong opinion and can be highly emotional. In fact a formally educated person might find it hard to be actor or creator because it requires ability to take risks. Once a person graduates he can expect a decent paying job. He has spent more that quarter of his life for having this option and it just increases the stake against trying something new.
  1. Spiritual – Such people are next level of actor. They not only act or create but also understand what they are doing, why they are doing. They also understand why other are acting in certain ways which could be different from their and appreciate it. They are somewhat detached from what they are doing. Statesman, spiritual Guru etc. will fall in this category.

Sunday, April 22, 2007

Muti-Cultural dimension and Per Capita Income

I was looking trying to see if there is any relationship between per capita income and Geert Hofstede's cultural dimensions. One thing I noticed that individualism is high on almost all high income countries. It may be because of the high economic activities leads to more independence, movements finally weakening of society's hold on individual. Or it could be other way also i.e. if economic progress is faster when individualism is high in society.
Similarly, long term orientation seems to low, uncertainty avoidance index is high except few exception. Is it because of sustained good economic progress they tend to become more conservative?

Excel with per capita income and cultural dimension index.
I was looking trying to see if there is any relationship between per capita income and Geert Hofstede's cultural dimensions. One thing I noticed that individualism is high on almost all high income countries. It may be because of the high economic activities leads to more independence, movements finally weakening of society's hold on individual. Or it could be other way also i.e. if economic progress is faster when individualism is high in society.
Similarly, long term orientation seems to low, uncertainty avoidance index is high except few exception. Is it because of sustained good economic progress they tend to become more conservative?

Excel with per capita income and cultural dimension index.

Friday, April 20, 2007

Restructuring the Indian Education System

Two aspect of Indian education system is worrying. First is lack of emphasis on experiments and practical exposure. Second is, some what related to first one, fixed rather than evolution style of education. I will elaborate both of them below.


Lack of experiments and Practical Exposure
In the name of practical what is done, lab where you will be given the set of instructions to follow, expected result etc. If I know all these things upfront, then it’s not an experiment. It’s just verification of established fact. I do agree that it has its own place, but we should encourage students to venture into unknown areas and come up with results which they are not aware (professor off course can know).

Because of encouragements to follow the preset or guided paths, even when graduate students come out of collage and join industry they continue to expect that some one will tale them exactly what to learn, take a class etc. It’s very rare to find an individuals who given the objective and goal can find their way. Many of them just get psyched or loose directions.

Lack Evolution Style of Individual Education
First 25 year people don’t do any thing but just read and read. I was wondering why study period has to be continuous. Why it can’t be intermittent with work experience in between. In all places course are fixed. I can not study subjects one after another as per my liking and needs. I can’t work in computer industry for five year and then I felt the need for knowledge of basic of programming language. But I can not enroll for a semester for these few subjects. Of course there are some correspondence course are available but even those are modeled on the same line. I would like to get a degree in engineering slowly-slowly as and when I feel the need of theoretical backing on certain subject. This way I will be able to better relate to real world.

I would like to put forward two suggestions two mitigate these problems:

1. Allow professional to enroll for few subjects: depending on experience and some basic qualifying exam, a professional should be allowed to enroll in just one-two subjects. This will not force people to leave their job to pursue higher education. At the same time class can benefit immensely from the experience and exposure such students can share.

2. Industrial exposure: A student in engineering of graduate level should be sent to industry for at least a year. Student will get their grades from industry. Unless student get this grades from industry after working for a year or so, his degree will not be complete. This will allow student to gain valuable exposure and make them better profession before they graduate.

Sunday, April 15, 2007

Risks in career of a software engineer

Introduction
Any commercial organization has many share and stake holders. Each one has its own expectation from it. In attempt to meet those expectations organization faces many risks. Many organizations have disappointed the various stake holders and even failed because they mismanaged the risk.

An individual career has many similarities with an organization. Similar to an organization it has many stake holders. Each one has its own expectation. AND, like any organization, career of an individual faces many risk which if mismanaged can lead to dissatisfaction among its stake holders. In many cases those dissatisfaction easily get transferred to the individual. In fact individual himself can be thought as one of the share holders and which will get dissatisfied if he perceives the return or gain is not sufficient.

Out of many risks (sources of risk) of individual career few are not under the control of individual. Still those can be managed to minimize the possible impact. In this article I will try to identify the various risks involved in the career of a software engineer.

First step toward managing risk will be to identify them. Many of the risk involved in a software career very general which can be found in any career. But few are unique or present in very few other careers.

There are thee main categories of the risk, a typical software engineer faces.

1. Market Risk,

2. Organizational Risk,

3. Operational Risk.

Market Risk
These are the risks which are not under the control of a software engineer. Only way to manage such risks is to align with them. Let’s try to identify key market risk a typical software engineer likely to face.

Technological shift – In days of fast technological change, no technology get time to mature. Most of technologies expire in its teen. Given such scenario a software engineer has no choice but to keep learning the new technologies or let the career expire with the technology.

Technology Upgrade – Risk can also come from just mere major upgrade of the existing technology. Here again you have to learn few new things. But the amount of learning required is much less than when there is a technological shift. Even though it is easier to manage, it is important.

Technological saturation – In the previous section I mentioned that no technology get time to mature. Then how come a technology can saturate. What I meant by technological saturation is that technology is not out of use, but no or very minimal new development is happening. Take the example of COBOL. This technology exists but very little development happens (with respect to other language) happens in COBOL. Because huge investment had already been made in this technology, it will take some amount of time before it disappears completely from the technology horizon. Till such time there will be some activities on those front, but mostly maintenance or minor enhancement. Hence if you don’t mind doing maintenance or minor upgrade, you can live with such technology.

Geographical shift – Every enterprise look to maximize the profit and minimize the cost. So no wonder that lots of activities happening on the outsourcing front. Here one thing is important to keep in mind is that they don’t outsource their identities. They only outsource some of their task with clear objective of do the task in better way while continue to maintain their identity or brand. Here better way could be doing a task in less cost or with higher quality. All enterprise will always strive for the same. Hence if today certain task is outsourced to India, tomorrow it will be outsourced to China. Company will remain same. So what is the solution? Give reason to enterprise to have the task done in you region by providing marginal advantage in terms of quality or cost or some other thing which are important for the enterprise.

Political & Regulatory shift – What if you read in today’s morning new paper that Government has announced to use Linux in all the government sponsored projects. Also it will encourage others to the use of Linux vis-à-vis Windows. In many economies major IT spending comes from Government. It can also influence the private industries to use Linux. What will happen? Over night the requirement for Linux expert will zoom and you might have to run for training institute.

Organizational Risk
Many of the risk faced by a software engineer emanate from the organization he works for. Again it could have different type. Even though a software engineer can not control many of them, but he or she can certainly influence. As in the previous section of Market Risk let’s try to identify some of the risk emanating from organization.

Failure of Product or service– This is very extreme scenario but nevertheless possible. It could be because of many reasons some of them could be beyond the organizations control. Many organizations survive the failure of few of its product or services but some has to down the shutter. You might think why I should I bother about business model of the product or services offered by my organization. This is nothing but trying to be ostrich. In order to mitigate this risk you must understand and discuss the product or service offerings of your organization. Why does your organization think that his product or services will sell? What alternatives are there? How they add values to his customers? Because a customer is not going to buy unless he perceive some value in the product or service.

New competitor of product or service appears – Once you understand the business model of your organization, next step is to know about the competitor of your organization. When you are looking for the competitor first find those who are direct competitor. Then look for potential competitor. Direct competitor is easier to know. Most of the times, clients of your organization will compare product or services offered by your organization with them. Finding the potential competitor is little tough but not impossible. For this you need to understand the niche in which organization operates. Company operating in the same niche but offering different product either vertically or horizontally can potentially see lucrative opportunity in becoming direct competitor. This might not jeopardize your career but can certainly squeeze the profit margin of you organization. This can result in slow or no growth for you in terms of money.

Market for product or service saturates – Many a time for certain product new customer is not there or very difficult to find. It could be possible that product or service has failed. But if product is there for long time then it your product or services are bitten by competition or market has saturated for this. Key attributes of the saturated market is more maintenance work and less new client. If this continues for the quite some time then it means market has saturated.

Shift in organization objective - This could happen when there is major restructuring at the top. Restructuring could be induced by many reasons. It could be merger or takeover or market can induce the organization to enter in to a new market segment with or without remaining into current segment.

Currency fluctuation – This factor become important if major part of your organization’s revenue come from export. Basically your end customer is not in the country of the organization. This is important even if your immediate customer is in the home country. Change in currency conversion rate can reduce the profit margin substantially. Appreciation of home currency can slow down the growth of salary. Not much can be done about it. But appreciation of home currency vis-à-vis customer’s home currency mean that economy of his not doing good enough with respect to your economy. Hence you need to be in look out for reason of change in currency conversion rate.

Operational Risk
Such risks emanates from the fact that all individuals are different from other. Every one has it own style. Role for certain position might not change over period of time. But person who will be playing those roles can keep changing. This can have impact the way role is carried out. If look around you will find that some company are known for its innovation, some for its marketing. Why they are different? Almost every company has more or less similar organizational structure and roles. Every company has a CEO. But outlook of every company differs substantially because people or group of people playing various roles is different. A person can be more aggressive and ambitious or could be moderate. I am calling this operational risk because its affect day to day working of software engineer. Let’s see what are major operational risks?

Cultural shift – This normally happens when top management change. But this could potentially strain you emotionally. Although it is preached to be professional but at the end of day every one is an individual who has certain likes and dislike. In most of the scenarios it is possible to re-adjust your expectation towards your life at work. But if emotional strain remains too high for long time then its time to look for other organization which can provide you the environment you looking for.

Expectation shift – Time to time expectation of an organization from its resources changes. In time when competitor is at neck of your organization, pressure to deliver something which can provide edge will increase. Organization may decide to provide 24x7 services or expect results very fast to beat the competition. Such change in expectation can also strain a software engineer emotionally if he or she is not used to it. Here a software engineer should evaluate overall scenario keeping industry trend in mind.

Change in Boss – Effect of such change is not across organization. It normally remains localized to the team or group. On the surface, role played by new Boss may remain same but style or personality will dictate the day to day life. It is not always possible that style of new Boss matches with every individual in the team or group. In certain case just having a frank talk can resolve the irritations. In Some case just developing slightly different model of interaction can be helpful. But in some extreme case your style can be totally out of phase. Software engineer faced with such a scenario should think of changing the team or organization. People are meat to be different. So there is nothing wrong in not being in resonance with his Boss.

Conclusion
Every individual faces different risk in his or her career typical to is circumstances and there could not be single solution for any of the risk. But in the direction of managing it in a better way, each professional must identify the risk he or she faces. Some of them are discussed above but it is not exhaustive. Best way is to remain attentive to your environment.