Thursday, January 31, 2008

Indian Creativity

When did creativity die out in India? Was it with the invasion of the Mughals and the subjugation and repression of Hindoostani culture and population? But, suffice to say it ebbed out by the time Lord Macaulay imposed British education on an unsuspecting Indian populace, in a bid to turn Indians into clones of themselves, albeit ‘Brown Sahibs’ who blindly believed all good things followed from the West. Macaulay's Children, people born of Indian ancestry adopted Western culture as a lifestyle , displaying attitudes influenced by colonisers. Victims of civilisational faults, one can say India’s ensuing intellectual insolvency, therefore, is civilisational.

Wherever the blame lies, the damage was done and the creative flowering of India’s Golden Age ‘Gone with the Wind’, as Indians excelled in imitating their colonial masters. However, now that the Great West is tottering, faced with a talent and skills crunch, India begins to find itself once again. Creative innovation picks up, as seen from the rising number of patents being registered by Indian IT and other sub-continental entrepreneurs. While, the western style education imparted in classrooms ensures children learn by rote and are prevented from questioning what is taught. This method that prevents children from thinking for themselves and stunts creative thought, has not been successful in stubbing out Indian creativeness and innovation. Indians, despite everything continue to innovate and find viable solutions to every problem they face in life. Creativity may have taken a back bench in India, yet the Western talent crunch has once again brought it to the fore.

From Call Centre hub to Research & Development hub, Indian creative innovativeness blossoms once again, as the Indian regains confidence in himself and his culture. His services much in demand world wide, he is no longer willing to be clone of the West. He has begun to express his identity, refusing to change his name from Ankit to Andy, likewise talk with an American twang. If, David on the other end does not understand what he is saying, tough, he’ll jolly well have to learn how the Indians talk, if we are to continue to do business.

Today India stands tall, despite, a history of invasions and conquests, holding fast to its myriad diversities, once upon a time the richest country in the world turned into Third World, has turned the tables on British imposed poverty by constantly innovating to overcome shortages in life. It may have briefly lost some of its creativity; however, it continues to innovate in most every field.

Today, it is that IT geek standing out from the crowd, that independent woman walking the beat of her own drummer, that lone wolf no part of the wolf pack, the Indian who shies away from being a routine part of society, who typifies the India who has come out of the shadow of the West.

One does not have to be an Einstein to know that uniformity and regularity so beloved of the West, ring the death knell for creative innovativeness. Perhaps, that is why the West is experiencing a shortage of talent, a burn out. While, India’s unity in diversity always a fertile ground, is responsible today for India’s current success from being the back office of the world to it’s Research & Development hub, whether, in the field of IT or pharmacy!

As India begins to be itself, as pale imitations of the West fade away, as Indian tradition, ancient knowledge and lore once again find pride of place, Indian creativeness begins to flower! And, once we have done away with all things western detrimental to our people and our culture, it will be second coming of India’s Golden Age!

Briefly Agile

Agile can be defined as a conceptual customer driven framework generally centred on iterative and incremental delivery of working software. The iterative part means repeating or iterating, a complete lifecycle of development over a short, fixed span of time. And with each iteration, some working sub-set or increment of features is delivered to the client.

Agile Methods
Several agile methods, such as, extreme programming (XP), lean software development, Crystal, DSDM (Dynamic Systems Development Method), Scrum, and feature-driven development (FDD) are some of the well-known ones holding similar values and principles, with each method emphasising the following:


Lean - close customer relationship, shorter cycles, waste elimination, late decisions, team empowerment and building in integrity.


DSDM empowers team decisions, emphasizes frequent product delivery, integrates testing throughout, promotes collaboration and cooperation between all stakeholders.


FDD centres development around the feature, creates a domain model with domain experts.

Crystal emphasizes people, gathers techniques from other methods, improves communications, adapts the process itself (shrink or grow to fit).

Scrum manages a prioritized list of requirements on a product backlog, collaborates through daily meetings, exhibits the product upon iteration completion, uses retrospectives to correct the process.

XP emphasize communication values, simplicity, feedback, and courage; uses specific technical and collaborative practices, including TDD, re-factoring, pair programming, continuous integration, open workspace, and automated acceptance tests.

Highlighting the human aspect in software development, Agile arose out of frustration with ‘heavyweight’ methods and phased approaches.

