Saturday, December 09, 2006

Financial Ratios

Interestingly, after a long two and half years of studying for MBA program has not made any better understanding of the financial ratios. Most interesting thing I saw was every finance course we keep doing ratios to land up into the same discussion in the subsequent classes. Here was the classic one. The ratios on returns. RoI, RoA, RoCE, RoE and god knows what all. I use a very common sense approach to ratio determination as such.

There are stakeholders who have put in money or provided infrastructure for a company to operate and they expect some tangible gains from the company. Whatever they gain is basically return. That being said who are the stakeholders to a company?
  1. Equity holders (Both preferential and common stocks)
  2. Debt holders
  3. Government

There are 3 kinds of basic gains for each of the stakeholders

Equity holders get residual profits, Debt holders interest and Government Taxes.

Hence return on asset should consider total returns on the complete asset so return definition here is PBIT. While for Return on Equity it should just be the PAT. Returns are worked on accrual basis and never on expensed basis.

In any case, after all we are MBAs and we will democratize the process of finding the obvious as well and will not know but think it might be something or in the end say well then everything is right. After all the world was there before accounting standards came into being.

Friday, October 06, 2006

Learning leadership from a train journey

The more I think I should not be blogging on personal opinions, the more I am getting tempted to throw my personal views. However, the incident was interesting hence thought of a mention on my blog. There will a consistent rule on my blog. Any idea which may rouse negative thoughts will be supported with literature and analysis available and any positive thoughts will be stated as is. The reason is simple, if I feel strongly negative of something it needs to be substantiated with research and literature and not be on my mere judgement. I hope I am able to reduce the effect of judgement from my articles.

Recently, I was traveling from Bangalore to Chennai in a train. One of my co-passengers were a retired professor of accounting and control from some university in Chennai. As soon as he saw the "HBR on The Mind of the Leader" his immediate reaction was you will learn more leadership from talking to leaders than reading books. I wanted to avoid a debate in the train. It helps no one and with my schedule of job, course work for exec-MBA it's really hard for me to find time to read a book which I did not want to spoile. Yet, I decided to talk to him and be a non-contributor. There are two distinct points he made although in very crude terms we will have lots of examples in lreal life to substantiate.
  1. Leadership is about being a good listener
  2. To be a successful leader it's important to be a good follower in early part of your life

I found both of these viewpoints unique in someway and very nice. Of course the HBR analysis does not talk about these anywhere. Some learning which only gets to you when you grow grey hair may be :-)

Wednesday, July 26, 2006

Lateral Marketing and Hindu Hymns

The other day I wrote a review on Lateral Marketing by Philip Kotler and Fernando Trias de Bes.

However, more interestingly I was getting some crank calls on my cell phone for last couple of months. Same number and always it would get disconnected as I pick up my phone. Finally, I decided to block the number called up my cellphone provider who asked me to register a police complaint. I realized that blocking a call in Indian phone system is next to impossible so I decided to put the number in my do not pick up list in the phone and relaxed. One day when I looked over to realize that the phone is actually flashing backlight means it was ringing again from the same number and when I picked up it got disconnected.

I called back and to my surprise a PCO (public call operator) picked up the phone. I told her if I get one more call then I am going to give their number to the police. She is doing it for a living and more over the place is some 500 miles away from where I live. And finally she admitted that some one used to call into my number because I had a nice hello tune which is basically a small piece of music that is played when you are waiting for the other person to pick up her phone. Luckily or unluckily I have the Hanuman Chalisa (Hymn for the great lord Hanuman) as my Hello Tune and there are enough people you would like to listen to this. I didn't know what to say. I cannot say no to someone's religious sentiments.

However, it definitely made me wonder all religious groups in India can start their telephone radios where people can dial in and listen to their favorite devotional songs for free. More revenue for mobile operators, for some software development companies and greater penetration for the religious community. There are some definite gaps in this mobile space where newer products can come in.

Monday, June 12, 2006




Thursday, June 08, 2006

The Manager as Problem Solver

Abstract

In this article, I try to correlate the mindsets of the manager and the scientist’s problem solving abilities. A manager has to interact various different scenarios and bring in a balance to the system and environment he operates in. For example, a typical managerial problem involves the relationship of self, organization, local environment, people and results. Each brings in a fresh set of problems to operate on.

The Management Process

