Tuesday, June 30, 2009

Stuff I Have Found Interesting Today

Immovable Object versus Unstoppable Force: Capex and the Marginal Cost of Production

Kent Beck on economics and other things. Most interestingly is that he is selling a 2 hour pair programming session on eBay! Started at$50 yesterday and after 12 hours has gone up above $200. I wonder what the final price will be?

This is just plain weird: "Some say that a major cause of the U.S. housing bubble was a surge in savings overseas, particularly in China, where the personal savings rate soared to 30 percent of disposable income...China’s “one child” policy, which created a huge surplus of men in the country, has driven up the cost of getting married...could account for as much as half of the increase in the country’s household savings since 1990."


These two columns cover the same supreme court decision, but look at it COMPLETELY differently. The second is from George Will and makes sense to me. The first makes some statements which make me tilt my head: "The two decisions are mirror images in terms of their consequences, one harming minorities and one harming whites." I don't see how one can make such a statement. I do know that the law is in for a rough road as we recover from decades of racism.

A good case that covers the reasons for the current structure as well as an appeal for change. I think it will happen as money will force it. Lean won manafacturring and it will win in IT as well.


The Toyota Half-Way

Points out that without respect for people there is no way you're getting any benefit.

Good post with an interesting question at the end "Is what I wrote above the case? And if so, how should that impact the way we test software?"


How maths killed Lehman Brothers

As I like to say "Do the math!"

The author makes a good point. I happen to think one-size fits all is a bad idea with technology.

Takes the popular MVC pattern and shows you their approach.


Details on the CLI that make sense.


The 12 page document is the first link on the page. It is a good summary of the changes in C# 4.0 with examples. The changes can be summarized thusly: Dynamic lookup, Named and optional parameters, COM specific interop features, and Variance.

Monday, June 29, 2009

Stuff I Have Found Interesting Today

This is neat!


Fighting Fabricated Complexity

I like the term fabricated complexity and I believe it is a major component in most systems.The post has some good points but it does go quite deep on metrics so beware.


Real World Refactoring

Some decent code that the author refactors and makes even better.


Saturday, June 27, 2009

Stuff I Have Found Interesting Today

One day in Kanban land

A great way to describe a Kanban software process. I'm not sure why there is a person who only does deploy, but it's still a good story.


Video of a talk by Kent Beck (>71 min). I particularly liked this gem "Design = Beneficially Relating Elements". He analyzed data from Gump and found that there is a power law distribution for length of builds and time of runs for failing tests. He says this distribution is it lots of places (e.g. number of incoming calls into an object and size of methods). He thinks it's interesting, but doesn't know what it means other than some of our metrics wisdom must be rethought. I agree.


Starts off with his most negative people series Greg the secretive, Jon the incompetent, Gary the not invented here, and Roger the refactorer. This is followed by good advice summarized here (the details are worth reading):

1. It pays to share everything you know.
2. Give people credit, even if they don't deserve it.
3. Don't play any blame games.
4. When the code is good enough, stop working on it.
5. Work hard.
6. Lighten up.
7. Take time for yourself and your family.
8. Keep studying.
9. Keep regular hours.
10. Don't fool with fools who'll turn away.


Top 10 Productivity Basics Explained [Lifehacker Top 10]

Good ideas to try.

Friday, June 26, 2009

Stuff I Have Found Interesting Today

What is Woot?

This is perhaps the most enjoyable FAQ I have ever read. Read it and it will bring you joy!


Google Voice: Cloud Meets Cell

This guy sees big things coming from Google in the mobile landscape.


The 20 Most Practical and Creative Uses of jQuery

Some fascinating ways to make web sites do cool things.

I never knew that the Sumerians used a "...sexagesimal (base 60) number system" by using the parts of the fingers (minus the thumb) to count to 12 on one hand. Sometimes, history is more fascinating than fiction.


The Climate Change Climate Change

I chose not to find time to fully explore climate change, but I do know we humans tend to be a bad predictor and manager of nature.

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.

Thursday, June 18, 2009

Stuff I Have Found Interesting Today

The Amazing Adventures of Kanban

A fun way to tell the history of Kanban.


The Interview Question You Should Always Ask

I never thought about it this way, but this guy has a good point.

Shifting The Burden And Fixes That Backfire – Archetypes Part 1

A good post on to archetypal system issues

  • Shifting The Burden
  • Fixes That Backfire


Freakonomics co-author with a funny story with a point.

A good general overview of what Kanban can mean to an Agile team's process.

I have been thinking lately that estimation is a waste of time. This post has a quote from Peopleware "... the highest average productivity, with a score of 12.0, was on those projects that didn’t estimate at all." I also liked Estimation Considered Harmful.


Wednesday, June 17, 2009

Stuff I Have Found Interesting Today

Review of Ulysses by James Joyce

This is the funniest book review I have ever read. A colleague found it because NPR did a story this morning on Bloomsday. I tried to start the book but lost the desire quickly. After reading this review I am not sure I will ever try again.


Reforming Project Management

Review of what looks like an interesting book: RETHINK: A Business Manifesto for Cutting Costs and Boosting Innovation based on an article in HBR that the reviewer nicely sums up with:

  1. Describe your operations in terms of desired outcomes (the whats)
  2. Identify the activities supporting the desired outcomes
  3. Identify the capabilities supporting each of your activities
  4. Identify activities most critical to your company's success
  5. Design a more efficient operating model


