Starting a software project, it is wise to track its health and progress rather than just awaiting how it all ends. This is where key performance indicators (KPIs) come to the rescue. Software project KPIs are certain metrics that enable you to measure crucial aspects during the entire software development pipeline. This way you get a full understanding of how efficiently your project is progressing. Besides, armed with these indicators, you can identify certain project issues on the go and start fixing them on the early stage.
When you ask about software project KPIs is very likely you talk about key performance indicators for a software development team. These metrics cover the developers’ efficiency and can be assumed as a clue to the insight of project delivery date estimation. Note, this is not a question of the single developer’s efficiency but the efficiency of the team as a whole. After all, as a customer, you don’t need to know who exactly block or facilitate project progress. You need the job to be done within your deadlines.
When it comes to measuring software development team performance, there couldn’t be two similar KPI values for two different projects. Because each project is unique. Moreover, they are helpful only when they involve preliminary planning. In other words, you need to set certain targeted values first and compare actually achieved values then.
Here are some software development KPI examples for outsourced projects we will discuss here:
Team velocity shows how much value a team adds to the product within the set milestones and represents the team’s ability to hit project milestones and deadlines. Here there are two derivatives. First, team velocity per each iteration. Second, cumulative team velocity.
Typically, delivered value means features and functionalities built. However, when it comes to software development, value includes software quality and potential performance as well. For example, you can build a file storage feature for your CRM system that allows only 1 Mb files to be downloaded or a system that successfully deals with files of any size.
Here, you get a picture of your team performance within each iteration (or a milestone, if you choose). This kind of KPI metrics for software development is useful to understand at what stage blocks for the project have appeared and how efficiently the team has overcome them.
To measure team velocity, check how many tasks (scored, for example, in a story points) developers have implemented in each iteration. Ideally, the estimated and actually achieved numbers should match. If not, you need to analyze what has caused this deviation.Also, readjust the value after each sprint. Depending on the exact case, adding an uncovered task to the next iteration, you can either exclude certain previously included tasks or not.This is ok if the deviation arises at one of the iterations, though you always need to inspect its reason. On the contrary, the red flag is when the deviation repeats again and again or team velocity tends to slow down.
This metric deals with the team performance not during a certain period (sprint, iteration) but during all the iterations the project has gone through. In other words, it gives you an understanding of how efficiently your project progresses to its end. Moreover, it provides you with a clue on whether you will get your software on time or will face a delay.So, evaluate and set how much tasks your vendor’s developers should implement during one, two, and more iterations. For example, if you set three points to be completed within each iteration, you will score 3 at the end of the first iteration, 6 at the end of the second one, etc. The actually achieved values there should match the estimated ones after every iteration. However, it is ok if there is a negative deviation after one of the iterations. You need to be alert, but still, chances are the team will manage to get back on track in a few next sprints. The worst case is a continuous increase in deviation. This means, your project steadily run behind schedule.
Another useful example of KPIs for software development projects is cycle time. Cycle time stands for how many man-hours it takes to bring the exact feature to production and deploy in the perfect state. It includes the main time during which this functionality was developed and extra time to debug and improve it.
To clarify, often, new bugs and vulnerabilities emerge after you get your first product version regarding this feature. So, you have to open new tickets to get these issues fixed, and your outsourced developers work to eliminate these bugs and vulnerabilities.This metric is especially important when you are on a time and material basis. Definitely, in this case, the time your vendor’s software engineers spend actually working on fixing all the bugs and improving product performance and can be considered as your additional expenditures. As for the main time, the situation is similar. To clarify, it is the one thing when, for example, you estimate (and/or negotiate) the feature takes 50 man-hours to build, but the thing turns differ when you actually have to pay for 70 man-hours instead.So, the best (but, perhaps, rare in reality) case is when the cycle time is equal to the main time during which this functionality was developed. And, once and again, when the estimated and actually got numbers match.
However, it is worth mentioning that all key performance indicators are no more than indicators in their very nature. They don’t say for certain whether your outsourced software development team is good or bad. To clarify, they give you a direction where to be alert. Thus, you need to analyze each of these metrics and take into account all the factors that accompany and affect your project health.
The request for quotation (RFQ) can be regarded both as a procedure of choosing a vendor for a software project and a paper that contains an invitation to bid. For software outsourcing companies, it stays as a formal ask «What will be the price if I handle over my software project to you?». Here, we will guide you on how to write an effective RFQ.
First of all, it is worth to mention, in software development an RFQ is not only for big companies with formalized business processes and the cost as the main deciding factor. This request serves well for small or medium-sized businesses and is suitable even if you go to a freelance platform with your software project.A good RFQ hits two goals simultaneously:
However, note a request for quotation is not a counterpart of a request for proposal (RFP), where software development outsourcers shall provide more details regarding the solution you need, including feasibility study and technical research.
As every formalized paper, a request for quotation has its structure. To clarify, this enables to organize information in the most readable way. Moreover, this enables you to use RFQ templates and examples and easily adapt them to your exact project.
The aim of this section is to give a brief company background and describe your business environment and the challenges you need to overcome. For example, mention the industry your company operates in, why do you need this software.
Here, you give a brief explanation of what software you need to have developed. Set your project goals and end-users here as well. For example, if you need a CRM system, this is the right place to denote it.
In this section, you need to describe what functionalities and features the product must have. In other words, here you provide user stories to implement in the solution. For example, for a CRM system, you may start with briefing negotiating, corresponding, notification, user interaction facilities. Then, you need to disclose each of these functionalities so that your outsourced developers have a complete picture of what should be the input and output for every feature.
Here, you define a minimum viable product you expect to get and prioritize tasks. Also, it is a good idea to provide your assessment of your project scope so you can have a comparison base right here when the time comes. For example, you can specify you want to have corresponding facilities first, notification facilities second, and user monitoring functionality third. And that you expect your project will take around 500 man-hours, for instance.
In this section, you specify what technologies your project requires. It includes the programming languages and frameworks both for the front end and back end, libraries, a database, cloud services if required. For example, if you want to hire React JS developers, state React JS in this section. If you see your product on the MySQL database, state it as well.
Here, you need to touch both functional and non-functional aspects of the solution you need to get. For instance, it can be enhanced security as a functional quality aspect. Better, if you can define metrics you are going to use. For instance, it can be assigning a priority and/or severity to bugs, using such metrics number of vulnerabilities and time to resolution.
Here, you set deadlines for a minimum viable product (MVP) and milestones for each iteration. This way you help IT companies understand your expectations and whether they can meet them. For example, you can set deadlines in the form of the exact date or a period within a project pipeline.
This is where you disclose your expectations about a pricing model for your software project, your budget, intellectual property protection requirements, delivery terms, etc. For instance, state your targeted project budget if you want to contract on a fixed-price basis, of a maximum hourly rate if you are going to use a time and material pricing model. If you insist on signing an NDA, make it clear in this section of the RFQ template. If you want your outsourced software development team to send their results on GitHub, state it here as well.
Here, you specify a person who you designate to answer vendors’ questions and negotiate project details. Also, you need to provide contacts and preferred communication methods. For example, if you send your RFQ via a vendor’s website, give an email where he can send his bid. If you communicate via freelance platform or directory listings, make it clear vendors can message right there.
To have vendors’ bids more detailed and simplify your comparison and negotiation procedure, you can include in your software RFQ this clause. For example, you can state their bids shall be provided by filling up the template you provide in an attached file. The pricing template may include a table with such columns as the tasks, scope of work, hourly rates, etc.
Here, you state your conditions on vendors’ opportunity to have their bids regarded by you. For example, you may state a vendor shall have at least 10 software developers on board, at least one successfully completed project in the targeted domain. Or that they need to have experience in running a project of at least six-month duration. Also, you can declare you allow (or not allow) junior developers to be assigned for your project.
State the last date you receive bids so vendors can understand their timeframes. For example, for a small project of less than $10,000, one week is an appropriate timeframe.To conclude, it is worth to mention a well-prepared request for quotation will shorten your negotiation path and help you to shortlist vendors, negotiate the contract, and make your choice easier.So, if you need to build software that is fully customized to your exact needs, send us your RFQ with the above-mentioned details. We will be happy to work on your software project!
Definitely, when walking through long rows of companies that provide software development outsourcing services, you have already noticed that one vendor charges $20 per hour while another $50 or even $150. Why their rates differ? Does this mean that those with $150 ensure better quality than those of just $20? Or, does this mean that some of them just have bigger appetites?
Now, we have come to the labor rates, factors that affect them, and their costing to dig deeper to cost factors of outsourced software development projects. Well, going forward, we can say that rates a vendor charges for his services don’t go directly and in full to developers’ pockets. In other words, these are external rates that include many components. So, here we distinguish project cost factors related directly to the project execution as well as factors associated with running a company and its pricing strategy.
These factors are associated with the project team and include developers’ salary and project management fees.
The developer’s salary is the accrued salary, the money he earns for his efforts, skills, and experience. After all, an outsourced developer, who works on your project, is an employee for your vendor.
Typically, in software development, salary either goes in the form of or can be decompounded to the hourly rate. There are two main sub-factors that affect or determine the developer’s hourly rates:
First, salaries differ from country to country and from city to city within the country. For example, a developer may earn just $5 in a small Indian town but $100 in the capital of the US. Second, juniors are paid less than middles and seniors. So, if your vendor engaged on your project mostly junior developers, you will enjoy with lower bid though may suffer with lower code quality or longer delivery.
Project management fees are money a vendor pays to a project manager, a person who supervises a project. A project manager may run two or more projects simultaneously. So, only part of his salary is included in your exact project. And again, location affects the rate in the same manner.
These factors stand for company expenses associated with organizational and managerial aspects of running a business in whole. So, the final costing includes the following items that can be named as overheads:
In general, the bigger a company is, the bigger its overheads associated with infrastructure, staff hierarchy, marketing, and corporate culture policy are. And, once and again, location can be regarded as sub-factor here with the same relation and outcomes as well as taking into account differences in the government policy regarding Social Security.
Even if you manage to find two companies that share the same approach to costing and use the same numbers, their bids may still differ. Moreover, even within the same company bids may vary from time to time. This is because the last factor is in the game. Yes, we speak about the pricing strategy with its main sub-factors:
Company margin depends on the vendor’s appetites, market recognition of the brand, and their experience on the market. For example, newcomers often use a penetration pricing strategy. To clarify, they are ready to take over their first software development projects with a miserable margin or even with no margin at all. In contrast, there are branded companies that have already established themselves on the software development market. Such companies have both name and goodwill, so they can charge a good margin for their software development outsourcing services.
Clever minds say little money is better than no money at all. So, if an IT company experiences a long-term gap in project orders in the given moment, it can apply a lower margin to win the contract and cover this gap. By the way, the current workload may affect not only the size of a vendor’s margin but partly overheads he includes in the project prime cost as well.
So, when outsourcing your software development to an IT company, a project manager and software development team’s salaries are what lie on the surface as factors that determine vendor’s rates. However, there are plenty of other expenses an IT company has to incur (and, thus, include in its quote) as well as other financial aspects to consider. They may be invisible to you, but still, they are here either by law, circumstances, or company’s own choice.
Of course, you can’t manage these factors as they are not on your side. However, you should understand them clearly. Understand and be aware of why the particular vendor bid may be low or high and what risks, pitfalls, or benefits it may provide for the project and your budget.
How much does outsourced software development project cost? Well, it depends. Simply put, project costs depend on two main factor groups:
No matter what pricing model (fixed-price, time and material, or even a dedicated development team) you opt for your outsourced software development project, these factors always work and determine your expenses.
In this post, we analyze project scope as the first cost factor group, and the only one you can affect. In the next post, we will touch labor rates and explain their costing and why they differ from vendor to vendor.
So, let’s start!
When deciding to apply for software development outsourcing services, you already estimate your approximate project budget. In other words, you assess the rough scope of work for your project. This assessment gives you’re the answer about how much effort it takes to complete the project. Here, you consider two main aspects, project size and complexity. Besides, if you choose a fixed-price model, the vendor’s risks can be another factor that affects vendor’s estimation and, thus, your project costs.
Project size stands for the number of features your outsourced software development project has. Perhaps, this is the easiest factor to understand and assess as here you can literally count these numbers.
Here, a software feature is an option or functionality software avails for the user to help him solve his particular challenge. For example, a CRM system may have the following options and functionalities:
As you can understand, the more feature-rich a product is, the more time it takes to develop. In this context you can remember the old proverb “time is money”. Thus, it becomes evident that the more feature-rich a product is, the higher the project costs. However, this correlation is not linear as it strongly complemented with another factor, project complexity.
Project complexity stands for how many effort it takes to build each feature or functional capability and how high should be the skill level of outsourcing developers to accomplish this task. To clarify, one feature may take only a few man-hours to build, while developing another one, engineers need to spend a few dozen man-hours. Moreover, one feature may be common and easy to build, while another one requires deep expertise to architect and high-leveled skills to implement.
Here are the main sub-factors that determine project complexity:
As you can understand, the higher project complexity is, the higher development costs are.
Here, the vendor’s risks stand for the probability of emerging new difficulties and challenges during software development within the defined tasks. For example, 7-layers architecture logic is hard to implement in practice though it can be perfect on the paper. In other words, a vendor may consider a pessimistic scenario when estimating the project scope and providing a quotation for a fixed-price contract.
Typically, the larger project and the higher its complexity are, the higher vendor’s risks are. Sometimes, these vendor’s risks may be up to 30% of the preliminary project scope assessment.
However, to tell the truth, not every company, which provides software outsourcing services, shifts these risks on to the customer’s shoulders. At least, this is not the way we go at Softenq. But be aware of this factor when you are dealing with other vendors.
To sum up, project size and complexity are two software development project cost factors that implement each other. And your choice here is either to be ready to spend a large budget to complete the project in full or compromise on certain features, functionalities, or quality attributes. The third factor lies not on your side but on a company you entrust with software projects outsourcing. Your only option here is to negotiate the project scope so as to assure you take over the minimum vendor’s risks and do not overpay for the project for nothing.