Monday, November 1, 2010

Who is the Project Manager?

A project manager is a professional in the field of project management. Project managers can have the responsibility of the planning, execution, and closing of any project, typically relating to construction industry, architecture, computer networking, telecommunications or software development. Many other fields in the production, design and service industries also have project managers. image

A project manager is the person accountable for accomplishing the stated project objectives. Key project management responsibilities include creating clear and attainable project objectives, building the project requirements, and managing the triple constraint for projects, which is cost, time, and scope.

A project manager is often a client representative and has to determine and implement the exact needs of the client, based on knowledge of the firm they are representing. The ability to adapt to the various internal procedures of the contracting party, and to form close links with the nominated representatives, is essential in ensuring that the key issues of cost, time, quality and above all, client satisfaction, can be realized. The project manager job is an interesting job. Running a project means that no two days for you are alike. There are new challenges and bridges to cross on daily basis in your trajectory to accomplish the project objectives.

 

Project Management Skills

Project management skills require that you tolerate politics and can manage people. As a project manager, you have to manage your own team and the relationship with other departments who are either stakeholders or suppliers of certain components for your project.

Leadership skill is the art of the project management skills. Project management is all about getting people to do what you want as a project manager. You need to establish who will work with you and who will work against you. Informal chats help a lot in this sense. Your previous experience with colleagues helps, of course.

As you start your project management job, you will notice that these skills are essential:

  • Team Building
  • Conflict Resolution
  • Negotiation
  • Lobbying
  • Delegation
  • Mentoring
  • Coaching and Training
  • Communication and Presentation skills are key skills of the project management skills required for a successful project manager. As a project manager, you need to convince many department heads of helping you accomplish the project objectives. Your presentation skills with be of at most importance.
  • During any project, your Time Management skill as a project manager could be mean your survival. Wasting time on unproductive meetings, or unscheduled lengthy phone calls could add to your stress and cause the project to fail.
  • Your "Know How" of the project subject matter is very important. You need not be a very technical person in the subject matter to manage a project. However, you still need and require some background to it. Don’t expect a civil engineer project manager to manage an IT programming project. It simply does not work.

Tip: Be careful, project managers are looked at the people who don’t have a real job. It is a perception that you might have to live with.

The project management skills require that you understand the following in more details:

  • Project manager job
  • Software development lifecycle
  • Initial project planning process
  • Project team building
  • Project financial planning
  • Project implementation plan

 

The Project Manager Job

The project manager job focuses on certain responsibilities and challenges during the execution of the project such as:

  • The project itself in terms of meeting its Objectives, Budget and Schedule.
  • Your Team: working as one team and keeping everyone informed is a real challenge. Most probably, you will face the misconception that you left someone behind. Don’t worry, inform him or her and make sure that the process never fails you again. Team building exercises don’t have to be outside the office. The project team should always get together formally and informally to bond or as it’s called now a days "Loving".
  • Your Employer: You need to maintain the expected benefits of the project to your employer. You need to maintain the ethics, and policies of your organization. The information sharing with management, secrets of the project, and lessons learned are of most importance.

 

Project Manager Challenges

The project manager job brings with it many challenges. It is a fact that project managers are responsible, but they rarely have the authority.

You cannot "force" others to help you accomplish the project. You have no authority over them. You have to convince them to assist you. This is where your Leadership skills kick in.

Most likely, your team members will come from different department and backgrounds. In a short time, you are expected to get them all to sing, i.e. work, together in harmony. Your management skills should help you face this challenge which is a common phenomenon of the project manager role.

An interesting challenge we noticed with the project manager role is that he or she never have a say in the target date. This date is usually set by the customer or management. Proper scheduling and resource planning should help you around this challenge.

Some project managers are able to deal with such types of stress by taking the stress and don’t passing it to their teams, other project managers just transfer the stress to their teams.

“Project Management can be defined as… a way of developing structure in a complex project, where the independent variables of time, cost, resources and human behavior come together.”

- Rory Bruke, 1999.


Saturday, October 30, 2010

Software Development Lifecycle (SDLC) Models

Outline of software development models

SDLCs are meant to present an outline of software development teams can cling to. These lifecycles can be distinguished by their way of dealing with the different activities in the evolution of the software as well as their way of handling problems that arise during such a development. There are two types of models: those that go through each of the activities sequentially only once and those that go through each of the phases many times. Those that execute the stages in a lifecycle iteratively produce different artifacts (such as prototypes as well as documents) after each iteration. The major benefit is that even if the whole project is cancelled there are pieces left that could be used in further projects or developments.

Be aware that there is no one best practice for every development process. The following is just supposed to list the most common ways of managing software development processes. Depending on the company structure, complexity of the project, customer requirements and team size as well as knowledge in and usage of tools each of these models has advantages and disadvantages.

Frequently, several models are combined into some sort of hybrid methodology. Documentation is crucial regardless of the type of model chosen or devised for any application, and is usually done in parallel with the development process. Some methods work better for specific types of projects, but in the final analysis, the most important factor for the success of a project may be how closely the particular plan was followed.