RE: Definition of Lean

I love the quote "Kanban is a scheduling tool – kanban by itself is hardly sufficient to qualify a work system as lean. That lesson was learned in manufacturing long ago – I hope we don’t have to re-discover this in software development!" BTW the blank image is corrected here: Toyota Way 2001 (post 4172).


Nice Examples of Cumulative Flow

I'm not in love with Cumulative flow charts, but the examples are interesting.


30 HTML Best Practices for Beginners

Fun and informative although not without opinions.


Funny on many levels.

Tuesday, June 16, 2009

Stuff I Have Found Interesting Today

The In-N-Out of Value

Great post on how customer value is intangible, but not invisible. Outsourcing looks like it works until you lose all your customers.


Systems Thinking: A Technique To Find Project Problems

A good overview of systems thinking.


Reminder: Know what you're measuring

A good story with a good point...measurement can lead you down a rat hole real easy.


Url Shorteners: Destroying the Web Since 2002

A rare rant by Codinghorror, but at least he provides a solution.


Transactions are bad for REST

A good argument that I have no opinion on, therefore he is right by default.


Letters to Joel Spolsky

Entertaining if you know of Joel Spolsky.


Making it easier

Fun rant with a minor point at the end.

http://unite.opera.com/

As predicted by Kas Thomas, Opera 10 has an embedded web server. Some cool features are "Fridge...place for people to leave notes on your computer. Share your personal photos with friends around the world without the need to upload them. Access your complete home music library from wherever you are."


Exceptions in Constructors: How Reflection Helped Workaround an Oracle Bug

An interesting article about an obscure .NET topic.


Monday, June 15, 2009

Stuff I Have Found Interesting Today

Krugman vs. Ferguson: Letting the Data Speak

An interesting look at long term interest rates and how it isn't clear what the future holds, but thinking is still needed.


How TDD and Pairing Increase Production

A great post on the different between external and internal quality and how internal quality dictates your speed and how TDD & Pairing are the best ways to keep internal quality high and thus productivity high. It is also funny and in your face!


Saturday, June 13, 2009

Stuff I Have Found Interesting Today

More Judicial Activism, Please

Will reminding us that there are supposed to be a separation of powers for balance. Over my lifetime the executive branch keeps pushing and getting away with more every president. I do not think this is a good thing.


My Named Cloud Is Better Than Your Named Cloud

Ron speaking his mind and doing a good job of speaking mine as well.


Here's what Opera is about to unveil

I wonder if Kas is right and if he is what is will mean in practice. I have always thought a peer-to-peer network was more powerful than a server/client one, but I have lots of thoughts that end up being a dead end.


And Get Rid Of Those Pesky Programmers

A fun post on why programmers often clash with business and what can be done.


What Pair-Programing is Not

A good post on pair programming.

Friday, June 12, 2009

Stuff I Have Found Interesting Today

Planning Fallacy

I agree completely. I prefer the wide-band delphi for estimating projects. I like buffer (via CCPM or if you prefer a book Agile Estimating and Planning by Mike Cohn) plus extrapolation for managing timelines during a project.

An interesting blog about taking things too seriously...I agree completely, but you should never use regions! :-)


AML (Arbitrary Modeling Language)

I to have been a UML user and advocate, but now use AML. My AML looks a lot like UML, but I don't worry about the syntax as much as the communciation.


Frog & Bike Thinkers

An simply way of breaking down the type of thinking you need to solve problems. There is no "one way" that always works.


Pushing vs. Pulling

A good article on communication pattern pros and cons.

Thursday, June 11, 2009

Stuff I Have Found Interesting Today

Managing WIP isn't the same as Limiting WIP: Part 2
A good explanation of how Agile started by using a small,batch push system and how Lean is about implementing a pull system and how Kanban makes a team more productive. I have found the justification for sprints and planning games to be more about making people feel comfortable versus more productive.

Kanban Applied to Software Development: from Agile to Lean

Starts with a good introduction to Kanban as applied in TPS. I am wary of extending Kanban so literally from manafacturing to software. I believe software development is a design process and thus needs a different set of underlying principles. I think the Toyota Product Development (Michael Kennedy has a good book on it) is a better starting point. The flow is around funneling design decisions using set based design to come up with the optimal design given all the known constraints. I think we are heading in that direction, but the picture isn't clear to me yet.


Hope is Not a Risk Management Strategy

A good post on software delivery, risk management and other good stuff. This gem is worth repeating "..many teams adopting agile practices start with perhaps the worst practice of all - stand-ups. Effective stand-ups rely on a high level of trust and a willingness to put yourself out there, and to challenge others when they aren't. A team who doesn't have that [TRUST] typically finds stand-ups that end up not actually exposing impediments."


The Ins-N-Outs of Lean

An interesting look at Lean fast food.


The Seven Pillars of an Agile Team: Introduction

An interesting take on what makes an Agile team successful. I wonder if Agile adds anything?


Coding: Keep method/variable names positive

An interesting look at making code more clear by being positive.


Dreyfus Model of Kanban Adoption

Some good info in helping identify different levels. It wouldn't be hard to generalize it.


Simplest versus first thing that could possibly work

Good exploration of simple versus elegant in code design.