The manager needs to bring in a balance between the organization, self, people, local environment and results. Each of this needs a separate faculty of the mind and thus the five mindsets of the manager suggested in the shown figure. Only defined framework in a managerial process is the organization which has certain clarity and where a defined analytical mindset can be brought to place. However, other environmental forces that the manager needs to take decisions are all not so scientific problems. Thus, to a greater extent a managerial problem solving can be considered very similar to a discovery and understanding of the world as has been described in the “Scientist a problem solver”. However, many a times such problem solving can be to find the local optimality.
















Laws from Data


A manager does not have any clear definition of problem. Most problems he faces needs to be analyzed from the data that is available to him as experiences. The experiences can be his or his fellow beings. A reflective mindset of a manager creates connections between the various signs that’s available to him. And, these connections may be generalized as the experience becomes firmer and clearer.

Representations

The management education is known for its 2 x 2 matrices and frameworks. Management being a subject that deals with significant alternatives needs to have representation methodologies which are simple and yet powerful enough to convey ideas. The interpretation of simple representations can be carried over to making complex decisions. However, if the problem cannot be isolated and brought into a simple framework it will be hard for a manager to keep track of the decisions which are multi-part, multi-step and can extend for longer periods of time.

Finding an Explanatory Model

Managers are known to look for frameworks which can explain the systemic nature of organization, society and environment. Psychologists and sociologists have come up with various explanatory models that explain human behavior and interaction. There may be large exceptions to the rule in such frameworks, but having a couple in one’s arsenal definitely makes the battle easier. A reflective and worldly mindsets bring in the required moderation in usage of these models.

Designing Good Experiments

Case analysis is considered an effective methodology for management education. Cases are essentially a focused definition of a real life situation. They come handy, as they bring in an analytical mindset to a real life problem which is normally hard to express in an analytical manner. As a manager, it’s important to create cases from critical real life incidents. The idea of a case should be so designed that from the look of it, it may sound an analytical exercise. However, the other faculties of a manager’s mind should be strong enough to filter such that the case looks as if it can be analytically solved. Designing cases can help a person use them in future, understand the intricacies of the situation and keep in mind what facts to use and what not to use and create problem isomorphs.

Problem Isomorphs

No two humans are the same. Hence, no two management problems are alike. Every case should be dealt with its uniqueness of characteristics. Does that necessarily mean that there can be no medical treatment as no two humans are alike in every respect? It can be seen with all their differences human beings of a same cultural upbringing have similarities. Organizations of similar sizes and domains behave alike. However complex an organization may be, certain processes in the organizations are alike. Hence, problems in one situation can be brought into another domain. A manager is a person who with his vast experiences should be able to make those correlations and identify the isomorphs. However, a worldly, collaborative and reflective mindset can make him see the differences within the isomorphs and compensate for the differences.

Experiments without Independent Variables

Most management problems have no variables known. What is known in is something needs to be achieved. An action orientation without analytical mindset would mean put more effort and results can be achieved. But, it’s also known that in a resource constrained world this is just wishful thinking. A manager can come up with manageable changes and study the effects on the output by going beyond the action mindset. Rather than identifying the input variables, changing intermediate processes can lead to better output maximization. This would mean better collaboration, people management and support of society. Searching for input variables is like finding out the cause of the problem. Many a times a satificing attitude of solving the problem with alternatives possible can be a worthwhile approach to consider.

The Manager as Satisficer

Managers are by definition satsficers. This has its positives and negatives. The benchmarks for most managerial processes are not known earlier. Hence, managers tend to propose estimates based on historical data and expected achievable margin. Once that’s met they take a satisficing attitude of making that as their
achievable target. Every re-engineering effort tends to challenge that satisficing target and achieve further. A good model and conducting right experiments backed by problem isomorphs should be well analyzed before taking a satisficing viewpoint of a management problem.

Reflections on “The Scientist as Problem Solver”

Abstract

H. A. Simon has described how the scientific research, he has been conducting is very similar to problem solving in other form for example a game of chess. The process of scientific discovery according to him is a process of recognition. He describes the whole scientific discovery process in the following parts:
• Formulating Problems
• Laws from Data
• Representations
• Finding an Explanatory Model
• Designing Good Experiments
• Problem Isomorphs
• Experiments without Independent Variables
• The Scientist as Satisficer

Formulating Problems

The first and foremost part of any discovery process is identification and formulation of the problem. However, it’s the case that a person actually finds the solution of another problem while trying to solve one problem. Pasteur’s famous dictum as “Accidents happens to the prepared mind” has been cited to justify this. In explaining the failure of neo-classical economics theory in a described situation Simon could figure out how bounded rationality of human nature can overlook the rational global solution to the problem.

Laws from Data

