Wednesday, May 12, 2010
A while back, I wrote 3 Legs to Standing Up an Agile Project from the perspective of an Agile team just getting started. Lately, I’ve been thinking about the same sort of thing, but from the perspective of a coach or an executive that wants to transform the organization. At first glance, this seems no different. Further reflection, however, reveals that this is less about “how to work in an Agile fashion” and more about “how to introduce change in the way people work.” The earlier post was a description what an Agile project needs. This one is a recipe for creating what an Agile project needs. (Continued)
Friday, February 26, 2010
Yesterday was a day of mistakes. Not so much making mistakes, but talking about them. It started with Bret Pettichord’s tweet
Agile requires the courage to make mistakes in front of others and the maturity to admit them when they happen.
(Continued)
Sunday, February 14, 2010
Much of the time, the test-driven development yahoogroup is pretty quiet, but it has recently awakened from winter hibernation. The question “Is it OK to add code to a class only to improve its testability?” stirred up a wide-ranging discussion that brought in the topic of what constitutes good design. “Uncle Bob” Martin drew a bold line in the sand with his comment,
One reasonable definition of good design is testability. It is hard to imagine a software system that is both testable and poorly designed. It is also hard to imagine a software system that is well designed but also untestable.
I greatly sympathize with this statement, though I wouldn’t go quite that far. I don’t think it is so hard to imagine code that is testable, but poorly designed. For a trivial counter-case, there could be rampant duplication of testable code. I would call that poorly designed, but it doesn’t affect it’s testability. Therefore I would soften Uncle Bob’s definition to “One reasonable component of the definition of good design is testability.”
To me, the notion of “testable code” is the same thing that “testable circuit” was back when I worked on a custom integrated circuit. Mostly, that depends on the ability to put the circuit or code into a known state, exercise it, and see the interactions with its collaborators and its resulting state. (Continued)
Sunday, December 27, 2009
The world is slowly recovering from a major financial meltdown. People blame the collapse on a number of different things: a bubble of inflated housing prices, relaxed requirements for qualifying for a mortgage, predatory lending practices, greed on the part of mortgage companies and investment banks…. There are certainly many places to point fingers. Each of these places, however, was doing what seemed logical when looking at a small piece of the puzzle.
As is often the case, we must back up and take a larger systemic view to see further. Once upon a time, people borrowed money to buy a house, paid it back over time, and ultimately the bank was able to lend that money to someone else. With the creation of the FNMA (Fannie Mae) in 1938, the income streams of those mortgages being repaid were converted to bonds, so that they could be sold to other investors and the banks to re-lend their money more frequently. This allowed many more people to afford houses. In the 1970s, private banks got into the business of creating their own bonds based on debt repayment streams.
Nothing ever stands still, of course. People continued to look for new wrinkles on these themes to allow them to expand the business, or to increase the profit on the business they had. Some of these investment vehicles got very complicated, intended only for professional bankers who could understand and evaluate them where the mass public could not. Or, so went the pitch at the time. (Continued)
Monday, December 8, 2008
I recently wrote about Agile Usability. Now I find an article on StickyMinds, “Getting Agile With User-Centered Design,” by Jon Dickinson and Darius Kumana. They talk about a number of issues that can come up. My favorite bit is this:
We must actively challenge the mindset of divided responsibility–” You spec and design it; we’ll build what you spec.” Everyone should work toward the shared vision of a successful experience.
That says so elegantly what I tried to say in my article.
Saturday, November 29, 2008
As I slowly work through my notebook from the Amplifying Your Effectiveness Conference (having blogged about sessions on Unearthing the Data You Need, Remembering Your Resources When Stressed, and Congruent Coaching), I come to Jerry Weinberg’s session of Tuesday afternoon, Moving Projects Forward: The Clinic Method.
As long as projects are staffed and led by people, we can be sure that they will sometimes get stuck, or headed in the wrong direction, or something. This is true no matter what sort of methodology you follow. Even if the methodology is perfect, the people following it are not. They will make mistakes. They will have blind spots, and not see what it is that they’re not seeing. Projects will still get in trouble. (Yes, even Agile projects.)
So, what do you do about this certainty? (Continued)
Friday, November 28, 2008
If I had time, I would re-read Tom DeMarco’s book Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency, because I have precious little slack in my own life, these days. So it is that I just now got around to reading Jakob Nielsen’s article, Agile Development Projects and Usability, which William Pietri noted on the Agile Usability list on November 17.
The statement
“For a project to take interaction design and usability seriously, it must assign them ‘story points’ (i.e., resources) on an equal footing with the coding”
jumped out at me. Alistair Cockburn wrote a thoughtful reply where he noted the same statement. I agree with Alistair’s comments, but I’d like to comment on this statement from a slightly different perspective. (Continued)
Wednesday, October 22, 2008
I just noticed that Bob Payne has posted an interview with Esther Derby on the Agile Toolkit Podcast. This interview took place at the end of the Agile 2008 Conference and covered a number of topics. The topic that I found most interesting and timely was that of retrospectives, and ways to make them actually accomplish something instead of just talking about the same things repeatedly. (Continued)
Tuesday, March 11, 2008
David Maister asks, in a business turndown, do you respond with cost-cutting measures, such as layoffs of junior personnel, or do you reduce the profitability at the top, redirecting the efforts of your top people to long-term growth while the junior people attend to the reduced amount of immediate work? As he says,
As always, I have to stress that this is not a moral issue but one of pragmatics.
As I read through the comments on this post, I came across one that noted this was a case of
The classic fight between short-term “success” and long-term prosperity.
Suddenly I was struck by the parallels between this dilemma faced by business owners and those faced by software developers. (Continued)
Thursday, February 28, 2008
It is good when we learn from our experiences–much better than when we don’t learn from them. I recently wrote about learning, or failing to learn, from observing others. A recent discussion on the scrumdevelopment yahoogroup got me thinking about another way to learn from experiences, and that’s learning from the experiences of others.
The discussion I mean started in the middle of another thread, when Clay Dreslough asked about Pair Programming.
But I have never had any success with actual Pair Programming.
So … am I missing a key component of XP? Or have other people found the same reticence with adopting Pair Programming?
Are there some valuable gains here that I’m missing? And if so, how would you recommend getting programmers to change their habits? (Continued)