Saturday, 24 March 2012

blog #3, Reflection on Project Development


During the short 12 weeks that we have for this semester, I am glad to work with a fantastic team comprising of Darren Gavin, Zhang Xi and Faizan Abid for the CS2103T project.  Throughout this project, we have gained valuable technical skills in designing and implementing a software system. We have also acquired essential soft skills, such as communication and problem solving techniques, which is necessary when working in a team.  In the following paragraphs, I shall dicuss the lessons learnt during the development of the project. They include the preparation, project management and communication aspect of the project.

Preparation
Before embarking on a project, it is imperative to prepare and plan for the processes required to achieve the project goals. Change management is one of the most important processes in project development but it is often neglected. Change management seeks to introduce and approve changes to the project in a formal manner. In this way, it minimizes the impacts on the project and avoids distraction.

In this project, I have learnt the importance of change management the hard way. For example, in the early stage of the development, we have failed to include proper change management procedures into our workflow. As a result, I unwittingly undid changes made by Zhang Xi and Darren Gavin when I modified the code databases without consulting the team first.

Thereafter, we developed a system of early and continual evaluation, so that new additions of codes could be assessed and compared, at the earliest possible moment. This gave the opportunity for members to learn from each other and for changes to be validated against the project specification. I would recommend every software project team to include this step into their process workflow as it lowers the chances of mistakes when changes are introduced to the project.

Project Management
For the project management aspect of the software system, I have realized the significance of implementing a project in phases. Our team faced a manpower crunch in the early stage of the project. After consultation, we decided to break the project into phases and to concentrate all our effort into one phase at a time. This reduced the chances of our team spreading the resources too thin. This also allowed our group to review our progress at the end of each phase, and make the changes accordingly for the next phase. I would advocate teams with limited resources to go with this approach as it maximize productivity.

In addition, we also put in place a well-structured and documented agenda of meetings and internal deadlines. I feel that it is useful as it provided a clear framework in which issues could be monitored and debated, decisions made and communicated, in an effective manner.

Communication
To ensure effective communication, we employed a wide variety of communication methods for project discussion and information dissemination. These methods,include regular project meetings, facebook group and NUS email system. I believe this approach has helped our group to establish trust and create a conducive environment where innovative ideas are born.  

In conclusion, I have reflected on my experience for CS2103T project. I have detailed down the aspect of the project that worked well and also what we would do differently if we were to do a similar project in the future.