Best Practices and Guidelines by Indrivo on managing an Agile Dedicated Software Development Team
A Partner, instead of a Vendor. A Dedicated Team, instead of a group of Coders.
Each company, sooner or later, has to decide between hiring a dedicated development team or expanding their internal IT department. Hiring a dedicated team is like having your own remote IT department. However, achieving a high level of efficiency requires a reliable partner, careful planning, efficient management and a lot of optimization.
In this article, we'll tell you everything you need to know about this engagement model, explain how a remote team works and how to set up a functional dedicated software development team.
What is a Dedicated Team?
The name says it all - a dedicated development team is an allocated group of remote employees who are fully dedicated to you and your project.
What can a Dedicated Team look like?
Dedicated developers are best suited for long-term projects, where the project scope changes frequently, the scope of the project are not well defined or uncompleted and the requirements are changing during the development process. It can consist of one to a few dozen software developers, QA engineers, designers and managers who work full time exclusively on your project and report directly to you. Depending on how well you know the development process and what your staffing needs are, you may decide to lead the team from your side or to instruct our project managers to coordinate the communication and analysis process.
For example, at Indrivo, we have experience in building extensive dedicated teams of 2 to 15 experts. Some teams have a dedicated project manager who handles the day-to-day processes. However, we also have a dedicated team that consists of a single dedicated front-end developer. The structure is 100% customizable according to the needs of our customers.
When you hire a team with a PM, you will:
- have a lower understanding of the development process;
- communicate only with Indrivo's PM, the PM will do all the management and keep track of the team lifecycle.
When you only hire engineers, you will:
- clearly understand the development process;
- be responsible for creating a task backlog;
- keep track of the work progress;
- keep track of communication.
How we work at Indrivo with Scrum and Kanban
There is no wrong or right working methodology to fit all teams or all industries. How does our software development teams actually work?
The short answer: Agile!
The below recommendations are based on our own experience.
We usually recommend our customers to use an Agile methodology based on Scrum or Kanban. We use the advantages of both methods and thus create transparent work processes, independent team members and efficient implementation. With Scrum or Kanban, a team delivers a product piece by piece. This way, continuous progress is achieved and changes to requirements flow into a project in a controlled manner. These methodologies, due to their simplicity and proven productivity, allow us to include our customers much more closely into the development process.
In fact, the term comes from rugby and literally means “crowd". Scrum is an iterative process model from agile software development, in which projects are not planned completely and in detail in advance, but refined step by step. Instead of sitting together for several hours in weekly meetings and exchanging a lot of information, Scrum uses so-called daily standups to focus on a focused, daily exchange of information. While standing, the team members report one after the other without interruption. Thus, a daily stand-up meeting usually does not last longer than 15 minutes.
Kanban comes from Japan and means “card”, “label” or “sticker”. Unlike Scrum, the Kanban approach is not iterative. The idea behind this development method is to visualize the work on a board with the columns “To Do”, “Work in Progress” and “Done” and it allows the software to be developed in one large development cycle. The aim is to limit the number of tasks that the individual team members can work on independently. In this way, the throughput times should be shortened and it should be made visible at which point additional resources may be required.
In the following, we will go into more details about various aspects of agile working and the basic ideas behind it.
Every our project goes through a predefined collaborative phase in which we involve the customer and the entire dedicated development team, under the guidance of a project manager.
The first steps are:
- Team Meetings
- Project Discovery
- Release Planning
In this first phase, all participants are asked to discuss the project and conduct a brainstorming session that usually brings solutions and ideas or sometimes uncovered the risks that the project has to avoid. The result is the Backlog, which enables the product release to be planned. We create a checklist that ensures that we do not overlook any important point.
Weekly Project Deliveries
Depending on the agile development method chosen, our development teams deliver regular updates, these can be prototypes or live demo versions depending on the phase of the project.
Each development cycle includes:
- Daily Meetings
- Cycle Reviews
- Retrospective Reviews
- Project Management
The process of managing a project is taken over by 3 roles, a Scrum Master, a Product Owner and a Project Manager, not all of them being mandatory, but can coexist.
Scope of Work and Change Management
Changes and modifications which appear during the product development are saved in the backlog, the items in the backlog serve for the next development cycle planning.
Scope Management Cycle
- Development Teams, Project Managers and Project Owners are responsible for recommendations and decisions they take, thereafter influencing the budget of the development process.
- Development teams are responsible for continuously estimating the appropriate backlog and tracking work in the pipeline. This process allows precise traceability of the work performed, as well as the speed of work.
- Product Owners are mostly responsible for the non-technical changes in the scope of work, setting priorities and goals of the development cycle.
- The Project Managers and Scrum Masters together with the development team are responsible for delivering the project on time.
- A continuous assessment of the predicted delivery time and scope helps to determine the structure and size of the development team.
This process, including all those involved, is carried out iteratively and we call it the “Budget and Scope Management Cycle” because it allows the Product Owner and all those involved to have precise and predictable control over the team and the budget.
Managing the Project Risks
We typically identify risks early in the development cycle, and often the main factors are discovered during the product development kick-offs. If a risk is discovered, we set up a meeting with all involved and develop a plan to solve the identified problem.
This way, we can react quickly and eliminate the risk before it becomes a problem. Most importantly, we deliver solutions and action plans, including summaries of Backlogs.
The Project Owner receives weekly or bi-weekly development reports with summaries of the tasks carried out and burn down charts.
Development Process Norms
The processes below are based on the experience gained over the years in providing IT services, solutions and advanced software development.
Our teams adhere to well-known coding standards to deliver a consistent, easy-to-understand, and maintainable code base. For the products we develop, we implement the best and most reliable technologies and use reliable, tested frameworks and tools and follow technology trends.
Definition of "Done"
When we start a new cooperation with a customer, we agree on the definition of the status "Done". Any functionality or change in the code we deliver should correspond to the initial criteria listed in our definition of "Done", thus ensuring the quality and consistency of the result.
Our standard definition of “Done” defines that a user story, an epic, a task or an error from the backlog or an assigned task is “Done” if the following steps have been carried out:
- Define - There is a common understanding between the Developers and the Product Owners on how the product should look and behave.
- Implement - The task is developed. Graphic user interfaces are fully implemented.
- Integrate - All tests are passed automatically.
- Check - A developer checked the task/functionality manually.
- Review - The code passed the code review and was approved by 2 developers (4-eyes principle).
- Approve - The code has been tested and approved by the QA and the Product Owner.
- Deliver - The code is passed to a repository and delivered to a suitable application environment.
Our code review process ensures that each part of the code is not only checked by the developer who wrote this code, but is also checked and approved by 2 other developers. We spend around 15% of our time on tests and make sure that our work meets our high standards and that we only deliver the best quality to our customers.
Automated test tools such as Jenkins, Sonar and Gitlab are used for regular checks of the source code. With the result of the tests, we improve the source code and prevent bottlenecks that can arise during programming.
Continuous Integration/Continuous Development
Indrivo uses Continuous Integration (CI)/Continuous Development (CD) as a development practice. We also use Jenkins CI for automated quality reports and tests in the delivery pipeline. This process ensures that only code that meets our deployment criteria and has passed relevant automated tests is integrated into production code.
Our Quality Assurance engineers perform tests to ensure the highest level of code quality and usability. Depending on the needs of our customers, we create individual quality assurance guidelines for each project.
Scope of the QA tests:
- Unit Testing - small pieces of code are checked to see whether their functionality inputs or outputs the correct values.
- User Interface Testing (UI) - The user interface is tested for compliance with design guidelines and mock-ups.
- User Experience Testing (UX) - The usability is tested and measured in detail.
- Regression Testing - To tests if the newly implemented code does not interfere with an earlier implementation.
- Security Testing - Data security is tested.
- Performance Testing - Testing the responsiveness, performance, and stability of a product under a simulated workload.
- Manual Tests - The product is checked against the initial specification requirements.
We have been working with the dedicated team model for several years. At Indrivo, communication and collaboration are the most important assets that we deliver when working with our customers. Our processes help us create long-lasting relationships with business partners and customers and deliver first-class software products. Agile dedicated team model has many advantages to offer, including cost savings, access to highly specialized resources, etc., while maintaining a high level of control and confidence.