AgileDev’s consultants have successfully developed numerous software projects in the government and private sector over the last ten years.
It is our experience that the problem with traditional waterfall development is the assumption that the user knows exactly what they want at the beginning of the project. Realistically, users know their business and can judge what great software is but do not know how to make great software, that is the job of the agile software developer.
We employ Agile and Lean methodologies as ways of managing a software project that work because they acknowledge users and developers must work collaboratively to create great software solutions. Whether the software development is supporting an AI outcome or it is a conventional website development, we use Agile and Lean methodologies to manage the development and its risks.
Principles of Agile/Lean Development
- Eliminate waste by only developing features that add value;
- Amplify learning: software is a learning process and users understand screens better than large word documents so prototyping is a preferred method of communicating requirements;
- Decide as late as possible: During a development there is always areas that are more volatile in terms of business requirements than others, these need to be identified and deferred to later sprints;
- Deliver as fast as possible: four to eight week sprints ensure users are always getting potentially shippable software. At the end of each sprint, the user should gain more and more confidence that the system is being delivered;
- Empower the team: our developers are senior business analyst as well as programmers. The project lead is the lead designer as well as a development manager;
- Build integrity in: The initial sprint often builds the framework of the software which other sprints fill in. Feedback from each sprint is used to inform subsequent sprints.
Agile/Lean works best with development teams creating potentially shippable releases (sprints) to the users every four to eight weeks. Lean development principles are useful to organize sprints to give the greatest value to the user. The major principles are:
Our Typical Project
- User nominates a program/project manager and a key user/s. Key user may have already written system requirements specification;
- We nominate an initial development team of lead developers (usually one or two);
- A prototyping/design phase occurs immediately with the key user and lead developers. Our experience is that the best way to communicate information about software is to create working prototypes. Since the lead developer is involved, the working prototypes can become very functional from a UI point of view. Database design is done concurrently with prototype development which creates a feedback loop into the prototypes and ensures the prototype can be built;
- Generally the whole system to be developed is prototyped at the beginning of development since the prototypes serve as the scope for the entire project. As requirements change the prototypes are changed;
- Once the prototypes are stabilized and designs complete, the development phase starts. At this stage the team may grow. Principles of Lean development are used to create a sprint schedule (each sprint goes between 4-8 weeks);
- At the beginning of each sprint a formal design of the parts of the system to be developed is created;
- During development a daily scrum between developers and key users is conducted to discuss development and change variation;
- The final week of a sprint is dedicated to formal unit and integration testing;
- At the end of each sprint, a system functional testing and UAT test cycle occur;
- Progress is tracked at the sprint level using daily task based timesheets; and
- High level management reporting is done in Microsoft Project.
Our typical development involves: