Jesper Boeg on Priming Kanban
In this interview, Jesper Boeg, author of the new InfoQ book – Priming Kanban, discusses the keys to using Kanban effectively, and how to get started if you are currently using other approaches.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Gavin Terrill on Feb 28, 2008
Gustavo Duarte, software architect, created a stir when he discussed physicist Richard Feynman's findings on the Challenger Space Shuttle disaster and how they relate to engineering quality software. Gustavo's application of Feynman's principals to software yields four main points:
In a follow up article Gustavo elaborates on the concept of empirical evidence, introducing the idea of "Reality Driven Development":
Action and experimentation are the cornerstones of empiricism. No attempt is made to subdue reality by extensive analysis and copious documentation. Reality is invited in via experiments. Instead of agonizing over market research, an empirical company hires interns and develops a product in one summer. A non-empirical company has 43 people planning an off-button design for one year.
The concept, drawing from evolution, espouses the philosophy of survival of the fittest. In essence, you try some stuff, keep what works and throw out what doesn't. Gustavo explains:
A good software development process should optimize experimentation and improve feedback from reality. This is what I mean by reality-driven development. And in software the most important realities are user experience and technical quality, while the primary experiments are working software and code. This isn't a formal model (heh), it's simply my favorite analogy for software development. I like the name "reality-driven" because when you mention reality, people think of users.
The idea shares some of the core principals and techniques of Agile, however Gustavo is (thankfully) not advocating a new methodology:
There is no specific reality-driven methodology. The Agile principles have a lot in common with these ideas (and certainly influenced them), but the devil is in the details. I prefer to think of software engineering in terms of a toolbox, full of techniques we pick and choose for the right situation. Process tools for optimizing experimentation include iterative development, executable architecture, continuous integration, and unit testing.
The bias of Gustavo's approach is toward the user and quality:
Based on this model, the two realities we care about are user experience (including the software's utility) and technical quality. User experience is often neglected in agile and waterfall alike.
Gustavo concludes with a refinement of his bottom-up approach:
- Have a bias for experiment over analysis, though both have their place.
- Optimize experiments: make them as early, fast, cheap, and broad as you can. Analysis can help here.
- Experiment vigorously.
- Be smart and proactive about measuring reality: user experience and technical quality.
- React to feedback. Let reality drive.
SCM best practices for multiple processes, releases & distributed teams
A practical guide to choosing the right agile tools
Maximize your business-responsiveness with Mingle. Provide your global development team a shared space that adapts to the way they work.
I really like this approach and agree that the experimentation and reality driven approach can help you come up with the "best" design of the software, but it seems that you can not rely on it solely to give you the vision of where the product needs to go. Don't you think you still need some input from marketing and a visionary to help guide where the experimentation goes and what the long term strategy is?
Tim Ferguson, xaware.org
In this interview, Jesper Boeg, author of the new InfoQ book – Priming Kanban, discusses the keys to using Kanban effectively, and how to get started if you are currently using other approaches.
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
1 comment
Watch Thread Reply