Skip to content

Maintain good project management

Markus Juntura edited this page May 30, 2021 · 5 revisions

Summary

Projects are inherently chaotic and the list of causing variables could be endless. Ranging from scheduling, delays or exceeding costs. It is therefore a prerequisite to be able to adapt to an unpredictable environment in order to overcome challenges while still exceeding expectations. This milestone was of utmost importance because it dictated our way of work. We adopted a mindset which permeated and left a mark on not only our product but also for the project as a whole. Certain success factors and ways of thinking enabled us to optimise our results and improve the probability of success greatly.

Success factors for our product

  • Continuous integration and improvement from start to finish
  • Embrace change and react properly
  • Frequent delivery with each and every sprint
  • Prioritise working software over extensive documentation
  • Responding to change over following a plan
  • Self organising teams and clear responsibilities
  • Regular reflection and adjustments

How good project management reflected in our work

In order to tackle any challenge we subscribed to the agile methodology which is an iterative approach to software development where software development of a large application is broken down into smaller chunks. Thus designing, developing and testing feature code in repeated cycles. Where in each iteration, additional features can be designed, developed and tested until a fully functional software application is ready for deployment. Our work was divided into smaller segments that build upon each other to facilitate prioritisation that reflect the customers needs. Taking into account unforeseen problems or new requirements that may arise. Our way of work was intended to allow for more flexibility and leeway, where continuous evaluation of each iteration is made to determine what changes are needed to produce a satisfactory end product.

Sprint iteration and task management

Each iteration was time-boxed and at the end we were expected to produce working code which we demonstrated to our stakeholders in order to allow for high level of flexibility. Not only that but also to exchange ideas, get feedback and listen to our stakeholders and view it from their lens. A perspective that is invaluable. Our efforts were also canalised into reducing the technical debt or the maintenance tasks required to support the product. Tasks ranging from fixing defects, refining features or any other maintenance tasks intended to sustain or improve the product.

Prioritization of the features into sprints

Because we chose to implement new features within a given project timeline we were faced with the risk of technical debt accumulating quickly and we aspired to achieve the contrary. Keeping it to a minimum. Therefore we added features or any possible revision or bug fix into our product backlog(ordered list of features) and during each sprint planning session we evaluated and determined what features to address granting us the opportunity to channel our efforts to new feature developments.

Adapt to changing requirements and implementation details

Like previously mentioned. A prerequisite was to adapt to change quickly. Customers and stakeholders can sway in their wants and needs during the entire project lifecycle. The true beauty of working in an iterative way is that the development team are not obliged to wait on a lengthy requirement change, review nor any approval process. Any desired change or revision is simply added to the product backlog and allotted time, effort and resources according to its priority. An adaptive and highly effective approach.

Agile collabration and communication process

Not only do we have to be adaptive to change but it required us to be more involved and engaged in the collaboration process. Unlike traditional ways of working where an overhead makes all the decisions. We as a team had a higher level of engagement. Reviewing, approving and validating whichever user story should be assigned to what sprint. Furthermore working as a cohesive unit in order to complete the items assigned to the sprints. In order for a continuous flow of communication between the development team we held daily meetings to ensure that all the group members were on the same song sheet, where we verified and worked closely with one and other.

Achieve quality development

In order to create high quality project the development of features was done in increments. Decreasing the feature into subsets and assigning them to each sprint making time for more fine tuning before release. Also continuous integration in the for of merging all developers working copies to a shared repository daily enables developers to test issues daily, detect bugs and most importantly address them quickly. An iterative approach ensures that after each and every sprint results in a fully tested and working product, ready for release and demonstration.

Continuous improvements

All in all in order to maintain good project management we adopted a way of thinking and a style of work known as agile methodology. We had a set of principles which we were able to fall back on while still having a high degree of flexibility and adaptiveness. This was adopted in order to improve the probability of success. Proven methods often times generate proven results. It offers a greater sense of predictability in an industry dominated by unpredictability. Evaluating intangible products is never easy. Especially software. Measurements are hard to make. And upside is even harder to predict. But agile methodology offers us a framework. A way of working. Where we canalise our efforts into fine tuning, reviewing, updating and splitting decision making so that an agreed upon solution is generated. Collecting the collective opinion rather than having overheads override them. Utilising our collective knowledge and expertise in order to optimise our results and increase the probability of success.