Webcam Chat QuickBooks Advice international calling cards international phone cards
JavaBeat Java Books Certifications Certifications Kits Articles Tutorials Tips QNA Book Store Interview Questions SCJP 1.5 SCJP 1.6 SCWCD 5.0 SCBCD 5.0 SCEA SCJA Feeds

PHP Team Development : Agile Works Best

Author : PacktPub
Topic : php books 
Pages :
Submit Your Blog Feedback Request Article Print Email

Title : PHP Team Development : Agile Works Best
Publisher : PacktPub
Topic : php
Related : Hibernate, Spring, Struts, ejb
Javabeat : Tips, Java / J2EE Tutorials, Certifications

PHP Team Development

This book is about ensuring project success for PHP teams. It explores technical as well as non technical aspects that matter when achieving project success. On the technical front, designing to divide complexity to conquer complex problems, keeping things simple in the design, choosing the right process, and monitoring and improving the process are important aspects. On the non technical front, making sure that they collaborate effectively, the team should be open to changes. The team should be open to user feedback. Having the right mindset about quality and other aspects related to project success are discussed.

What This Book Covers

Chapter 1, Software is Complex, explains the complexities that we face while working with today's software projects. PHP projects, some years ago, used to be small projects involving one or two people. However, today, we need teams of people for PHP projects. This chapter explores the need for teams for PHP projects. It also discusses how software engineering principles help with PHP projects. There is an increasing need to use a process for PHP projects. The complexity of having a team is figuring out how to divide the project's problem among team members and solve it. This chapter discusses how to divide and conquer projects. We will discuss how patterns help the PHP project to cope with complexity. Finally, we will explore how to use tools to manage the development and collaboration within the PHP team.

Chapter 2, MVC and Software Teams, discusses the MVC pattern in depth and how MVC can help in a PHP project. It also explores how to use the MVC pattern as the guiding principle to break down the complexity of a project, and how to implement MVC with a team. It also discusses the integration challenges that are faced in putting together all the pieces of MVC that are developed by different team members.

Chapter 3, Dealing with Complexity, discusses in depth how we can make use of software design patterns to cope with complexities in a software project. We will also discuss how PHP MVC frameworks simplify the complexity of a project. When using a PHP framework, there are a bunch of expectations; we will explore what to expect and what to look for in a PHP framework. The mere use of a PHP framework would not guarantee project success. Hence, we will discuss how to achieve team success with PHP frameworks in this chapter. We will also look at some leading PHP frameworks. Moreover, we will also learn how to make things simple while using a PHP framework.

Chapter 4, The Process Matters, explains the relationship between the process and the product. We will discuss, in depth, the consequences of ignoring the process and why the process must be respected. We will learn how to move from no process to having a process. We will explore the motivation that is required for a process, how a process helps, and does not hinder a PHP project. We will also study a simple process model that can be used for PHP projects.

Chapter 5, Agile Works Best, will introduce agile philosophy, including agile values and agile principles. We will discuss common problems and fears that developers face when developing a product, and see how agility can help to overcome them.We will discuss extreme programming principles, and also learn the advantages of agile process models. Finally, we will explore how we can achieve team agility.

Chapter 6, Ways of Collaboration, discusses the challenges faced while working with teams, and we explore the implications of assumptions made by team members. Then we will learn collaboration techniques for ensuring seamless integration of the various components and layers developed by the team members. We will dig into the details of source control, bug control, and configuration management, and learn how those relate to effective team collaboration. Moreover, we will discuss some tools that we can use for communication and collaboration.

Chapter 7, Continuous Improvement, will explain how to deal with change in PHP applications. In order to make sure the software that we develop is useful, we have to make sure that we are willing to embrace change and also be ready to evolve the system, as we move along. We also have to ensue that the process being used is effective. We will discuss how we can evolve the PHP application and also measure the effectiveness of our process. People development is also another important aspect of continuous improvement when ensuring success with teams. We will learn the team management and people development aspect in this chapter.

Agile Works Best

In the previous chapter, we discussed a process model that can be used for PHP projects. We can use the process model as the base for our projects and can also succeed with the projects that we are working on. If you have a second look at the process model that was suggested, you will note that the need for getting feedback from the users is highlighted in multiple places. This was done very consciously and with a purpose.

We are developing software for users, and we want to ensure that the software is really useful for the users. Over time, people working on this software have faced the same problem over and over again. Therefore, they have come up with a concept called agile development. In this chapter, we will explore the concepts of agile development and will also see how these can help us with the PHP projects.

In this chapter, we will cover the following:

  • Introductions to agile philosophy, including agile values and agile principles
  • Common problems and fears that developers face while developing a product
  • What is meant by agility and how it can help
  • Extreme programming principles
  • Advantages of agile process models
  • Team agility
  • Agile process models
  • Agile principles for the PHP project team

Introducing agile philosophy

Agile methodology consists of the following two parts:

  1. Agile values
  2. Agile principles

Agile values

Agile values identify the key characteristics of the way in which we develop software. These values attempt to avoid those practices and norms that tend to cause problems in the development of a software application.


	Manifesto for Agile Software Development:
	
	We are uncovering better ways of developing software by doing it and
	helping others do it.
	
	Through this work we have come to value:

	Individuals and interactions over processes and tools

	Working software over comprehensive documentation

	Customer collaboration over contract negotiation

	Responding to change over following a plan

	That is, while there is value in the items on the right, we value the items
	on the left more.

	Source: http://www.agilemanifesto.org/

These values try to address the key factors of success when it comes to developing quality software. The rationale is not to overlook the values on the righthand side, rather to focus more on the values on the left hand side. By having more of those values on the left, we become more agile, thus responding to changes quickly.

