The majority of outsourcing projects are developed within the scope of methodology that are often called as “flexible” (Agile). As a rule, these methodologies are really too flexible and applied on a variety of customers’ requirements. In addition, companies that are involved in outsourcing, often identify themselves as “Agile-oriented", and embellish this orientation to the customers.
What risks exist for the client using Agile/Scrum?
It’s sometimes hard to precisely estimate the cost of the development of a new product at its early stages. Agile assumes constant changing of the product according to the customers’ and market needs. So, one day a client may discover that the expenses have overcome the initial level.
What we do to prevent the budget risks
The best thing we can do here is to propose LEAN development to manage the cost. The team estimates the work step-by-step, module-by-module to make the numbers as accurate as possible. We can also use Rolling Wave Planning. This method implies making the decisions and giving estimations when all the necessary requirements are absolutely clear. To reach this point, we apply best practices in business analysis and teamwork to help clients find the best solutions and estimate the efforts precisely.
Scope creep risk
This risk assumes scope changes during the development that lead to shifting timelines, changing deliverables, and budget increases.
What we do to prevent the risk of scope creep
To avoid scope creep and to meet the deadlines, we usually suggest splitting the development into several phases, like MVP, 1.0, 1.1, etc. It helps to keep the scope for each version more or less stable, though several adjustments can be made.
Not sticking to Agile principles
This risk is related to applying Agile while sticking to traditional management principles and approaches.
What we do to prevent the risk
If clients don’t feel confident about understanding Agile/Scrum principles and values we explain them and can teach how to apply them appropriately. At the same time, we monitor how clients apply the principles and may guide them during this process if needed.
Agile is not suitable for a project
Agile is not applicable to all kinds of projects. Some of them need a traditional management approach, close to Waterfall.
What we do to prevent the risk
So, if a client wants to use agile on projects that are not suitable for it because of many reasons (clear scope, clear requirements, fixed budget, etc) we try to persuade them to use another approach that will bring more profit. The recommendations are based on common sense, business needs, and project details.
Agile implies constant changes and it is hard sometimes to give long-term predictions. It also deals with shifting deadlines and reputational losses for the vendor.
What we do to prevent this risk of less predictability
Again, we split a project into smaller phases, clarify requirements in detail, and then give our forecast on delivery. In its turn, it helps us to give forecasts on budget and resources needed so the clients will know when they will receive a new piece of their system and how much it will cost. All these factors help us to keep clients’ satisfaction level at its highest point because deadlines are met, the scope is done according to previous arrangements, and clients receive the product they need. Following these steps helps us to keep the company reputation at a very high level so we can guarantee that clients will receive top-class services and top gear products.
What risks exist for the vendor using Agile/Scrum?
Lack of Staff Knowledge
Agile/Scrum needs qualified team members to run it smoothly. If the dedicated software development team doesn’t understand what Scrum is about, then they might get into trouble during the project progress. Another consideration is the skills each developer possesses. If someone is underqualified and doesn’t get proper training or support it can also destroy all the benefits of using Agile.
What we do to prevent the risk
To avoid this situation we always gather a team of skilled developers who understand Scrum and value its principles. If some of the team members don’t have much experience, they can ask for help from their colleagues. We promote and support knowledge sharing and mentoring practices to teach and coach the developers.Constant retrospective meetings help us to keep to Continuous improvements practice.
A sudden stop of work
This risk might happen when the product doesn’t fit the market anymore or the initial goals were set wrongly. It leads to a sudden stop of work and, as a result, the company and resource managers have to put extra efforts to avoid idle time.
What we do to prevent the risk
At the very beginning of a project, we conduct a discovery phase to learn more about the product, its purpose, and its functions. Our business analysts try to bring proper ideas and advice to clients on how to improve the product and bring more value to the end-users and market. They stay in close touch with Product Owners during the whole development process and help them to find the best solution if needed.
Changes in a project cause changes in code and it can lead to technical debt and quality problems, low system performance, etc.
What we do to prevent the risk of technical debt
Before the project starts we clarify the non-functional requirements related to performance quality etc. After that, we design system architecture in a way that is applicable to these requirements, like modular architecture or microservices.For managing the quality of the final product, each user story or task has its own acceptance criteria and definition of done. For some complex projects, we use several stages, usually close to production one to make sure that the system performance and quality will fit the non-functional requirements agreed upon.
Why Agile Is Good For Customers
The essence of Agile approach for customer can be briefly stated as follows:
- Development is carried out by short cycles (iterations) in 1-4 weeks;
- Customer gets a valuable software (or part thereof) at the end of each iteration, which can be used in business.
I’ll try to look into the following questions: Why are customers so fond of Agile? Why is Agile good? Why is Agile so popular?
First, let's leave technical details, and switch to something more important: evident and hidden clients’ expectations. That’s often determining the choice of operation method, rather than rational discussions and accurate calculations. Thus there are 4 main reasons why customers love Agile:
Agile is fast
Agile-principle speaks about upbuilding some set of functions within each iteration. But in order to be ready within one small iteration these rapid changes shouldn’t be large. Therefore, Agile-approach allows you to:
- More quickly implement any customers' wishes
- Launch a product or its new version quickly on the market as there is no need for detailed documentation and planning in the beginning.
Agile is cheap
- No need to spend money on architectural design. For majority of customers, people from business environment, it’s totally unclear and it’s not necessary to spend their time and money on this. It’s better just to start doing something that "works here and right now".
- No need to spend money on documentation. The developers have special tools for documenting, recording, classification and systematization of all customers' wishes. If customer has a good Agile team then he can be sure that even if he wakes up in the morning and while he is brushing his teeth and sending any ideas via iPhone for developers team, these ideas will be immediately added into the system as stories / issues / requirements / improvements, and they will never be lost as the developers team will take them into account.
- No need to overpay for development.
- Agile methodology usually allows to reduce hours on project compared with Fixed Price method as business analyst doesn't include "Fix price risk airbag" as an element of insurance in the budget, because it’s just not necessary since Agile is paid based on hours spent.
- And of course customer quickly gets a software with minimum investment (or part thereof), which can be used in business.
Agile is easy and comfortable
Agile works as a set of control lights on dashboard. Do you like to drive? Do you like that dashboard allows you to control all car parameters? We think ‘Yes’. For example in our company using Agile methodology we provide "dashboard" of project for the customers where they can answer the following questions:
- What issues does team have?
- Who is the executor of a task?
- How many tasks do developers have currently?
- What priorities do tasks have?
- How many tasks have a certain status and priority?
- What issues or tasks will be launched next sprint?
- When will a sprint be launched?
- What tasks have "in progress" status?
- What tasks were already finished by developers and what tasks have been verified by QA-specialist
- If project has a problem, then "light flashes" immediately - the team can see it and fix within hour or to the next release (depending on the priorities). We allow our clients sleep well - as we have everything under control!
- Are you far away from your developers team? Are you in a different time zone? Don't you have clear requirements for the software? Usually if a customer is in a neighboring building he can come to the meeting, clearly represents the final view of his product and describe it to the project team, then any development methodology will work practically.
But when you have a distributed team, difference in 3-12 hours with the customer and the project's field is little-known for you and your developers then you are ready for experiments, failures and successes, then Agile is the only way to work in such a complex and uncertain environment, where the main goal is to take on a market and to be competitive on it.
For Developers Team:
- “JIRA” as Tasks & issues tracking system. This is a wonderful helper that allow us to classify all incoming tickets from the customer in a single structured place. Using tasks & issues tracking system is a guarantee that you will not lose any customer's requirements and develop them. Let your customers feel like at home! Put on his comfortable house slippers!
- “Confluence” as Team Collaboration Software. It’s one place for keeping of all docs, easy and quick search, collaborating on technical documentation, description of API, a manual with project participants, main decisions, meeting results, project files, test cases, final design, shared links, etc. This system makes that easily accessible. Even if tomorrow someone leaves your team, the customer will be sure that new employee will quickly join the team and easily learn the basic aspects of technical description. Let your customer to feel confidence in the future in this very unstable world!
- “PHPUnit” as PHP Testing Framework, Source code review and refactoring …. Work speed using Agile may entail some mistakes from release to release. Sometimes it’s very difficult to track these bugs so don't lose sight of it.
- Unit tests allow to check source code quickly for any changes that could lead to regression and mistakes in the already tested parts of software, as well as facilitate detection and elimination of such mistakes.
- Source code review and refactoring. Periodically Team Leader reviews the source code of all team developers as an independent expert, thus the overall quality of source code increases from iteration to iteration.
Use unit tests, source code review and refactoring today and keep your customer’s money tomorrow!
Agile is safe
Do new requirements in Agile project and a speed of work influence the quality of the product?
Customer shouldn’t think about it. He doesn’t need to take responsibility for decisions. Today customer wants one thing, tomorrow – he wants another and that's fine. If the customer will change his mind – it’s not a problem. There are always Team Leader, Senior Developers and guys with a huge work experience in Agile project and they understand the importance to build cross-platform, cross-browser, mobile, easy and scalable solution. There are main principles of our team, which allows our customer to:
- Make a demand on project: the requirements with any complexity and importance
- Cancel previously specified requirements and replace them with others.
- Do it at any project stage
For example today the customer wants to do only 10 functional pages, which will be reloaded with page updating. Tomorrow the customer will ask to implement everything using AJAX technology, with the interactive user interface that allows you to receive data from server in a background and update pages without need to refresh it. This feature allows you to make the software faster and more convenient. No problem! This feature development takes about 5-7% of previous budget as frameworks/CMS/Libraries (Joomla! CMS, Symfony 2, CodeIgniter, YiiFramework, Warp, AngularJS, jQuery, Bootstrap, ...) allow to make it quite quickly.
And if something is broken? And if something suddenly stops working? And if there is a conference or a meeting tomorrow and I need to present my product ... What do I need to do?
Agile works only when it fulfils all certain conditions:
- Cross-functional team of highly skilled professionals
- Real customers’ involvement and his constant readiness to work with the team.
The main idea of Agile is close communication and cooperation with customer. That means that Agile methods are used for documentation shrinkage and getting high-quality software in a short period of time. It allows paying only for the results, which are worth for business.
Actually, if to be honest, most of the projects aren't "pure" Agile. Each project is a collection of iterative processes with their requirements, goals and development approaches. So my team is trying to combine the advantages of different methodologies (including Agile) in software development and thus offers our customers a truly flexible approaches in software development with a reasonable price based on the realities of pricing in Eastern Europe.
Dear reader, if you have any questions or you would like to start working with my team, please leave your questions and requirements to the software via our contact form with the mark «For Dmitry Garbar». I will be happy to answer any questions, advise you in the selection of technology and develop comfortable software product for you.