Our new clients often come to us with stuck software projects (those that have no defined next actions) and ask us to help them sort out the cause. Does the problem lie in poor management? Maybe the team is working inefficiently? As we’ve solved such puzzles many times, we’ve learned all the common obstacles to successful development. We would like to present them to you in this post.
Before figuring out why their project is stuck, we tell our clients that any project should always have goals. The quality of the product can be measured by their achievement. In other words, the client’s requirements, vision, and priorities lay the groundwork for the software quality indicators (SQIs). They are essential to the definition of quality measures reflecting the presence (or absence) of desirable software product attributes.
In addition to achieving goals, the quality of work is indicated by meeting the project’s budget, deadlines, and implementing the needed features (scope).
At first, you may think that achieving quality excellence is clearly defined. But it gets confusing when development is in progress. This is because there are multiple factors that affect your ability to meet all the above-mentioned requirements. Let’s look at these factors in detail.
What are the factors of success for a software project?
In project management, the success of all projects is measured by critical success factors (CSFs). These factors vary from project to project. Depending on the project specifics, they might be as follows:
- Build a solution that reduces the time spent on a specific process from <X> hours to <X> minutes.
- Make a solution capable of withstanding a load of <X> million users.
- Achieve a profit of <X>.
- Complete the project before <Date>.
Unfortunately, not every software development company uses CSFs or understands how to define them properly.
Steps to identifying critical success factors for your project
- Brainstorm your project’s goals with stakeholders and your project team.
- Examine your goals to determine which are critical to the project and which play a supporting role.
- Narrow down your list of goals to the most essential for goal setting. We suggest choosing no more than five, and fewer would be even better.
- Choose metrics for measuring progress toward critical goals and decide how that progress will be monitored.
- Discuss and document all of the above-mentioned decisions with all involved in the development process to make sure everyone is aware of task priorities.
When you've identified your CSFs, you can define Key Performance Indicators (KPIs). They are certain and measurable criteria to estimate team performance. KPIs will provide you with the data helping to check out if CSFs have been met and if goals have been achieved.
KPIs are usually more specific and quantitative than CSFs. For instance, the CSF "Customer satisfaction" might generate the KPI "the number of daily or monthly users."
Then you’ll be ready to draw up a project management plan that contains project scope and an objective. We invite you to read about the niceties of such planning and project management at Yalantis here.
Let’s now switch to identifying what might hinder the success of your project.
What are the barriers to the success of IT projects?
There are lots of factors that might affect the quality, schedule, and budget of an IT project. Some are beyond the control of software developers. The following are a few examples:
Lack of clear goals. A project plan highlights the goals and expectations for the project and the approach the development team will take to get things done. Without a clear project plan, your team doesn’t know where they’re trying to go, wasting time and resources.
Frequent changes in requirements. When changes occur too often, your project experiences delays. Keep in mind that even a small change in functionality (like adding a social media share button) may result in extra hours of building and testing.
Delays in stakeholders’ feedback. If a development team has to wait too long for stakeholders’ responses, this results in schedule delays and stretches the project timeline.
High level of uncertainty as the project begins. Budgets are estimated based on what’s known when the project begins. At the beginning of the project, it’s almost impossible to forecast all the steps required and how long they’ll take, partly because of unpredictable events. Such uncertainty might result in schedule delays, poor estimates, and multiple change requests.
All these issues with a project can only be identified when the work is underway. That’s when you need to use high-performance tools to measure how effective your development team is. You have to check if your project meets the budget, timeframe, and other requirements.
Let’s look at the practices commonly used to identify issues arising in the development stage.
Read also: The Role of a Business Analyst at Yalantis
Tools used by Yalantis to measure the development team’s productivity
We use the following tools to examine software and project processes and check that they meet standards.
Flowchart. A flowchart visualizes organizational processes. You can use a flowchart to see how tasks in a project are related and what they depend on.
We typically use flowcharts to set up development processes. For the Re-turnz project, we had an issue with communication between team members. Applying a flowchart helped us investigate this issue. As a result, we added a new validation stage and improved the process of communication between our business analyst and designer. Using a flowchart allowed us to eliminate the problem.
Scatter diagram. A scatter diagram finds correlations between two sets of data. This tool will help you determine what’s affecting the performance of your team. For instance, say your QA team has built several test cases. A scatter diagram can help you find out if these test cases increase the number of bugs found. In the example below, we see that when the number of tests increases, fewer bugs are detected. This chart shows the correlation between the number of test cases (the independent variable) and the number of defects (the dependent variable). In our example, with 25 new test cases, fewer than 10 bugs are found, which we consider an acceptable number.
Burndown chart. You can use a burndown chart to define the amount of teamwork that has been done on a project during a certain timeframe and compare it to the amount of time available to implement the project. Burndown charts are an effective tool to check completed work and pending work during specified time frames.
Aside from the above-mentioned tools, we use a complex system called the PDCA Cycle for identifying and solving development issues.
PDCA Cycle for improving the development team’s performance
At Yalantis, we use an iterative management structure that helps us concentrate on ongoing process improvements. It’s called the PDCA Cycle, and it consists of four stages: Plan, Do, Check, and Act.
During this stage, we identify the root cause of the problem and create a plan to solve it. This stage includes the following steps:
Root cause analysis
Root cause analysis, or RCA, covers a range of approaches, tools, and techniques to determine the causes of issues. RCA implies that when you see a visible problem (for example, you’re not meeting the deadline), you have to move through first-level and higher-level causes to get to the initial cause and eliminate it.
A popular tool for root cause analysis is a cause and effect diagram, which helps you write down the causes of an issue.
At Yalantis, we weren’t able to meet the deadline for the Re-turnz project. At the negotiation stage, we promised the client to finish part of the scope within a fixed budget. But during development, we changed the contract from Fixed Price to Time & Materials. This decision was taken based on root cause analysis. Thanks to this change, we managed to meet the deadline.
Deciding on potential solutions
Once you’ve identified the root cause of the problem, brainstorming is a must to decide on possible solutions. The team that performs root cause analysis should consist of those who are involved in the business process related to the software project, as they’re highly informed about the niceties of the project and interested in improvement.
It’s great if you supplement the team with a manager who can make decisions on implementing solutions, a specialist involved in the problematic process, and a quality improvement expert. One team member should be responsible for tracking the progress of analysis and for making sure that tasks are assigned to different team members.
Picking and designing the most relevant solution
Once you have a list of solutions, decide on the one you consider the most effective for your context. Then bring in specialists who will design the solution and work out the details.
During the Do phase, you should create and implement action and change management plans. The time required for making improvements depends on what needs to be done.
In the Check stage, you should review the results of the undertaken implementations to figure out if the problem has been solved and the benefits quantified. Talk to specialists directly involved in the change activities to get their feedback. Collect new data and compare it with the previous data to check the results.
During the Act stage, make sure the change is incorporated into standard work which is a detailed definition of the current best practices for performing an activity or process. In case additional implementations are required, use the Plan-Do-Check-Act methodology again until the change is incorporated into standard work.
Other solutions for improving the effectiveness of your development team
Depending on the specific issues in your project, there are lots of practices you can use to improve its implementation. The following are the most common solutions for streamlining software development.
Change a team member
How to form a successful development team? By choosing specialists which suit your project best. The right employee not only brings specific skills and knowledge base to your software development ecosystem but is essential to drive forward a stuck project.
Increasing the number of team members
How to build a software development team? In many cases, adding people to a software project will speed up development.
On one of our projects, iOS app development got ahead of Android by three months. This led to an idle period for the iOS development team.
We managed to tackle the problem and ensure effective work by adding Android developers and replacing poor performers with strong ones. As a result, the Android team made up for lost time on short notice.
The devil’s always in the details. This idiom comes to mind when reflecting on development process improvements, as there are many factors that might block a project.
Poor communication is one of them. Spending an excessive amount of time on communication might signal that you should improve your communication methods. Sometimes, just adding groomings, standups, and other Scrum ceremonies might be the solution.
Are you finding lots of bugs? Implementing quality assurance and quality control processes is likely to solve this problem. Problems blocking the process might also hide in a particular module of a product under development, person, or task.
Conducting root cause analysis will help you figure out what’s causing the problem you’re facing.
Solving motivational issues
Psychological and human factors also affect employees’ motivation, including burnout, cultural incompatibility, and insufficient understanding of the purpose of a task.
Make sure your development team doesn’t just get tasks but knows why they should complete them and what the ultimate goal is. Organizing a teambuilding activity and one-on-one meetings (between, for example, a team member and a team lead) are good ways to unite and support your employees. At Yalantis, we plan activities devoted to making our employees feel heard, prepared, and recognized. This also helps us nurture effective teams of developers and contributes to building successful projects.
Does hiring new developers improve the development process?
Many executives rely on software talent too much when creating development teams. But hiring the right developers is time-consuming. You need to conduct interviews, check references, and negotiate salaries.
According to ManpowerGroup, 72.8 percent of employers are experiencing trouble finding skilled candidates. Moreover, if the project you need developers for is not related to your core business, it may become a huge burden on your IT resources. This is likely to result in unsatisfied employees and a poor-quality product.
On the other hand, we’ve repeatedly seen that if done wisely, adding more people to a project leads to smoother development and constant improvements.
Today’s enterprise environments are extremely volatile, uncertain, complex, and ambiguous. Be agile and consider applying such techniques as DevOps and technologies as cloud technology to keep up with the times.
Approaches devoted to building an effective software development team are great. But sometimes you can choose to delegate some or all of your software development to a software provider. Many market leaders including Slack, GitHub, and Alibaba have outsourced software development to expand their business. If you’re considering software outsourcing, we’ll be glad to help.