Agile principles

The agile principles help us to stay focused on agile values throughout the project's life cycle. These principles nurture agility in a project's team. The principles are as follows:


	Principles behind the Agile Manifesto

	We follow these principles:

	Our highest priority is to satisfy the customer through early and
	continuous delivery of valuable software.

	Welcome changing requirements, even late in development. Agile
	processes harness change for the customer's competitive advantage.

	Deliver working software frequently, from a couple of weeks to a couple
	of months, with a preference to the shorter timescale.

	Business people and developers must work together daily throughout the
	project.

	Build projects around motivated individuals.

	Give them the environment and support they need, and trust them to get
	the job done.

	The most efficient and effective method of conveying information to and
	within a development team is face-to-face conversation.
	
	Working software is the primary measure of progress.

	Agile processes promote sustainable development.

	The sponsors, developers, and users should be able to maintain a constant
	pace indefinitely.

	Continuous attention to technical excellence and good design enhances
	agility.

	Simplicity--the art of maximizing the amount of work not done--is
	essential.

	The best architectures, requirements, and designs emerge from selforganizing
	teams.

	At regular intervals, the team refl ects on how to become more effective,
	then tunes and adjusts its behavior accordingly.
	
	Source: http://www.agilemanifesto.org/principles.html

The following sections describe the agile values, as well as agile principles in detail:

Individuals and interactions

Agile philosophy values individuals and interactions over process and tools. In the process that was introduced in the previous chapter, the three main sub-teams working on the data, business logic, and presentation layers have their own activities to follow. Moreover, they have their own tools that they use. However, as it was mentioned, it is of paramount importance that each sub-team interacts with each other.

Not only that each sub-team should interact, but also, there should be a helping communication between the members within sub-teams. If the team members interact, it becomes so easy to solve problems, such as inconsistencies in the PHP code that is written and the user interfaces that are designed. Moreover, that will also enhance the reuse of the PHP functions, classes, and the written API methods. This is because through interactions, individual team members can educate each other on what the system has and what the system is about. They can also share their technical expertise. Programming can be done in pairs so that more than one pair of eyes would be looking at the code, as it is being written. However, interaction should not be restricted to only those individuals who work on the same code. Interaction should take place between all of the team members who work on the project. This is because no matter how large the software project or the product would be, they all work on building a single application. It needs to run as a single application at the end of the project.

When it comes to placing the members into sub-teams, it is useful to identify an individual's traits, preferences, and skills. Moreover, it is also useful for each individual in the team to get to know each other so that they can share and relate to know how, create better designs, and overcome problems by sharing experiences. After all, it is about that human touch among the members, and no process or tool can bring about that value into a team.

Working software over comprehensive documentation

We can spend weeks, if not months, documenting system requirements. Some call this analysis paralysis. You'll never get out of the system requirements analysis phase. However, what is most important is to get the software that we are developing to a working state. This is done so that the users can use it for real life tasks and get their jobs done.

Documentation is required for some aspects, especially when it comes to user documentation. However, that is also a part of the software. In the traditional software process, before any working piece of code was written, bundles of documents were written on what the requirements were and what the design should be like.

It is important to understand the user environments and have some reference points to refer to them if the need arises. Often, a set of diagrams alone can capture what is required, and we can move on to make the software functional.

Customer collaboration

In traditional software processes, there was this notion that the client would sign the requirement specifications before proceeding to the implementation phase. It is a fact of life that the real world changes. The requirement specifications that you signed today can expire tomorrow. Moreover, when the system is delivered, the client might see that the software doesn't fit their purpose. This will result in the system being discarded by the users and will be branded as low quality.

It is for this reason that there were so many user evaluation and feedback phases that were added to the process. That was introduced in the previous chapter.

When we closely collaborate with the clients, making them a part of the process, and giving them the opportunity to have their say early and often in the process, there are chances that we make the software that we develop fit the bill for their use.

It is often the case that the users will not know for themselves what they want. After all, if they knew, they would not have hired us to develop the software for them. They would have done it themselves. Therefore, it is our job to make them understand what they want, along the way, while we develop what they want. Moreover, you will note that the team will also be learning more and more about the system, as the project progresses. The best way to expand the understanding, both of the users and of the team, is to collaborate with customers very closely and on a regular basis.

Responding to change

Change is inevitable. Therefore, it is not feasible to stick to a plan and follow that. If we are to adopt a change, even the plan we should change over time.

A process model provides us with a framework that will guide us on what to do and when to do. It is a good plan to help us stay on the course. However, we need to understand the need for change on the part of the users. We cannot afford to not respond to the changes requested by users, simply because we are in the middle of our process (in other words, in the middle of our plans). It is for this reason that we should have ample room for incorporating users' feedback into what we are designing and developing. More often than not, feedback comes disguised, as the requests change. As the users do not know the internals of the software application, their wishes might be beyond the scope of developers. Nevertheless, these expressions from users will be an important feedback. The key to success is to make sure that all of the project's team, as well as the users, are comfortable with the changes.

Customizing agile to our needs

Every project is unique. Therefore, we can learn from agile values and customize them to suite our project's needs. The process model that was introduced at the end of the previous chapter is a good starting point. Moreover, we can follow that model with agile values in place. The process can be enhanced and complemented with agile values, and can be customized and fine tuned as the time goes by.

Submit Your Blog Feedback Request Article Print Email

Related Articles


JavaBeat Website (2004-2011), India
javabeat | advertise | about us | contact | useful resources
Copyright (2004 - 2011), JavaBeat


Technology Blogs
Technology blogs Technology Blogs
blog log