Working together
collaboratively with a team member in a remote location is not a rarity anymore
as distributed pair programming makes it real. This is a smart way to offload
the work to two different brains, the driver and the navigator. The driver
implements the logic while the navigator observes the driver and assists him
with the logical flow as they swap roles continuously. This encourages a sense
of ownership and leads to faster problem solving while engaging minds from
different locations to transfer knowledge in the process. There are several
tools to help achieve this and one such plugin of eclipse, tailored to
encourage distributed pair programming is Sangam. It is event driven, so only
the changes are transmitted. One main advantage of this tool would be its
flexibility for customization. For example, the driver can see the code from
Java’s perspective and a navigator can get a debug perspective as they run on
separate eclipse instances. As it is event driven, it only transmits important
messages and performs well even with slower broadband connections. One
potential downfall of Sangam is that it mandates the code between the
participants to be consistent before pair programming takes place. The results
would be erroneous if consistency is not maintained beforehand. It is natural
for the navigator and the driver to have different code versions as they are constantly
working on the same code base. A possible solution to this problem would be to
have a central repository for pair programming to access the same versions of
code or include a source control feature where the participants can view their
source code differences and switch to the latest one by an auto resolve functionality
to make the code bases consistent before initiating pair programing.
References: Sangam – A Distributed Pair
Programming Plug-in for Eclipse Chih-wei Ho1 , Somik Raha2 , Edward Gehringer1
, Laurie Williams1
Part 2
Outsourcing is a
smart business partnership to save time and optimize efficiency of product
delivery. The seven principles of lean software development can be applied by a
company to interact with the outsourcing partner to develop high quality
products together. While working with the outsourcing partner it is important
to eliminate waste by ensuring that the supplier works on the right
specifications to avoid unnecessary cost and time on product rework. There shouldn’t
be room for underutilized skills and talents in the team. Proper scheduling and
planning can eliminate unwanted wait time. It is important to amplify learning by
ensuring that the outsourcing partner has a good learning and development
strategy to upgrade skillsets of team members whenever required. This in turn
drives innovation and helps complete tasks more efficiently. It is a good
practice to enlighten the supplier team to come up with a flexible architecture
so that irreversible decisions can be made as late as possible when there is
enough exploration to arrive at the right conclusion. It is beneficial for the outsourcing
team to follow agile methodology of continuous improvement by delivering prototypes
as fast as possible instead of adopting a fixed long-term methodology. It is vital
to evaluate the outsourcing team’s culture to assess the level of empowerment
of team members. Effective leadership ensures that the team stays motivated by involving
them in the decision-making process and fostering a sense of ownership for
quality. It is imperative to build integrity in the outsourcing team by practicing
test driven development to deliver high quality product features in short
incremental cycles. The project manager should ensure that the outsourcing team
looks at the bigger picture by identifying the system level business processes supported
by the project to deliver a high-quality product to the customers.
References: http://www.clariontech.com/blog/7-deciding-factors-finalizing-your-outsourcing-partner