Thursday, June 25, 2009

Stuff I Have Found Interesting Today

The iPhone Software Revolution

When Codinghorror first tweeted that he thought the iPhone was more important than the Mac to Apple, I quickly dismissed him as a fad follower. I have come to realize that he is definitely correct and this post lays it out very well.


Elements Of Project Leadership

Short and to the point. Communication and understanding goals and means get you far.


Is Every Moment Paired & TDD-ed?

A great post on why you should always use your judgment and not follow some "rule" without ever really understanding the goal.


Seeking: Checklist for a Sense of Urgency

Good quotes and a list for transformation:

  1. Establish a sense of urgency
  2. Form a powerful guiding coalition
  3. Create a vision
  4. Communicate the vision
  5. Empower others to act on the vision
  6. Plan for and create short-term wins
  7. Consolidate improvements and sustain
  8. Institutionalize the new approaches

Wednesday, June 24, 2009

Stuff I Have Found Interesting Today

Be The Change You Wish To See

Repeating good advice never gets old.


Requests to the Right Ear Are More Successful Than to the Left

Not very scientific, but it sounds pausible.


50% Time

I think to be great you must want it bad enough to dedicate this much free time to it.


The Funny Thing About Waste

A fairly long article about waste and how it is all perception. It ends with one of my favorite quotes "The greatest trick the devil ever pulled was convincing the world he didn't exist." that I can now atttribute to the author, the French poet Baudelaire, as opposed to the movie, The Usual Suspects, I remember it was used in.


QTB: Agile Adoption - How to stuff it up

Good notes on a talk by Martin Fowler on Agile adoption.


Control Charts

A new thread that starts with a good question, but then lays down the gauntlet with "...it may be time to drive a stake through the heart of Control Charts and Common Versus Special Cause of Variance in software." which brings thoughtful response 4173. This response has three links:


  • Control / Capability Charts on a Kanban Software Development Project - shows how he uses control charts in his team: I don't buy it, but if it works use it
  • An Introduction to Systems Thinking - which states "It is central to a systems approach that capability measures are used to measure performance...A key aspect of capability measurement is statistical process control (SPC)." This is straight Deming, but I don't think Deming would use them for software as you wind up measuring apples versus oranges.
  • Freedom from command and control - basically says targets are a bad idea, but capability metrics will set you free. I think measurement is a tool that is useful to know, but using it as a management tool is wrought with so many perils as to be not useful


I think control charts are a useful tool when faced with a process in which you can measure similar widgets. I don't see them as a useful tool in measuring or helping the overall software process as one chunk-o-work isn't really like another chunk-o-work. I have heard attempts to regulate the sizes, but then you are twisting the process to fit some preconceived goal (e.g. we must use SPC). You need a process, but it should be based on your goals, not your tools.

Tuesday, June 23, 2009

Stuff I Have Found Interesting Today

Gotta love an election in which "...the number of votes exceeded the number of voters"


Where Everyone's a Pig – The Value of Cross-functional Collaboration in Successful Agile Transition

An article from David Anderson that underscores the importance of inclusion in having a productive culture.


Your brain is built to deal with stress that lasts about 30 seconds

Fascinating that stress can cause so much long term pain. Even more fascinating is this gem: "The emotional stability of the home is the single greatest predictor of academic success. If you want your kid to get into Harvard, go home and love your spouse."


The Nimitz Goes To Home Depot

Gotta love the use of low tech for a complex situations.


The Sticky Matter of Ethics

A very good point. Perks are just kickbacks in disguise.


Agile Kanban Journal: Kaizens on Day 1

A personal kanban board with pictures.


The Thinking Tool called Agile

I love his first three slides!

Monday, June 22, 2009

Stuff I Have Found Interesting Today

A Toxic Paradox

Rands on culture and toxicity.


The Open/Closed/Open Principle

Interesting idea from Kent Beck: ordinary and revolutionary design. I have experienced this, but did not see it.


Inconvenient Accessibility Makes Self-Documenting Code

I'm not sure when I would use it, but I like the concept.


Christopher Alexander on the perfection of imperfection

I never did read Alexander's all the way. It looks like I missed some gems.


A new landmark in computer vision

Those smart guys at Google are at again. Pretty cool stuff.


INVESTing in User Stories

I'm a sucker for a good acronym


Saturday, June 20, 2009

Stuff I Have Found Interesting Today

Good advice; when faced with a new situation don't act too fast instead Observe, Interpret, then Intervene.


A Kanban Is Just A Signal To Do Work

A good post on kanban by describing it with a series of pictures and examples. I think this is the best description I have read as it tries to not blur what it is. Kanban is a tool, nothing more, nothing less.


An article talking about a particular project and how Scrum didn't seem to fit the bill. I agree with the stated limitations of Scrum (based on a reading of Lean SW by Mark & Tom):
  • Why do we have two-week sprints? Isn't that an artificial and therefore wasteful limit that batches up work?
  • Why do we have seven people on the team? Can we have fewer (or more) team members?
  • Why do we demo at the end of a sprint and not when the story is complete? Doesn't this sound like batching work?
  • Why do we estimate story points in an estimation session when some of those stories may not played because of reprioritization?
  • Shouldn't estimates be done ONLY by those working on a story? Having people that will not work on the story estimate seems like a handoff situation.
  • Why do we work on several stories during a sprint? Can we work on just one and reduce inventories of work?

