We will be successful when we have a style that celebrates a consistent set of values that serve both human and commercial needs: communication, simplicity, feedback, and courage. - Kent Beck
For any team (and this includes teams developing software as well) to do well, the four values of communication, simplicity, feedback and courage, can play a very vital role.
Communication
More often than not, problems with any project can be tracked to miscommunication or non-communication. Sometimes a programmer doesn't tell others about a crucial change he has made, sometimes the customer is not asked the right questions and a requirement gets blown off or a false requirement is born, sometimes a manager doesn't ask the programmer the right question and the project status gets misreported.
Bad communication just doesn't happen by chance, it happens only when allowed by the circumstances. If a programmer gets punished for telling the manager that he is encountering some difficulty with a particular feature and it may require more time, then he is always going to paint a rosy picture of the project status, till of course it is too late to recover.
The work place and the work culture must both encourage communication. Ideally, everyone must have access to everyone else, no one must be punished for telling the truth, and people-to-people communication must be encouraged. Towards this, no-agenda meetings can be a great help. A no-agenda meeting is a small meeting (about 15 minutes) with no fixed agenda, where the group gathers around a small table with coffee mugs to talk about just anything. Anyone should be free to talk about anything. In my own personal experience, some of the brightest ideas and some of the worst criticisms have come from such meetings.
Simplicity
Simplicity is not easy. Creating the simplest system that would work is probably the hardest thing to do. It is hard not to look towards the things that might need to be implemented tomorrow, or the next week, or the next month, or the next year. But this thinking ahead is due to the fear of exponential cost of change (the cost of making changes to a system rises exponentially as the development progresses). We start making some headway in the direction of simplicity once we realize that it is better to do a simple thing today and pay a little more tomorrow to change it, than to do a more complicated thing today that may never be used anyway.
Simplicity and communication have a mutually enhancing relationship: the more you communicate, the better you know; the better you know, the better you understand what to leave and what to take; the better you understand, the simpler the system; the simpler the system, the less is what needs to be communicates; the lower the volume of things that need to be communicated, the more complete the communication.

Feedback
Optimism is an occupational hazard of programming, and feedback is the treatment.
Feedback to the programmer can be in the form of unit-test results, system integration tests, or just about any tests. The test results let the programmer know how well (or unwell) things are. Completion of tasks provides feedback to the team about whether they are likely to finish on time.
Feedback encourages communication. The more feedback you have, the easier it is to communicate. Simplicity encourages feedback as simpler systems are easier to test. Writing the tests gives you a focus for just how simple the system can be - you are done only when all the tests are green, and this allows you to build simpler systems.
Courage
Every once in a while, someone on the team will have a crazy idea that promises to cut the system complexity in half. If they have the courage, they will try it out. It will (sometimes) work. If it works, it will be put into production. And if it is put into production, it makes the whole system a lot less complex.
If the first three values are missing, courage won't save the day for you (it might, but more likely it won't). Courage by itself is just plain hacking, but when combined with the other three values, courage becomes extremely valuable.
Communication supports courage because it opens up the possibility of experimentation. Simplicity supports courage because it is easier to be courageous with a simple system than a complex system. Courage supports simplicity because when you see an opportunity to simplify, you go ahead and try it out. Feedback supports courage because you feel safer when after drastic alterations the tests come green (otherwise, you can throw away the changed code).
ll this talk of the four values is great, but if we don't practice it, if we don't make it a natural habit, then all we have is some methodological good intentions that are not even worth the pixels they are displayed on.
At IFW Creations, we have committed to make India Computer Literate specially businessmen, who hold the nerves of Indian Progress. Keeping in mind IFW Creations has introduced the concept of Personal Computer Training which will help businessmen who can't go to a computer institute to bring computer institute at their workplace.