Many a times, scientific theories are found embedded in data rather than an established theory proving the same. For example, when Kepler provided information on earth motion it was purely data driven. Newton postulated laws gravitation and proved that his laws can explain Kepler’s observed data. Similarly, Lotka’s assumptions could be solved lot later by logical arguments provided by the author. More over similar research has been found to be conducted by other researchers in parallel fields without being aware of each other’s work.

Representations

Representations are very important for any scientific experiment. Although, words can describe the problem a clearer understanding comes from imagery describing the problem at hand. Einstein and Hadamard agreed in their exchanges that words do not stimulate the process of thought significantly. Simon has shown that although mathematical models help but a physical mental picture like the room and cell example helps getting a clearer thought process.

Finding an Explanatory Model

Finding an explanatory model for a phenomenon is quite important and useful in coming up with a solution. One way is to systematic thinking in the direction as has been done Lotka’s problem case. The other approach is identifying a similar problem which has been solved. The example the author uses is of defining theory of problem solving by using digital computers as a model.

Designing Good Experiments

Designing a good experiment is very critical in a scientific problem solving exercise. Many a times experiments bring out facts that were never captured in the model thus bringing in surprises. The author tries to find out an experiment on Chinese language on STM which is a natural experiment rather than creating an artificial system.

Problem Isomorphs

Problem isomorphs are identical in task domains and legal domains yet have been described by different words. He describes two scenarios of tower of Hanoi and missionary and cannibal problem both being isomorphs may take a human being different times to solve. The idea that the solution of a problem depends
only on the size of task domain is not a valid assumption to make.

Experiments without Independent Variables

Many a times in experiments it’s hard to define exact independent variables. However, redesigning the experiment in such a way that the results are unintuitive can be a good means of coming up with results. The impossible problem formulation has provided the author existence two distinct human cognitive system in addressing the problems. Simon wants to portray that observation is far superior in solving the problem than hypothesizing and proving based on the hypothesis.

The Scientist as Satisficer

Scientist is ultimately a satisficer as well. When she is in search of something she postulates certain possibilities that may be occurring in the nature. Ultimately she provides a model of sorts and tries to validate that with the natural happenings. When the model matches with the natural occurrence within limits she concludes the completion of the experiment. However, it’s not an endless quest for finding the right answer but a relationship of matching a model definition with the expected natural occurrence.

References

[1] H. A. Simon. Models of My Life, chapter The Scientist as Problem Solver, pages 368–387. The MIT Press, October 1996.

Reflections on “The Five Minds of a Manager”

Abstract

The separation of management from leadership has promoted hubris and its destructive implications
can be seen today’s organizations. There is some opposing aspects which has been told to the managers like be global as well as local. Be collaborative as well as competitive. Effective management needs to balance this seemingly contradicting concerns. To bring this balance managers need to develop “mindsets”. The authors have classified five aspects of a managerial mind. First, they explain how they came up with the mind-sets, they describe each in some depth and then the relationships between the mind-sets.

Why the mind-sets?

Organizations often times come to situations when it knows what to execute but appropriateness of the execution in the situation may not be quite clear. A disconnect between “action” vs. “reflection” can be very dangerous for such circumstances. Authors call action without reflection as “thoughtless” and reflection
without action as“passive”. These actions need involvement of other people hence it needs “collaboration”. The action also needs to be modified based on the context or “worldly” view. And, no such act can be complete with an“analytic” mind-set. Considering these the authors have came up with five different mind-sets of a manager.

• Managing Self: Reflective mind-set
• Managing Organization: Analytic mindset
• Managing Context: Worldly mind-set
• Managing Relationships: Collaborative mind-set
• Managing Change: Action Mindset

The Reflective Mind-set

It’s important for a manager to internalize the facts rather than merely a spectator to the situation. Reflective mind-set brings in the happening and creates an ability to correlate it with self and thus to get a broader perspective of the situation. Reflection is not about mirroring people but about internalizing the happenings and create a deeper understanding. An empathetic view can closely describe this aspect.

The Analytic Mind-Set

Modern organizations in the essence have become highly structured and can be explained by a systemic approach. Division of labor and structured processes needs an analytical mindset to realize the systems, processes and their interconnections. However, managers need to interpret the soft data available around into the analytical framework as well rather than overtly stuck with numbers and values.

The Worldly Mind-Set

Worldly mind-set needs a “glocal” view of the situation. While, it’s good to have a global view of the world the barriers in the world is lowering are facts. Substantial differences still exist in the local situations vs. global situations. Local customs, feelings, holidays, sentiments should be looked at as well while focusing on the global view as well. A cultural dissonance can affect employee morale, customer unhappiness and social balance. Managers need to take a worldly view so that a balance across can be managed.

