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 Vikas Hazrati on Dec 19, 2008
‘Software quality issues due to variable level of skills between locations’ was one of the most interesting findings which came out of an survey, which was performed by The Reg reader poll in September 2008. The survey was conducted with 369 respondents, of whom, 80% had direct experience with distributed software development. The geographic split being 44% UK, 36% USA and 20% elsewhere.
Though, communication and collaboration was still the dominant challenge in distributed development with more than 85% respondents mentioning it, the surprise second, as per the survey, was software quality issues arising from too much variation in skill sets between sites. Another closely related concern was the difference in quality of practices and processes. These challenges remained true irrespective of the type of organization and management approaches followed. Three main approaches, used by the respondents, in distributed development were
The survey revealed that the challenges of distributed development are amplified when an Ad-Hoc approach is followed, however, the order of challenges was similar across the approaches. The top 5 challenges reported across approaches were
The primary motivation behind distributed development came out to be resource flexibility and strategic value as compared to cost. This might lead to an observation that just focusing on cost does not help because cheap remote resources might translate to inadequate experience and skill.
Another interesting observation was the result of the activities, which can be distributed. Respondents, who followed Hub and spoke approach, preferred distributing coding and testing activities more than some critical activities like specification definition and analysis and design. Those following peer to peer approach were relatively less reluctant to distribute these critical activities.
In a similar analysis, Scott Ambler summarized the results from the Dr. Dobb's 2008 Agile Adoption Survey, which showed that the success rate of the project is inversely proportional to the geographic distance. Following were the success rates for Agile teams,
According to Scott, the key enablers of distributed development, which help both communication and skill development are
There are other success stories like Offshore Development by Martin Fowler and Reaching Hyper-Productivity with Outsourced Development Teams by Jeff Sutherland which talk about good practices for successful distributed development.
Though, distributed development has its own set of challenges but it is a reality in today’s world. The key lies in effective tooling and better collaboration practices which would help in facilitating communication and building skills across geographies.
Agile Maturity Model Applied to Building and Releasing Software
Case Study: IBM's Agile Transformation
SCM best practices for multiple processes, releases & distributed teams
agility@scale eKit: 10 Principles, Scaling Model, Metrics, Collaboration
In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!
Having spent 3 years as a developer on a shared codebase across 3 distributed teams (8 hours apart) I think the quality of the code was the major victim. Although I do not neccesarily think it is down to skillset - more culture. All 3 teams were practicing TDD and refactoring as good as we could. The major problem was a common architecture - we did not have a common metaphor of what the system would be and therefore it became everything and anything with no real layers or subsystems.
As a result it turned into a big ball of mud that is effectively un-refactorable.
The few attempts we had to 'break out' sub-systems of code were abandoned. Although one was particularly successful (albeit painful) and led to a new suite of products.
Jay, that sounds in agreement with what Scott has to say that you should structure your efforts and teams around a common architecture. So agile or no-agile I guess the design and architectural concepts should still be strong for the project to be successful and less painful. After all as I see it Agile (process) is only 1 part of the pie. It has to be complemented well with both technology and people. With the right technology and people, Agile acts as a catalyst to get things done better and faster.
Open Source Development has been a pretty good distributed model for development. I think the problem is that people try to enforce a local model into a distributed development team. Most developers are used to white-boards rather than discussing design and coordinating over email. So maybe the problem is Agile not distributed development.
As somebody who's personally and actively involved in both OSS and organizing offshore dev, I'd say parallels with open source only go that far. The infrastructure and communication channels are clearly the same. The difference is in developer motivation. Open source project participants are self-motivated individuals who already have a clue what to do and a personal reason to be involved. When you have an offshore team, the whole process becomes about getting the developers understand and feel the problem domain of a far away customer. As opposed to open source (a developer is having an itch to scratch), people are working with abstract problems that have no bearing to their everyday lives. That becomes the biggest problem to solve.
Andrus Adamchik
objectstyle.com
Geographical distribution definitely affects code quality. Additionally, when the Architects are not geographically located in the same place as the developers - implementations are not true reflections of the design/vision. So yes, distributed models definitely introduce noise into the process. However, most projects don't require pinpoint execution and you can get away with some dilution as long as teams communicate, proper checkpoints are enforced and effective reasoning is the basis of compromise.
Also, don't break the project up into tier-specific teams - this will only promote dilution and confusion. Each development team should be responsible for their vertical functions and be able to execute across all tiers of the project. This gives you some fail-over when life/politics/economy intervenes with the implementation as you can introduce new functionality to a team familiar with all aspects of the architecture. Learning a new technology tier and its dependencies and interactions however, is not so simple, especially with distance.
If the project is small enough and the execution window isn't absurd - we generally prefer keeping Architecture/Business-Analysts on one shore (the clients) and the entire Development team on another shore (whether the shore is 200 miles or 9000 miles away is irrelevant). The Architects regularly visit the offshore group, interact with them personally - especially at the beginning of the project when the vision and expectations need to be set. Depending on time and budget, we sometimes send our Business Analysts for brief visits as well. Don't ever blind-side your developers - having them in-step with the vision is the key to successful execution.
Cheers,
Zubin Wadia
CTO
www.imagework.com
"Business Acceleration through Process Automation."
Blog:
zwadia.com
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.
5 comments
Watch Thread Reply