The second page goes into how they implemented kanban. This was less interesting to me as it seemed mostly arbitrary and didn't really question/analyze why they did what they did. Stories and examples are good though as they help others with similar problems.

Responses to Ron's Latgest Kate Oneil Story
This response from DJ Anderson is well thought out and makes sense. Of course, Ron responds. I think both have valid points. I would say it depends on the situation and stories are just that...stories that try to teach. Ron does that extremely well.

It is hard to argue with his logic. I would like to hear where he is wrong.

I am biased as Chrome is my favorite browser, but I think their approach is cool.

Post Agile

I cut my teeth as a software professional in the 90's as my division went from CMM level 1 to 3. I was a BDUF guy and would brow beat anyone who disagreed. Needless to say, I was unbearable in my youth! I eventually grew up (to some degree) and learned that I didn't know everything and began to question the BDUF mentality. I read Beck's Extreme Programming Explained in 2000 and stumbled on to Agile Manifesto in 2001. I wasn't convinced at first but the ideas bounced around for a while an by 2002 I was convinced.

I preached Agile to anyone that would listen. I wrote about it, taught it, practiced it and even lived it. I guess you could say I was an Agile disciple. My career has taken me places where agile was used in ways that I would call non-agile and in ways that seemed agile but didn't work well. I began to think that maybe agile wasn't the best way to work. Don't misunderstand me, it beat BDUF hands down, but there where things that I wasn't convinced of:
  • Why do we need a definite sprint/cycle time?
  • Why does the customer need to split his ideas to fit the developers way of working?
  • Why spend time on micro-estimates?
I had read a lot of Lean books back in my agile craze (2002-2005) but never could find a practical approach. I had even had dinner with the Poppendieck's and questioned how they made the leap from the Lean principles (value, flow, pull, perfection) to their lean software principles in their book. They were convincing, but I was skeptical (a common theme).

In my current career I get to wear many hats. I support live systems as well as writing new software. It took a while for me to find a process that worked. I couldn't do my one week iteration as I couldn't commit to a single day due to the multi-hat issue. My customers were not very available and features were chunky. I did have a co-worker so I could pair and TDD so I went for it. We did one hour blocks, scheduled each morning based on our work load (he had his hats to juggle as well). We still used estimation, but I found that to be a waste of time as we never used the data. We used feature slices (take a feature and define a chunk of work that was visible and could be done in less than an hour, no internal only chunks. I have examples buried in this post http://mwpolen.blogspot.com/2007_04_01_archive.html) The results were good. We met dates even though some weeks had us meeting only five times. Our quality was good and the customers were happy.

Lately I have been reading a lot on kanban (9 stuffs to date) and like the way they focus on pull. When I find myself in an area where it is not clear what is right I tend to go to the root principles. Hmmm what are good root software principles? I'm not sure I have any, so I will use Lean's as documented in Lean Thinking (value, flow, pull perfection). Value and is easy to me as agile got the community focused on that years ago. Pull seems easy as well as I always pull the highest priority item and I think the agile community has done a good job here as well.

Flow...that's tricky. Software doesn't have pieces that come together in a manufacturing sense. I think software is design so I will use flow to mean the flow of the design as documented in code. I am thinking of a flow of a river and how I don't want trees caught on any rocks in my river (which is a metaphor for my design). I like that idea...probably been used before but my google skills can't find it. Then flow is a clear design (clear river path) which is represented by clean code.

All that leaves is perfection which I like to state as continuous improvement. This one is interesting to me. The thing I have always done through my career is try to improve. Even in my BDUF days I was always looking for ways to make a better design. Agile talked about this and tended to box this inside a practice commonly called a retrospective. I was a big fan, but I have found that retrospectives are hard to do correctly. I think the reason is that is you box the principle then it's easy to push the box around. I think continuous improvement has to be a focus every day, every hour. There is no time that is a bad time for improvement.

I think I have a better understanding of where I am philosophically. I'm not sure agile as a term works for me anymore. It did a great job pushing the software off of the waterfall tower. I will always think good thoughts about the movement and I think all software developers owe a great deal to those authors who banded together and pushed and pushed. Now it's a snowball picking up things they never intended, but that's the law of unintended consequences. I think lean and kanban can push us towards a being better and I hope they do as I still see lots of software that doesn't do the job it should. We have come a long way, but there is so much more to do. I guess that's what draws me to software development. No matter how good you are there is always room for improvement.

Friday, June 19, 2009

Stuff I Have Found Interesting Today

Kate Oneal: Funding Susan’s Project

Good story by one of my favorite software authors.


No, 37Signals, Planning Is NOT What You Think

This post defends planning from an attack from a small shop. I agree completely. My view can easily be summed up with a quote:

Plans are nothing; planning is everything.-- Dwight D. Eisenhower


Hollow American Economy Update

Interesting that this guy has met with a state governor and that there are folks who see that you can only sell a ponzi scheme for so long before it explodes.


One Curse a Day Keeps the Burnout Away

I'm not sure cursing is the best solution, but the article is a good read on system dynamics and criticality.