Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Amr Elssamadisy on Jul 14, 2008 09:34 AM
Declan Whelan wrote a thought-provoking blog citing an idea he learned from Mishkin Berteig about an (unspoken) principle behind successful Agile teams: truthfulness. The basic idea is this:
... agile methods rely on people speaking the truth and acting with integrity. I thought this was very insightful since most agilists focus on either technical aspects of agility such as TDD, refactoring or they focus on team and leadership issues.
Truthfulness? Really? It's not immediately clear to most people, so Declan gives a personal example where he was less than truthful:
For example, once when I was developing a financial application I made what I thought was a good design decision but really struggled to get it to work. I did not want to appear as if I had made a mistake. I basically lead everyone to believe all was well and meanwhile I worked insane hours to get it all working. I was letting pride get in my way and was lying to cover up a bad technical decision.
That example, unfortunately, is not uncommon for many of us and let pride get in our way. An agile team, according to Berteig, is not fertile ground for such actions:
Now, I think it should be obvious that on an agile team you simply could not get away with such behavior for any length of time. There is collective code ownership, daily stand-ups, task and story tracking, sustainable pace; all of which make the whole process much more transparent. So, on the one hand I agree with Mishkin that agile methods rely on people speaking and acting truthfully.
But is an agile team really immune to this type of problem? Not, necessarily says Declan:
But we are devious creatures and so I would like to leave you with some questions to ponder:
- Are you honestly expressing your doubts and concerns in retrospectives?
- If something is bothering you with another member of the team do you act in a direct but respectful way to resolve it?
- Are you able to freely admit when someone has a better idea or design than yours?
- Are you willing to admit when you make a mistake?
- Do you say the same things about someone when you are face-to-face with them to do you say something different behind their back?
"Truthfulness an Agile value" has a nice ring to it. Values are increasingly taking front-stage as the core - without them the individual practices like TDD, Iterations, Done State and others are meaningless.
Agile Development: A Manager's Roadmap for Success
Give-away eBook – Confessions of an IT Manager
Ebook: Scaling Agile with C/ALM
The Agile Business Analyst: Skills and Techniques needed for Agile
I agree completely. Truthfulness is the key and with truthfulness comes trust and high performing teams. Call it a cliche or whatever you want, but a team that trusts each other works well together. This is an important quality to have as a Scrum Master and something that will rub off on the team. There is much more culture involved with implementing Agile processes than most people realize.
This really should apply to anyone on any project regardless.
A few things lurking around in my complete list of things
1) "No Surprises"... the mantra of one of our Directors. He won't get pissed off if you bring an issue early. You're in serious trouble if you let it slide and then it becomes an issue later. Amazing how well that policy works.
2) Deferring conflict can only make things worse.
and most important...
3) Someone working significantly more hours than the rest of the team is a HUGE warning sign of something wrong. This something can vary, but you had better figure it out what it is fast.
The more I learn about agile development and scrum the more I understand that there is so much more to project management than the method behind the madness. I agree with @Jim that truthfulness and honesty should be present in any project. I also agree with Declan. One purpose of agile is to help people get above the politics and get the job done as well as it can be. It asks us to be open, honest, and respectful of those on our team. With agile, lack of honesty becomes apparent faster, and if you have a good team, will not be tolerated.
This really should apply to anyone on any project regardless.
Agreed. I think the point of Mishkin's article is that Agile is based on truthfulness. The whole 'visibility' and 'feedback' loops discourage any dishonesty.
Any process is "based" on honesty, what we are talking about here is that agile processes are more sensitive to the existence, or lack of full disclosure. Alas, this just makes them more vulnerable, since full disclosure and complete honesty are hard to get, much harder than most people realize.
Alas, this just makes them more vulnerable, since full disclosure and complete honesty are hard to get, much harder than most people realize.
Tell me more please. More vulnerable to not being adopted because they are so painful? Agreed - as Jack Nicholson would say "YOU WANT THE TRUTH?!!!! YOU CAN'T HANDLE THE TRUTH!"
Precisely :) Strong sense of self-discipline, along with the aforementioned honesty/full disclosure are usually in short supply. And getting those is usually the major challenge in assembling a successful agile team. That's why a lot of people agree that a successful agile team needs more professional, more experienced and higher-level members than your average software shop has got. Agile ain't for everybody, just like Jack Nicholson said :)
I agree that "admitting mistakes" instead of covering them is a valuable behavior in any process. Nothing special for agile teams here. In contrast, agile environments will disclose mistakes sooner than other environments. That's my opinion
Nothing special for agile teams here. In contrast, agile environments will disclose mistakes sooner than other environments.
Actually, I think what we are trying to say is that there is something special. Agile does this more regularly. Not everyone is comfortable with facing my,... ahem, I mean their mistakes :)
When development centers on individuals instead of a team it is much more difficult for a individual to admit they made a mistake in estimating. If you are part of a team it is much easier to spread the responsibility and cover for a inaccurate estimate. Being truthful to other team members is much easier because you are part of a team that cares about its members and also about getting a project done.
In scrum we have the burn down with tasks that the team has agreed to. The major problem I have found in scrum is that many times the teams do not do enough up front planning at the beginning of the sprint. This causes long hours at the end of the month but because the team's integrity is on the line the goals are usually accomplished. In the retrospect we look back and try to prevent the same problems from happening again.
I am working in a non-agile shop right now and I understand why I am such an Agile advocate. I have one developer who I am sure has mis-lead me but I have no proof because there is no daily accountability. As I have learned continual accountability is key to Agile success.
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
10 comments
Watch Thread Reply