During the Coronavirus outbreak, you are playing an integral role in navigating the crisis, and there is an urgency to lessen the implications of Covid-19 on your organisation’s software development infrastructure. To that effect, we are continuing to bring you articles aimed at helping you to support your developer teams, as with our previous article on How Engineering Leaders Can Support Remote Working Teams During Coronavirus Pandemic. In this article, we will be discussing how to maintain productive remote software development by exploring the essential best practices of agile processes.
Software development team member observing agile processes plan
As most countries have now reached the peak of the pandemic, but remain under substantial constraints. Your business operation, like every other organisation, is looking for ways to strengthen your strategy playbooks. Global organisations are continuing to prioritise support to employees’ safety while ensuring that the company can continue to function in a remote work environment. You were made responsible for implementing the right tools and strategy that will make remote work functionality for engineers possible in a potentially isolated environment.
The software engineering department could be experiencing the most strain as they are heavily reliant on team connectivity and readily available sets of engineering tools to develop software in a distributed team environment. Your software development framework for developing software is currently experiencing tremendous pressure to lessen any potential hits to your infrastructure.
In the coming weeks, your software development framework will have to be flexible to sustain remote working and a potential recovery strategy within your organisation. Agile processes are better adapted to be flexible in the present time; if you have been running an agile methodology, then discipline around this is being tested. If you have not, there are things you can learn from agile software development; Scrum, Kanban, Lean, CI/CD, DevOps, that will benefit your current process now moved to remote software development.
Whether your software development teams are internal or outsourced, some of the challenges faced in a remote environment can be resolved with the help of agile processes as part of the solution. These challenges are prevalent even before the current extreme move, some include:
- Different time zones
- Communication complications about code or business needs and design requirements
- Support and response time to deal with blockers
- Collaboration between different development cultures
- Prioritisation of development tasks
- Experiencing a drop in suboptimal quality and team productivity
Let us take a look at some valuable strategies that can add invaluable insights into your current approach to bridge remote development teams and software development to help mitigate potential issues and reduce friction.
Strategy to manage remote software development
What makes agile processes valuable in the current economic state of unpredictability, is the ability to connect as it favours communication and close collaboration to be effective at delivering value no matter of team members location. The given nature of agile software development is the ability to swiftly anticipate change and rapidly adapt to provide results during the software development life cycle. Your communication with engineers and communication between team members will need to be rapid to compensate for changes in a work from home set-up. You will be aware of this but may not be informed as to how much it can help developer teams when in practice.
Steve Denning once wrote in an article, Why Agile is Eating the World, for Forbes that: “Agile organisations are connecting everyone and everything, everywhere, all the time. They are capable of delivering instant, intimate, frictionless value on a large scale.”
Many organisations, including your own, could be working in a software development environment which is stable with little unpredictability where new knowledge is not necessary for the creation. But, if your software development process is less agile and more of the traditional waterfall paradigm, being connected all the time can help lessen the friction of miscommunication, however small, that can occur in a remote work environment.
Your software development team now remote and dependent on communication tools to be productive can work by the following agile principles to be effective at delivering value.
1) Prioritisation of development tasks
Creating a priority list like a Scrum backlog will have the most crucial tasks at the top in a task tracking system or a centralised task tracker, so the team will know what needs to be delivered first.
2) Set regular meetings
Lessen communication complications about code or business needs and requirements with regular meetings. These meetings can look such as daily meetings, morning kick-offs and evening end of day round-ups or closers for teams to discuss progress. Another practical step as a manager you can take is being able to communicate via email efficiently to further keep the lines of communication open and varied for non-time sensitive requirements or updates.
3) Working in small collaborative cross-functional teams
Working in a small team helps bridge the gap in collaboration between different development cultures and makes them faster at adapting to change.
4) Strong, agile senior support
Set regular check-ins to provide support to respond promptly to any blockers experienced, in real-time with live communication platforms such as Slack.
5) Clear guidelines for bug reports,
Clear guidelines for bug reports can help for effective filing while having clear definitions on how to report work completed, to allow for transparency across teams and processes. Lessen the time for the team to adapt to new decisions by effectively communicating decisions and changes implemented to the team for them to understand the importance and awareness of those decisions.
6) Jira planning
As a senior member of the organisation, you must continue with Jira planning. This type of plan is integral to the communication of an agile work environment; having tasks broken down into manageable tasks for ease of understanding and evaluating the results is a sure way to optimise transparency.
7) Frequent code reviews
It is of importance that project and code knowledge is distributed between teams. They can support each other by alleviating any arising issues if and where another team is unable to since they are already aware.
8) Centralised input log
A Singular location log for in-progress deliverables and up to date version controls that can be shared between teams and for you to have an overview of what is in progress.
Your company operations and security infrastructure
Working in an agile process when remote can add flexibility and ease of collaboration, which is valuable to your software development efficiency in a remote work environment. But, what about implementing planned work?
A fundamental part of the framework Scrum is planning, as teams work in small iterations called sprints, continuous planning improvement that can help the functionality of your team. Sprint planning covers each eventuality the development can take. Since your teams are having to adapt quickly to the move of remote software development, sprint planning can help you preempt and have solutions ready for issues that can arise that will need to be dealt with in a limited time.
Additionally, to have adaptively planned will further benefit when unplanned work is presented to the team. Unplanned work can hinder productivity if not able to be anticipated by the developer team. One of the key benefits of DevOps is planning for unexpected work that could slow team efficiency. The evolution of agile processes leverages visibility and proactivity foresight of collaboration between the development and IT operations teams, enabling them to anticipate unplanned work better. Encourage the sharing of responsibility, having transparency and feedback, which is a fundamental of DevOps teams.
Incorporating better collaboration and integration in a remote environment between the development team and the IT operations team is aimed at bettering communication, team efficiency at delivering business value and faster software.
To achieve this functionality in your strategy:
- Encourage your development teams to invite key operation team members to listen in on calls during sprint planning, morning kick-offs, daily stand-ups or evening round-ups. Operation teams should involve developer team leads in their meetings to keep each other informed and aware of progress and blockers.
- Create a fast feedback loop to resolve issues. Once there is seamless communication, transparency will enable teams to resolve issues faster and minimise system failures.
These enable your teams to work smarter no matter a remote work environment for software development. These will include the administrative and operational support to help with fast set-up and maintenance of teams functionality to deliver value in a remote setting. Secondly, security is of importance in such an environment to minimise infrastructure vulnerabilities.
Here are some reminders:
- Allocated equipment log for developers to function as they would in the office.
- Encourage software development teams to use disk encryption.
- Developers have access to centralised data storage to avoid storing data on unrelated -work devices.
- Developers have access to company systems and accounts.
- Carry out regular password updates.
- Set reminders to teams to update their passwords if your company uses a VPN.
- Developers home Wi-Fi’s are password secure for work use and data handling.
KPIs for a remote software development process
Key Performance Indicators (KPI) even in a remote work environment, is beneficial for you to evaluate the process while being able to adapt and create a more effective distributed team. Simple identification of areas for improvement and better dedication of development scope which can help to navigate software development when remote. You can give your development teams added foresight about how to better their productivity, projection of the project’s health and team efficiency.
Whether your teams are currently in the earlier phases of designing and coding, or whether in later phases of quality assurance testing, deployment or maintenance of the software development life cycle. The productivity of a remote software development process does not have to experience a decline. These elements adapted to your strategy or better utilised in your approach will add deserved flexibility. And, rapid adaptation can help your organisation to maintain efficiency and capability during remote software development.
Ferreneik Betton, Head of Content, BlueOptima