Tuesday, January 30, 2007

Is it really the lack of variety that make retrospectives stale?

Or is it more the lack of ideas actually being executed?

Monday, January 29, 2007

Turning a Dell XPS into a build light

Via Johannes Brodwall,

Litrik de Roy
created an Eclipse plugin that controls the lights on a Dell XPS, turning them red when the your JUnit test fails and green when it passes.

Now all I need is a Dell XPS and I can create a pretty expensive build light...

Wednesday, January 24, 2007

How to design simple solutions

Think about testing. How hard is the technology to test? How expensive will testing be to setup? This includes all the bureaucracy of setting up a test environment.

Be idiomatic OR Don't leave alien artifacts. Don't use unfamiliar technology unecessarily. And that's unfamiliar with the current group of people, not the "organisation", whatever that means. It doesn't matter that the "organisation" knows COBOL if most of your current people don't. Limit experimentation to one or a few aspects, not all of them at once.

Avoid duplication. Don't re-invent the wheel. Post-modern programming and all that. Don't write if you can reuse. If there is existing duplication, consider extracting (and offering) a library or service.

Minimise the number of parts. The more lines you have on the diagram, the worse it's going to be. And that's for your current system, not for some overall enterprise architecture diagram. Enterprise architecture is supposed to make it easier to build each individual system. So I don't care if the enterprise architecture diagram looks like spaghetti if most systems are being built quickly. I'll trust performance numbers over the aesthetics of a doodle. The doodle is misleading because you have other non-technical issues that come into play. Do we have people who know that system? Are the administrators of that system hostile? Do the consultants charge too much money? etc.

Sunday, January 21, 2007

The point is to get features done, not tasks done

Yes, but hours aren't burndown. Accomplishments are. A team that focuses on hours isn't focusing on getting things done. Tracking hours makes it "OK" to do whatever you're doing so long as you're keeping the hours up to date.

The point of the Sprint or iteration is getting backlog items done, not getting tasks done. Tracking hours, in my experience, obfuscates that key fact.

-- Ron Jeffries on the Scrum Development mailing list

Is it actually safer to be a technology laggard?

I've repeatedly encountered a belief that it is safer to lag in technology, let everyone else experiment first, let everyone else lead the way.

Is this actually safer?

I immediately think that this kind of behaviour will affect the types of personalities that the organisation will attract and retain. Specifically, people who are driven to do things better probably won't stick around.

Saturday, January 20, 2007

BarCamp Sydney: No Spectators, Only Participants

The first BarCamp is being held in Australia this year! BarCamps, those crazy unconferences, will be held in states across Australia at the same time on the 3rd and 4th of March. BarCampSydney is calling you!

NO SPECTATORS, ONLY PARTICIPANTS

When you come, be prepared to share with BarCampers.

When you leave, be prepared to share it with the world.

BarCamp is an ad-hoc unconference born from the desire for people to share and learn in an open environment.

It is an intense event with discussions, demos and interaction from attendees.

Anyone with something to contribute or with the desire to learn is welcome and invited to participate.

What’s Next?

Sign up on the wiki, check out the blog, tell all your friends, prepare your presentation, ask your company if they’re interested in sponsoring…

Go!: http://barcamp.org/BarCampSydney

Tuesday, January 16, 2007

A few ideas you might consider for your project

Don't progress stories/features until they are tested. Or better yet demonstrated. Or better yet tested against users.

If you have them, unit test your stored procedures.

Accept stories in more realistic environments.

Include explicit tasks for "write story test first" and "refactor after".

Use probabilistic estimation and reporting.

Try answering requests with "Yes, and..." it will cost this much, it will introduce this risk, etc.

Encourage more direct interaction between programmers and users and other stakeholders. Use analysts as aides, not as gatekeepers.

Cross-skill to allow resource balancing for constraint management. At least cross-skill the easy stuff, and work on doing the same for the harder stuff.

Decide on and document your own conventions and process.

Sunday, January 14, 2007

Viktor E. Frankl on best practice

To put the question in general terms would be comparable to the question posed to a chess champion: "Tell me, Master, what is the best move in the world?" There is simply no such thing as the best or even a good move apart from a particular situation in a game and the particular personality of one's opponent. The same holds for human existence.

