Agile Development With A Nearshore Software Team
“The most efficient and effective method of conveying information to and within a development team is face-to-face conversation" - The Agile Manifesto
In its earliest form, agile development was imagined as a practice for clustered teams sharing the same physical location. Early agile teams were meant to work together in close physical proximity. Nearshore software as a business model, likewise, hadn’t reached the stage of development it’s achieved in 2018.
Now it’s become a fact that most businesses are using distributed teams, perhaps one or several. This makes good sense for a lot of reasons. Distributed teams can potentially work on projects around the clock, and strong talent can be found in less competitive markets. Great developers can work at lower rates when they don’t need to find exorbitantly priced housing in places like San Francisco or Seattle.
The current challenge: agile development without co-location
The benefits of distributed teams aren't without some trade-offs. For many distributed teams, it's been a challenge to adopt the agile practice of face-to-face interactions.
The more we know each other as people, the stronger we are working together as teams.
One thing we’ve learned at Jobsity is that nothing replaces meeting face to face. Team members in each office will benefit from regular face time, and that includes video conferencing as well as visits to remote offices. Video conferencing does a lot to bridge the gap between teams, especially for those distributed agile teams.
However, teams that rely on video conferencing should be aware of certain limitations.
Video conferencing only allows for a very short window of communication. Whereas, working in the same office gives significant visibility into each other’s world: challenges, successes, and opportunities.
Network issues can sometimes make video and audio choppy or difficult to understand.
Most people still think of video conferencing as scheduled time. Creating a culture of using video chat for spontaneous casual conversation takes time.
You can help mitigate some video conferencing issues by encouraging team members to have weekly 1:1 video chat sessions. These less-formal, even spontaneous meetups can be more productive than scheduled time, and they are also opportunities to build a better working rapport.
Things like tone, voice, and posture play a significant part in communication. In-person face time helps the team know their remote colleagues better through non-verbal cues, which in turn makes future video conferencing more effective.
Other challenges for distributed software teams
Coordinating across time zones
Building personal rapport with colleagues
Resolving differences in development cultures
None of these challenges is without a solution. Most notably, nearshore software development solves the time zone problem. And there are other strategies to help you bridge the distance gap between local and remote offices, which we’ll address.
Minimizing time zone issues with nearshore software teams
North and South America share similar time zones, with at most a 3-hour difference depending on where each office is located - which U.S. state and which South American country. This is a distinct advantage over traditional offshoring where there is more than a five hour time difference. There is also a substantial crossover in shared culture between North and South America.
Good software architecture dictates modular design, so you can structure your teams the same way. Every office should be self-sufficient in developing a single piece of technology, which minimizes the amount of collaboration required with teams in other time zones and makes them generally autonomous. When a project does require teams in different locations to pitch in, they can focus on their integration points and APIs.
Code reviews also play an important role. Since people are online at different times, distributing knowledge of the code between offices makes support and maintenance much easier. If a production issue emerges when the team is not online, another office can easily step in to support and resolve the issue, thanks to the shared knowledge base.
It's important in any program, especially agile programs, to have solid rapport across the team. Personal connection builds trust, minimizes missed expectations, eases self-organization, and boosts morale.
Within your office, take time getting to know everyone on your team. And, as much as possible, do the same with the people you work with in remote offices. Personal connections are important. The stronger they become, the greater the chance of seeing these colleagues as any other, rather than distant coworkers from unfamiliar places without good relationships.
Build a united development culture
There are four simple ways teams can make working across geographies easier and share a common developer culture:
Over-communicate decisions across all geographies
Minimize the friction in setting up the development environment
Clearly define the term “Done”
Create guidelines for filing effective bug reports
Communicate, and then communicate some more.
When moving from a co-located office to a distributed culture, communication becomes significantly harder. The first challenge is training the team to understand that, when decisions are made, they need to be communicated. You’d be surprised to find how easy this one is to forget. Oftentimes, important decisions are made in hallway conversations, informal local team meetings, or by individuals. Plus, it can be easy to dismiss small decisions as unimportant.
Err on the side of over-communicating. Communicate even minute details until both offices find a healthy groove.
When decisions are made, everyone in each office needs to understand the decision and ideally why it was made.
Don't use email. It's too easy to lose important information.
Use a content management system like an agile wiki where team members can easily browse for updates across the team (and get notified of updates via email or their group chat tool).
Minimize the friction
Delays caused by team members working on outdated information, hitting a roadblock, and then asking a question costs the team significantly more time than proactively sharing information.
Consistent development environments across the team make it easier to work together and track down issues. Spend the time creating a simple "Getting Started" guide and tame first-day friction by automating the setup as much as possible.
When to call it “done.”
When working between offices, clear standards around the definition of done makes it easier to manage expectations and build rapport across teams. A firm definition of “done” eliminates ambiguity in the work. For instance, when shipping a release that involves multiple teams, make it clear what it means to be "complete": code written, pull request created, code reviewed, tested, and merged into the appropriate branch.
Avoiding and/or dealing with bugs
Sometimes, nearshore software development means that not everyone is online when problems come up. Having clear guidelines for bug reports and troubleshooting how-tos makes it easier for anyone on the team to track down an issue. Code review and good automated tests also share knowledge about the code base and empowers the affected team to make the fix and validate that the change doesn't have any unexpected side effects. Thus, no team becomes a blocker.
Maximize the golden hours
For nearshore software teams that share work between time zones, stand-up is a great time to pass the baton so the team that’s going offline can hand off the rest of the day to the other. And holding stand-up via video conference makes it easy to ask questions and get up to speed so everyone is off and running as soon as the meeting is done.
Stand-ups can be arranged for whatever time of day is most convenient for everyone involved when you have substantial overlap between time zones.
Every team is distributed
In a distributed organization, the reality is that every team is remote. All teams need to adapt and learn how to share work between offices, communicate effectively, and grow a consistent culture across geographies. The most effective teams don't just make the remote office conform to the headquarters culture. Effective teams understand that every office can learn something from the others. They seek to find and share successful practices across all locations. They also embrace an inclusive team culture.
Looking more closely, you realize that even teams within a single office can benefit by operating like a distributed team. Business travel often takes members outside of the office, and working at home occasionally can help employees better manage a work/life balance. And teams that embrace both structure and transparency scale more efficiently.
If your project is ready to scale beyond your office, there is a Jobsity distributed nearshore software team ready to help you. Contact us if you’d like to discuss your project.