Staff augmentation is a model used by companies to complement a team, usually by adding new resources with specific skills that they do not count internally with, in the other team members. The projects that have augmented staff allow companies to have more control over the work compared to subcontracting an entire project, in addition, it offers them more flexibility and a more rentable solution to fill in the gaps of skills and costs.
Augmenting the temporary staff also offers companies an external perspective to help improve a product or service’s development. However, there’s something that is still a concern for the directors of the companies: the team’s objectives not being achieved when they’re working on the same project. Due to that some team members have never worked together before, they are concerned that the goals of the team will be affected. So, as leaders, it is important that they plan the objectives in an effective way, so projects can have a better chance of succeeding. Now, we will mention some tips about how to achieve these goals in projects with augmented staff.
Separate objectives and tactics
It is important to separate objectives from tactics, because these concepts do not mean the same. On one side, the objectives refer to the goals that are to be reached with the project, while tactics are the procedures that help us complete those objectives. That is why general goals or objectives need to be established in the projects as well as the tactics that will help you reach those. All the team members must understand the objectives and methods that they will implement, as applicable to each.
There is a methodology that has been successfully implemented by Google and other large companies: “Objectives and key results” or OKR’s methodology. This work method promotes organizational alignment through the achievement of common objectives and has become a fundamental system for all the members of the company to go toward the same direction.
In this methodology, objectives that are defined as qualitative descriptions of what is to be achieved are established. Objectives must be short, inspiring and attractive, they must motivate and challenge the team. Since in the project each worker contributes to the achievement of objectives, individual goals need to be set as well and they have to be aligned with the objectives of the team.
Lastly, key results are set, intended to reach the objectives. These measure the progress towards the objective of the team and, for each individual goal, from two to five key results can be suggested. Here is where the metrics that will say if it was accomplished or not are delineated. These must be numeric and data based so that the team members can easily figure out if the goal has been reached or not. Every team member can track the progress of the objectives and continuously measure how far or close they are from achieving them.
Implementing a DevOps culture
DevOps culture refers to a set of practices that combine software development and IT operations, its goal is to shorten the life cycle of the systems development and provide a continuous delivery with a high software quality. DevOps culture tries to be more agile delivering products at a higher speed and quality which will, without a doubt, help reach the objectives with a team with augmented staff.
Teams will be more aligned, less stalled and will participate in more stages of the product’s life cycle. Creating a DevOps culture increases productivity by implementing practices throughout the life cycle of the apps. Some of these practices help speed, automate and improve an specific stage. Others cover several stages and help teams create homogeneous processes that will favour productivity.
Now we will mention some of them:
Process automation: automation is one of the fundamental pillars of DevOps. Automated processes are used in projects to speed the development and therefore, improve the software’s quality. Some of these processes are the deployments to production and code-tests. When developers need to show that the product works correctly in a production environment, with code and environment integrated it is ideal that this gets done with all the automated steps. Through automated tests it is also possible to find the biggest number of coding errors. In DevOps it is recommended to have a small number of reliable and automated tests, instead of a big number of manual or automated but not reliable tests. Some of these can be: unit tests, acceptance tests, integration of component tests, functional and performance tests. In conclusion, automation, combined with other DevOps’ principles, makes it easy for teams to focus on providing value to the software delivery.
Version control: in this practice, code is administered by versions, doing a follow-up on the versions and the change history in order to make both the revision and retrieving of the code faster. It is usually implemented with version control systems that allow several developers to collaborate in order to create code. It is important that all the revised code in the version control is built and tested automatically in a production environment. In this way, it will be possible to find any building, testing or integration mistake as soon as a change is introduced, allowing it to be corrected immediately. Using version control is a practice that helps development teams work together, dividing programming tasks among team members and store the code so it could be easily recovered if needed.
Infrastructure as code (IaC): through this practice in team projects, methods of procurement can be automated to be able to escalate the cloud efficiently, saving money and time. It also allows teams to implement system resources in a reliable, repeatable and controlled way, avoiding the human mistake risk, especially in large sized settings. This solution allows the teams to keep development and testing environments identical to the production environment. Similarly, the duplication of settings in other data centers and in cloud platforms is simpler and more efficient.
Defining communication standards
After each team member understands their role and goals, several communication standards need to be set and everyone has to meet them. Using tools such as Slack or Skype needs to be considered for the communication of the team and selecting a software for project management, like Jira Software Cloud. Team leaders need to assure that both the internal and augmented staff use the tools to ensure a smooth communication.
Within the standards that can be established there is the agile methodology Scrum, even though it is usually used to manage projects, it also has some inputs to achieve an accurate communication and can adjust to the needs of a specific project. In this methodology, tasks and user’s histories are estimated with scores and based on that estimate, they are divided in sprints with a clear deadline and objective. Sprints are intervals or preset cycles of time that last not less than a week or longer than a month. Each sprint has to provide a complete result, a final product susceptible to being delivered.
Scrum has five main ceremonies to fulfill their process control, all of them essential for this methodology: Sprint Planning, Daily Scrums, Sprint Review, Sprint Retrospective and Grooming or Refinement.
Sprint Planning is a meeting done at the beginning of each sprint, the entire team participates in it and it is used to inspect the Backlog, that consists of all the necessary tasks to deliver a product or service. In this ceremony, the development team selects the tasks that they will work on during the next sprint. During this meeting, the Product Owner, who is responsible for defining the product’s features according to the needs identified by the stakeholders, presents the updated backlog. Then, the development team is in charge of estimating as well as clarifying items as they deem necessary. Their main goal is to achieve an alignment between business and development of a product in relation to the priorities.
Daily Scrum is a 15 minute meeting done every day where only the development team participates. Each one of the team’s developers must answer the following questions:
What did I do yesterday to contribute to the sprint’s goal?
What am I going to do today to contribute to the sprint’s goal?
Do I have any obstacles or problems with the delivery?
This allows you to know what each developer is working on and identify obstacles in the tasks that are being performed, which avoids setbacks and helps the sprint to continue to be developed properly. The Daily Scrums the inspection and adjustment through the team’s self-organizing.
Sprint review happens at the end of each sprint. In this meeting, the Product Owner and the development team present the finished product to the stakeholders for its inspection and adaptation. The software is shown operating in production, the stakeholders will ask questions about it but, before that, the product would have had to be validated previously by the Product Owner and it must meet the sprint’s objective. The development team talks about what happened during the sprint, the obstacles they faced and the implemented solutions. Lastly, the Product Owner updates, with the business information received on this meeting, the task list for the next sprint.
The Sprint Retrospective is done after the Sprint Review. Its goal is to present a common format to analyze what went well during the sprint, what went wrong and what is to be improved. This can be achieved in five stages:
The environment is prepared to conduct an exercise that will break the ice between the team members.
Information is collected through different activities to build an image of what the last sprint has been, resulting in a joint image from the team.
The team brainstorms in order to identify what actions can help improve the team’s performance.
Out of the ideas generated in that collection, actions that can be implemented in the next sprint are suggested.
Lastly, a closure activity takes place alongside an evaluation that will help the team decide where they want to go in further occasions or when facing difficulties.
This ceremony is implemented as a reminder of a continuous improvement in development teams.
Grooming or Refinement
This refinement meeting is recommended to ensure that the Product Backlog is always prepared. Ideally, the Product Owner schedules, manages and leads this sprint meeting weekly. The participants of this meeting are the entire team, which is why it is necessary that, before the meeting, everyone knows the requirements or user histories that are going to be covered, and that only those whose presence is strictly relevant attend.
Reaching the objectives
At the beginning, the team’s objectives in IT Staff Augmentation projects can seem hard to reach, nevertheless, with the right separation and preparation of them, alongside the work methods, projects with augmented staff can be successful. It is also important that the leader of these teams think about implementing a DevOps culture, which will allow them to increase productivity and speed the development processes. Finally, integrating efficient communication methods and establishing tools that the whole team will use, also, setting meetings for the work’s revision will help the communication be accurate and for it to be simpler to achieve the objectives of the project.