Work on an Agile project involves working in a team that emphasizes cutting to the chase, with little or no time spent on large detailed design or requirement documents, as working software must be delivered every week / two weeks. Rather, contributing to designing automated tests; or brainstorming ideas for new features is likely more on the cards.

· The outset of an agile project is usually short, as no one spends weeks or months to gather and refine
requirements before working on a detailed design.
· Once the project has begun, all work takes place in iterations of fixed length - most typically one or two weeks
each.
· Each iteration begins with a plan, wherein the customer decides the most important features the team is to
build. The meeting finishes when the team commits to a set of features that can be delivered by iteration end.
· The next important aspect of an agile method is the deliverance of working software at the completion of each
iteration. Each iteration aims at updating production software, meaning it has to be fully integrated and tested
before an iteration is completed.
· Teams get together frequently to discuss who’s doing what and what issues exist. Agile practitioners work best
in a bullpen, in earshot of fellow developers, even pairing for software development, in order to improve the quality of design and code.
· Throughout an iteration, completed business functionality is required to be delivered, after effectively determining
whether you're done or not by, using defined automated acceptance tests. Or, a test can be designed and developed for successful execution by working in concert with a QA or testing team.
· To conclude, at the end of each iteration, it is essential that a demonstration be held of newly-completed
features to interested parties and stakeholders.

Agile software development is great for many situations, isn't always appropriate for every team within a company. Not a surefire guarantee for success, it requires an appropriate attitude, an eye for spotting deficiencies in the process, and a willingness to correct the process itself with every iteration.

Sunday, January 27, 2008

Agile State of Mind

These days everyone seems to be blogging and writing up a storm about Agile methodology in software development. While that maybe, have you ever thought of applying the Agile principles of embracing change, rapidly adapting and learning from it, leaving all communication doors open, being accountable and collaborating closely as a life philosophy to live by? Do your find that unnerving? You shouldn’t, as you will find Agile in life is as applicable as in software development, since ‘Agile’ is not a discipline, but a life philosophy. It is nothing but a set of principles and values, a broad approach and like all things in life, as this broad philosophy exists, ... rapid adaptation to changes, learning, open communication, accountability, and close collaboration.

But, responding to change requires a major mental shift for many people that is difficult and takes time and environmental support. People are often penalized socially or formally for being flexible or adaptable, as the rigid traditionalists seem to think this translates to being wishy-washy, uncertain, indecisive, uncommitted or even rebellious, as confirmed by the various blogs and comments reviling Agile. However, dip your toes in it and find that as a philosophy, Agile adapts itself pretty well to living life by it. After all, Agile philosophy emphasizing a set of values, principles and practices rather than a prescriptive process can be applied outside of software... in business management, family and household, or... in agile classroom management.

For example, the easiest way to get a child to eat healthy is to do it one bite at a time. Of course, there’s no question that you will have to start with the best and the tastiest bits first. However, this makes your goal of getting him to finish a healthy meal more manageable. In other words, when faced with a life issue, as in Agile software development i.e. iteration by small iteration, will help solve any problem, allowing you to assess the situation and then proceed to the next step, and so on until you ultimately achieve your goal. However, the big picture must be kept in mind when starting out on your goal achievement mission.

Basically, Agile methods are much like a 12-year old, high on IQ, low on patience, with enough time on his hands to sit in front of the TV, frantically pushing every button of his Nintendo until he figures out how to do it, all without once bothering to touch the manual. It’s all about trying something else until you get the desired effect and then moving on to the next thing.

Using Agile methods in the classroom is easy. Simply start out by:
1. Carefully studying the syllabus.
2. Next set your teaching goals.
3. Then, assign a goal to be achieved within each sprint or iteration i.e. the students are to be taught should understand what has been taught.
4. After one sprint or iteration is complete, assign them a test to assess whether you have succeeded in achieving your goal.
5. If, a majority of students have not passed the test, it means it’s time for you to assess your teaching methods, selecting the successful ones and junking those that failed to catch the students attention.
6. As well, evaluate the areas in which the students failed to get through and put together the subjects, with the more interesting one’s first, trailed by the least interesting lessons.
7. Now, you start afresh with a new sprint or iteration.

Congratulations! At the end, you will find that your students have learnt and been able to retain what you have taught, which means you have met your goal of teaching your class well enough to pass a difficult evaluation exam!