September 16, 2022 • 117 Views
To cut a long story short, we will try to find out what services are commonly proposed, and how does the software development process look like. Also, we will briefly talk about what Incora is.
Clearly, software product development is a complex process, that requires a lot of time, effort, and technical skills. In the IT sphere, there are three most common types of development services:
Mostly, the third type is a standalone independent process, therefore we will avoid it. Instead, let’s look closely at the first and second options. Hiring a dedicated team is quite an obvious decision, regularly used by various clients and companies in order to turn the concept into reality. The concept itself may differ and be related to any industry: it can be a specified software for internal usage inside the corporation, a full-fledged mobile application, Progressive Web Application(PWA), a simple website, computer program, Operational System(OS). In fact, the variety of options is enormous.
However, it is easier to specify the clients, who are the most common customers of dedicated team service. For instance, usually, they are not working in the IT sector and don’t have their own software team, therefore they have to use the services of development companies like Incora.
On the contrary, those who use the team extension feature are other developers, who are looking for an assistant or a programming specialist in software development. Mostly, it happens when the in-house team cannot find and fix some bugs or issues, is not experienced enough in specific development processes, or simply cannot handle the entire software project or some of its aspects on its own. Therefore, they are looking for specialists in a concrete sphere or technology.
“So what is the difference between these two?” - you may ask. The short answer is: primarily it is the logic of the approach itself. Despite the fact, that both cooperation approaches are common in the IT industry, they are used in very different conditions. As was mentioned before, it is hard to specify exact requirements and working strategies, because they vary, depending on the concrete case. Yet, mostly, a dedicated team is used to develop a project from scratch. Therefore, the team as a solid company provides its services for developing a project from the very beginning to the end.
On the other hand, team extension, as we explained previously, is used as a reinforcement to an already existing team and its project. As a result, on the one hand, new members don't have to take part in the project planning and estimation, however, they will have to figure out what was done before they joined. In fact, sometimes team extension can be even more difficult than developing from scratch because in this case, specialists have to get acquainted with previously written code, which can vary, depending on the person, who wrote it. While a dedicated team is working with its own code samples, therefore can better navigate.
The cooperation strategies can also vary for both cases. It is hard to describe a full utilitarian tutorial because eventually some steps or stages will differ or will be absent altogether. Therefore, we propose to consider our cooperation strategies as an example.
Among the services, our company provides, we can name both dedicated teams and team extensions. Additionally, we propose manual QA software testing and a DevOps team as a service.
If you wonder what the working process will look like - here is a short step-by-step tutorial for each type of cooperation:
First things first, we contact our client. The meeting itself can be both virtual and physical. At this meeting, we discuss the concept of the project and shape the requirements, features, design, and other working aspects. Usually, clients show their drafts of the main aspects to consider, including visualization. Yet, in case they don’t have one, our customers are free to show some existing samples of the desired product, so we could understand the overall scale of work.
Then, our planning team and CTO are making the first high-level estimation of the final product, based on the scale of work, its complexity, tech stack, etc. However, it is a rough estimate, which may not include some services or features. This estimation is performed as fast as possible, in order to acquaint the client with the approximate price and time, required for the development.
After the estimation was done, we present our vision of the project with all related factors and elements. During the presentation, we can make some changes depending on the will of the customer. Also, at this stage, we can ask a few clarifying questions about controversial points. We aim to meet all the requirements and develop a high-quality product in terms, that will satisfy both sides of the agreement. Therefore, if everything is all right, we can proceed to the next stage.
After we have all the needed information and approved concept, we select team members for a future project. We take into account all the previously agreed aspects to pick the best team for this specific product. Usually, our dedicated teams consist of 5 people by roles: front- and backend developers, project managers, DevOps, and QA. Yet, if the project is more complex, then we can assign 2 additional developers for the front- and backend accordingly.
Then, after the team was formed, we set up a meeting to introduce them to the client. It is worth mentioning, that in the outsourcing scenario, the client is working directly with our company and its reputation, therefore is not able to rearrange team members or influence the composition of the team in any other way except of discussing it with the company.
Finally, before the start of the development process, our team makes a deep estimate, that includes all the features, aspects, functionality, and specifics like software architecture, or other software technologies. This estimate can take more time than the previous one, however, it is the last calculation, that helps to set the final price and figure out the scale of work, as well as the time required to embody the project.
Also, it is worth mentioning, that we propose our clients choose one of two different payment strategies and agreements: fixed price or time and materials.
To be short, a fixed price is a set contract, when the client pays for the agreed tech stack and services, so in case there will appear some changes or the client would like to add something new, the development process stops until the new contract, that includes the changes, is signed.
On the contrary, we have a time and materials type of agreement, which is more flexible and allows making changes during the whole developing process, yet the client pays for the time, spent on the project, the qualification of the specialists, and the complexity of technologies, that were used.
After the deep estimation was done, and both sides agreed, our developers can start their work.
Afterward, when everything is set and the team is ready to go, both sides have to sign some final agreements and papers. During this step, we usually discuss additional terms, requirements, spending, etc.
Obviously, team extension starts with contacting the client. As a result, we expect a requirement list or offer from potential partners, where they state the exact requirements of the specialist, they are looking for. This list can include both soft and hard skills, the experience of the developer, its status(junior/middle/senior), as well as other additional requirements, or other specifics.
After receiving these requirements, we search for the ideal candidate, that will meet them. In fact, there are various factors we have to consider, like if the needed candidate is able at the moment. Also, including the fact that such requests are unique and differ from each other, therefore we have to choose a unique solution for each.
Thus, there is no actual one-for-each approach, that will be utilitarian enough for all applications. Yet, the most important thing is that this service must be done as soon as possible, in order not to make the client wait.
When we found the exact specialist - we sent all related information like CV, projects they took part in, etc. In other words, all requested information to make a final decision. Actually, usually, we are ready to propose extra applications so our partners had a more wide choice to make. Therefore, at this stage clients consider the provided information and choose the candidates they are interested in.
The next step is to perform an interview between the client and the candidate, so they could meet and discuss the project. In fact, due to the fact, that team extension means subordination to the client or their representatives, the interview may vary, according to their will. So, they have more instruments and a more flexible interviewing process.
If the candidate passed the interview and the client is satisfied with the results of the conversation - they can both start working together or request a test task.
This stage is also flexible enough and mostly corresponds with the client's requests. For instance, it can both be a small task from the specific field of the IT sphere or a regular test. Alternatively, some clients request a screen recording of the working process in order to see the steps of the developer. Or, for example, they can ask the developer to code during the conversation with the client, etc.
When the candidate passed all previous stages, he is ready to start working on the project. Yet, usually, this process starts with getting acquainted with the project itself, its front- and backend, code samples, etc. As was mentioned before, working on an already-developed project creates some difficulties.
For instance, before starting coding, new developers have to make sure that they understand the tech stack, used in this case, figure out the specifics of other developers' code, etc. This takes some time, however, it is an essential step, that guarantees the overall logic of the code structure and that everything will work as was supposed to.
Obviously, during this step, the project is being developed. Another clear fact is that there is no need to describe in detail how exactly developers are doing their job because development is the most flexible process and directly depends on the concept, as well as planned features and functionality. There is no utilitarian development approach, which is suitable for all cases. Instead, we can discuss the specifics of various working specifics during the development.
As was stated previously, we propose two cooperation strategies: dedicated team and team extension. Clearly, they are different within the development, therefore we would like to explain the specifics of each development approach.
Depending on your case, the development process varies. For instance, in the case of a dedicated team, the development can be both from scratch or the improvement of an existing product. However, both scenarios assume standard procedures like development, testing, management, and maintenance. The dedicated team option is equal to any other common development, and mostly has the same requirements, resources, etc.
On the contrary, team extension has an additional step. As was claimed before, this approach implies the integration of a third-party developer into an existing project. As a result, new team members need some time to get acquainted with the project itself, its progress, specifics of previously written code, the communication with other team members, as well as their responsibilities. The time, required for the adaptation may vary, depending on numerous factors, starting with the personality and experience of the new member, and ending with the scale of work and tech stack used.
As was mentioned before, Incora also provides DevOps services. In other words, our clients can contact us for cooperation. The rest processes are similar to the foregoing Team Extention chapter. However, DevOps may cooperate with the clients for much more time if needed and they also provide complex measures and solutions like building CI/CD pipeline if needed. Yet, it is the case, if you are looking specifically for DevOps services.
In other cases, like the development from scratch, we always propose our DevOps services in pair with the dedicated team as an option, in order to develop the product with the maximum quality possible. Therefore, if you agree to our proposal, the DevOps team will work simultaneously with other developers and you won’t have to wait extra time before pushing your project live.
Once again, in all cases, when our clients choose a dedicated team, we provide them with project management specialists and tools. These specialists will be the bridge between developers and the client, regularly notifying them about the updates, proposals, results, and progress of the project.
Moreover, our project managers will accompany your project from the very begging to the end. Obviously, they are responsible for the project at each stage, whether it is development, testing, or optimization. So, even if developers will pass the initiative to other teams, most likely our PM will continue performing their duties and keeping you informed.
Clearly, each software development lifecycle is accompanied by the testing stage. No need to explain why testing matters. Truth be told, it is impossible to imagine a software product, that was developed without any bug or issue. In fact, they are a part of the development process, as well as their solving. Therefore, don't be scared of bugs and try to understand that they are inevitable, yet mostly solvable. Thus, we need a testing stage to make sure that all bugs were hunted and all issues were solved.
So, instead of discussing the importance of the testing stage, we should better discuss the types of testing. Apart from testing various features and functionality like integration testing, or performance tests, we can also highlight automated testing and manual tests.
Automated testing is performed with the use of third-party software, which helps to simplify and computerize the process of bug and issue hunting. On the other hand, manual testing is a better scenario in case of complex cases. In fact, the main difference lies in the field of the spectator, meaning that the tester itself is software or a person.
Clearly, automated testing can easily cover more blocks of code and perform testing in a much faster way. However, if the script of the automated tester is poorly configured, it may not only skip some issues or bugs but even create new ones. On the other hand, manual testing is performed by the QA specialists step-by-step. This guarantees a more specified and detailed approach, however, it will definitely take more time as well.
As was stated before, our Incora team highly appreciates the quality of the products we develop and we try our best to make sure that our clients will be satisfied with the end results. Therefore, we decided to limit ourselves to manual testing only, so we could personally examine each part of the code. Clearly, because of this decision, we have to spend more time on testing. Yet, in all cases, we can vouch for our work.
For instance, as was mentioned before, our developers are still accessible to the clients for some time, even after the project was done. Nevertheless, this period is limited and is discussed with the clients during the planning phase.
Here is a brief summary of the software development lifecycle, as well as the general terms and conditions of cooperation with Incora. Clearly, a lot of details had to be left overboard. Yet, they are too complex and specific, so we prefer to discuss them face-to-face with our clients during the planning phase, as well as other product development stages.
We are always glad to discuss your ideas and concepts, not to mention undertaking their implementation. Also, we are always ready to answer any of your questions.
Share this post