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 Vikas Hazrati on Dec 19, 2008 03:46 AM
‘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 Development: A Manager's Roadmap for Success
5 Ways to Ensure Application Performance
Give-away eBook – Confessions of an IT Manager
The Agile Business Analyst: Skills and Techniques needed for Agile
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 http://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: http://zwadia.com
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.
5 comments
Watch Thread Reply