Skip to main content

XP is to Development Process what GOF is to Software Design

The problem I see with most objections to Extreme Programing (XP) and Agile development is that they are often speculations on theory, rather than wisdom based on actual practice. It's amazing to see the amount of time and energy people spend in *discussing* process than actually building something and learning from the experience.

The following is my real-world take on this subject, directed at no one in particular, but at everyone in general who is critical or afraid of XP (often the same people who don't have meaningful experience of using it):

XP is a process that has *evolved* through the collective experience of programmers through the mess that the software industry had become- always late, always over-budget, always buggy. And we were told to accept it as a fact of life.

In the midst of all the chaos, there were programmers working after hours doing what they weren't allowed to do during the day - writing tests for code (TDD), automating builds and tests (continuous build & integration), fixing things they were not supposed to fix (refactoring), working with their like-minded colleagues (pair-programming) on weekends to ensure they got a lot done without the "inevitable bugs" which would have brought down the fury of the management upon them, ... and so on.

XP and Agile brought us all out of the closets.

That's why only experienced people with open-minds find it easiest to adopt XP. Or fresh out of college students or young programmers who have not yet been corrupted by the "you're too good to write tests- you'll only do coding" crap they often get fed.

To me, questioning XP without learning XP is like questioning the Gang-of-four Design Patterns before you have any serious programming background solving the problems solved by the GOF patterns.

Design patterns *evolved* after years of people doing things the wrong way, before they learned the right way. Design patterns teach us how to write good code by learning from the mistakes made by smart, experienced programmers before us and the lessons they learned.

*** Design Pattens are Best-practices for programming, solving most typical programming problems.

*** XP/Agile are Best-practices for product/project development process, solving most of the typical process problems:
  • requirements gathering, 
  • estimating and scheduling work, 
  • measuring progress, 
  • managing change, 
  • getting feedback early & often, 
  • continuous knowledge transfer & peer-review, 

... the list is long.

Comments

Popular posts from this blog

Splitting User Stories vs. Rally's "split" feature (that has nothing to do with it!)

Agile tool Rally has a "split" feature it recommends to handle "unfinished work" in a Scrum Sprint:

Manage Unfinished Work - Split user stories (new link)

Below are my observations on the "Split" feature in Rally (followed by a few excellent articles on Splitting User Stories):
This "split" feature in Rally has numerous problems: 1. Nothing to do with Splitting User Stories It has nothing to do with "Splitting a User Story" which is an advanced but fairly well-understood field in Agile, and a tool for Product Managers to use in one of the two scenarios: The Product Manager does it before an Iteration commences (i.e. during backlog creation or release planning) to create User Stories by business value that are right-sized, i.e. they can be comfortably implemented inside an iteration; The Product Manager does it in Iteration Planning or in the middle of an Iteration to reduce scope by removing/simplifying acceptance criteria, in response to t…

Agile Entrepreneurs Manifesto

The Agile Manifesto defines the 4 core Values that define "Agile":  "Individuals and interactions", "Working software", "Customer collaboration", and "Responding to change" As I applied Agile requirements (user stories), engineering (XP), and process & project management (Scrum & Kanban) to my startups (RideStation, and Agile Entrepreneurs) starting from 2005 to now in 2018, I learned numerous lessons and shared them with my fellow entrepreneurs for the next dozen years.
These lessons I have incorporated by "extending" the Agile Manifesto with two additional values pertaining to Product (5th) and Startup/Business (6th) - that the services consultants who wrote it in 2001 probably didn't have to contend with as most (all?) of them were not founders of product startups: 
"User Validation, Customer Traction, and Business Milestones"
Agile Entrepreneurs Manifesto User & Customer ACTIVITIES over Product Feature…

Your Conscience is Your Compiler!

Your Conscience is Your Compiler! The following is the exact transcript of an IM chat about "Conscience" I had with a friend:

Friend: I follow my instincts.

Me: Animals follow instincts - humans follow their conscience. It's the only God I know. Your conscience always tells you what's right or wrong.

Friend: No murali, I disagree. How do you define what's right?

Me: Your conscience tells you- always. If you do something you believe is wrong, you'll feel guilty. If you don't believe it's wrong, you won't feel guilty

Friend: Yeah, but why do you do things?

Me: Because we are human.

Friend: No, it's because we want to survive.

Me: It takes a lot of character to always obey your conscience, a lot of strength.We survive either way. But if you and your conscience are on good terms, you have unshakeable self-belief.

Friend: Yeah

Me: And you'll care about little things like pride, self-respect, principles, character, reputation...because they are…