|
|
To print: Select File and then Print from your browser's menu
-------------------------------------------------------------- This story was printed from ZDNet Australia. --------------------------------------------------------------
|
Tips for managing project teams By Evan Stein, TechRepublic October 11, 2002 URL: http://www.zdnet.com.au/insight/soa/Tips-for-managing-project-teams/0,139023731,120268911,00.htm
You have a tough enough time managing on-site teams. Scatter team members among locations, and it's even harder. One consultant shares the lessons he learned on the way to success.
Two years ago, I managed an e-commerce development project without ever seeing 90 percent of my team. I was located in New York. The analysts and half of the developers were in Maryland. The rest were in Colorado, along with the architects. The client was in Pennsylvania. Managing teams that are spread among multiple locations poses challenges in communication, coordination, development quality, and many other areas. I've learned some lessons in methods and techniques for managing remote teams that you can apply when you must manage a far-flung project team. Setup The client had had a Web site up and running for a few years, and we were undertaking the first round of major upgrades. When the teams were arranged for the project with the Pennsylvania-based client, they were set up as shown in Figure A.
Figure A
The client worked mostly with me, the project manager, as the primary point of contact. The team in Maryland was responsible for the business and systems analysis and half of the development. The Colorado team architected the solution and handled the rest of development. The user interface was developed by a team split between New York and Maryland. Two more roles were filled in New York: a technical lead and a librarian. An administration challenge The first lesson I learned managing the remote teams was that administration was going to be more burdensome than it had been on contracts in which everyone was centrally located. With the development teamsââ,¬"because they were in locations separate from meââ,¬"I had less control of the teams' daily tasks and less influence with the actual code that was written. Less communication between the teams meant that lessons learned by one team were not easily taught to others. Project plans and task assignments had to be communicated to several places. We primarily communicated information via e-mail and conference calls. The difficulty of assembling the teams, or even several key individuals, because of distance and time zone differences, began to slow decisions and make coordination more difficult. This became even more complicated as development progressed, requirements changed, and details became more specific. The effect needed to be assessed across multiple locations, and changes had to be communicated and coordinated the same way. I defined two rolesââ,¬"the technical lead and the librarianââ,¬"to assist in managing these issues. The technical lead The technical lead assumed the responsibility for coordinating technology among the teams. He became the person who knew the most about the architecture, design, and programming details of all aspects of the system. In this case, the system architect filled this role. This team member was originally located in Maryland, but relocated to New York for the duration of the project. This was done to bring the manager, technical lead, and librarianââ,¬"the project's management teamââ,¬"into the same office. Having them in the same office provided a single point of management communication for every other group involved in the project. As changes to parts of the application became necessary, the technical lead worked with the remote teams to assess the effect of the change and coordinate actions among the teams. Although the application was designed to maximise the independence of the various components, certain changes did affect each team. For example, during development, the client requested changes to the search functionality, which affected the user interface, the search logic component, and the database. Coordinating the redesign, impact, and implementation fell to the technical lead. The technical lead was also responsible for code reviews. These are important in any software development project, and take on added significance when your teams are spread out. The technical lead reviewed the code, and then all the project members discussed it in weekly meetings. The librarian The librarian assumed the remainder of the administrative responsibilities. Managing source control and document repositories became more important and more difficult with remote teams. We used three environments to develop the application. One was a pure development environment, which is where all coding took place. The second environment was for integration and system testing. The third was a client-acceptance environment. As code was ready for testing, it was moved from the development to the testing environment. Every two weeks, a new, tested version was moved to the client environment for testing and feedback. The librarian coordinated the migration of code between the environments and the coordination of feedback from the client and the testing environments to the developers. The librarian was also responsible for the management of all documents created during the life of the project. This included ensuring all documents were created, reviewed, and maintained as needed. The daily checklist Each morning began with a conference call attended by a lead developer from each team, the technical lead, the librarian, and myself. The meeting was kept as short as possible. The status of the previous day's tasks was reviewed, new issues were brought up, and the current day's tasks were assigned. The meeting typically lasted 15 minutes, and it gave me a good sense of each team's progress. It also provided each team with its guidance for the day and gave them a chance to see how the other groups were progressing. Each day ended with a check in, usually enforced by the librarian. Each item that every team member was working on was checked back into the file repository and source control system each day at a set time. This happened no matter what state the item was in (incomplete document, code with bugs). This step:
We implemented a collaboration platform to provide better ways of sharing information among the team members. There are many good products that provide collaboration functionality. For this project, we used Groove. It provided an easy way for team members to share information using tools such as chat, threaded discussions, a file repository, a whiteboard, document sharing, and source control. Chat and threaded discussions improved the communications among teams and also provided a searchable archive for knowledge gained and lessons learned. The group whiteboard improved information sharing and brainstorming at meetings. The file repository and document sharing made it easy for the teams to consolidate and share all the artifacts generated by the project, while source control became easier to use because it was integrated into the same tool. Overall, Groove greatly improved communications among all the teams and provided an excellent tool for the managers to stay abreast of the entire project. Dealing with change Of course, as the project progressed, changes were required. Certain assumptions that were made at the initial stages turned out to be invalid and, as with every project, the client's wants and needs changed too. All requests from the client came to me and the technical lead assessed the effect and determined the best course of action. In most cases, the additional work of isolating the components and tiers contained the impact to a single component or a group of components being developed by one of the remote teams. Only in a few instances did the changes require the work of teams in more than one location. Our lessons Most of the lessons we learned on this project apply to all software development, but because the teams were in multiple locations, their impact was magnified.
Summary Development will continue to become more and more decentralised as projects grow, technology improves, and companies increase their reach. New tools and methodologies will continue to be released to support this trend. But the ideas of communication and division of responsibilities will always be essential to the success of these projects. TechRepublic is the online community and information resource for all IT professionals, from support staff to executives. We offer in-depth technical articles written for IT professionals by IT professionals. In addition to articles on everything from Windows to e-mail to fire walls, we offer IT industry analysis, downloads, management tips, discussion forums, and e-newsletters.
Copyright © 2009 CBS Interactive, a CBS Company. All Rights Reserved. |