-- Viktor E. Frankl, Man's Search For Meaning
... and the same holds for engineering software.

It's Not Just Standing Up revisited


I've updated my article, It's Not Just Standing Up: Patterns for Daily Stand-up Meetings based on feedback from my writer's workshop at PLoP 2006. I would recommend the experience for anyone interested in writing patterns. You can still make the deadline for EuroPLoP 2007. PLoP 2007 will be later on in the year.

I've sent a copy to Martin to update on his site but in the meantime you can see it published from Google Docs. I'm experimenting with writing tools. Google Docs is alright but I might move to CSS styled XML the next time around.

[Update: Martin's published it now]

CruiseControl 2.6 released

CruiseControl 2.6 has been released.

Jeffrey describes some highlights here.

I'm interested in working out where we go from here so if there is a key desire or problem you have with CruiseControl, please add a comment here, on the user's list, or on our JIRA.

Friday, January 12, 2007

Lending to change lives

I blogged about Kiva over a year ago but it took Mike Cannon-Brookes and fellow ThoughtWorker, James Webster, to get me to finally take action and become a Kiva lender.

There seems to be another one of those pointless blog memes going around. I say instead of blogging five things people don't know about you, how about becoming a Kiva lender instead?

If you're reading, consider yourself tagged.

Wednesday, January 10, 2007

Squirrel SQL 2.4 has refactoring

I created a feature request for this in 2005, though it looks like they didn't see it. No matter, Squirrel SQL 2.4 has refactoring.

Allows you to view SQL alterations for several refactorings or apply them directly to existing tables. Refactorings supported are Add/Modify/Drop columns and Add/Drop Primary Key.

Friday, January 05, 2007

The key to US-Canadian relations

... is apparently American Idol, WWE, and Jessica Simpson.

Thursday, January 04, 2007

Informative Workspace is not about papering the walls

Creating an Informative Workspace is not about papering the walls with material. You are communicating and too much irrelevant information will distract.

Just because the information is there doesn't mean that I will see it, especially if it is buried in noise, written in tiny fonts, etc.

Make information visible, yes. But also minimal and focused.

Not just asking Why? but also explaining Why

Mark Graban at Lean Blog referred back to an old entry about his tour at NUMMI:

At previous companies, not as lean as NUMMI, it was pretty common to see a box of parts tagged with a sign that said, sternly, "DO NOT USE." Sometimes there was an important manager's name associated to illustrate who is making that pronouncement.

At NUMMI, a box was labeled with a sign that included the "why." The sign said something like “using these parts would result in brake failures or problems for the customer.”
One of the key things people new to Lean (as well as Agile) tend to miss or ignore is the concept of "respect for people". It's interesting how savvy observers can pick up on this by noticing the small things like how signs and guidelines are worded and presented.

Tuesday, January 02, 2007

Only easy problems are purely rational

Several of us from the ThoughtWorks Sydney office have been meeting up for a book study group, starting with Jerry Weinberg's Secrets of Consulting.

I've actually read this a while ago but going through it again is great for a reminder.

For example, the advice that being reasonable is more important than being rational.

If you can't accept dealing with less than pure designs/systems/approaches/processes, you won't survive being a consultant nor will you ever be an effective problem solver since only easy problems are purely rational.

Monday, January 01, 2007

What would it take for last minute changes to be safe?

Have you ever been a situation where you receive a last minute change request that you have to refuse because you're just too close to release for that change to be safe?

That's responsible behaviour. It's utterly foolish to risk system stability by making non-critical changes just before a release.

Of course, there is a much higher probability that changes will be re-interpreted as non-critical just before a release even if it may eventually turn out that a minor issue as seen by the engineering team is the final annoyance that encourages a customer to go elsewhere.

So what would it take for last minute changes to be safe?

  • Full automated regression testing
  • Multiple eyes reviewing the problem and solution
  • Clean, easy-to-understand, non-duplicated, loosely coupled but cohesive, design
  • Skilled and creative testers
Or in a more abstract form: discipline, technique, humility, and teamwork.

What makes last minute changes more dangerous?
  • "I don't need to test everything"
  • "I don't need a pair" OR "I don't need my code reviewed"
  • "That duplication is not important"
  • "I don't write anything that can be broken"
Or in a more abstract form: laziness, stubbornness, ignorance, and arrogance.