In general, an SDLC methodology follows the following steps:

1. Requirements Analysis: The system requirements are defined. In particular, the deficiencies in the existing system must be addressed with specific proposals for improvement. This can be done by interviewing users of the system and consulting with support personnel.

2. Design: The proposed system is designed. Plans are laid out concerning the physical construction, hardware, operating systems, programming, communications, and security issues.image

3. Construction: The new system is developed. The new components and programs must be obtained and installed. Users of the system must be trained in its use, and all aspects of performance must be tested. If necessary, adjustments must be made at this stage.

4. Integration & Functional Testing: The system is put into use. This can be done in various ways. The new system can phased in, according to application or location, and the old system gradually replaced. In some cases, it may be more cost-effective to shut down the old system and implement the new system all at once.

5. Acceptance: Once the new system is up and running for a while, it should be exhaustively evaluated. Maintenance must be kept up rigorously at all times. Users of the system should be kept up-to-date concerning the latest modifications and procedures.

There are various approaches to managing project activities including agile, interactive, incremental, and phased approaches.

Regardless of the approach employed, careful consideration needs to be given to clarify surrounding project objectives, goals, and importantly, the roles and responsibilities of all participants and stakeholders.

Waterfall Model

This is one of the sequential activity centered models. All of the software development activities are performed in sequence and there is no iteration. All requirements for one activity are completed and reviewed before the next activity starts. The goal is to never turn back once an activity is completed. image

This model is quite easy to understand by each of the parties involved in the process.

However, due to its sequential nature, this model is not capable of dealing with iterations and evolutions. It can't deal with changes and problems that arise during one of the activities since it does not consider a second iteration in one stage. Furthermore, tests aren't mapped to the corresponding activity. Once a phase has been considered complete the results are not going to be changed and are used as input for the next phase. Most of the time, this is too rigid.

Once a project is cancelled, no prototypes or solutions are present that could be reused since the whole development process has to be aborted once a problem is found that had to be dealt with in an activity before the problem arose. The whole development process is lost and no money can be made out of single components or modules that were already developed.

The waterfall development model has its origins in the manufacturing and construction industries; highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development.

Spiral Model

This is one of the activity based iterative models. It deals with iterations and changes in activities. All of the waterfall's activities are extended into a cycle. Each cycle consists of four phases. In the first phase determination of objectives, alternatives and constraints happens. Alternatives are evaluated as well as risks being identified and resolved in the second phase. In the third phase the development and verification of the current cycle happens. The last phase is used to plan the next cycle. For each cycle the distance from the center measures its proximity to the final product and cost whereas its angular coordinates show the overall progress.

An advantage of this model is its ability to connect objectives to product developments. Risks management is also considered as well as iterations of tasks. It actually combines both development and evolutionary approaches. But the most important advantage is that there are prototypes even if the whole project has to be cancelled.

Spiral Model

Nevertheless, it's quite hard to apply in real world scenarios. This model demands many activities in each cycle and requires quite some knowledge in risk management to consider all of the necessary circumstances. Changes in between the cycles are possible but not within one cycle.

Agile Model

Most people have heard of this already as it's been relatively new and most controversially discussed. However, it might also be the one closest to real life scenarios.

There are only four activities: coding, testing, designing and communicating. All of these activities are performed by each of the programmers involved in the project. No documentation is produced as the code represents all design decisions and thus all the knowledge. Pair programming is one of the key concepts in AGILE: two programmers sit in front of the screen and share both knowledge and decisions. While one of them is writing code the other one is keeping an eye on design errors or implementation errors. This way small parts of the system are developed, errors are supposed to be small and there is another person at hand who knows how to move on when one gets ill. The customer is always ready to hand, so that if requirements problems or other problems arise there's always someone to ask.

agile

Together with the manager the customer divides the program into sub-projects that can be dealt with in a certain amount of time (normally one week). This way the customer has the possibility to control the development, costs and can change requirements in between each of the phases. By letting the customer write acceptance tests first, the programmers understand what their goal is, what their program is supposed to do. But the programmers write tests, too, to see if smaller components of the system act the way they're supposed to. After each week the programmers and the manager meet in order to discuss the status and the achievements of the developers. In those meetings the other members are only supposed to listen. After those meetings the members could discuss certain things or have a look at the code.

One of the main advantages is that the customer is involved during the whole development process. And by dividing the project into smaller projects the customer is even able to redefine goals in between the phases. The programmers concentrate on programming and deal with what they're supposed to deal with most of the time: the code. Repeated and also regression tests are used to guarantee quality code.

The drawbacks are obvious: as all of the programmers are dealing with the complete code and all of them are responsible for the whole code, it's hard to catch up at large projects. Empirical studies have shown that AGILE only scales up to 10 programmers. Everything above that creates an immense amount of work for each of the developers.