Collaborative Mind-set

Collaboration is about relationship building and providing a ground for people to exchange and work. It needs to change the manager at the top attitude and managing people. Rather the view point should more towards bringing in synergy across cross functional, far-located teams to be able to deliver.

The Action Mind-set

The business is facing change very rapidly. Similarly, every person in the organization also has aspirations, emotions and motives that vary drastically. Holding a steady course and bring in a direction is important to change. The action mind-set is not about to create a dictatorial fear among the teams but to understand the capabilities of the teams and the difficulty levels of the terrain and bring in a balance between both.

Bringing all the mind-sets together

All these mind-sets do not work in isolation. They need to be weaved together to create a balance. For example action and collaboration is a requirement to bring in synergy in the teams. When you get a road block reflections provide solutions to overcome. Then again more focused action with analysis of the activities will help in realizing the end objectives. A worldly mind-sets provides the needed balance all through the cycles. Although, it’s a necessity for all managers to show deep inclinations to all the mind-sets, typically managers tend to tilt towards a few of them. However, if these can be identified and the interweaving can be done at the organization levels, this can bring in enough balance in the organization.

References

[1] Jonathan Gosling; Henry Mintzberg. The five minds of a manager. Harvard Business Review, pages 54–63, November 2003.

Wednesday, June 07, 2006

The Individual Contributors and Managers - Indian Software Industry

It has been sometime I am seeing a trend in Indian IT industry (both Indian operations of MNCs as well as Indian companies) to hire more architects. Is this arrangement working out effectively? My belief is, it is not. Here, I present some of my ideas why I believe it is not effective as it can be. A few days back I saw a recruitment advertisement which asked for Software Architects with PMP certification. What is surprising to me is, what an architect is going to do with Project Management certification when there are able project managers associated with the project, or the project managers are not able?

Looking Outward vs. Inward

One major difference between an architect and a manager is the viewpoints. Most architects are supposed to have an outward view of technology. Where the industry is moving technologically and how the organization can maximum benefit from that. While first level managers are supposed to be responsible for the delivery and issues of the project and processes. In reality, most managers do not interact with their reportees often. It ends up architects deciding the schedules, being aware of people issues and many a times getting deep into it and landing up solving the whole issue themselves. While, they should be ideally be spending more time in outward enhancement of the product by comparisons with competitors they involve themselves in nitty-gritty details of the project at every stage.

I think the closest match between an architect in the business paradigm is a product manager. Both have an outward looking role. What can they bring from the environment to organization. While the project management process is more an inward looking role in actually developing the inter strengths in the organization. However, in most organizations at least in India has a dominating inward looking focus which leads to the outward looking role seem dysfunctional. Product managers and architects are known cynics inside the organization while customers and partners look at them as real value drivers. The cynicism of architects and product manager is what makes them take larger stock of the market and design or create something that's beyond the organizations inward capability. A dominating inward force on them will lead to organizational compliance management than building a culture of candor. If you do not have a culture of candor, architects have very little role to play.

Why is this mismatch?

Is your Problem that Difficult?

The most important question to ask here is "Is the Problem that you are trying to solve that hard?" Most of the time it is not. Most of the problems are clearly well defined. I feel many Indian Software Companies cannot even justify their business model being different from the other. The answers I always get is like the old Maggie tomato ketchup ad "It's different". If the problem is not that hard why do you need an outward looking role in technology? At least not hiring is a better option than bringing such a person and asking him to manage projects.

Are we prone to looking Inwards?

One of the classic problem is cultural. Hofstede defined a model for cultural significance in management practices. One factor which is very important as for Hofstede is the concept of "Power Distance". India has a higher power distance than most societies. Here is what it translates to:

High Power Distance
  1. Inequality is a fact of life - Everyone has their rightful place.
  2. Some are independent, others are dependent.
  3. Hierarchy is something that exists and is accepted.
  4. Superiors/Subordinates are different to me
  5. Power is a basic fact of society which is independent of morality. It is there to be used - legitimacy is irrelevant
  6. Power gives priviledges.
  7. Powerful people try to look as powerful as possible. (pomp + ceremony)
  8. Coercion and referent power are accepted
  9. If something goes wrong - it's the underdog fault.
  10. To change the social system, dethrone those in power (revolution)
  11. Everyone wants your power - don't trust them.
  12. Latent conflict between powerful-powerless.
  13. Co-operation is hard due to lack of trust.
