The “thing” called Agile

The “Manifesto for Agile Software Development” catalogs very practical suggestions on how to engineer a software in an effective way. These are like fundamental truths, and I believe these could be extended even beyond software engineering, so much that they could be called Management Principles for Effective Teamwork. In the title of the manifesto, “Agile” is an adjective. It wasn’t called “The Agile Manifesto” or “The Agile Methodologies” where “Agile” becomes a noun. When something becomes a noun, it becomes a commodity — something that could be bought and sold. Rather, it could have been aptly called “The Agility Manifesto” for a terse colloquial version.

“Agile is not what you do. Agility is how you do things.” — Dave Thomas

Continue reading “The “thing” called Agile”

Problem Decomposition deserves more attention!

If there is one idea in Computer Science and Software Engineering that underlies every other idea, then what is it? (It’s not Algorithms!)

“All problems in computer science can be solved by another level of indirection.” — David Wheeler

If indirection implies how a problem can be solved, then decomposition implies how a solution was reached. Problem Decomposition is about understanding the solution to a problem. It is the inverse of indirection.

Problem Decomposition is breaking a big, complex problem into smaller parts that could be solved relatively independently.

Continue reading “Problem Decomposition deserves more attention!”