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!