Which means organizational compliance and not innovation becomes a bigger requirement for the company that anything else. One classic example is one manager of research division in a well known MNC in its Indian operations wanted all his employees spend 12 hours in the office as there was some delivery team which had a project delivery in a month's time and this would mean research team is showing solidarity to the company's cause. In anyway he was never seen in office after 5:00pm. In another Indian organization the owner of the organization wanted all his employees to work 11 hours or more in the company while he took substantial golf and gym breaks. Why is this power distance appearing? Here are some cited reasons:

High Power Distance

  1. Tropical and sub-tropical climates
  2. Survival and population growth just less dependent on intervention with nature (food is easy to get...)
  3. Less reliance on technology
  4. Historical: Early legislation not applied to rulers, Divided inheritance.
  5. Less need for education of "lower classes"
  6. Less social mobility, polarised society (rich - poor)
  7. Less _national_ wealth.
  8. Wealth concentrated in the hands of a small "elite"
  9. Political power is concentrated in a small "elite" (military, oligarchy, etc)
  10. Large population - little resistance to mass "integration"
  11. Historical: Occupation, colonization, imperialism.
  12. Centralization of Political power.
  13. More static societies
  14. Children dependent on Parents and elders
  15. Less questioning of Authority in General.
As can be seen in the Indian context the power distance is so high that for a rational organization operation it is no way that there can be two separate power centers for both outward and inward looking roles.

What is the Solution?

