Thursday, April 7, 2011

How Driving Habits Foretell Waterfall Tendencies

Ever wonder if someone really buys into the whole Lean/Agile way of thinking or if they are just giving lip service to a bunch of terms? To find out, just watch them drive.

Imagine a Waterfall Curmudgeon, we will call him Steve, and an Agile Bigot, call him Mike.

They both approach a stop sign for a right turn onto a road with 4 lanes...so they have two lanes they could turn into.

They both need to make a left turn a ways up the road. Not immediately, but somewhere soon.

Curmudgeon Steve waits until both lanes of oncoming traffic clear so that he can be in the correct lane for that left turn from the get go.

Everyone is stuck waiting behind Curmudgeon Steve to turn and gets pissed off.

Curmudgeon Steve is pissed at himself when he finds his left turn blocked by unforeseen road construction on the road ahead.

Bigot Mike turns into the first lane and then merges left when he can...or not all because the landscape changed.

Don't be a Steve.

Wednesday, July 7, 2010

What would it look like?

If all the strip malls went away?

Think about that for a second. The endless miles of dull store fronts, most selling cheap crap, just gone.

Go ahead...I'll wait.

Most everything we buy today can be purchased easier and with more feedback online. Sure there are exceptions, my own personal rule is "Anything that has to fit well" is never bought online. But aside from shoes and nice clothing that leaves pretty much everything else.

What could we do with this space?

1) More open space parks
2) Corridors for public transport
3) Return it to the wildlife

The options are really endless.

And the cool thing is that we don't even have to enact laws or go through any bureaucracy to make it happen. Just buy online. The stores will slowly disappear and maybe, just maybe, we can be rid of the kitsch infested landscape we are forced to endure.

Monday, August 10, 2009

New Language

It has been about 4 years sense I learned a new language (Ruby). I guess it is time that I get off my arse and broaden my horizons. So Erlang is on the menu.

I must say that functional programming is quite the departure from my usual bailiwick.

Programming Erlang is my guide and I am considering the screencasts as well.

Now I can only hope that some gnarly electrical grid problem is in need of some massively parallel processing problem so I can put all this head, tail, fun nonsense to good use.

Thursday, May 28, 2009

Believing in our own Bullshit

Keep telling yourself something and sooner or later you will begin to believe it...

We were convinced that our app was not the weak link in the mysterious wack-a-mole game of performance tuning.

That is until we found a horrendous 15 minute delay when processing a particularly large event.

None of our tests found it.

Bone headed stupid mistake.

Friday, March 20, 2009

Testing phases suck

We finished all of the functionality for the first release of our product with one week and 3 days to spare. The thought was that we would use that time to go back through and write some additional tests in areas of the app that might have weaker test coverage.

The idea seems noble, but it is flawed.

I already see a let down in energy. A team that been used to the rhythm of TDD is being cast into a mold of 1990's era broken process.

How to fix this?

We could just call it done and move on to the next batch of features, but our Product Manager is on vacation and we don't have the next set well defined.

For now I think we are going to try to to use our rcov statistics to gain better focus on what areas we should write test for rather than the current approach which seems too scattered.

Tuesday, March 17, 2009

Agile Software Tools

Will someone please write a SIMPLE piece of software for assisting teams running a lean/agile approach?

This software would NOT pander to the outdated mind set of corporate America where reports and linear thinking rule the day. (but where all the money for licenses exist)

It would make it dead simple to write, edit, destroy ad split User Stories.

It would be backlog driven.

It would be as easy to use as a Card Wall.

It would support a pull type of scheduling such as Kanban as well as more traditional Scrum like Sprints.

It would treat tests (like Cucumber) as first class citizens or maybe just make them an integral part of the Story.

Really...please...

Sunday, February 15, 2009

BDUF...will it ever die?

It feels incredible to leave my consulting days in the past where I had to constantly explain and justify Evolutionary Design in the face of Big Design Up Front cowards.

This past week further cemented my beliefs that hard problems can NOT be solved by design sessions and paper models.

We found a deep seated problem with the strategy we had devised for controlling some hardware we build. There was a work around, but it was not elegant. The elegant solution was going to require some very complex thinking and an innovative UI to drive it all.

After talking through the problem and some solutions for an hour or so, most people were excited about the change, but wary of its complexity. We have our first release coming up in 5 weeks and this was changing the very heart of the system in a radical way.

Despite (or I would say 'because') of the complexity involved. We eschewed long design sessions in favor of a couple of focused tech spikes. One on the UI sense it was using a metaphor that was not common, and one that got the hard logic of the middle tier working.

We drove the whole thing with unit tests. Made several significant course corrections mid-stream, but solved the entire problem in about 3 days of work.

Looking back there was no way to solve this problem by designing it up front. There were simply too many moving parts. Paper designs do not let you eliminate complexity from your mind. But unit tests let you 'forget' about all the tiny decisions you have made and look forward...breaking the monolithic problem you are faced with into a lot of small problems that are all solvable.

What had seemed like a nearly insurmountable problem when talking about it at a white board that first day has been effectively implemented and tested just a few days later. Everyone involved was surprised at how much easier the problem was in the end.

And that is the crux. Evolutionary design tactics using tools like TDD, autotest, and of course our favorite language of Ruby, has allowed us to actually solve the problem rather than sitting around a design tool mentally masturbating on it.