The success of a project is solely dependent on creating a team that can perform with dedication, quality consciousness and time consciousness. If the project manager is capable of creating such a team, half the battle is won.
It is said that the software projects are never managed adequately. True. It is extremely difficult to manage each and every aspect of the project-for example to review each and every line of code written by all the programmers. So, the manager has to inculcate the quality consciousness in the individual engineers and programmers so that each and every activity is of high quality.
The project manager has to select the right persons for the job, give the necessary orientation on the tools and application domain, educate them on the software development life cycle and quality standards and create the right atmosphere so that the team members will give their best. The project manager has to act as a mentor and motivator, as a counselor and of course sometimes as a boss as well. The foremost priority is to be given to training the team members on all aspects of the project.
We will discuss the various aspects on the training to be imparted to the team members; and how the information can be shared among the employees through Enterprise Information Infrastructure.
Orientation Program
After formation of the project team and before starting the development work, the project team has to undergo an orientation program which includes the following topics:
• Rules and regulations of the organization
• Client details and scope of the project
• Communication skills
• Teamwork
• Software development tools
• Application domain
• Software engineering principles
• Quality standards
• Ethical issues
If the entire team is selected afresh, rather than deploying people from other divisions/groups of the organization, this orientation is a must. We will briefly discuss these aspects in the following sections.
Rules and Regulations of the Organization
New employees have to be informed of the various rules and regulations of the organization. These include timings, leave rules, travel rules, details of salary and perks,
transfer rules etc. The employees also need to be informed of the various facilities that are available such as library/digital library facilities, information that can be shared over the Intranet of the organization, Internet access facilities etc.
The project manager also has to share the vision and the overall objectives of the organization. Periodic updating of the progress of the organization also is very helpful to make the employees develop affinity towards the organization.
Client Details and Scope of the Project
The team members should be informed the details of the client. Particularly if the client is from another country with another cultural background, the team members should be trained on cross-cultural relations so that cultural differences do not come in the way of good business relation. The etiquette to be followed in face-to-face meetings, at dinner parties and even in e-mail communication and telephone conversations differ from culture to culture or country to country. The team members must be trained on these finer aspects.
The project team also must be apprised of the scope of the project. The project manager can keep the agreement with the client confidential, but the team should be informed of the technical aspects—scope of work, deliverables, time frame, documentation to be supplied, quality processes to be followed etc.
Communication Skills
Effective communication is crucial for the success of any project. Software is divided into modules and each module is divided into units, and each unit is given to an individual; and if there is no interaction, the software can never be integrated and made to work. The project manager has to make the hierarchy of the project team very clear and also inform the members the authorities and responsibilities of each individual. The reviews that will be conducted during the execution of the project, as mentioned in the project plan document, should be informed to all the team members.
Peer reviews: The project manager has to cultivate the habit of the team members sitting together and reviewing the development periodically. Many informal reviews (over a cup of coffee in the canteen) would also do great wonders.
In addition, formal review meetings need to be conducted periodically, say once in a fortnight and all the issues have to be discussed openly. All the important issues discussed and decisions arrived at have to be recorded and communicated to the project manager.
The peer reviews are required to review specifications, design, source code, test plan, test reports and the acceptance test plan and results.
Communication with the manager: The manager has to create an open atmosphere so that the members can freely express their opinions. At the beginning of the project itself, the manager has to make it clear that free and frank opinions need to be given. Many software project fiascoes would have been avoided if this simple thing is followed.
This free communication would bring out the possible risk factors. For instance, one team member may say, during the course of the project, that the time frame is not sufficient. If that member is bulldozed to keep his mouth shut, the issue is not resolved. The manager has to listen to his argument and see the possible impact of what has been said. May be it is an uncalled for fear, or may be it is due to an unforeseen fact. Risk assessment greatly improves through this open communication process.
Communication with other groups: The development team has to interact with other groups such as QA, test group, process group etc. These group meetings also have to be planned and open discussions should be held. The important issues discussed and decisions made have to be recorded.
Communication with the client: The manager has to make it clear the exact interfaces with the client—who will do the formal communication. If the client talks to a team member who does not have the global picture of the entire project, the client may get a wrong impression about the status of the project. If the client talks to the team members directly, the team members have to be advised that they should only tell about the module on which he/she has the total knowledge but does not pass a loose remark. The project manager also has to inform the client the names of the persons who will act as interface to the development team.
Written communications: Many times, the changes in specifications or design etc. are done through oral discussions. Particularly, in off-shore execution models, there is a great risk of this kind of change in specifications through telephone. It may happen that the manager forgets some of them and the client says T told you’. Any such changes discussed orally, should be followed up by written communication—if not through paper, at least by email. A bit of bureaucracy is better than relying on the memory of human beings!
Teamwork
Team effort is essential in software development projects. To recruit persons who can work as team members is the first important step. During the recruitment process, the interviewer has to look for past experience on projects which have team size of at least 5. People who did projects all alone need to be probed into their personality traits, some people do admit that they are not good team players. Depending on the project requirement, such people need to be eliminated unless there is a plan to develop single person armies for some specific projects.
All the engineers need to be given an orientation on the teamwork—to respect others’ opinions, to work together in spite of personal differences, to be honest in admitting a
mistake, to be truthful in revealing the defects still in the code or design and so on. The engineers also need to be trained on the ethical issues as related to the colleagues.
The manager also needs to be impartial. Showing partiality towards one person in the team leads to discontent and lack of team spirit.
The manager’s responsibility is to curb politics that arises out of personal rivalries. Many projects get delayed or fail because of lack of cooperation amongst the team members, that too for petty silly personal reasons. The manager has to identify the root cause and the person responsible for the politics and take stern action. Otherwise, project is doomed.
Software Development Tools
The project manager, during the planning stage, has to identify the skills required for the project on hand. These skills include:
• Operating system(s)
• Programming language(s)
• Database management system(s)
• CASE tools
• Any specific application software packages
• Hardware platforms (such as DSP, micro-controllers etc.)
After identifying the skills required, the manager has to identify the people who have the requisite knowledge. It may not be possible to get people who are well versed in all the tools. One way of solving this problem is to have a team in which these skills are available or to give an orientation program whereby people can be trained on the specific tools.
Domain Knowledge
In addition to knowledge of the programming languages and other development tools, the team members should have sound domain knowledge. It is not difficult to gain knowledge in general business practices and procedures such as inventory management, purchase and sales procedures etc., but for domains such as telecommunications, data communications, computer telephony integration, artificial intelligence applications etc., specialized knowledge is required. If the project is very highly specialized, domain experts must be recruited for the project team. Even then, the team members need to be given the necessary orientation on the domain so that the developers understand the jargon of the domain expert.
Even in major organizations, the training in application domain is not given enough thrust and the developers are pushed into the job directly resulting in delay in the project execution. The developers may be very good at coding, but unless they understand the intricacies of the application, they will not be able to do a good job.
Software Engineering Principles
Most of the software engineers consider software development as coding. The project manager knows better! It is not enough if the project manager is process-oriented, each and every team member must appreciate the need and importance of the process of software development. Hence all the members must be trained on the basic software engineering principles, which include
• Software development life cycle models
• Software execution models
• Requirements specifications
• Design principles
• Implementation issues
• Testing methodologies
• Maintenance and configuration management
• Software metrics
• Basic project management principles
Quality Standards
Every organization must base its development process on international quality standards/guidelines. ISO 9000 and CMM are the two standards which have been recognized internationally. If the organization has already obtained certification, it is mandatory to train each and every employee on the quality standards and process definitions. Even otherwise, the project manager has to train the team members on the quality processes to be followed for the specific project. The project manager also has to invite the team members to actively contribute for the process improvement.
In small organizations, training the team members on Personal Software Process (PSP) would be very beneficial.
Ethical Issues in Software Engineering
Sometimes the progress of the project is jeopardized because of lack of ethical values in the development engineers. Some major problems are
• Due to ignorance or due to vested interest, some engineers may leak the commercial
information of the project to the competitors. Particularly engineers without any
practical experience may do such a thing out of ignorance. To avoid problems arising
out of such behavior, the project manager has to brief the team members about the
confidentiality issues.
• In the case of product development, the engineers have to maintain confidentiality as
regards the technical aspects of the project as well. Revealing the product information
to the outsiders may result in a competitor developing the same or similar product.
Enterprise Infrastructure
For dissemination of information to all the employees, no additional infrastructure is required other than the infrastructure available for development viz., a Local Area Network (LAN). All the employees’ workstations/PCs have to be connected over the LAN for easy access to the information stored on the servers.
The LAN has to be configured as an Intranet using the necessary hardware and software viz., a web server, a mail server, firewall software along with the browser software on each node.
Enterprise Information
The Intranet has to be used for dissemination of information to all the employees. The information can be divided under the following headings:
• Company profile: Information about the organization, history, client list,
profile of the promoters and stakeholders, projects executed, employees
details, divisions and products etc.
• Staff rules: Employee benefits, leave rules, promotion policies, salary and
perks policies, continuing education programs offered, appraisal system etc.
• Product documentation: Details of the products developed in the
organization, and the details of each product such as specifications, project
plan, design document, test plan, test reports, postmortem analysis report etc.
• Process documentation: Quality policy, formats for project proposal,
feasibility analysis report, SRS document, design document, test plan,
configuration management plan, test report, postmortem analysis report, user
manual etc.
• Forms: Forms to be used for making requests for changes in process such as
engineering change note, engineering change request, process change request,
process change note etc. Leave form, appraisal form can also be submitted
electronically over the Intranet.
• E-learning: The internal training program material containing the lecture
material, study material, e-books (books in electronic form), sample codes in
different programming languages, reusable code etc.
Enterprise Information Distribution
The information mentioned above can be organized as a simple web document (“Body of Knowledge”) and kept on the server. The typical home page of the Intranet for software development organizations is shown in Fig. 1. This essentially involves writing simple HTML code and providing the necessary links to various documents.
Accessing this information is very simple. One has to get on to the home page and click on the required links to obtain the required information. Of course, a web master has to continuously update the material for providing up-to-date information to all the employees.
Distribution of information using this approach has many advantages.
> Whenever a new employee joins the organization, lot of time has to be spent by
senior personnel explaining about the organization policies, rules and regulations,
products and divisions, and also taking around the library (the brick and mortar
library) and informing about the various manuals and documents available for
reference. Using the Intranet, this information is readily available literally, at
one’s fingertips. So, all the effort required in giving the necessary orientation is
saved. Also, since organization-wide information is available to all the
employees, the employee can get necessary information about other divisions, for
instance, when he/she is looking out for a change of division.
> During the course of one’s work, employees may like to refer the documentation
of the past projects, to get a design idea or to get a hint on an implementation
approach. As the product/project information is readily available, the employee
can refer to it easily without the need to make inquires as to who were the
responsible persons that worked on the projects.
During the execution of a project, every employee needs to refer to the process
documents. Because the process documents are continuously updated, if paper
documents are used, it is extremely difficult to know whether the document on
hand is the latest one or not. Over the Intranet, the latest process documents can
be kept and the employee is always sure that he/she is looking at the latest
version.
> When the employee has to make a suggestion on a process change, or obtain
information about the status of a proposed change, he need not run around, it is
just available on the desktop. Similarly, one can make requests for engineering
changes on the present work products to one’s project manager very easily.
> In most organizations, ‘reinventing the wheel’ is very common. Different groups
work on same or similar problem and develop code independently. Lot of time
and effort can be saved if reusable components/snippets of code are kept on the
Intranet to be accessed by all. Each component should have the necessary
information on the functionality, inputs, outputs etc. along with the author of the
code and the project for which the code was developed. This software component
repository would reduce the development time drastically.
> Continuing education programs are required to keep all the employees well
informed about the latest developments in technology and processes. To achieve
this, web-based learning is very cost-effective and the Intranet can be effectively
used. The complete course material (lecture material and study material) can be
kept on the Intranet for self-paced learning by the employees. This module can
also contain an objective testing software so that the employees can do self-
assessment on a particular topic which they learned using the on-line course
material.
> In addition to the above, lot of ‘tips’ can be shared by the employees across the
organization—when the engineers go for on-site development work in Austria
where to find good Indian restaurants, or which discotheque is the best in Jakarta
and so on.
> The latest ‘news’ can be easily given to all the employees using the ‘news’ facility
on the Intranet which can be updated regularly by the web master. Through this,
authentic news can be shared with the employees, and the employees need not
depend on the rumors that float around, particularly in large organizations.
To share information is of utmost importance in an organization as it increases the productivity of the employees tremendously. The Intranet provides an excellent platform for sharing the information as it facilitates easy storage, retrieval and updating of information. The project manager has to use this ‘Enterprise Information Infrastructure’ effectively for dissemination of information and also to inform of the new happenings within the organization.
To summarize, if the project manager designs an effective training program and provides an enterprise information infrastructure to share the information and knowledge, and then puts the engineers on the job, he/she can play golf! In most projects, there would be no training and hence the project manager struggles along with all the team members; and as the project deadline approaches, everyone spends sleepless nights.