I personally believe that the western management principles for research organizations does not really apply to India. There is a need to structure it differently than following the standard architect (tech lead) and manager model. Here are some basic changes that can be brought in:

  • Empower employees with more freedom to decide and also manage interpersonal issues.
  • Address personal issues early so that it does not get to dysfunctional proportions that leads to management spending too much time in setting that right.
  • Inculcate technology knowledge in managers. Make them thorough practitioners. If the step 1 and 2 are taken care of managers will have more time to develop themselves.
  • Remove the Human Resources belief that technology can be inorganically acquired while management is to be developed in the organization itself. Ideally, both can be acquired and developed depending on the situation. TISCO hired its VP, Projects Mr. R. P. Singh few years before he was retiring and not promoted someone within TISCO. The change the Mr. R. P. Singh brought into the organization is of course all very well known.
  • Project Management is all about people management. Sorry, project management is about projects. In software the KSF driver being people project management tends to be wrongly named as people management. The best way to manage really talented, motivated people is by giving them a freehand. I guess if you want to be great companies who hire the best people why is this simple management practice is not in operation. To build a "Skunk Works" or "3M" is not to monitor every employee but to empower them.

  • I will be interested to know your views on this.

    Sunday, May 07, 2006

    Even This Shall Pass Away

    When I was in my eighth class, this poem was part of my curriculum. Today, when I look back, it seems to me in the same freshness as I had got from it then. I guess you all will love reading this poem as much as I do.

    Even This Shall Pass Away

    Once in Persia reigned a king,
    Who upon his signet ring
    Graved a maxim true and wise,
    Which, if held before his eyes,
    Gave him counsel at a glance
    Fit for every change and chance.
    Solemn words, and these are they,
    “ Even this shall pass away.”

    Trains of camels through the sand
    Brought him gems from Samarcand;
    Fleets of galleys through the seas
    Brought him pearls to match with these;
    But he counted not his gain
    Treasures of the mine or main;
    “ What is wealth?” the king would say;
    “Even this shall pass away.”

    'Mid the revels of his court,
    At the zenith of his sport,
    When the palms of all his guests
    Burned with clapping at his jests,
    He, amid his figs and wine,
    Cried, “O loving friends of mine;
    Pleasures come, but not to stay,
    'Even this shall pass away.”

    Lady, fairest ever seen,
    Was the bride he crowned his queen.
    Pillowed on his marriage bed,
    Softly to his soul he said:
    “Though no bridegroom ever pressed
    Fairer bosom to his breast,
    Mortal flesh must come to clay
    Even this shall pass away.”

    Fighting on a furious field,
    Once a javelin pierced his shield;
    Soldiers, with a loud lament,
    Bore him bleeding to his tent.
    Groaning from his tortured side,
    “ Pain is hard to bear,” he cried;
    “ But with patience, day by day,
    Even this shall pass away.”

    Towering in the public square,
    Twenty cubits in the air,
    Rose his statue, carved in stone.
    Then the king, disguised, unknown,
    Stood before his sculptured name,
    Musing meekly: “What is fame?
    Fame is but a slow decay,
    Even this shall pass away.”

    Struck with palsy, sore and old,
    Waiting at the Gates of Gold,
    Said he with his dying breath,
    “ Life is done, but what is Death?”
    Then, in answer to the king,
    Fell a sunbeam on his ring,
    Showing by a heavenly ray,
    “ Even this shall pass away.”

    - Theodore Tilton

    Monday, April 17, 2006

    The Five Minds of a Manager

    Managers need to create the following balance mind sets to be successful.

    • Managing Self: The Reflective Mindset
    • Managing Organizations: The Analytic Mindset
    • managing context: The Worldly Mindset
    • Managing Relationships: The Collaboration Mindset
    • Managing Change: The Action Mindset
    Each mindset has its positives in the area it's most suited and a person should nurture each of these in herself. Organization should see that their management is getting exposed to all these aspects in realizing the mindsets that's best suited for them to be effective. Many managers complain that their engineers do not think like managers. The reasons are clear the metrics and task centric view to goal setting as happens in most organizations is not a methodology to bring out the described mindsets. It needs an all-round development and devoting time for management improvement in a conscious manner to bring out the holistic management mindset.

    Sunday, March 26, 2006

    It Is Not Growing Like A Tree

    It is Not Growing Like a Tree
    by Benjamin Jonson

    It is not growing like a tree
    In bulk doth make Man better be;
    Or standing long an oak, three hundred year,
    To fall a log at last, dry, bald, and sere:
    A lily of a day
    Is fairer far in May,
    Although it fall and die that night -
    It was the plant and flower of light.
    In small proportions we just beauties see;
    And in short measures life may perfect be.

    The other day I met a director from a very renouned software firm. General discussion went on around with exchange of pleasantries. And he remarked that I have changed quite a few companies in a short period of my career. I was generally asking him how his career has been in his esteemed company and here are somethings from his statement which kind of stunned me.

    I have worked in my current company for 14 years. There are 200 people reporting to me. We have a great culture of having both Individual Contributor and management career tracks. This dual track works very well in his team while it is not very successful elsewhere and blaah blaah...

    I just felt asking him a reference of a senior individual contributor in his team. Anyway, I dare not ask that. That's his life and his team. But, what I realized if in a great company like where the person is working if definition of success for him is 14 years of service and a director tag and 200 people reporting to him, I guess there is something really unusual happening. Will this impress an outsider like me or is it to substantiate his own ego. Secondly, if a person's definition of success is 200 people reporting to him how can an individual contributor enjoy such an environment. Well, I am an outsider, why do I bother? We had couple of minutes of additional discussion and I thanked him for spending the time with me and bade good bye.

    Monday, February 27, 2006

    Fundamentals of the C Programming Language

    The C Programming Language is one of the few programming languages that redefined a programmer's outlook to programming computers in late 70s and early 80s. But, it's important to point out why is C different from others. It's well known fact that it has the simplicity of a standard functional programming language yet has the power of a system programming language. Following are a set of features which differentiates C from others.

    Functions vs. Sub-routine

    Everything in C is a function. The question comes now is what is a function? A function is a partial program that can take certain inputs and return an output. Subroutine is a modular piece of code that may or may not take any input and certainly will not return any output. C eliminated all this distinction by providing
    void
    which would mean no input or no output.

    Pass by Value

    Unlike other programming languages C has no pass by reference concept. Everything that needs to be passed to the function has to be passed by value. What if you need an in/out parameter to a function. C does not have any direct answer to that. However, C definitely has a solution in terms of passing the memory address of the location to the function.

    Support for Pointers

    Pointers are the saving grace for a language that is a pure pass by value language. Pointers are a round about means of achieving a pass by reference alternative. However, pointers are beyond that actually. Pointers in most architectures actually expose out the exact process memory location to the user. This is an important and useful feature as the address can be obtained and be input to a piece of assembly methods for direct memory operations.

    Dynamic Memory Allocation

    Memory management which is pretty popular in today's languages were still a big requirement during the days of C. C provided dynamic memory allocation in its standard library implementation which can be used to allocate memory on an as required basis. Memory allocation and resizing gives enormous flexibility in designing programs which do not hog all the memory during program start up.

    Abstract Data Design

    Ability to design abstract data structures are a very useful feature with C. The following are some of the useful methods of designing abstract data structures.

    1. Typedef
    2. Struct
    3. Bitsets
    4. Bit operands and macros

    Pre-processor

    One of the most disliked features of C yet the most useful as well. Of course pre-processors being compile time constructs do not help a developer during debugging phase. However, this is one of the most useful features for designing generics, inlining and other such programming principles.

    Use of C may be declining off late in comparison to C++ or Java, yet it will always be used as a base language that has made significant changes in the way programmers think today.

    Wednesday, February 01, 2006

    Knowledge - In the Internet Age

    It's interesting to note with advent of internet a lot has changed how data is presented and communication as we have known so far. Firstly, the volume of data has increased to a large extent. Secondly, ability to manage data may it be databases or mere storage has increased drastically as well. Thirdly, the channels of dissemination of information has grown as well. An age which has thoroughly redefined itself in terms of data and information it's really important to look is all this leading to increase in the community knowledge base and human wisdom at large.

    What is Knowledge?


    Before answering these questions we must define Knowledge. Knowledge is a an embodiment of information (which is context sensitive data) that structure, classification and presentation attached to it. Although Knowledge sources are in the available data mere data imparts very little to knowledge. For example, a catalog of items have the cataloged information in a data store, however it becomes a knowledge asset only when all the data numerals are mapped to a presentation form which makes it legible to human use. XML technology in certain form actually has helped in presenting data separately from form of presentation through XSL, CSS and the like. Knowledge embodies both form of presentation as well as the data which is present in the presentation.

    Origin of Knowledge


    Another important question that arises from the above discussion is what is the origin of knowledge. Is there something called as a primary knowledge? What is most interesting to note here is every data that comes as input to a system has certain form information associated to it. Which essentially means there can be no data which is understandable to humans unless it carries a set of context, thus data in true sense is more of a transitory state. Said differently the data becomes information the moment we start decoding it. Now suppose we have received certain information and we are trying to summarize it and present it as a summary article. It's interesting to note here the origin of such knowledge is it the summary, the information receipt from a source or the source itself. To answer this I will say none. To drill down to the origin of a knowledge is fairly complex. Another example will be the syndication of news reported by search sites like Google. Can we say the knowledge of the news is held by the news site, the agency, the reporter or the actual site where the knowledge was gathered. The simplest way to address knowledge origin problem is to look at the form which is legally allowed to pick the information from rather than getting deeper into the copyright or patent laws issues.

    Classification of Knowledge


    When there were limited information around there was only one subject one classification of all information available. However, times have changed. Interdisciplinary concepts are being very common. Subjects like Robotics, Artificial Intelligence, Bio-Computing have merged the borders of knowledge bases. Given a piece of knowledge it has become fairly complex as to which domain/classification it will fall in. Thus, there is information and classification of the information can be in multiple domains. A systems which truly represents knowledge needs to identify and handle this in a useful way. There is nothing like a correct way in today's complex world of information.

    Knowledge Transformation and Forms

    While many companies have invested substantial resources in developing forms based solutions they are still solving the presentation aspect of the forms and from the structured presentation how to extract data which is meaningful, hierarchal. However, what needs to be thought of is a means to transform one body of knowledge into another. For example, most RFIs, RFPs and corporate brochures use the same body of knowledge as source but they are filled up differently based on a presentation style which different. A transformation system which can read and understand one form of presentation and transform the data into another for is bound to provide a strong meaning to the knowledge available today. Of course some companies are using resume databases to be automatically extracted out from resume databases but a lot needs to be done to provide true form based solutions for knowledge management.

    Knowledge Security

    When information becomes available to the extent it has become ubiquitous the immediate question that arises is, who should have access to the body of knowledge. What is interesting here to note is that the presented content has various security provisions. For example, although abstract of a publication is normally shown free to public there may be a charge for the complete publication. Your financial details are information available to your tax attorney it needs to be kept hidden from the general public. Now it's important to note here what makes a knowledge body complex is that although complete information is secured a derivative of that can be made accessible to everyone. In case of an automated transformation system proposed as above it will be hard to classify the information in the source of information what part of it is secured and what part is not.

    What should a true knowledge management system provide?

    Given that it's fairly complex as far as knowledge goes it's important to note what is expected of a true knowledge management system

    0. Should have a method to classify and search content.
    1. Support for large formats and forms of content.
    2. Respect for original source of content (copyrights, patents and trademarks)
    3. Security definition at the user and portions of the content level.
    4. Ability to transform content from one form to other.
    5. Should define a means of portability of content from one form to other.

    Thursday, January 26, 2006

    10 commandments for Software Programmer

    It's always hard to start a column where you present your thoughts. My personal belief from 10 years of programming has been to create a model for programming process which is sustainable and delivers the best results in any circumstance. Here are the 10 commandments that a software programmer I feel should believe in to be really successful.

    1. Thou shalt not work for more than 50 hours a week


    Most programming community who claim themselves to be hackers can sneer at me for my this commandment. The reality is coding is more formally like a conversion of one's thought to a logical representation. And serious logical activity needs level of mental energy which beyond 50 hours is not going to be productive in anyone's work and life balance. The concept of working 50 hours a week is a post industrialization concept, from the time man has started doing lesser physical activity and more rigorous mental activity.

    2. Thou shalt at least read one book on programming a month

    I have talked to numerous programmers even myself have done the same blunder. While discussing with some of them on encryption whenever I asked this question which encryption scheme they used most of them came up with some self justified shifts and xor combinations to create encryption routines. Some of them vehemently claimed that their encryptions are the best as no one really can crack their encryption concepts. As most of us who have read books on encryption would know conceptually unless proven mathematically most encryption algorithms cannot stand the brute force attack given the power of computation today. I do not under-estimate the potential of the fellow programmers who developed their algorithms for encryption, but they could have done better by reading some text written around the same field. To be able to read you need to spend more time away from a computer anyways.

    3. Thou shalt copy code but give full credit to the author or the intellectual property


    In todays times where operating systems, compilers, system software is almost becoming free like air and water, there is little scope of being a prude trying to develop your own algorithm for every little thing out there. Great software is about 90% perspiration and 10% invention. Today's competitive software environment has made this 90% easily attainable with many open source components. However, to know what exists in the market one has to keep one's eyes open.

    4. Thou shalt love thy QA team

    Of course it's true to certain extent the QA teams have a greater density of female species in most organizations than the Dev teams which are mostly filled with nerdy looking male. But that is not my topic of discussion here. The reason I thought it's important to mention is the best friend is who can critic you for free on any mistakes you have done in your lives. Your QA can find your mistakes when you cannot even imagine when they exist and much before some customer of yours gets back to you and makes you sit for the whole night fixing bugs.

    5. Thou shalt talk of what you have done


    One thing programmers are seen most of the places they are lost in their own little world and not communicating enough to the community at large. Everybody out there is doing his own little thing. The interesting thing in a programming community is to generate a critical level of noise. Posting on forums and maintaining blogs and communicating ideas are means of bringing out the thoughts. This thoughts may add up to a new school of programming. Think of extreme programming can it be a programming concept had it been implemented just within a corporate firewall.

    6. Thou shalt not claim yourself as an inventor


    One difficult trap that programmers get into is they start comparing themselves into developing novelty in everything they do. Most programming is not research. There are some research elements there but day-by-day they are becoming application of research. That does not mean that a programmer should not be part of a scientific community doing computer science research. The claim here is for day-to-day programmers who tend to think every problem as a research problem and start losing track completely the movement of technology. If you look back today most large companies and sticking on to their old legacy and claiming that they are the best when lots of innovative products have come up by using standard frameworks available.

    7. Thou shalt know how much of a task you can deliver

    It's very important for a programmer to know and predict how much she can deliver. This should not be an after thought but should be in pre-thought process. Start with estimating based on the problem you think you are trying to solve. Once you estimate reasonably give twice of the estimated time that you can solve the problem in maximally. Once you know that maximum limit in the middle of the project or sometime re-estimate and slowly you will see you will be estimating better. One problem we all programmers feel is we are doing research and involved in inventions. There is some amount of uncertainty in every software process. Most programmers love the uncertainty and but if you make every parameter in a software process uncertain you will have exactly 50% chance of being successful.

    8. Thou shalt love pen and paper

    In the e-age as programmers tend to type in everything on the computers as they sit and start programming. However, the art of programming is in thinking through the program and not typing it down with lots of mistakes due to cramming on the screen. The best engineering designers spend their time on drawing boards and not on the engineering sites. Software should be a blue print and once the blue print is designed; coding is like building that design on a computer screen.

    9. Thou shalt add physical activity to life

    Most software programmers end up being couch potatoes. Excellent physical activity record and school and once they get into software they tend to like their pizzas, coke and computer too much. This is not beneficial to anybody in the long run. Continuous built up of stress in the fingers and brains gets to significant mental and physical ailments to a person.

    10. Thou shalt compete with no one but yourself


    In a competitive environment as software is there is always going to be a whizkid who can out perform you in mental capabilities and there is no value add competing with him in the long run. Decide your focus and your aim in life and where you would like your career to move at just do that right. A whizkid will be there let him move with their own sweet pace there is no need to lose your peace on their abilities. Try to improve little by little for yourself and you will definitely see yourself much ahead of what you thought you are capable of.